Seldon SeldonDeployments API
SeldonDeployments APIs for Seldon Deploy
SeldonDeployments APIs for Seldon Deploy
openapi: 3.0.0
info:
description: 'API to interact and manage the lifecycle of your machine learning models
deployed through Seldon Deploy.'
title: Seldon Deploy AlertingService SeldonDeployments API
version: v1alpha1
servers:
- url: http://X.X.X.X/seldon-deploy/api/v1alpha1
- url: https://X.X.X.X/seldon-deploy/api/v1alpha1
security:
- OAuth2:
- '[]'
tags:
- description: SeldonDeployments APIs for Seldon Deploy
name: SeldonDeployments
paths:
/namespaces/{namespace}/seldondeployments:
get:
description: list objects of kind Seldon Deployment
operationId: ListSeldonDeployments
parameters:
- description: Namespace provides a logical grouping of resources
in: path
name: namespace
required: true
schema:
type: string
responses:
'200':
$ref: '#/components/responses/SeldonDeploymentListResponse'
'400':
$ref: '#/components/responses/ErrorDefault'
'404':
$ref: '#/components/responses/ErrorDefault'
'405':
$ref: '#/components/responses/ErrorDefault'
'424':
$ref: '#/components/responses/ErrorDefault'
'500':
$ref: '#/components/responses/ErrorDefault'
tags:
- SeldonDeployments
post:
description: Create a Seldon Deployment
operationId: CreateSeldonDeployment
parameters:
- description: Action
in: query
name: action
schema:
type: string
- description: Message
in: query
name: message
schema:
type: string
- description: Namespace provides a logical grouping of resources
in: path
name: namespace
required: true
schema:
type: string
requestBody:
$ref: '#/components/requestBodies/SeldonDeployment'
responses:
'200':
$ref: '#/components/responses/SeldonDeploymentResponse'
'400':
$ref: '#/components/responses/ErrorDefault'
'403':
$ref: '#/components/responses/ErrorDefault'
'405':
$ref: '#/components/responses/ErrorDefault'
'424':
$ref: '#/components/responses/ErrorDefault'
'500':
$ref: '#/components/responses/ErrorDefault'
tags:
- SeldonDeployments
/namespaces/{namespace}/seldondeployments/{name}:
delete:
description: Delete the specified Seldon Deployment
operationId: DeleteSeldonDeployment
parameters:
- description: Action
in: query
name: action
schema:
type: string
- description: Message
in: query
name: message
schema:
type: string
- description: Name identifies a resource
in: path
name: name
required: true
schema:
type: string
- description: Namespace provides a logical grouping of resources
in: path
name: namespace
required: true
schema:
type: string
responses:
'200':
$ref: '#/components/responses/GenericResponse'
'400':
$ref: '#/components/responses/ErrorDefault'
'403':
$ref: '#/components/responses/ErrorDefault'
'405':
$ref: '#/components/responses/ErrorDefault'
'424':
$ref: '#/components/responses/ErrorDefault'
'500':
$ref: '#/components/responses/ErrorDefault'
tags:
- SeldonDeployments
get:
description: Read the specified Seldon Deployment
operationId: ReadSeldonDeployment
parameters:
- description: Name identifies a resource
in: path
name: name
required: true
schema:
type: string
- description: Namespace provides a logical grouping of resources
in: path
name: namespace
required: true
schema:
type: string
responses:
'200':
$ref: '#/components/responses/SeldonDeploymentResponse'
'400':
$ref: '#/components/responses/ErrorDefault'
'405':
$ref: '#/components/responses/ErrorDefault'
'424':
$ref: '#/components/responses/ErrorDefault'
'500':
$ref: '#/components/responses/ErrorDefault'
tags:
- SeldonDeployments
put:
description: Update the specified Seldon Deployment
operationId: UpdateSeldonDeployment
parameters:
- description: Action
in: query
name: action
schema:
type: string
- description: Message
in: query
name: message
schema:
type: string
- description: Name identifies a resource
in: path
name: name
required: true
schema:
type: string
- description: Namespace provides a logical grouping of resources
in: path
name: namespace
required: true
schema:
type: string
requestBody:
$ref: '#/components/requestBodies/SeldonDeployment'
responses:
'200':
$ref: '#/components/responses/SeldonDeploymentResponse'
'400':
$ref: '#/components/responses/ErrorDefault'
'403':
$ref: '#/components/responses/ErrorDefault'
'405':
$ref: '#/components/responses/ErrorDefault'
'424':
$ref: '#/components/responses/ErrorDefault'
'500':
$ref: '#/components/responses/ErrorDefault'
tags:
- SeldonDeployments
/namespaces/{namespace}/seldondeployments/validate:
get:
description: Validate the given Seldon Deployment
operationId: ValidateSeldonDeployment
parameters:
- description: Namespace provides a logical grouping of resources
in: path
name: namespace
required: true
schema:
type: string
requestBody:
$ref: '#/components/requestBodies/SeldonDeployment'
responses:
'200':
$ref: '#/components/responses/MessageResponse'
'500':
$ref: '#/components/responses/ErrorDefault'
tags:
- SeldonDeployments
components:
schemas:
HostAlias:
description: 'HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the
pod''s hosts file.'
properties:
hostnames:
description: Hostnames for the above IP address.
items:
type: string
type: array
ip:
description: IP address of the host file entry.
type: string
type: object
AlibiExplainerType:
type: string
PersistentVolumeClaimVolumeSource:
description: 'This volume finds the bound PV and mounts that volume for the pod. A
PersistentVolumeClaimVolumeSource is, essentially, a wrapper around another
type of volume that is owned by someone else (the system).'
properties:
claimName:
description: 'claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.
More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'
type: string
readOnly:
description: 'readOnly Will force the ReadOnly setting in VolumeMounts.
Default false.
+optional'
type: boolean
title: PersistentVolumeClaimVolumeSource references the user's PVC in the same namespace.
type: object
ManagedFieldsEntry:
description: 'ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource
that the fieldset applies to.'
properties:
apiVersion:
description: 'APIVersion defines the version of this resource that this field set
applies to. The format is "group/version" just like the top-level
APIVersion field. It is necessary to track the version of a field
set because it cannot be automatically converted.'
type: string
fieldsType:
description: 'FieldsType is the discriminator for the different fields format and version.
There is currently only one possible value: "FieldsV1"'
type: string
fieldsV1:
$ref: '#/components/schemas/FieldsV1'
manager:
description: Manager is an identifier of the workflow managing these fields.
type: string
operation:
$ref: '#/components/schemas/ManagedFieldsOperationType'
subresource:
description: 'Subresource is the name of the subresource used to update that object, or
empty string if the object was updated through the main resource. The
value of this field is used to distinguish between managers, even if they
share the same name. For example, a status update will be distinct from a
regular update using the same manager name.
Note that the APIVersion field is not related to the Subresource field and
it always corresponds to the version of the main resource.'
type: string
time:
description: 'Time is the timestamp of when the ManagedFields entry was added. The
timestamp will also be updated if a field is added, the manager
changes any of the owned fields value or removes a field. The
timestamp does not update when a field is removed from the entry
because another manager took it over.
+optional'
type: string
type: object
ResourceRequirements:
properties:
claims:
description: 'Claims lists the names of resources, defined in spec.resourceClaims,
that are used by this container.
This is an alpha field and requires enabling the
DynamicResourceAllocation feature gate.
This field is immutable. It can only be set for containers.
+listType=map
+listMapKey=name
+featureGate=DynamicResourceAllocation
+optional'
items:
$ref: '#/components/schemas/ResourceClaim'
type: array
limits:
$ref: '#/components/schemas/ResourceList'
requests:
$ref: '#/components/schemas/ResourceList'
title: ResourceRequirements describes the compute resource requirements.
type: object
DeploymentStatus:
properties:
availableReplicas:
format: int32
type: integer
description:
type: string
explainerFor:
type: string
name:
type: string
replicas:
format: int32
type: integer
status:
type: string
type: object
ServerType:
type: string
MetricSpec:
description: 'MetricSpec specifies how to scale based on a single metric
(only `type` and one other matching field should be set at once).'
properties:
containerResource:
$ref: '#/components/schemas/ContainerResourceMetricSource'
external:
$ref: '#/components/schemas/ExternalMetricSource'
object:
$ref: '#/components/schemas/ObjectMetricSource'
pods:
$ref: '#/components/schemas/PodsMetricSource'
resource:
$ref: '#/components/schemas/ResourceMetricSource'
type:
$ref: '#/components/schemas/MetricSourceType'
type: object
Capabilities:
properties:
add:
description: 'Added capabilities
+optional'
items:
$ref: '#/components/schemas/Capability'
type: array
drop:
description: 'Removed capabilities
+optional'
items:
$ref: '#/components/schemas/Capability'
type: array
title: Adds and removes POSIX capabilities from running containers.
type: object
OwnerReference:
description: 'OwnerReference contains enough information to let you identify an owning
object. An owning object must be in the same namespace as the dependent, or
be cluster-scoped, so there is no namespace field.
+structType=atomic'
properties:
apiVersion:
description: API version of the referent.
type: string
blockOwnerDeletion:
description: 'If true, AND if the owner has the "foregroundDeletion" finalizer, then
the owner cannot be deleted from the key-value store until this
reference is removed.
See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion
for how the garbage collector interacts with this field and enforces the foreground deletion.
Defaults to false.
To set this field, a user needs "delete" permission of the owner,
otherwise 422 (Unprocessable Entity) will be returned.
+optional'
type: boolean
controller:
description: 'If true, this reference points to the managing controller.
+optional'
type: boolean
kind:
description: 'Kind of the referent.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
name:
description: 'Name of the referent.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names'
type: string
uid:
$ref: '#/components/schemas/UID'
type: object
PodSecurityContext:
description: 'Some fields are also present in container.securityContext. Field values of
container.securityContext take precedence over field values of PodSecurityContext.'
properties:
fsGroup:
description: 'A special supplemental group that applies to all containers in a pod.
Some volume types allow the Kubelet to change the ownership of that volume
to be owned by the pod:
1. The owning GID will be the FSGroup
2. The setgid bit is set (new files created in the volume will be owned by FSGroup)
3. The permission bits are OR''d with rw-rw----
If unset, the Kubelet will not modify the ownership and permissions of any volume.
Note that this field cannot be set when spec.os.name is windows.
+optional'
format: int64
type: integer
fsGroupChangePolicy:
$ref: '#/components/schemas/PodFSGroupChangePolicy'
runAsGroup:
description: 'The GID to run the entrypoint of the container process.
Uses runtime default if unset.
May also be set in SecurityContext. If set in both SecurityContext and
PodSecurityContext, the value specified in SecurityContext takes precedence
for that container.
Note that this field cannot be set when spec.os.name is windows.
+optional'
format: int64
type: integer
runAsNonRoot:
description: 'Indicates that the container must run as a non-root user.
If true, the Kubelet will validate the image at runtime to ensure that it
does not run as UID 0 (root) and fail to start the container if it does.
If unset or false, no such validation will be performed.
May also be set in SecurityContext. If set in both SecurityContext and
PodSecurityContext, the value specified in SecurityContext takes precedence.
+optional'
type: boolean
runAsUser:
description: 'The UID to run the entrypoint of the container process.
Defaults to user specified in image metadata if unspecified.
May also be set in SecurityContext. If set in both SecurityContext and
PodSecurityContext, the value specified in SecurityContext takes precedence
for that container.
Note that this field cannot be set when spec.os.name is windows.
+optional'
format: int64
type: integer
seLinuxOptions:
$ref: '#/components/schemas/SELinuxOptions'
seccompProfile:
$ref: '#/components/schemas/SeccompProfile'
supplementalGroups:
description: 'A list of groups applied to the first process run in each container, in addition
to the container''s primary GID, the fsGroup (if specified), and group memberships
defined in the container image for the uid of the container process. If unspecified,
no additional groups are added to any container. Note that group memberships
defined in the container image for the uid of the container process are still effective,
even if they are not included in this list.
Note that this field cannot be set when spec.os.name is windows.
+optional'
items:
format: int64
type: integer
type: array
sysctls:
description: 'Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported
sysctls (by the container runtime) might fail to launch.
Note that this field cannot be set when spec.os.name is windows.
+optional'
items:
$ref: '#/components/schemas/Sysctl'
type: array
windowsOptions:
$ref: '#/components/schemas/WindowsSecurityContextOptions'
title: PodSecurityContext holds pod-level security attributes and common container settings.
type: object
AzureDataDiskKind:
description: +enum
type: string
PodSpec:
properties:
activeDeadlineSeconds:
description: 'Optional duration in seconds the pod may be active on the node relative to
StartTime before the system will actively try to mark it failed and kill associated containers.
Value must be a positive integer.
+optional'
format: int64
type: integer
affinity:
$ref: '#/components/schemas/Affinity'
automountServiceAccountToken:
description: 'AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.
+optional'
type: boolean
containers:
description: 'List of containers belonging to the pod.
Containers cannot currently be added or removed.
There must be at least one container in a Pod.
Cannot be updated.
+patchMergeKey=name
+patchStrategy=merge'
items:
$ref: '#/components/schemas/Container'
type: array
dnsConfig:
$ref: '#/components/schemas/PodDNSConfig'
dnsPolicy:
$ref: '#/components/schemas/DNSPolicy'
enableServiceLinks:
description: 'EnableServiceLinks indicates whether information about services should be injected into pod''s
environment variables, matching the syntax of Docker links.
Optional: Defaults to true.
+optional'
type: boolean
ephemeralContainers:
description: 'List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing
pod to perform user-initiated actions such as debugging. This list cannot be specified when
creating a pod, and it cannot be modified by updating the pod spec. In order to add an
ephemeral container to an existing pod, use the pod''s ephemeralcontainers subresource.
+optional
+patchMergeKey=name
+patchStrategy=merge'
items:
$ref: '#/components/schemas/EphemeralContainer'
type: array
hostAliases:
description: 'HostAliases is an optional list of hosts and IPs that will be injected into the pod''s hosts
file if specified. This is only valid for non-hostNetwork pods.
+optional
+patchMergeKey=ip
+patchStrategy=merge'
items:
$ref: '#/components/schemas/HostAlias'
type: array
hostIPC:
description: 'Use the host''s ipc namespace.
Optional: Default to false.
+k8s:conversion-gen=false
+optional'
type: boolean
hostNetwork:
description: 'Host networking requested for this pod. Use the host''s network namespace.
If this option is set, the ports that will be used must be specified.
Default to false.
+k8s:conversion-gen=false
+optional'
type: boolean
hostPID:
description: 'Use the host''s pid namespace.
Optional: Default to false.
+k8s:conversion-gen=false
+optional'
type: boolean
hostUsers:
description: 'Use the host''s user namespace.
Optional: Default to true.
If set to true or not present, the pod will be run in the host user namespace, useful
for when the pod needs a feature only available to the host user namespace, such as
loading a kernel module with CAP_SYS_MODULE.
When set to false, a new userns is created for the pod. Setting false is useful for
mitigating container breakout vulnerabilities even allowing users to run their
containers as root without actually having root privileges on the host.
This field is alpha-level and is only honored by servers that enable the UserNamespacesSupport feature.
+k8s:conversion-gen=false
+optional'
type: boolean
hostname:
description: 'Specifies the hostname of the Pod
If not specified, the pod''s hostname will be set to a system-defined value.
+optional'
type: string
imagePullSecrets:
description: 'ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.
If specified, these secrets will be passed to individual puller implementations for them to use.
More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod
+optional
+patchMergeKey=name
+patchStrategy=merge'
items:
$ref: '#/components/schemas/LocalObjectReference'
type: array
initContainers:
description: 'List of initialization containers belonging to the pod.
Init containers are executed in order prior to containers being started. If any
init container fails, the pod is considered to have failed and is handled according
to its restartPolicy. The name for an init container or normal container must be
unique among all containers.
Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.
The resourceRequirements of an init container are taken into account during scheduling
by finding the highest request/limit for each resource type, and then using the max of
of that value or the sum of the normal containers. Limits are applied to init containers
in a similar fashion.
Init containers cannot currently be added or removed.
Cannot be updated.
More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
+patchMergeKey=name
+patchStrategy=merge'
items:
$ref: '#/components/schemas/Container'
type: array
nodeName:
description: 'NodeName is a request to schedule this pod onto a specific node. If it is non-empty,
the scheduler simply schedules this pod onto that node, assuming that it fits resource
requirements.
+optional'
type: string
nodeSelector:
additionalProperties:
type: string
description: 'NodeSelector is a selector which must be true for the pod to fit on a node.
Selector which must match a node''s labels for the pod to be scheduled on that node.
More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
+optional
+mapType=atomic'
type: object
os:
$ref: '#/components/schemas/PodOS'
overhead:
$ref: '#/components/schemas/ResourceList'
preemptionPolicy:
$ref: '#/components/schemas/PreemptionPolicy'
priority:
description: 'The priority value. Various system components use this field to find the
priority of the pod. When Priority Admission Controller is enabled, it
prevents users from setting this field. The admission controller populates
this field from PriorityClassName.
The higher the value, the higher the priority.
+optional'
format: int32
type: integer
priorityClassName:
description: 'If specified, indicates the pod''s priority. "system-node-critical" and
"system-cluster-critical" are two special keywords which indicate the
highest priorities with the former being the highest priority. Any other
name must be defined by creating a PriorityClass object with that name.
If not specified, the pod priority will be default or zero if there is no
default.
+optional'
type: string
readinessGates:
description: 'If specified, all readiness gates will be evaluated for pod readiness.
A pod is ready when all its containers are ready AND
all conditions specified in the readiness gates have status equal to "True"
More info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates
+optional'
items:
$ref: '#/components/schemas/PodReadinessGate'
type: array
resourceClaims:
description: 'ResourceClaims defines which ResourceClaims must be allocated
and reserved before the Pod is allowed to start. The resources
will be made available to those containers which consume them
by name.
This is an alpha field and requires enabling the
DynamicResourceAllocation feature gate.
This field is immutable.
+patchMergeKey=name
+patchStrategy=merge,retainKeys
+listType=map
+listMapKey=name
+featureGate=DynamicResourceAllocation
+optional'
items:
$ref: '#/components/schemas/PodResourceClaim'
type: array
restartPolicy:
$ref: '#/components/schemas/RestartPolicy'
runtimeClassName:
description: 'RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used
to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run.
If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an
empty definition that uses the default runtime handler.
More info: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class
+optional'
type: string
schedulerName:
description: 'If specified, the pod will be dispatched by specified scheduler.
If not specified, the pod will be dispatched by default scheduler.
+optional'
type: string
schedulingGates:
description: 'SchedulingGates is an opaque list of values that if specified will block scheduling the pod.
If schedulingGates is not empty, the pod will stay in the SchedulingGated state and the
scheduler will not attempt to schedule the pod.
SchedulingGates can only be set at pod creation time, and be removed only afterwards.
This is a beta feature enabled by the PodSchedulingReadiness feature gate.
+patchMergeKey=name
+patchStrategy=merge
+listType=map
+listMapKey=name
+featureGate=PodSchedulingReadiness
+optional'
items:
$ref: '#/components/schemas/PodSchedulingGate'
type: array
securityContext:
$ref: '#/components/schemas/PodSecurityContext'
serviceAccount:
description: 'DeprecatedServiceAccount is a depreciated alias for ServiceAccountName.
Deprecated: Use serviceAccountName instead.
+k8s:conversion-gen=false
+optional'
type: string
serviceAccountName:
description: 'ServiceAccountName is the name of the ServiceAccount to use to run this pod.
More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
+optional'
type: string
setHostnameAsFQDN:
description: 'If true the pod''s hostname will be configured as the pod''s FQDN, rather than the leaf name (the default).
In Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname).
In Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters to FQDN.
If a pod does not have FQDN, this has no effect.
Default to false.
+optional'
type: boolean
shareProcessNamespace:
description: 'Share a single process namespace between all of the containers in a pod.
When this is set containers will be able to view and signal processes from other containers
in the same pod, and the first process in each container will not be assigned PID 1.
HostPID and ShareProcessNamespace cannot both be set.
Optional: Default to false.
+k8s:conversion-gen=false
+optional'
type: boolean
subdomain:
description: 'If specified, the fully qualified Pod hostname will be "<hostname>.<subdomain>.<pod namespace>.svc.<cluster domain>".
If not specified, the pod will not have a domainname at all.
+optional'
type: string
terminationGracePeriodSeconds:
description: 'Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request.
Value must be non-negative integer. The value zero indicates stop immediately via
the kill signal (no opportunity to shut down).
If this value is nil, the default grace period will be used instead.
The grace period is the duration in seconds after the processes running in the pod are sent
a termination signal and the time when the processes are forcibly halted with a kill signal.
Set this value longer than the expected cleanup time for your process.
Defaults to 30 seconds.
+optional'
format: int64
type: integer
tolerations:
description: 'If specified, the pod''s tolerations.
+optional'
items:
$ref: '#/components/schemas/Toleration'
type: array
topologySpreadConstraints:
description: 'TopologySpreadConstraints describes how a group of pods ought to spread across topology
domains. Scheduler will schedule pods in a way which abides by the constraints.
All topologySpreadConstraints are ANDed.
+optional
+patchMergeKey=topologyKey
+patchStrategy=merge
+listType=map
+listMapKey=topologyKey
+listMapKey=whenUnsatisfiable'
items:
$ref: '#/components/schemas/TopologySpreadConstraint'
type: array
volumes:
descripti
# --- truncated at 32 KB (198 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/seldon/refs/heads/main/openapi/seldon-seldondeployments-api-openapi.yml