openapi: 3.0.3
info:
  title: interLink server API
  description: >-
    This is the API spec for the Virtual Kubelet to interLink API server
    communication
  version: 0.4.0
paths:
  /create:
    post:
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InterlinkPodCreateRequests'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InterlinkRetrievedPodData'
  /delete:
    post:
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/V1Pod'
      responses:
        '200':
          description: OK
  /getLogs:
    post:
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InterlinkLogStruct'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: string
  /pinglink:
    post:
      responses:
        '200':
          description: OK
  /status:
    post:
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/V1Pod'
              nullable: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/InterlinkPodStatus'
components:
  schemas:
    InterlinkApptainerOptions:
      type: object
      properties:
        cleanenv:
          type: boolean
        containall:
          type: boolean
        executable:
          type: string
        fakeroot:
          type: boolean
        fuseMode:
          type: string
        noHome:
          type: boolean
        noInit:
          type: boolean
        noPrivs:
          type: boolean
        nvidiaSupport:
          type: boolean
        unsquash:
          type: boolean
    InterlinkContainerLogOpts:
      type: object
      properties:
        Bytes:
          type: integer
        Follow:
          type: boolean
        Previous:
          type: boolean
        SinceSeconds:
          type: integer
        SinceTime:
          type: string
          format: date-time
        Tail:
          type: integer
        Timestamps:
          type: boolean
    InterlinkLogStruct:
      type: object
      properties:
        ContainerName:
          type: string
        Namespace:
          type: string
        Opts:
          $ref: '#/components/schemas/InterlinkContainerLogOpts'
        PodName:
          type: string
        PodUID:
          type: string
    InterlinkPodCreateRequests:
      type: object
      properties:
        configmaps:
          type: array
          items:
            $ref: '#/components/schemas/V1ConfigMap'
          nullable: true
        jobscriptURL:
          type: string
        pod:
          $ref: '#/components/schemas/V1Pod'
        projectedvolumesmaps:
          type: array
          items:
            $ref: '#/components/schemas/V1ConfigMap'
          nullable: true
        secrets:
          type: array
          items:
            $ref: '#/components/schemas/V1Secret'
          nullable: true
    InterlinkPodStatus:
      type: object
      properties:
        JID:
          type: string
        UID:
          type: string
        containers:
          type: array
          items:
            $ref: '#/components/schemas/V1ContainerStatus'
          nullable: true
        initContainers:
          type: array
          items:
            $ref: '#/components/schemas/V1ContainerStatus'
          nullable: true
        name:
          type: string
        namespace:
          type: string
    InterlinkRetrievedContainer:
      type: object
      properties:
        configMaps:
          type: array
          items:
            $ref: '#/components/schemas/V1ConfigMap'
          nullable: true
        emptyDirs:
          type: array
          items:
            type: string
          nullable: true
        name:
          type: string
        projectedvolumemaps:
          type: array
          items:
            $ref: '#/components/schemas/V1ConfigMap'
          nullable: true
        secrets:
          type: array
          items:
            $ref: '#/components/schemas/V1Secret'
          nullable: true
    InterlinkRetrievedPodData:
      type: object
      properties:
        container:
          type: array
          items:
            $ref: '#/components/schemas/InterlinkRetrievedContainer'
          nullable: true
        jobConfig:
          $ref: '#/components/schemas/InterlinkScriptBuildConfig'
        jobScript:
          type: string
        pod:
          $ref: '#/components/schemas/V1Pod'
    InterlinkScriptBuildConfig:
      type: object
      properties:
        ApptainerOptions:
          $ref: '#/components/schemas/InterlinkApptainerOptions'
        SingularityHubProxy:
          $ref: '#/components/schemas/InterlinkSingularityHubConfig'
        Volumes:
          $ref: '#/components/schemas/InterlinkVolumesOptions'
    InterlinkSingularityHubConfig:
      type: object
      properties:
        cache_validity_seconds:
          type: integer
        master_token:
          type: string
        server:
          type: string
    InterlinkVolumesOptions:
      type: object
      properties:
        additional_directories_in_path:
          type: array
          items:
            type: string
          nullable: true
        apptainer_cachedir:
          type: string
        fuse_sleep_seconds:
          type: integer
        image_dir:
          type: string
        scratch_area:
          type: string
    IntstrIntOrString:
      type: object
    ResourceQuantity:
      type: object
    V1AWSElasticBlockStoreVolumeSource:
      type: object
      properties:
        fsType:
          type: string
        partition:
          type: integer
        readOnly:
          type: boolean
        volumeID:
          type: string
    V1Affinity:
      type: object
      properties:
        nodeAffinity:
          $ref: '#/components/schemas/V1NodeAffinity'
        podAffinity:
          $ref: '#/components/schemas/V1PodAffinity'
        podAntiAffinity:
          $ref: '#/components/schemas/V1PodAntiAffinity'
    V1AppArmorProfile:
      type: object
      properties:
        localhostProfile:
          type: string
          nullable: true
        type:
          type: string
    V1AzureDiskVolumeSource:
      type: object
      properties:
        cachingMode:
          type: string
          nullable: true
        diskName:
          type: string
        diskURI:
          type: string
        fsType:
          type: string
          nullable: true
        kind:
          type: string
          nullable: true
        readOnly:
          type: boolean
          nullable: true
    V1AzureFileVolumeSource:
      type: object
      properties:
        readOnly:
          type: boolean
        secretName:
          type: string
        shareName:
          type: string
    V1CSIVolumeSource:
      type: object
      properties:
        driver:
          type: string
        fsType:
          type: string
          nullable: true
        nodePublishSecretRef:
          $ref: '#/components/schemas/V1LocalObjectReference'
        readOnly:
          type: boolean
          nullable: true
        volumeAttributes:
          type: object
          additionalProperties:
            type: string
    V1Capabilities:
      type: object
      properties:
        add:
          type: array
          items:
            type: string
        drop:
          type: array
          items:
            type: string
    V1CephFSVolumeSource:
      type: object
      properties:
        monitors:
          type: array
          items:
            type: string
          nullable: true
        path:
          type: string
        readOnly:
          type: boolean
        secretFile:
          type: string
        secretRef:
          $ref: '#/components/schemas/V1LocalObjectReference'
        user:
          type: string
    V1CinderVolumeSource:
      type: object
      properties:
        fsType:
          type: string
        readOnly:
          type: boolean
        secretRef:
          $ref: '#/components/schemas/V1LocalObjectReference'
        volumeID:
          type: string
    V1ClusterTrustBundleProjection:
      type: object
      properties:
        labelSelector:
          $ref: '#/components/schemas/V1LabelSelector'
        name:
          type: string
          nullable: true
        optional:
          type: boolean
          nullable: true
        path:
          type: string
        signerName:
          type: string
          nullable: true
    V1ConfigMap:
      type: object
      properties:
        apiVersion:
          type: string
        binaryData:
          type: object
          additionalProperties:
            type: string
            format: base64
        data:
          type: object
          additionalProperties:
            type: string
        immutable:
          type: boolean
          nullable: true
        kind:
          type: string
        metadata:
          $ref: '#/components/schemas/V1ObjectMeta'
    V1ConfigMapEnvSource:
      type: object
      properties:
        name:
          type: string
        optional:
          type: boolean
          nullable: true
    V1ConfigMapKeySelector:
      type: object
      properties:
        key:
          type: string
        name:
          type: string
        optional:
          type: boolean
          nullable: true
    V1ConfigMapProjection:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/V1KeyToPath'
        name:
          type: string
        optional:
          type: boolean
          nullable: true
    V1ConfigMapVolumeSource:
      type: object
      properties:
        defaultMode:
          type: integer
          nullable: true
        items:
          type: array
          items:
            $ref: '#/components/schemas/V1KeyToPath'
        name:
          type: string
        optional:
          type: boolean
          nullable: true
    V1Container:
      type: object
      properties:
        args:
          type: array
          items:
            type: string
        command:
          type: array
          items:
            type: string
        env:
          type: array
          items:
            $ref: '#/components/schemas/V1EnvVar'
        envFrom:
          type: array
          items:
            $ref: '#/components/schemas/V1EnvFromSource'
        image:
          type: string
        imagePullPolicy:
          type: string
        lifecycle:
          $ref: '#/components/schemas/V1Lifecycle'
        livenessProbe:
          $ref: '#/components/schemas/V1Probe'
        name:
          type: string
        ports:
          type: array
          items:
            $ref: '#/components/schemas/V1ContainerPort'
        readinessProbe:
          $ref: '#/components/schemas/V1Probe'
        resizePolicy:
          type: array
          items:
            $ref: '#/components/schemas/V1ContainerResizePolicy'
        resources:
          $ref: '#/components/schemas/V1ResourceRequirements'
        restartPolicy:
          type: string
          nullable: true
        securityContext:
          $ref: '#/components/schemas/V1SecurityContext'
        startupProbe:
          $ref: '#/components/schemas/V1Probe'
        stdin:
          type: boolean
        stdinOnce:
          type: boolean
        terminationMessagePath:
          type: string
        terminationMessagePolicy:
          type: string
        tty:
          type: boolean
        volumeDevices:
          type: array
          items:
            $ref: '#/components/schemas/V1VolumeDevice'
        volumeMounts:
          type: array
          items:
            $ref: '#/components/schemas/V1VolumeMount'
        workingDir:
          type: string
    V1ContainerPort:
      type: object
      properties:
        containerPort:
          type: integer
        hostIP:
          type: string
        hostPort:
          type: integer
        name:
          type: string
        protocol:
          type: string
    V1ContainerResizePolicy:
      type: object
      properties:
        resourceName:
          type: string
        restartPolicy:
          type: string
    V1ContainerState:
      type: object
      properties:
        running:
          $ref: '#/components/schemas/V1ContainerStateRunning'
        terminated:
          $ref: '#/components/schemas/V1ContainerStateTerminated'
        waiting:
          $ref: '#/components/schemas/V1ContainerStateWaiting'
    V1ContainerStateRunning:
      type: object
      properties:
        startedAt:
          type: string
    V1ContainerStateTerminated:
      type: object
      properties:
        containerID:
          type: string
        exitCode:
          type: integer
        finishedAt:
          type: string
        message:
          type: string
        reason:
          type: string
        signal:
          type: integer
        startedAt:
          type: string
    V1ContainerStateWaiting:
      type: object
      properties:
        message:
          type: string
        reason:
          type: string
    V1ContainerStatus:
      type: object
      properties:
        allocatedResources:
          $ref: '#/components/schemas/V1ResourceList'
        allocatedResourcesStatus:
          type: array
          items:
            $ref: '#/components/schemas/V1ResourceStatus'
        containerID:
          type: string
        image:
          type: string
        imageID:
          type: string
        lastState:
          $ref: '#/components/schemas/V1ContainerState'
        name:
          type: string
        ready:
          type: boolean
        resources:
          $ref: '#/components/schemas/V1ResourceRequirements'
        restartCount:
          type: integer
        started:
          type: boolean
          nullable: true
        state:
          $ref: '#/components/schemas/V1ContainerState'
        stopSignal:
          type: string
          nullable: true
        user:
          $ref: '#/components/schemas/V1ContainerUser'
        volumeMounts:
          type: array
          items:
            $ref: '#/components/schemas/V1VolumeMountStatus'
    V1ContainerUser:
      type: object
      properties:
        linux:
          $ref: '#/components/schemas/V1LinuxContainerUser'
    V1DownwardAPIProjection:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/V1DownwardAPIVolumeFile'
    V1DownwardAPIVolumeFile:
      type: object
      properties:
        fieldRef:
          $ref: '#/components/schemas/V1ObjectFieldSelector'
        mode:
          type: integer
          nullable: true
        path:
          type: string
        resourceFieldRef:
          $ref: '#/components/schemas/V1ResourceFieldSelector'
    V1DownwardAPIVolumeSource:
      type: object
      properties:
        defaultMode:
          type: integer
          nullable: true
        items:
          type: array
          items:
            $ref: '#/components/schemas/V1DownwardAPIVolumeFile'
    V1EmptyDirVolumeSource:
      type: object
      properties:
        medium:
          type: string
        sizeLimit:
          $ref: '#/components/schemas/ResourceQuantity'
    V1EnvFromSource:
      type: object
      properties:
        configMapRef:
          $ref: '#/components/schemas/V1ConfigMapEnvSource'
        prefix:
          type: string
        secretRef:
          $ref: '#/components/schemas/V1SecretEnvSource'
    V1EnvVar:
      type: object
      properties:
        name:
          type: string
        value:
          type: string
        valueFrom:
          $ref: '#/components/schemas/V1EnvVarSource'
    V1EnvVarSource:
      type: object
      properties:
        configMapKeyRef:
          $ref: '#/components/schemas/V1ConfigMapKeySelector'
        fieldRef:
          $ref: '#/components/schemas/V1ObjectFieldSelector'
        resourceFieldRef:
          $ref: '#/components/schemas/V1ResourceFieldSelector'
        secretKeyRef:
          $ref: '#/components/schemas/V1SecretKeySelector'
    V1EphemeralContainer:
      type: object
      properties:
        args:
          type: array
          items:
            type: string
        command:
          type: array
          items:
            type: string
        env:
          type: array
          items:
            $ref: '#/components/schemas/V1EnvVar'
        envFrom:
          type: array
          items:
            $ref: '#/components/schemas/V1EnvFromSource'
        image:
          type: string
        imagePullPolicy:
          type: string
        lifecycle:
          $ref: '#/components/schemas/V1Lifecycle'
        livenessProbe:
          $ref: '#/components/schemas/V1Probe'
        name:
          type: string
        ports:
          type: array
          items:
            $ref: '#/components/schemas/V1ContainerPort'
        readinessProbe:
          $ref: '#/components/schemas/V1Probe'
        resizePolicy:
          type: array
          items:
            $ref: '#/components/schemas/V1ContainerResizePolicy'
        resources:
          $ref: '#/components/schemas/V1ResourceRequirements'
        restartPolicy:
          type: string
          nullable: true
        securityContext:
          $ref: '#/components/schemas/V1SecurityContext'
        startupProbe:
          $ref: '#/components/schemas/V1Probe'
        stdin:
          type: boolean
        stdinOnce:
          type: boolean
        targetContainerName:
          type: string
        terminationMessagePath:
          type: string
        terminationMessagePolicy:
          type: string
        tty:
          type: boolean
        volumeDevices:
          type: array
          items:
            $ref: '#/components/schemas/V1VolumeDevice'
        volumeMounts:
          type: array
          items:
            $ref: '#/components/schemas/V1VolumeMount'
        workingDir:
          type: string
    V1EphemeralVolumeSource:
      type: object
      properties:
        volumeClaimTemplate:
          $ref: '#/components/schemas/V1PersistentVolumeClaimTemplate'
    V1ExecAction:
      type: object
      properties:
        command:
          type: array
          items:
            type: string
    V1FCVolumeSource:
      type: object
      properties:
        fsType:
          type: string
        lun:
          type: integer
          nullable: true
        readOnly:
          type: boolean
        targetWWNs:
          type: array
          items:
            type: string
        wwids:
          type: array
          items:
            type: string
    V1FieldsV1:
      type: object
    V1FlexVolumeSource:
      type: object
      properties:
        driver:
          type: string
        fsType:
          type: string
        options:
          type: object
          additionalProperties:
            type: string
        readOnly:
          type: boolean
        secretRef:
          $ref: '#/components/schemas/V1LocalObjectReference'
    V1FlockerVolumeSource:
      type: object
      properties:
        datasetName:
          type: string
        datasetUUID:
          type: string
    V1GCEPersistentDiskVolumeSource:
      type: object
      properties:
        fsType:
          type: string
        partition:
          type: integer
        pdName:
          type: string
        readOnly:
          type: boolean
    V1GRPCAction:
      type: object
      properties:
        port:
          type: integer
        service:
          type: string
          nullable: true
    V1GitRepoVolumeSource:
      type: object
      properties:
        directory:
          type: string
        repository:
          type: string
        revision:
          type: string
    V1GlusterfsVolumeSource:
      type: object
      properties:
        endpoints:
          type: string
        path:
          type: string
        readOnly:
          type: boolean
    V1HTTPGetAction:
      type: object
      properties:
        host:
          type: string
        httpHeaders:
          type: array
          items:
            $ref: '#/components/schemas/V1HTTPHeader'
        path:
          type: string
        port:
          $ref: '#/components/schemas/IntstrIntOrString'
        scheme:
          type: string
    V1HTTPHeader:
      type: object
      properties:
        name:
          type: string
        value:
          type: string
    V1HostAlias:
      type: object
      properties:
        hostnames:
          type: array
          items:
            type: string
        ip:
          type: string
    V1HostIP:
      type: object
      properties:
        ip:
          type: string
    V1HostPathVolumeSource:
      type: object
      properties:
        path:
          type: string
        type:
          type: string
          nullable: true
    V1ISCSIVolumeSource:
      type: object
      properties:
        chapAuthDiscovery:
          type: boolean
        chapAuthSession:
          type: boolean
        fsType:
          type: string
        initiatorName:
          type: string
          nullable: true
        iqn:
          type: string
        iscsiInterface:
          type: string
        lun:
          type: integer
        portals:
          type: array
          items:
            type: string
        readOnly:
          type: boolean
        secretRef:
          $ref: '#/components/schemas/V1LocalObjectReference'
        targetPortal:
          type: string
    V1ImageVolumeSource:
      type: object
      properties:
        pullPolicy:
          type: string
        reference:
          type: string
    V1KeyToPath:
      type: object
      properties:
        key:
          type: string
        mode:
          type: integer
          nullable: true
        path:
          type: string
    V1LabelSelector:
      type: object
      properties:
        matchExpressions:
          type: array
          items:
            $ref: '#/components/schemas/V1LabelSelectorRequirement'
        matchLabels:
          type: object
          additionalProperties:
            type: string
    V1LabelSelectorRequirement:
      type: object
      properties:
        key:
          type: string
        operator:
          type: string
        values:
          type: array
          items:
            type: string
    V1Lifecycle:
      type: object
      properties:
        postStart:
          $ref: '#/components/schemas/V1LifecycleHandler'
        preStop:
          $ref: '#/components/schemas/V1LifecycleHandler'
        stopSignal:
          type: string
          nullable: true
    V1LifecycleHandler:
      type: object
      properties:
        exec:
          $ref: '#/components/schemas/V1ExecAction'
        httpGet:
          $ref: '#/components/schemas/V1HTTPGetAction'
        sleep:
          $ref: '#/components/schemas/V1SleepAction'
        tcpSocket:
          $ref: '#/components/schemas/V1TCPSocketAction'
    V1LinuxContainerUser:
      type: object
      properties:
        gid:
          type: integer
        supplementalGroups:
          type: array
          items:
            type: integer
        uid:
          type: integer
    V1LocalObjectReference:
      type: object
      properties:
        name:
          type: string
    V1ManagedFieldsEntry:
      type: object
      properties:
        apiVersion:
          type: string
        fieldsType:
          type: string
        fieldsV1:
          $ref: '#/components/schemas/V1FieldsV1'
        manager:
          type: string
        operation:
          type: string
        subresource:
          type: string
        time:
          type: string
    V1NFSVolumeSource:
      type: object
      properties:
        path:
          type: string
        readOnly:
          type: boolean
        server:
          type: string
    V1NodeAffinity:
      type: object
      properties:
        preferredDuringSchedulingIgnoredDuringExecution:
          type: array
          items:
            $ref: '#/components/schemas/V1PreferredSchedulingTerm'
        requiredDuringSchedulingIgnoredDuringExecution:
          $ref: '#/components/schemas/V1NodeSelector'
    V1NodeSelector:
      type: object
      properties:
        nodeSelectorTerms:
          type: array
          items:
            $ref: '#/components/schemas/V1NodeSelectorTerm'
          nullable: true
    V1NodeSelectorRequirement:
      type: object
      properties:
        key:
          type: string
        operator:
          type: string
        values:
          type: array
          items:
            type: string
    V1NodeSelectorTerm:
      type: object
      properties:
        matchExpressions:
          type: array
          items:
            $ref: '#/components/schemas/V1NodeSelectorRequirement'
        matchFields:
          type: array
          items:
            $ref: '#/components/schemas/V1NodeSelectorRequirement'
    V1ObjectFieldSelector:
      type: object
      properties:
        apiVersion:
          type: string
        fieldPath:
          type: string
    V1ObjectMeta:
      type: object
      properties:
        annotations:
          type: object
          additionalProperties:
            type: string
        creationTimestamp:
          type: string
        deletionGracePeriodSeconds:
          type: integer
          nullable: true
        deletionTimestamp:
          type: string
        finalizers:
          type: array
          items:
            type: string
        generateName:
          type: string
        generation:
          type: integer
        labels:
          type: object
          additionalProperties:
            type: string
        managedFields:
          type: array
          items:
            $ref: '#/components/schemas/V1ManagedFieldsEntry'
        name:
          type: string
        namespace:
          type: string
        ownerReferences:
          type: array
          items:
            $ref: '#/components/schemas/V1OwnerReference'
        resourceVersion:
          type: string
        selfLink:
          type: string
        uid:
          type: string
    V1OwnerReference:
      type: object
      properties:
        apiVersion:
          type: string
        blockOwnerDeletion:
          type: boolean
          nullable: true
        controller:
          type: boolean
          nullable: true
        kind:
          type: string
        name:
          type: string
        uid:
          type: string
    V1PersistentVolumeClaimSpec:
      type: object
      properties:
        accessModes:
          type: array
          items:
            type: string
        dataSource:
          $ref: '#/components/schemas/V1TypedLocalObjectReference'
        dataSourceRef:
          $ref: '#/components/schemas/V1TypedObjectReference'
        resources:
          $ref: '#/components/schemas/V1VolumeResourceRequirements'
        selector:
          $ref: '#/components/schemas/V1LabelSelector'
        storageClassName:
          type: string
          nullable: true
        volumeAttributesClassName:
          type: string
          nullable: true
        volumeMode:
          type: string
          nullable: true
        volumeName:
          type: string
    V1PersistentVolumeClaimTemplate:
      type: object
      properties:
        metadata:
          $ref: '#/components/schemas/V1ObjectMeta'
        spec:
          $ref: '#/components/schemas/V1PersistentVolumeClaimSpec'
    V1PersistentVolumeClaimVolumeSource:
      type: object
      properties:
        claimName:
          type: string
        readOnly:
          type: boolean
    V1PhotonPersistentDiskVolumeSource:
      type: object
      properties:
        fsType:
          type: string
        pdID:
          type: string
    V1Pod:
      type: object
      properties:
        apiVersion:
          type: string
        kind:
          type: string
        metadata:
          $ref: '#/components/schemas/V1ObjectMeta'
        spec:
          $ref: '#/components/schemas/V1PodSpec'
        status:
          $ref: '#/components/schemas/V1PodStatus'
    V1PodAffinity:
      type: object
      properties:
        preferredDuringSchedulingIgnoredDuringExecution:
          type: array
          items:
            $ref: '#/components/schemas/V1WeightedPodAffinityTerm'
        requiredDuringSchedulingIgnoredDuringExecution:
          type: array
          items:
            $ref: '#/components/schemas/V1PodAffinityTerm'
    V1PodAffinityTerm:
      type: object
      properties:
        labelSelector:
          $ref: '#/components/schemas/V1LabelSelector'
        matchLabelKeys:
          type: array
          items:
            type: string
        mismatchLabelKeys:
          type: array
          items:
            type: string
        namespaceSelector:
          $ref: '#/components/schemas/V1LabelSelector'
        namespaces:
          type: array
          items:
            type: string
        topologyKey:
          type: string
    V1PodAntiAffinity:
      type: object
      properties:
        preferredDuringSchedulingIgnoredDuringExecution:
          type: array
          items:
            $ref: '#/components/schemas/V1WeightedPodAffinityTerm'
        requiredDuringSchedulingIgnoredDuringExecution:
          type: array
          items:
            $ref: '#/components/schemas/V1PodAffinityTerm'
    V1PodCondition:
      type: object
      properties:
        lastProbeTime:
          type: string
        lastTransitionTime:
          type: string
        message:
          type: string
        observedGeneration:
          type: integer
        reason:
          type: string
        status:
          type: string
        type:
          type: string
    V1PodDNSConfig:
      type: object
      properties:
        nameservers:
          type: array
          items:
            type: string
        options:
          type: array
          items:
            $ref: '#/components/schemas/V1PodDNSConfigOption'
        searches:
          type: array
          items:
            type: string
    V1PodDNSConfigOption:
      type: object
      properties:
        name:
          type: string
        value:
          type: string
          nullable: true
    V1PodIP:
      type: object
      properties:
        ip:
          type: string
    V1PodOS:
      type: object
      properties:
        name:
          type: string
    V1PodReadinessGate:
      type: object
      properties:
        conditionType:
          type: string
    V1PodResourceClaim:
      type: object
      properties:
        name:
          type: string
        resourceClaimName:
          type: string
          nullable: true
        resourceClaimTemplateName:
          type: string
          nullable: true
    V1PodResourceClaimStatus:
      type: object
      properties:
        name:
          type: string
        resourceClaimName:
          type: string
          nullable: true
    V1PodSchedulingGate:
      type: object
      properties:
        name:
          type: string
    V1PodSecurityContext:
      type: object
      properties:
        appArmorProfile:
          $ref: '#/components/schemas/V1AppArmorProfile'
        fsGroup:
          type: integer
          nullable: true
        fsGroupChangePolicy:
          type: string
          nullable: true
        runAsGroup:
          type: integer
          nullable: true
        runAsNonRoot:
          type: boolean
          nullable: true
        runAsUser:
          type: integer
          nullable: true
        seLinuxChangePolicy:
          type: string
          nullable: true
        seLinuxOptions:
          $ref: '#/components/schemas/V1SELinuxOptions'
        seccompProfile:
          $ref: '#/components/schemas/V1SeccompProfile'
        supplementalGroups:
          type: array
          items:
            type: integer
        supplementalGroupsPolicy:
          type: string
          nullable: true
        sysctls:
          type: array
          items:
            $ref: '#/components/schemas/V1Sysctl'
        windowsOptions:
          $ref: '#/components/schemas/V1WindowsSecurityContextOptions'
    V1PodSpec:
      type: object
      properties:
        activeDeadlineSeconds:
          type: integer
          nullable: true
        affinity:
          $ref: '#/components/schemas/V1Affinity'
        automountServiceAccountToken:
          type: boolean
          nullable: true
        containers:
          type: array
          items:
            $ref: '#/components/schemas/V1Container'
          nullable: true
        dnsConfig:
          $ref: '#/components/schemas/V1PodDNSConfig'
        dnsPolicy:
          type: string
        enableServiceLinks:
          type: boolean
          nullable: true
        ephemeralContainers:
          type: array
          items:
            $ref: '#/components/schemas/V1EphemeralContainer'
        hostAliases:
          type: array
          items:
            $ref: '#/components/schemas/V1HostAlias'
        hostIPC:
          type: boolean
        hostNetwork:
          type: boolean
        hostPID:
          type: boolean
        hostUsers:
          type: boolean
          nullable: true
        hostname:
          type: string
        imagePullSecrets:
          type: array
          items:
            $ref: '#/components/schemas/V1LocalObjectReference'
        initContainers:
          type: array
          items:
            $ref: '#/components/schemas/V1Container'
        nodeName:
          type: string
        nodeSelector:
          type: object
          additionalProperties:
            type: string
        os:
          $ref: '#/components/schemas/V1PodOS'
        overhead:
          $ref: '#/components/schemas/V1ResourceList'
        preemptionPolicy:
          type: string
          nullable: true
        priority:
          type: integer
          nullable: true
        priorityClassName:
          type: string
        readinessGates:
          type: array
          items:
            $ref: '#/components/schemas/V1PodReadinessGate'
        resourceClaims:
          type: array
          items:
            $ref: '#/components/schemas/V1PodResourceClaim'
        resources:
          $ref: '#/components/schemas/V1ResourceRequirements'
        restartPolicy:
          type: string
        runtimeClassName:
          type: string
          nullable: true
        schedulerName:
          type: string
        schedulingGates:
          type: array
          items:
            $ref: '#/components/schemas/V1PodSchedulingGate'
        securityContext:
          $ref: '#/components/schemas/V1PodSecurityContext'
        serviceAccount:
          type: string
        serviceAccountName:
          type: string
        setHostnameAsFQDN:
          type: boolean
          nullable: true
        shareProcessNamespace:
          type: boolean
          nullable: true
        subdomain:
          type: string
        terminationGracePeriodSeconds:
          type: integer
          nullable: true
        tolerations:
          type: array
          items:
            $ref: '#/components/schemas/V1Toleration'
        topologySpreadConstraints:
          type: array
          items:
            $ref: '#/components/schemas/V1TopologySpreadConstraint'
        volumes:
          type: array
          items:
            $ref: '#/components/schemas/V1Volume'
    V1PodStatus:
      type: object
      properties:
        conditions:
          type: array
          items:
            $ref: '#/components/schemas/V1PodCondition'
        containerStatuses:
          type: array
          items:
            $ref: '#/components/schemas/V1ContainerStatus'
        ephemeralContainerStatuses:
          type: array
          items:
            $ref: '#/components/schemas/V1ContainerStatus'
        hostIP:
          type: string
        hostIPs:
          type: array
          items:
            $ref: '#/components/schemas/V1HostIP'
        initContainerStatuses:
          type: array
          items:
            $ref: '#/components/schemas/V1ContainerStatus'
        message:
          type: string
        nominatedNodeName:
          type: string
        observedGeneration:
          type: integer
        phase:
          type: string
        podIP:
          type: string
        podIPs:
          type: array
          items:
            $ref: '#/components/schemas/V1PodIP'
        qosClass:
          type: string
        reason:
          type: string
        resize:
          type: string
        resourceClaimStatuses:
          type: array
          items:
            $ref: '#/components/schemas/V1PodResourceClaimStatus'
        startTime:
          type: string
    V1PortworxVolumeSource:
      type: object
      properties:
        fsType:
          type: string
        readOnly:
          type: boolean
        volumeID:
          type: string
    V1PreferredSchedulingTerm:
      type: object
      properties:
        preference:
          $ref: '#/components/schemas/V1NodeSelectorTerm'
        weight:
          type: integer
    V1Probe:
      type: object
      properties:
        exec:
          $ref: '#/components/schemas/V1ExecAction'
        failureThreshold:
          type: integer
        grpc:
          $ref: '#/components/schemas/V1GRPCAction'
        httpGet:
          $ref: '#/components/schemas/V1HTTPGetAction'
        initialDelaySeconds:
          type: integer
        periodSeconds:
          type: integer
        successThreshold:
          type: integer
        tcpSocket:
          $ref: '#/components/schemas/V1TCPSocketAction'
        terminationGracePeriodSeconds:
          type: integer
          nullable: true
        timeoutSeconds:
          type: integer
    V1ProjectedVolumeSource:
      type: object
      properties:
        defaultMode:
          type: integer
          nullable: true
        sources:
          type: array
          items:
            $ref: '#/components/schemas/V1VolumeProjection'
          nullable: true
    V1QuobyteVolumeSource:
      type: object
      properties:
        group:
          type: string
        readOnly:
          type: boolean
        registry:
          type: string
        tenant:
          type: string
        user:
          type: string
        volume:
          type: string
    V1RBDVolumeSource:
      type: object
      properties:
        fsType:
          type: string
        image:
          type: string
        keyring:
          type: string
        monitors:
          type: array
          items:
            type: string
          nullable: true
        pool:
          type: string
        readOnly:
          type: boolean
        secretRef:
          $ref: '#/components/schemas/V1LocalObjectReference'
        user:
          type: string
    V1ResourceClaim:
      type: object
      properties:
        name:
          type: string
        request:
          type: string
    V1ResourceFieldSelector:
      type: object
      properties:
        containerName:
          type: string
        divisor:
          $ref: '#/components/schemas/ResourceQuantity'
        resource:
          type: string
    V1ResourceHealth:
      type: object
      properties:
        health:
          type: string
        resourceID:
          type: string
    V1ResourceList:
      type: object
      additionalProperties:
        $ref: '#/components/schemas/ResourceQuantity'
    V1ResourceRequirements:
      type: object
      properties:
        claims:
          type: array
          items:
            $ref: '#/components/schemas/V1ResourceClaim'
        limits:
          $ref: '#/components/schemas/V1ResourceList'
        requests:
          $ref: '#/components/schemas/V1ResourceList'
    V1ResourceStatus:
      type: object
      properties:
        name:
          type: string
        resources:
          type: array
          items:
            $ref: '#/components/schemas/V1ResourceHealth'
    V1SELinuxOptions:
      type: object
      properties:
        level:
          type: string
        role:
          type: string
        type:
          type: string
        user:
          type: string
    V1ScaleIOVolumeSource:
      type: object
      properties:
        fsType:
          type: string
        gateway:
          type: string
        protectionDomain:
          type: string
        readOnly:
          type: boolean
        secretRef:
          $ref: '#/components/schemas/V1LocalObjectReference'
        sslEnabled:
          type: boolean
        storageMode:
          type: string
        storagePool:
          type: string
        system:
          type: string
        volumeName:
          type: string
    V1SeccompProfile:
      type: object
      properties:
        localhostProfile:
          type: string
          nullable: true
        type:
          type: string
    V1Secret:
      type: object
      properties:
        apiVersion:
          type: string
        data:
          type: object
          additionalProperties:
            type: string
            format: base64
        immutable:
          type: boolean
          nullable: true
        kind:
          type: string
        metadata:
          $ref: '#/components/schemas/V1ObjectMeta'
        stringData:
          type: object
          additionalProperties:
            type: string
        type:
          type: string
    V1SecretEnvSource:
      type: object
      properties:
        name:
          type: string
        optional:
          type: boolean
          nullable: true
    V1SecretKeySelector:
      type: object
      properties:
        key:
          type: string
        name:
          type: string
        optional:
          type: boolean
          nullable: true
    V1SecretProjection:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/V1KeyToPath'
        name:
          type: string
        optional:
          type: boolean
          nullable: true
    V1SecretVolumeSource:
      type: object
      properties:
        defaultMode:
          type: integer
          nullable: true
        items:
          type: array
          items:
            $ref: '#/components/schemas/V1KeyToPath'
        optional:
          type: boolean
          nullable: true
        secretName:
          type: string
    V1SecurityContext:
      type: object
      properties:
        allowPrivilegeEscalation:
          type: boolean
          nullable: true
        appArmorProfile:
          $ref: '#/components/schemas/V1AppArmorProfile'
        capabilities:
          $ref: '#/components/schemas/V1Capabilities'
        privileged:
          type: boolean
          nullable: true
        procMount:
          type: string
          nullable: true
        readOnlyRootFilesystem:
          type: boolean
          nullable: true
        runAsGroup:
          type: integer
          nullable: true
        runAsNonRoot:
          type: boolean
          nullable: true
        runAsUser:
          type: integer
          nullable: true
        seLinuxOptions:
          $ref: '#/components/schemas/V1SELinuxOptions'
        seccompProfile:
          $ref: '#/components/schemas/V1SeccompProfile'
        windowsOptions:
          $ref: '#/components/schemas/V1WindowsSecurityContextOptions'
    V1ServiceAccountTokenProjection:
      type: object
      properties:
        audience:
          type: string
        expirationSeconds:
          type: integer
          nullable: true
        path:
          type: string
    V1SleepAction:
      type: object
      properties:
        seconds:
          type: integer
    V1StorageOSVolumeSource:
      type: object
      properties:
        fsType:
          type: string
        readOnly:
          type: boolean
        secretRef:
          $ref: '#/components/schemas/V1LocalObjectReference'
        volumeName:
          type: string
        volumeNamespace:
          type: string
    V1Sysctl:
      type: object
      properties:
        name:
          type: string
        value:
          type: string
    V1TCPSocketAction:
      type: object
      properties:
        host:
          type: string
        port:
          $ref: '#/components/schemas/IntstrIntOrString'
    V1Toleration:
      type: object
      properties:
        effect:
          type: string
        key:
          type: string
        operator:
          type: string
        tolerationSeconds:
          type: integer
          nullable: true
        value:
          type: string
    V1TopologySpreadConstraint:
      type: object
      properties:
        labelSelector:
          $ref: '#/components/schemas/V1LabelSelector'
        matchLabelKeys:
          type: array
          items:
            type: string
        maxSkew:
          type: integer
        minDomains:
          type: integer
          nullable: true
        nodeAffinityPolicy:
          type: string
          nullable: true
        nodeTaintsPolicy:
          type: string
          nullable: true
        topologyKey:
          type: string
        whenUnsatisfiable:
          type: string
    V1TypedLocalObjectReference:
      type: object
      properties:
        apiGroup:
          type: string
          nullable: true
        kind:
          type: string
        name:
          type: string
    V1TypedObjectReference:
      type: object
      properties:
        apiGroup:
          type: string
          nullable: true
        kind:
          type: string
        name:
          type: string
        namespace:
          type: string
          nullable: true
    V1Volume:
      type: object
      properties:
        awsElasticBlockStore:
          $ref: '#/components/schemas/V1AWSElasticBlockStoreVolumeSource'
        azureDisk:
          $ref: '#/components/schemas/V1AzureDiskVolumeSource'
        azureFile:
          $ref: '#/components/schemas/V1AzureFileVolumeSource'
        cephfs:
          $ref: '#/components/schemas/V1CephFSVolumeSource'
        cinder:
          $ref: '#/components/schemas/V1CinderVolumeSource'
        configMap:
          $ref: '#/components/schemas/V1ConfigMapVolumeSource'
        csi:
          $ref: '#/components/schemas/V1CSIVolumeSource'
        downwardAPI:
          $ref: '#/components/schemas/V1DownwardAPIVolumeSource'
        emptyDir:
          $ref: '#/components/schemas/V1EmptyDirVolumeSource'
        ephemeral:
          $ref: '#/components/schemas/V1EphemeralVolumeSource'
        fc:
          $ref: '#/components/schemas/V1FCVolumeSource'
        flexVolume:
          $ref: '#/components/schemas/V1FlexVolumeSource'
        flocker:
          $ref: '#/components/schemas/V1FlockerVolumeSource'
        gcePersistentDisk:
          $ref: '#/components/schemas/V1GCEPersistentDiskVolumeSource'
        gitRepo:
          $ref: '#/components/schemas/V1GitRepoVolumeSource'
        glusterfs:
          $ref: '#/components/schemas/V1GlusterfsVolumeSource'
        hostPath:
          $ref: '#/components/schemas/V1HostPathVolumeSource'
        image:
          $ref: '#/components/schemas/V1ImageVolumeSource'
        iscsi:
          $ref: '#/components/schemas/V1ISCSIVolumeSource'
        name:
          type: string
        nfs:
          $ref: '#/components/schemas/V1NFSVolumeSource'
        persistentVolumeClaim:
          $ref: '#/components/schemas/V1PersistentVolumeClaimVolumeSource'
        photonPersistentDisk:
          $ref: '#/components/schemas/V1PhotonPersistentDiskVolumeSource'
        portworxVolume:
          $ref: '#/components/schemas/V1PortworxVolumeSource'
        projected:
          $ref: '#/components/schemas/V1ProjectedVolumeSource'
        quobyte:
          $ref: '#/components/schemas/V1QuobyteVolumeSource'
        rbd:
          $ref: '#/components/schemas/V1RBDVolumeSource'
        scaleIO:
          $ref: '#/components/schemas/V1ScaleIOVolumeSource'
        secret:
          $ref: '#/components/schemas/V1SecretVolumeSource'
        storageos:
          $ref: '#/components/schemas/V1StorageOSVolumeSource'
        vsphereVolume:
          $ref: '#/components/schemas/V1VsphereVirtualDiskVolumeSource'
    V1VolumeDevice:
      type: object
      properties:
        devicePath:
          type: string
        name:
          type: string
    V1VolumeMount:
      type: object
      properties:
        mountPath:
          type: string
        mountPropagation:
          type: string
          nullable: true
        name:
          type: string
        readOnly:
          type: boolean
        recursiveReadOnly:
          type: string
          nullable: true
        subPath:
          type: string
        subPathExpr:
          type: string
    V1VolumeMountStatus:
      type: object
      properties:
        mountPath:
          type: string
        name:
          type: string
        readOnly:
          type: boolean
        recursiveReadOnly:
          type: string
          nullable: true
    V1VolumeProjection:
      type: object
      properties:
        clusterTrustBundle:
          $ref: '#/components/schemas/V1ClusterTrustBundleProjection'
        configMap:
          $ref: '#/components/schemas/V1ConfigMapProjection'
        downwardAPI:
          $ref: '#/components/schemas/V1DownwardAPIProjection'
        secret:
          $ref: '#/components/schemas/V1SecretProjection'
        serviceAccountToken:
          $ref: '#/components/schemas/V1ServiceAccountTokenProjection'
    V1VolumeResourceRequirements:
      type: object
      properties:
        limits:
          $ref: '#/components/schemas/V1ResourceList'
        requests:
          $ref: '#/components/schemas/V1ResourceList'
    V1VsphereVirtualDiskVolumeSource:
      type: object
      properties:
        fsType:
          type: string
        storagePolicyID:
          type: string
        storagePolicyName:
          type: string
        volumePath:
          type: string
    V1WeightedPodAffinityTerm:
      type: object
      properties:
        podAffinityTerm:
          $ref: '#/components/schemas/V1PodAffinityTerm'
        weight:
          type: integer
    V1WindowsSecurityContextOptions:
      type: object
      properties:
        gmsaCredentialSpec:
          type: string
          nullable: true
        gmsaCredentialSpecName:
          type: string
          nullable: true
        hostProcess:
          type: boolean
          nullable: true
        runAsUserName:
          type: string
          nullable: true
