Seldon KubernetesResources API

KubernetesResources APIs for Seldon Deploy

OpenAPI Specification

seldon-kubernetesresources-api-openapi.yml Raw ↑
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 KubernetesResources 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: KubernetesResources APIs for Seldon Deploy
  name: KubernetesResources
paths:
  /namespaces/{namespace}/seldondeployments/{name}/resources:
    get:
      description: list objects of kind resource for Seldon Deployment
      operationId: ListSeldonDeploymentResources
      parameters:
      - description: Component differentiates between types of model (e.g. predictor, explainer... etc)
        in: query
        name: component
        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/ResourceListResponse'
        '400':
          $ref: '#/components/responses/ErrorDefault'
        '405':
          $ref: '#/components/responses/ErrorDefault'
        '424':
          $ref: '#/components/responses/ErrorDefault'
        '500':
          $ref: '#/components/responses/ErrorDefault'
      tags:
      - KubernetesResources
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
    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
    ContainerStateRunning:
      properties:
        startedAt:
          description: 'Time at which the container was last (re-)started

            +optional'
          type: string
      title: ContainerStateRunning is a running state of a container.
      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
    PodStatus:
      description: 'PodStatus represents information about the status of a pod. Status may trail the actual

        state of a system, especially if the node that hosts the pod cannot contact the control

        plane.'
      properties:
        conditions:
          description: 'Current service state of pod.

            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions

            +optional

            +patchMergeKey=type

            +patchStrategy=merge'
          items:
            $ref: '#/components/schemas/PodCondition'
          type: array
        containerStatuses:
          description: 'The list has one entry per container in the manifest.

            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status

            +optional'
          items:
            $ref: '#/components/schemas/ContainerStatus'
          type: array
        ephemeralContainerStatuses:
          description: 'Status for any ephemeral containers that have run in this pod.

            +optional'
          items:
            $ref: '#/components/schemas/ContainerStatus'
          type: array
        hostIP:
          description: 'hostIP holds the IP address of the host to which the pod is assigned. Empty if the pod has not started yet.

            A pod can be assigned to a node that has a problem in kubelet which in turns mean that HostIP will

            not be updated even if there is a node is assigned to pod

            +optional'
          type: string
        hostIPs:
          description: 'hostIPs holds the IP addresses allocated to the host. If this field is specified, the first entry must

            match the hostIP field. This list is empty if the pod has not started yet.

            A pod can be assigned to a node that has a problem in kubelet which in turns means that HostIPs will

            not be updated even if there is a node is assigned to this pod.

            +optional

            +patchStrategy=merge

            +patchMergeKey=ip

            +listType=atomic'
          items:
            $ref: '#/components/schemas/HostIP'
          type: array
        initContainerStatuses:
          description: 'The list has one entry per init container in the manifest. The most recent successful

            init container will have ready = true, the most recently started container will have

            startTime set.

            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status'
          items:
            $ref: '#/components/schemas/ContainerStatus'
          type: array
        message:
          description: 'A human readable message indicating details about why the pod is in this condition.

            +optional'
          type: string
        nominatedNodeName:
          description: 'nominatedNodeName is set only when this pod preempts other pods on the node, but it cannot be

            scheduled right away as preemption victims receive their graceful termination periods.

            This field does not guarantee that the pod will be scheduled on this node. Scheduler may decide

            to place the pod elsewhere if other nodes become available sooner. Scheduler may also decide to

            give the resources on this node to a higher priority pod that is created after preemption.

            As a result, this field may be different than PodSpec.nodeName when the pod is

            scheduled.

            +optional'
          type: string
        phase:
          $ref: '#/components/schemas/PodPhase'
        podIP:
          description: 'podIP address allocated to the pod. Routable at least within the cluster.

            Empty if not yet allocated.

            +optional'
          type: string
        podIPs:
          description: 'podIPs holds the IP addresses allocated to the pod. If this field is specified, the 0th entry must

            match the podIP field. Pods may be allocated at most 1 value for each of IPv4 and IPv6. This list

            is empty if no IPs have been allocated yet.

            +optional

            +patchStrategy=merge

            +patchMergeKey=ip'
          items:
            $ref: '#/components/schemas/PodIP'
          type: array
        qosClass:
          $ref: '#/components/schemas/PodQOSClass'
        reason:
          description: 'A brief CamelCase message indicating details about why the pod is in this state.

            e.g. ''Evicted''

            +optional'
          type: string
        resize:
          $ref: '#/components/schemas/PodResizeStatus'
        resourceClaimStatuses:
          description: 'Status of resource claims.

            +patchMergeKey=name

            +patchStrategy=merge,retainKeys

            +listType=map

            +listMapKey=name

            +featureGate=DynamicResourceAllocation

            +optional'
          items:
            $ref: '#/components/schemas/PodResourceClaimStatus'
          type: array
        startTime:
          description: 'RFC 3339 date and time at which the object was acknowledged by the Kubelet.

            This is before the Kubelet pulled the container image(s) for the pod.

            +optional'
          type: string
      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
    DeploymentStrategy:
      properties:
        rollingUpdate:
          $ref: '#/components/schemas/RollingUpdateDeployment'
        type:
          $ref: '#/components/schemas/DeploymentStrategyType'
      title: DeploymentStrategy describes how to replace existing pods with new ones.
      type: object
    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 

# --- truncated at 32 KB (243 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/seldon/refs/heads/main/openapi/seldon-kubernetesresources-api-openapi.yml