> ## Documentation Index
> Fetch the complete documentation index at: https://www.truefoundry.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Application

> Get a single application by its ID.



## OpenAPI

````yaml /openapi.json get /api/svc/v1/apps/{id}
openapi: 3.1.0
info:
  title: TrueFoundry API
  description: API for TrueFoundry
  version: 0.1.0
  contact: {}
servers:
  - url: https://{controlPlaneURL}
    variables:
      controlPlaneURL:
        default: app.truefoundry.com
        description: Control Plane URL
security: []
tags:
  - name: Agent
  - name: Agent Skills
  - name: Applications
  - name: Metrics
  - name: Apply
  - name: Artifacts
  - name: Audit Logs
  - name: Clusters
  - name: Jobs
  - name: Logs
  - name: MCP Servers V2
  - name: MLRepos
  - name: Model Deployments
  - name: Models
  - name: Personal Access Tokens
  - name: Prompts
  - name: Provider Integrations
  - name: SCIM v2
  - name: Secret Groups
  - name: Secrets
  - name: Teams
  - name: Traces
  - name: Users
  - name: Virtual Accounts
  - name: Role Bindings
  - name: Workspaces
paths:
  /api/svc/v1/apps/{id}:
    get:
      tags:
        - Applications
      summary: Get Application
      description: Get a single application by its ID.
      operationId: Application.getApplication
      parameters:
        - name: id
          required: true
          in: path
          description: Unique identifier of the application
          schema:
            type: string
      responses:
        '200':
          description: Application details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetApplicationResponse'
        '403':
          description: Caller lacks read permission on the application workspace.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HttpError'
        '404':
          description: No application found for the given ID.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HttpError'
      security:
        - jwt: []
components:
  schemas:
    GetApplicationResponse:
      type: object
      properties:
        data:
          description: Application details
          allOf:
            - $ref: '#/components/schemas/Application'
      required:
        - data
      title: GetApplicationResponse
      x-fern-type-name: GetApplicationResponse
    HttpError:
      type: object
      properties:
        statusCode:
          type: integer
          description: HTTP Status Code
        message:
          type: string
          description: Error Message
        code:
          oneOf:
            - type: integer
            - type: string
          description: Error code
          nullable: true
        details:
          type: array
          description: Error details
          items:
            type: object
          nullable: true
      required:
        - statusCode
        - message
      title: HttpError
      x-fern-type-name: HttpError
    Application:
      type: object
      properties:
        id:
          type: string
          nullable: true
          description: Unique identifier of the application
        fqn:
          type: string
          nullable: true
          description: FQN of the application
        name:
          type: string
          nullable: true
          description: Human-readable application name
        type:
          nullable: true
          description: Type of the application
          allOf:
            - $ref: '#/components/schemas/ApplicationType'
        createdBySubject:
          description: Subject (user or service account) that created this application
          allOf:
            - $ref: '#/components/schemas/Subject'
        tenantName:
          type: string
          nullable: true
          description: Tenant this application belongs to
        metadata:
          nullable: true
          description: Application metadata including pause state and sync info
          allOf:
            - $ref: '#/components/schemas/ApplicationMetadata'
        lifecycleStage:
          description: Current lifecycle stage of the application
          allOf:
            - $ref: '#/components/schemas/ApplicationLifecycleStage'
        workspaceId:
          type: string
          nullable: true
          description: Unique identifier of the workspace this application belongs to
        lastVersion:
          type: integer
          nullable: true
          description: Version number of the latest deployment
        activeVersion:
          type: integer
          nullable: true
          description: Version number of the currently active deployment
        applicationSetId:
          type: string
          nullable: true
          description: >-
            Unique identifier of the application set this application belongs
            to, if any
        createdAt:
          format: date-time
          type: string
          nullable: true
        updatedAt:
          format: date-time
          type: string
          nullable: true
        recommendations:
          description: Recommendations for this application
          nullable: true
          type: array
          items:
            $ref: '#/components/schemas/Recommendation'
        alerts:
          description: Alerts for this application
          nullable: true
          type: array
          items:
            $ref: '#/components/schemas/Alert'
        alertsSummary:
          type: object
          description: Summary of alerts for this application
          additionalProperties: true
          nullable: true
        applicationDebugInfos:
          description: Debug infos for this application
          nullable: true
          type: array
          items:
            $ref: '#/components/schemas/ApplicationDebugInfo'
        potentialProblems:
          description: Potential problems with the application
          nullable: true
          type: array
          items:
            $ref: '#/components/schemas/ApplicationProblem'
        autopilot:
          type: object
          additionalProperties: true
        workspaceFqn:
          type: string
          nullable: true
        createdBy:
          type: string
          nullable: true
        deployment:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/Deployment'
        activeDeploymentId:
          type: string
          nullable: true
        lastDeploymentId:
          type: string
          nullable: true
      required:
        - createdBySubject
        - lifecycleStage
        - autopilot
      title: Application
      x-fern-type-name: Application
    ApplicationType:
      type: string
      enum:
        - async-service
        - service
        - job
        - spark-job
        - helm
        - notebook
        - spark-notebook
        - codeserver
        - rstudio
        - ssh-server
        - volume
        - application
        - application-set
        - intercept
        - workflow
      description: Type of the application
      title: ApplicationType
      x-fern-type-name: ApplicationType
    Subject:
      type: object
      properties:
        subjectId:
          type: string
          description: Subject ID
        subjectType:
          description: Subject type
          allOf:
            - $ref: '#/components/schemas/SubjectType'
        subjectSlug:
          type: string
          description: Subject slug
          nullable: true
        subjectDisplayName:
          type: string
          description: Subject display name
          nullable: true
        subjectPatName:
          type: string
          description: Subject PAT name
          nullable: true
        subjectControllerName:
          type: string
          nullable: true
        subjectExternalIdentitySlug:
          type: string
          description: External identity slug (external_identity_id:sub:email)
          nullable: true
      required:
        - subjectId
        - subjectType
      title: Subject
      x-fern-type-name: Subject
    ApplicationMetadata:
      type: object
      properties:
        paused:
          type: boolean
          nullable: true
          description: >-
            Explicit pause state. true = user has paused the app (all pods
            removed). false = user has explicitly resumed the app.
            null/undefined = user has never toggled pause; the app is managed
            normally, but autoshutdown may have scaled it to zero pods due to
            inactivity.
      title: ApplicationMetadata
      x-fern-type-name: ApplicationMetadata
    ApplicationLifecycleStage:
      type: string
      enum:
        - active
        - deleting
        - deletion_failed
      description: Current lifecycle stage of the application
      title: ApplicationLifecycleStage
      x-fern-type-name: ApplicationLifecycleStage
    Recommendation:
      type: object
      properties:
        id:
          type: string
          nullable: true
        clusterId:
          type: string
          nullable: true
        applicationId:
          type: string
          nullable: true
        deploymentId:
          type: string
          nullable: true
        applicationVersion:
          type: integer
          nullable: true
        recommendationData:
          type: object
          additionalProperties: true
        recommendationType:
          type: string
        appliedDeploymentId:
          type: string
          nullable: true
        expiryTimestamp:
          format: date-time
          type: string
        createdAt:
          format: date-time
          type: string
          nullable: true
        updatedAt:
          format: date-time
          type: string
          nullable: true
      required:
        - recommendationData
        - recommendationType
        - expiryTimestamp
      title: Recommendation
      x-fern-type-name: Recommendation
    Alert:
      type: object
      properties:
        id:
          type: string
          nullable: true
        name:
          type: string
        timestamps:
          type: array
          items:
            format: date-time
            type: string
        startTime:
          format: date-time
          type: string
        resolvedTime:
          format: date-time
          type: string
          nullable: true
        applicationId:
          type: string
          nullable: true
        clusterId:
          type: string
        tenantName:
          type: string
          nullable: true
        fingerprint:
          type: string
        updatedAt:
          type: string
          nullable: true
        createdAt:
          type: string
          nullable: true
        applicationDebugInfoId:
          type: string
          nullable: true
      required:
        - name
        - timestamps
        - startTime
        - clusterId
        - fingerprint
      title: Alert
      x-fern-type-name: Alert
    ApplicationDebugInfo:
      type: object
      properties:
        id:
          type: string
          nullable: true
        applicationId:
          type: string
        application:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/Application'
        debugInfo:
          type: object
          additionalProperties: true
        createdAt:
          format: date-time
          type: string
          nullable: true
        updatedAt:
          format: date-time
          type: string
          nullable: true
      required:
        - applicationId
        - debugInfo
      title: ApplicationDebugInfo
      x-fern-type-name: ApplicationDebugInfo
    ApplicationProblem:
      type: object
      properties:
        name:
          type: string
        description:
          type: string
      required:
        - name
        - description
      title: ApplicationProblem
      x-fern-type-name: ApplicationProblem
    Deployment:
      type: object
      properties:
        id:
          type: string
          nullable: true
          description: Unique identifier of the deployment
        version:
          type: number
          nullable: true
          description: Incremental version number within the application
        fqn:
          type: string
          nullable: true
          description: FQN of the deployment
        applicationId:
          type: string
          nullable: true
          description: Unique identifier of the application this deployment belongs to
        manifest:
          description: Deployment manifest defining the application configuration.
          oneOf:
            - $ref: '#/components/schemas/Service'
            - $ref: '#/components/schemas/AsyncService'
            - $ref: '#/components/schemas/Job'
            - $ref: '#/components/schemas/Notebook'
            - $ref: '#/components/schemas/Codeserver'
            - $ref: '#/components/schemas/SSHServer'
            - $ref: '#/components/schemas/RStudio'
            - $ref: '#/components/schemas/Helm'
            - $ref: '#/components/schemas/Volume'
            - $ref: '#/components/schemas/ApplicationSet'
            - $ref: '#/components/schemas/Workflow'
            - $ref: '#/components/schemas/SparkJob'
            - $ref: '#/components/schemas/Intercept'
        application:
          nullable: true
          description: Summary of the parent application (included when requested)
          allOf:
            - $ref: '#/components/schemas/ApplicationSummary'
        createdBySubject:
          description: Subject (user or service account) that created this deployment
          allOf:
            - $ref: '#/components/schemas/Subject'
        createdAt:
          format: date-time
          type: string
          nullable: true
          description: Timestamp when the deployment was created
        updatedAt:
          format: date-time
          type: string
          nullable: true
          description: Timestamp when the deployment was last updated
        deploymentBuilds:
          nullable: true
          description: Build steps associated with this deployment
          type: array
          items:
            $ref: '#/components/schemas/BuildInfo'
        deploymentStatuses:
          nullable: true
          description: Full history of deployment status transitions
          type: array
          items:
            $ref: '#/components/schemas/DeploymentStatus'
        currentStatusId:
          type: string
          nullable: true
          description: Unique identifier of the current deployment status record
        currentStatus:
          nullable: true
          description: Current deployment status object.
          allOf:
            - $ref: '#/components/schemas/DeploymentStatus'
        appliedRecommendations:
          description: Applied recommendations for this deployment
          nullable: true
          type: array
          items:
            $ref: '#/components/schemas/Recommendation'
        createdBy:
          type: string
          nullable: true
          description: Slug of the subject that created this deployment
      required:
        - manifest
        - createdBySubject
      title: Deployment
      x-fern-type-name: Deployment
    SubjectType:
      type: string
      enum:
        - user
        - team
        - serviceaccount
        - virtualaccount
        - external-identity
        - agent-identity
        - role
      description: >-
        Type of the authenticated subject. "user" for human users,
        "serviceaccount" (also known as virtual account) for programmatic
        access.
      title: SubjectType
      x-fern-type-name: SubjectType
    Service:
      description: Describes the configuration for the service
      type: object
      properties:
        type:
          description: +value=service
          type: string
          enum:
            - service
        replicas:
          description: >-
            Deploy multiple instances of your pods to distribute incoming
            traffic across them, ensuring effective load balancing.
          default: 1
          oneOf:
            - type: number
              minimum: 0
              maximum: 500
            - $ref: '#/components/schemas/ServiceAutoscaling'
        auto_shutdown:
          $ref: '#/components/schemas/Autoshutdown'
        allow_interception:
          description: >-
            Whether to allow intercepts to be applied for this service.

            This would inject an additional sidecar in each pod of the service.
            Not recommended on production
          type: boolean
          default: false
        rollout_strategy:
          description: >-
            Strategy to dictate how a rollout should happen when a new release
            for this service is made
            [Docs](https://docs.truefoundry.com/docs/rollout-strategy)
          type: object
          oneOf:
            - $ref: '#/components/schemas/Rolling'
            - $ref: '#/components/schemas/Canary'
            - $ref: '#/components/schemas/BlueGreen'
          discriminator:
            propertyName: type
      allOf:
        - $ref: '#/components/schemas/BaseService'
      required:
        - type
        - replicas
      title: Service
      x-fern-type-name: Service
    AsyncService:
      description: Describes the configuration for the async-service
      type: object
      properties:
        type:
          description: +value=async-service
          type: string
          enum:
            - async-service
        replicas:
          description: >-
            Deploy multiple instances of your pods to distribute incoming
            traffic across them, ensuring effective load balancing.
          default: 1
          oneOf:
            - type: number
              minimum: 0
              maximum: 500
            - $ref: '#/components/schemas/AsyncServiceAutoscaling'
        rollout_strategy:
          $ref: '#/components/schemas/Rolling'
        worker_config:
          $ref: '#/components/schemas/WorkerConfig'
        sidecar:
          $ref: '#/components/schemas/AsyncProcessorSidecar'
      allOf:
        - $ref: '#/components/schemas/BaseService'
      required:
        - type
        - replicas
        - worker_config
      title: AsyncService
      x-fern-type-name: AsyncService
    Job:
      description: Describes the configuration for the job
      type: object
      required:
        - type
        - name
        - image
        - trigger
      properties:
        type:
          description: +value=job
          type: string
          enum:
            - job
        name:
          description: Name of the job
          type: string
          pattern: ^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$
        image:
          description: >-
            Specify whether you want to deploy a Docker image or build and
            deploy from source code
          type: object
          oneOf:
            - $ref: '#/components/schemas/Build'
            - $ref: '#/components/schemas/Image'
          discriminator:
            propertyName: type
        trigger:
          description: Specify the trigger
          type: object
          default:
            type: manual
          oneOf:
            - $ref: '#/components/schemas/Manual'
            - $ref: '#/components/schemas/Schedule'
          discriminator:
            propertyName: type
        trigger_on_deploy:
          description: Trigger the job after deploy immediately
          type: boolean
        params:
          description: Configure params and pass it to create different job runs
          type: array
          items:
            $ref: '#/components/schemas/Param'
        env:
          description: >-
            Configure environment variables to be injected in the service either
            as plain text or secrets.
            [Docs](https://docs.truefoundry.com/docs/env-variables)
          type: object
          default: null
          additionalProperties:
            type: string
          nullable: true
        resources:
          $ref: '#/components/schemas/Resources'
        alerts:
          description: Configure alerts to be sent when the job starts/fails/completes
          type: array
          items:
            $ref: '#/components/schemas/JobAlert'
        retries:
          description: >-
            Specify the maximum number of attempts to retry a job before it is
            marked as failed.
          type: integer
          minimum: 0
          maximum: 10
          default: 0
        timeout:
          description: Job timeout in seconds.
          type: integer
          minimum: 0
          exclusiveMinimum: true
          maximum: 432000
        concurrency_limit:
          description: Number of runs that can run concurrently
          type: integer
          minimum: 0
          exclusiveMinimum: true
        service_account:
          description: +sort=1000
          type: string
        mounts:
          description: >-
            Configure data to be mounted to job pod(s) as a string, secret or
            volume.
            [Docs](https://docs.truefoundry.com/docs/mounting-volumes-job)
          type: array
          items:
            type: object
            oneOf:
              - $ref: '#/components/schemas/SecretMount'
              - $ref: '#/components/schemas/StringDataMount'
              - $ref: '#/components/schemas/VolumeMount'
        labels:
          description: Labels
          type: object
          additionalProperties:
            type: string
        kustomize:
          $ref: '#/components/schemas/Kustomize'
        workspace_fqn:
          description: Fully qualified name of the workspace
          type: string
      title: Job
      x-fern-type-name: Job
    Notebook:
      description: Describes the configuration for the service
      type: object
      properties:
        type:
          description: +value=notebook
          type: string
          enum:
            - notebook
        image:
          $ref: '#/components/schemas/WorkbenchImage'
        cull_timeout:
          description: >-
            Stop the notebook instance after this much time in minutes of
            inactivity.

            The notebook instance will be stopped even if the notebook is open
            in your browser, but nothing is running on the notebook.
          type: integer
          minimum: 5
          default: 30
      allOf:
        - $ref: '#/components/schemas/BaseWorkbenchInput'
      required:
        - type
        - image
      title: Notebook
      x-fern-type-name: Notebook
    Codeserver:
      description: Describes the configuration for the code server
      type: object
      properties:
        type:
          description: +value=codeserver
          type: string
          enum:
            - codeserver
        image:
          $ref: '#/components/schemas/WorkbenchImage'
      allOf:
        - $ref: '#/components/schemas/BaseWorkbenchInput'
      required:
        - type
        - image
      title: Codeserver
      x-fern-type-name: Codeserver
    SSHServer:
      description: Describes the configuration for the ssh server
      type: object
      properties:
        type:
          description: +value=ssh-server
          type: string
          enum:
            - ssh-server
        image:
          $ref: '#/components/schemas/WorkbenchImage'
        ssh_public_key:
          description: >-
            Add Your SSH Public Key, this will be used to authenticate you to
            the SSH Server.  \

            You can find it using `cat ~/.ssh/id_rsa.pub` in Mac/Linux or `type
            $home\.ssh\id_rsa.pub` in Windows Powershell.  \

            You can also generate a new SSH key pair using `ssh-keygen -t rsa`
            in your local terminal. (same for both Mac/Linux and Windows
            Powershell)
          type: string
        cull_timeout:
          description: >-
            Stop the SSH Server instance after this much time in minutes of
            inactivity. The instance is considered active if there is at least
            one active SSH connection (a client connected to the SSH server), or
            if a background job is running using tmux or screen, or if the pod
            has restarted.
          type: integer
          minimum: 5
      allOf:
        - $ref: '#/components/schemas/BaseWorkbenchInput'
      required:
        - type
        - image
        - ssh_public_key
      title: SSHServer
      x-fern-type-name: SSHServer
    RStudio:
      description: Describes the configuration for the Rstudio server
      type: object
      properties:
        type:
          description: +value=rstudio
          type: string
          enum:
            - rstudio
        image:
          $ref: '#/components/schemas/WorkbenchImage'
      allOf:
        - $ref: '#/components/schemas/BaseWorkbenchInput'
      required:
        - type
        - image
      title: RStudio
      x-fern-type-name: RStudio
    Helm:
      type: object
      required:
        - type
        - name
        - source
      properties:
        type:
          description: +value=helm
          type: string
          enum:
            - helm
        name:
          description: >-
            Name of the Helm deployment. This will be set as the release name of
            the chart you are deploying.
          type: string
          pattern: ^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$
        labels:
          description: Add labels to base argo app
          type: object
          additionalProperties:
            type: string
        source:
          description: Source helm repository
          type: object
          oneOf:
            - $ref: '#/components/schemas/HelmRepo'
            - $ref: '#/components/schemas/OCIRepo'
            - $ref: '#/components/schemas/GitHelmRepo'
          discriminator:
            propertyName: type
        values:
          description: Values file as block file
          type: object
        kustomize:
          $ref: '#/components/schemas/Kustomize'
        ignoreDifferences:
          type: array
          items:
            type: object
        workspace_fqn:
          description: Fully qualified name of the workspace
          type: string
      title: Helm
      x-fern-type-name: Helm
    Volume:
      type: object
      required:
        - type
        - name
        - config
      properties:
        type:
          description: +value=volume
          type: string
          enum:
            - volume
        name:
          description: Name of the Volume. This will be set as the volume name.
          type: string
          pattern: ^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$
        config:
          description: >-
            Volume Config - Volume Configuration, can be either Dynamically
            provisioned or statically provisioned.
          type: object
          oneOf:
            - $ref: '#/components/schemas/DynamicVolumeConfig'
            - $ref: '#/components/schemas/StaticVolumeConfig'
          discriminator:
            propertyName: type
        volume_browser:
          $ref: '#/components/schemas/VolumeBrowser'
        workspace_fqn:
          description: Fully qualified name of the workspace
          type: string
      title: Volume
      x-fern-type-name: Volume
    ApplicationSet:
      description: Describes the configuration for the application set
      type: object
      required:
        - type
        - name
      properties:
        type:
          description: +value=application-set
          type: string
          enum:
            - application-set
        name:
          description: Name of the application set.
          type: string
        components:
          description: Array of components with their specifications.
          type: array
          items:
            type: object
            oneOf:
              - $ref: '#/components/schemas/Service'
              - $ref: '#/components/schemas/AsyncService'
              - $ref: '#/components/schemas/Job'
              - $ref: '#/components/schemas/Helm'
        template:
          description: Template to be used for the application set.
          type: string
        values:
          description: Values to be used to render components for the application set.
          type: object
        workspace_fqn:
          description: Fully qualified name of the workspace
          type: string
        convert_template_manifest:
          description: >-
            Flag to indicate if the template manifest should be converted to
            TrueFoundry manifest
          type: boolean
      title: ApplicationSet
      x-fern-type-name: ApplicationSet
    Workflow:
      description: Describes the configuration for the worflow
      type: object
      required:
        - type
        - name
        - source
        - workflow_file_path
      properties:
        type:
          description: +value=workflow
          type: string
          enum:
            - workflow
        name:
          description: Name of the workflow
          type: string
          pattern: ^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$
        source:
          description: Source Code for the workflow, either local or remote
          type: object
          oneOf:
            - $ref: '#/components/schemas/LocalSource'
            - $ref: '#/components/schemas/RemoteSource'
          discriminator:
            propertyName: type
        workflow_file_path:
          description: Path to the workflow file relative to the project root path
          type: string
        flyte_entities:
          description: Flyte Entities
          type: array
          items:
            type: object
            oneOf:
              - $ref: '#/components/schemas/FlyteTask'
              - $ref: '#/components/schemas/FlyteWorkflow'
              - $ref: '#/components/schemas/FlyteLaunchPlan'
        alerts:
          description: Alerts
          type: array
          items:
            $ref: '#/components/schemas/WorkflowAlert'
      title: Workflow
      x-fern-type-name: Workflow
    SparkJob:
      type: object
      required:
        - type
        - name
        - image
        - entrypoint
        - driver_config
        - executor_config
      properties:
        type:
          description: |-
            +value=spark-job
            +sort=1
          type: string
          enum:
            - spark-job
        name:
          description: Name of the job
          type: string
          pattern: ^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$
        image:
          description: >-
            The image to use for driver and executors. Must have spark
            installed. Spark version must match the version in the image.
          type: object
          oneOf:
            - $ref: '#/components/schemas/SparkImage'
            - $ref: '#/components/schemas/SparkImageBuild'
          discriminator:
            propertyName: type
        entrypoint:
          description: Entrypoint
          type: object
          oneOf:
            - $ref: '#/components/schemas/SparkJobPythonEntrypoint'
            - $ref: '#/components/schemas/SparkJobScalaEntrypoint'
            - $ref: '#/components/schemas/SparkJobJavaEntrypoint'
            - $ref: '#/components/schemas/SparkJobPythonNotebookEntrypoint'
            - $ref: '#/components/schemas/SparkJobScalaNotebookEntrypoint'
          discriminator:
            propertyName: type
        driver_config:
          $ref: '#/components/schemas/SparkDriverConfig'
        executor_config:
          $ref: '#/components/schemas/SparkExecutorConfig'
        env:
          description: >-
            Configure environment variables to be injected in the service either
            as plain text.
            [Docs](https://docs.truefoundry.com/docs/env-variables)
          type: object
          default: null
          nullable: true
        spark_conf:
          description: >-
            Extra configuration properties to be passed to the spark job.
            [Docs](https://spark.apache.org/docs/latest/configuration.html)
          type: object
          default: null
          additionalProperties:
            type: string
            minLength: 1
          nullable: true
        mounts:
          description: >-
            Configure volumes to be mounted to driver and executors.
            [Docs](https://docs.truefoundry.com/docs/mounting-volumes-job)
          type: array
          items:
            $ref: '#/components/schemas/VolumeMount'
        retries:
          description: >-
            Specify the maximum number of attempts to retry a job before it is
            marked as failed.
          type: integer
          minimum: 0
          maximum: 10
          default: 0
        service_account:
          description: Service Account
          type: string
        workspace_fqn:
          description: Fully qualified name of the workspace
          type: string
      title: SparkJob
      x-fern-type-name: SparkJob
    Intercept:
      type: object
      required:
        - type
        - name
        - rules
      properties:
        type:
          description: +value=intercept
          type: string
          enum:
            - intercept
        name:
          description: Name of the service this intercept is for
          type: string
          pattern: ^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$
        rules:
          type: array
          items:
            type: object
            required:
              - port
              - action
            properties:
              port:
                description: Port of service to be intercepted
                type: integer
                minimum: 0
                maximum: 65535
              match:
                $ref: '#/components/schemas/HeaderMatch'
              action:
                description: Action to take on succesful match
                type: object
                oneOf:
                  - $ref: '#/components/schemas/ForwardAction'
                  - $ref: '#/components/schemas/MirrorAction'
                discriminator:
                  propertyName: type
      title: Intercept
      x-fern-type-name: Intercept
    ApplicationSummary:
      type: object
      properties:
        id:
          type: string
          nullable: true
          description: Unique identifier of the application
        fqn:
          type: string
          nullable: true
          description: FQN of the application
        name:
          type: string
          nullable: true
          description: Human-readable application name
        type:
          nullable: true
          description: Type of the application
          allOf:
            - $ref: '#/components/schemas/ApplicationType'
        metadata:
          nullable: true
          description: Application metadata including pause state and sync info
          allOf:
            - $ref: '#/components/schemas/ApplicationMetadata'
        lifecycleStage:
          description: Current lifecycle stage of the application
          allOf:
            - $ref: '#/components/schemas/ApplicationLifecycleStage'
        workspaceId:
          type: string
          nullable: true
          description: Unique identifier of the workspace this application belongs to
        activeVersion:
          type: integer
          nullable: true
          description: Version number of the currently active deployment
        applicationSetId:
          type: string
          nullable: true
          description: >-
            Unique identifier of the application set this application belongs
            to, if any
      required:
        - lifecycleStage
      title: ApplicationSummary
      x-fern-type-name: ApplicationSummary
    BuildInfo:
      type: object
      properties:
        name:
          type: string
        status:
          type: number
          enum:
            - 20
            - 30
            - 40
          description: |2-

                  Status of the build:
                    STARTED = 20,
                    SUCCEEDED = 30,
                    FAILED = 40
                
          example: 20
      required:
        - name
        - status
      title: BuildInfo
      x-fern-type-name: BuildInfo
    DeploymentStatus:
      type: object
      properties:
        id:
          type: string
          nullable: true
        deploymentId:
          type: string
          nullable: true
        status:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/DeploymentStatusValue'
        state:
          type: object
          nullable: true
        transition:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/DeploymentTransition'
        message:
          type: string
          nullable: true
        retryCount:
          type: number
          nullable: true
        createdAt:
          format: date-time
          type: string
          nullable: true
        updatedAt:
          format: date-time
          type: string
          nullable: true
      title: DeploymentStatus
      x-fern-type-name: DeploymentStatus
    ServiceAutoscaling:
      type: object
      properties:
        metrics:
          description: Metrics to use for the autoscaler
          type: object
          oneOf:
            - $ref: '#/components/schemas/CPUUtilizationMetric'
            - $ref: '#/components/schemas/RPSMetric'
            - $ref: '#/components/schemas/CronMetric'
          discriminator:
            propertyName: type
      allOf:
        - $ref: '#/components/schemas/BaseAutoscaling'
      required:
        - metrics
      title: ServiceAutoscaling
      x-fern-type-name: ServiceAutoscaling
    Autoshutdown:
      type: object
      required:
        - wait_time
      properties:
        wait_time:
          description: >-
            The period to wait after the last received request before scaling
            the replicas to 0. This value should be high enough to allow for the
            replicas of the service to come up to avoid premature scaling down.
          type: integer
          minimum: 0
          maximum: 604800
          default: 900
      title: Autoshutdown
      x-fern-type-name: Autoshutdown
    Rolling:
      description: >-
        This strategy updates the pods in a rolling fashion such that a subset
        of the

        total pods are replaced with new version at one time.

        A commonly used strategy can be to have maxUnavailablePercentage close
        to 0 so that there

        is no downtime and keep the maxSurgePercentage to around 25%. If you are
        anyways running

        a large number of pods, the service can often tolerate a few pods going
        down - so you

        max maxUnavailablePercentage = 10 and maxSurgePercentage=0. You can read
        about it more

        [here](https://spot.io/resources/kubernetes-autoscaling/5-kubernetes-deployment-strategies-roll-out-like-the-pros/)
      type: object
      required:
        - type
        - max_unavailable_percentage
        - max_surge_percentage
      properties:
        type:
          description: +value=rolling_update
          type: string
          enum:
            - rolling_update
        max_unavailable_percentage:
          description: >-
            Percentage of total replicas that can be brought down at one time.

            For a value of 25 when replicas are set to 12 this would mean
            minimum (25% of 12) = 3 pods might be unavailable during the
            deployment.

            Setting this to a higher value can help in speeding up the
            deployment process.
          type: integer
          minimum: 0
          maximum: 100
          default: 25
        max_surge_percentage:
          description: >-
            Percentage of total replicas of updated image that can be brought up
            over the total replicas count.

            For a value of 25 when replicas are set to 12 this would mean
            (12+(25% of 12) = 15) pods might be running at one time.

            Setting this to a higher value can help in speeding up the
            deployment process.
          type: integer
          minimum: 0
          maximum: 100
          default: 25
      title: Rolling
      x-fern-type-name: Rolling
    Canary:
      description: >-
        This strategy brings up the new release without bringing the older
        release down. Traffic is shifted from the older release to the newer
        release in a staged manner.

        This can help with verifying the health of the new release without
        shifting complete traffic.
      type: object
      required:
        - type
        - steps
      properties:
        type:
          description: +value=canary
          type: string
          enum:
            - canary
        steps:
          description: >-
            These steps would be executed in order to enable shifting of traffic
            slowly from stable to canary version
          type: array
          items:
            $ref: '#/components/schemas/CanaryStep'
      title: Canary
      x-fern-type-name: Canary
    BlueGreen:
      description: >-
        This strategy brings up the new release completely before switching the
        complete load to the new release.

        This minimizes the time that two versions are serving traffic at the
        same time.
      type: object
      required:
        - type
      properties:
        type:
          description: +value=blue_green
          type: string
          enum:
            - blue_green
        enable_auto_promotion:
          description: >-
            Promote the new release to handle the complete traffic. A manual
            promotion would be needed if this is disabled
          type: boolean
          default: false
        auto_promotion_seconds:
          description: >-
            Promote the new release to handle the complete traffic after waiting
            for these many seconds
          type: integer
          minimum: 0
          default: 30
      title: BlueGreen
      x-fern-type-name: BlueGreen
    BaseService:
      type: object
      required:
        - name
        - image
        - ports
      properties:
        name:
          description: >-
            Name of the service. This uniquely identifies this service in the
            workspace.

            > Name can only contain alphanumeric characters and '-' and can be
            atmost 25 characters long
          type: string
          pattern: ^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$
        image:
          description: >-
            Specify whether you want to deploy a Docker image or build and
            deploy from source code
          type: object
          oneOf:
            - $ref: '#/components/schemas/Build'
            - $ref: '#/components/schemas/Image'
          discriminator:
            propertyName: type
        artifacts_download:
          $ref: '#/components/schemas/ArtifactsDownload'
        resources:
          $ref: '#/components/schemas/Resources'
        env:
          description: >-
            Configure environment variables to be injected in the service either
            as plain text or secrets.
            [Docs](https://docs.truefoundry.com/docs/env-variables)
          type: object
          default: null
          additionalProperties:
            type: string
          nullable: true
        ports:
          description: >-
            Expose the deployment to make it accessible over the internet or
            keep it private. Implement authentication to restrict access.
            [Docs](https://docs.truefoundry.com/docs/define-ports-and-domains)
          type: array
          items:
            $ref: '#/components/schemas/Port'
        service_account:
          type: string
        mounts:
          description: >-
            Configure data to be mounted to service pod(s) as a string, secret
            or volume.
            [Docs](https://docs.truefoundry.com/docs/mounting-volumes-service)
          type: array
          items:
            type: object
            oneOf:
              - $ref: '#/components/schemas/SecretMount'
              - $ref: '#/components/schemas/StringDataMount'
              - $ref: '#/components/schemas/VolumeMount'
        labels:
          description: Labels
          type: object
          additionalProperties:
            type: string
        kustomize:
          $ref: '#/components/schemas/Kustomize'
        liveness_probe:
          $ref: '#/components/schemas/HealthProbe'
        readiness_probe:
          $ref: '#/components/schemas/HealthProbe'
        startup_probe:
          $ref: '#/components/schemas/HealthProbe'
        workspace_fqn:
          description: Fully qualified name of the workspace
          type: string
      title: BaseService
      x-fern-type-name: BaseService
    AsyncServiceAutoscaling:
      type: object
      properties:
        metrics:
          description: Metrics to use for the autoscaler
          type: object
          oneOf:
            - $ref: '#/components/schemas/SQSQueueMetricConfig'
            - $ref: '#/components/schemas/NATSMetricConfig'
            - $ref: '#/components/schemas/KafkaMetricConfig'
            - $ref: '#/components/schemas/CronMetric'
            - $ref: '#/components/schemas/AMQPMetricConfig'
          discriminator:
            propertyName: type
      allOf:
        - $ref: '#/components/schemas/BaseAutoscaling'
      required:
        - metrics
      title: AsyncServiceAutoscaling
      x-fern-type-name: AsyncServiceAutoscaling
    WorkerConfig:
      type: object
      required:
        - input_config
        - num_concurrent_workers
      properties:
        input_config:
          description: Input Config
          type: object
          oneOf:
            - $ref: '#/components/schemas/SQSInputConfig'
            - $ref: '#/components/schemas/NATSInputConfig'
            - $ref: '#/components/schemas/KafkaInputConfig'
            - $ref: '#/components/schemas/AMQPInputConfig'
          discriminator:
            propertyName: type
        output_config:
          description: Output Config
          type: object
          oneOf:
            - $ref: '#/components/schemas/SQSOutputConfig'
            - $ref: '#/components/schemas/NATSOutputConfig'
            - $ref: '#/components/schemas/CoreNATSOutputConfig'
            - $ref: '#/components/schemas/KafkaOutputConfig'
            - $ref: '#/components/schemas/AMQPOutputConfig'
          discriminator:
            propertyName: type
        num_concurrent_workers:
          description: Number of concurrent workers to spawn for the processor
          type: integer
          minimum: 1
          maximum: 10
          default: 1
      title: WorkerConfig
      x-fern-type-name: WorkerConfig
    AsyncProcessorSidecar:
      type: object
      required:
        - destination_url
      properties:
        destination_url:
          description: URL for the processor to invoke
          type: string
        request_timeout:
          description: Timeout for the invoke request in seconds
          type: integer
          minimum: 1
          default: 10
        sidecar_image:
          description: >-
            Image for the processor sidecar (This field will be deprecated in
            the future)
          type: string
      title: AsyncProcessorSidecar
      x-fern-type-name: AsyncProcessorSidecar
    Build:
      description: Describes how we build our code into a Docker image.
      type: object
      required:
        - type
        - build_source
        - build_spec
      properties:
        type:
          description: +value=build
          type: string
          enum:
            - build
        docker_registry:
          description: >-
            FQN of the container registry. If you can't find your registry here,

            add it through the [Integrations](/integrations?tab=docker-registry)
            page
          type: string
          pattern: ^\S+$
        build_source:
          description: Source code location.
          type: object
          oneOf:
            - $ref: '#/components/schemas/RemoteSource'
            - $ref: '#/components/schemas/GitSource'
            - $ref: '#/components/schemas/LocalSource'
          discriminator:
            propertyName: type
        build_spec:
          description: Instructions to build a container image out of the build source
          type: object
          oneOf:
            - $ref: '#/components/schemas/DockerFileBuild'
            - $ref: '#/components/schemas/PythonBuild'
          discriminator:
            propertyName: type
      title: Build
      x-fern-type-name: Build
    Image:
      description: >-
        Describes that we are using a pre-built image stored in a Docker Image
        registry
      type: object
      required:
        - type
        - image_uri
      properties:
        type:
          description: +value=image
          type: string
          enum:
            - image
        image_uri:
          description: >-
            The image URI. Specify the name of the image and the tag.

            If the image is in Dockerhub, you can skip registry-url (for e.g.
            `tensorflow/tensorflow`).

            You can use an image from a private registry using Advanced fields
          type: string
          pattern: ^\S+$
        docker_registry:
          description: >-
            FQN of the container registry. If you can't find your registry here,

            add it through the [Integrations](/integrations?tab=docker-registry)
            page
          type: string
          pattern: ^\S+$
        command:
          description: >-
            Override the command to run when container starts.

            When deploying a Job, the command can be templatized by defining
            `params` and referencing them in command

            E.g. `python main.py --learning_rate {{learning_rate}}`
          oneOf:
            - type: string
            - type: array
              items:
                type: string
      title: Image
      x-fern-type-name: Image
    Manual:
      description: >-
        Trigger the job manually.
        [Docs](https://docs.truefoundry.com/docs/deploy-a-cron-job)
      type: object
      required:
        - type
      properties:
        type:
          description: +value=manual
          type: string
          enum:
            - manual
      title: Manual
      x-fern-type-name: Manual
    Schedule:
      description: >-
        Run the job on a schedule.
        [Docs](https://docs.truefoundry.com/docs/deploy-a-cron-job)
      type: object
      required:
        - type
        - schedule
        - concurrency_policy
      properties:
        type:
          description: +value=scheduled
          type: string
          enum:
            - scheduled
        schedule:
          description: >-
            Specify the schedule for this job to be run periodically in cron
            format.

            ```

            * * * * *

            | | | | |

            | | | | |___ day of week (0-6) (Sunday is 0)

            | | | |_____ month (1-12)

            | | |_______ day of month (1-31)

            | |_________ hour (0-23)

            |___________ minute (0-59)

            ```
          type: string
        concurrency_policy:
          description: >-
            Choose whether to allow this job to run while another instance of
            the job is running, or to replace the currently running instance.
            Allow

            will enable multiple instances of this job to run. Forbid will keep
            the current instance of the job running and stop a new instance from
            being run.

            Replace will terminate any currently running instance of the job and
            start a new one.
          type: string
          enum:
            - Forbid
            - Allow
            - Replace
          default: Forbid
        timezone:
          description: >-
            Timezone against which the cron schedule will be calculated, e.g.
            "Asia/Tokyo". Default is machine's local time.

            https://docs.truefoundry.com/docs/list-of-supported-timezones
          type: string
      title: Schedule
      x-fern-type-name: Schedule
    Param:
      type: object
      required:
        - name
      properties:
        name:
          description: Name of the param
          type: string
          pattern: ^[a-z][a-z0-9\-_]{0,30}[a-z0-9]$
        description:
          description: Description of param
          type: string
          pattern: ^.{1,127}$
        default:
          description: Default value or placeholder
          type: string
          pattern: ^.{0,127}$
        param_type:
          type: string
          enum:
            - string
            - ml_repo
          default: string
      title: Param
      x-fern-type-name: Param
    Resources:
      description: >-
        Configure resource allocations, specify node constraints and capacity
        types to improve performance and reduce expenses.
        [Docs](https://www.truefoundry.com/docs/resources-cpu-memory-storage)
      type: object
      required:
        - cpu_request
        - cpu_limit
        - memory_request
        - memory_limit
        - ephemeral_storage_request
        - ephemeral_storage_limit
      properties:
        cpu_request:
          description: >-
            Requested CPU which determines the minimum cost incurred. The CPU
            usage can exceed the requested

            amount, but not the value specified in the limit. 1 CPU means 1 CPU
            core. Fractional CPU can be requested

            like `0.5` or `0.05`
          type: number
          minimum: 0.001
          maximum: 256
          default: 0.2
        cpu_limit:
          description: >-
            CPU limit beyond which the usage cannot be exceeded. 1 CPU means 1
            CPU core. Fractional CPU can be requested

            like `0.5`. CPU limit should be >= cpu request.
          type: number
          minimum: 0.001
          maximum: 256
          default: 0.5
        memory_request:
          description: >-
            Requested memory which determines the minimum cost incurred. The
            unit of memory is in megabytes(MB).

            So 1 means 1 MB and 2000 means 2GB.
          type: integer
          minimum: 1
          maximum: 4000000
          default: 200
        memory_limit:
          description: >-
            Memory limit after which the application will be killed with an OOM
            error. The unit of memory is

            in megabytes(MB). So 1 means 1 MB and 2000 means 2GB. MemoryLimit
            should be greater than memory request.
          type: integer
          minimum: 1
          maximum: 4000000
          default: 500
        ephemeral_storage_request:
          description: >-
            Requested disk storage. The unit of memory is in megabytes(MB).

            This is ephemeral storage and will be wiped out on pod restarts or
            eviction
          type: integer
          minimum: 1
          maximum: 2000000
          default: 1000
        ephemeral_storage_limit:
          description: >-
            Disk storage limit. The unit of memory is in megabytes(MB).
            Exceeding this limit will result in eviction.

            It should be greater than the request. This is ephemeral storage and
            will be wiped out on pod restarts or eviction
          type: integer
          minimum: 1
          maximum: 2000000
          default: 2000
        shared_memory_size:
          description: >-
            Define the shared memory requirements for your workload. Machine
            learning libraries like Pytorch can use Shared Memory

            for inter-process communication. If you use this, we will mount a
            `tmpfs` backed volume at the `/dev/shm` directory.

            Any usage will also count against the workload's memory limit
            (`resources.memory_limit`) along with your workload's memory usage.

            If the overall usage goes above `resources.memory_limit` the user
            process may get killed.

            Shared Memory Size cannot be more than the defined Memory Limit for
            the workload.
          type: integer
          minimum: 64
          maximum: 4000000
        node:
          description: >-
            This field determines how the underlying node resource is to be
            utilized
          type: object
          oneOf:
            - $ref: '#/components/schemas/NodeSelector'
            - $ref: '#/components/schemas/NodepoolSelector'
          discriminator:
            propertyName: type
        devices:
          description: >-
            Define custom device or accelerator requirements for your workload.
            We currently support NVIDIA GPUs, AWS Inferentia Accelerators,
            Single Host TPU Slices.
          type: array
          items:
            type: object
            oneOf:
              - $ref: '#/components/schemas/NvidiaGPU'
              - $ref: '#/components/schemas/AWSInferentia'
              - $ref: '#/components/schemas/NvidiaMIGGPU'
              - $ref: '#/components/schemas/NvidiaTimeslicingGPU'
              - $ref: '#/components/schemas/GcpTPU'
      title: Resources
      x-fern-type-name: Resources
    JobAlert:
      description: Describes the configuration for the job alerts
      type: object
      properties:
        notification_channel:
          description: Specify the notification channel to send alerts to
          type: string
          minLength: 1
        to_emails:
          description: >-
            List of recipients' email addresses if the notification channel is
            Email.
          type: array
          items:
            type: string
            minLength: 1
        notification_target:
          $ref: '#/components/schemas/NotificationTarget'
        on_start:
          description: Send an alert when the job starts
          type: boolean
          default: false
        on_completion:
          type: boolean
          default: false
        on_failure:
          description: Send an alert when the job fails
          type: boolean
          default: true
      title: JobAlert
      x-fern-type-name: JobAlert
    SecretMount:
      type: object
      required:
        - type
        - mount_path
        - secret_fqn
      properties:
        type:
          description: +value=secret
          type: string
          enum:
            - secret
        mount_path:
          description: Absolute file path where the file will be created.
          type: string
          pattern: ^\/(?:[^/\n]+\/*)*[^/\n]+(\.[^/\n]+)?$
        secret_fqn:
          description: The TrueFoundry secret whose value will be the file content.
          type: string
          pattern: ^tfy-secret:\/\/.+:.+:.+$
      title: SecretMount
      x-fern-type-name: SecretMount
    StringDataMount:
      type: object
      required:
        - type
        - mount_path
        - data
      properties:
        type:
          description: +value=string
          type: string
          enum:
            - string
        mount_path:
          description: Absolute file path where the file will be created.
          type: string
          pattern: ^\/(?:[^/\n]+\/*)*[^/\n]+(\.[^/\n]+)?$
        data:
          description: The file content.
          type: string
      title: StringDataMount
      x-fern-type-name: StringDataMount
    VolumeMount:
      type: object
      required:
        - type
        - mount_path
        - volume_fqn
      properties:
        type:
          description: +value=volume
          type: string
          enum:
            - volume
        mount_path:
          description: Absolute file path where the volume will be mounted.
          type: string
          pattern: ^\/(?:[^/\n]+\/*)*[^/\n]+(\.[^/\n]+)?$
        sub_path:
          description: Sub path within the volume to mount. Defaults to root of the volume.
          type: string
          pattern: ^(?:[^/\n]+/*)*[^/\n]+(\.[^/\n]+)?$
        volume_fqn:
          description: The TrueFoundry volume that needs to be mounted.
          type: string
          pattern: ^tfy-volume:\/\/.+:.+:.+$
      title: VolumeMount
      x-fern-type-name: VolumeMount
    Kustomize:
      type: object
      properties:
        patch:
          description: >-
            Content of kustomization.yaml to perform kustomize operation. Please
            do not include the `resources` section. It is filled in
            automatically
          type: object
        additions:
          description: Additional kubernetes manifests to be included in the application
          type: array
          items:
            type: object
      title: Kustomize
      x-fern-type-name: Kustomize
    WorkbenchImage:
      description: Workbench Image with persistent environment (Python 3.11.6)
      type: object
      required:
        - image_uri
      properties:
        image_uri:
          description: >-
            The image URI. Specify the name of the image and the tag.

            If the image is in Dockerhub, you can skip registry-url (for e.g.
            `tensorflow/tensorflow`).

            You can use an image from a private registry using Advanced fields
          type: string
        build_script:
          description: >-
            The build script to run when building the image.

            This will be executed as the last step in the docker build process
            as the root user (RUN DEBIAN_FRONTEND=noninteractive bash -ex
            build_script.sh)
          type: string
          minLength: 1
          maxLength: 5120
        docker_registry:
          description: >-
            FQN of the container registry. If you can't find your registry here,

            add it through the [Integrations](/integrations?tab=docker-registry)
            page
          type: string
      title: WorkbenchImage
      x-fern-type-name: WorkbenchImage
    BaseWorkbenchInput:
      description: Describes the configuration for the service
      type: object
      required:
        - name
        - home_directory_size
      properties:
        name:
          description: >-
            Name of the workbench. This uniquely identifies this workbench in
            the workspace.

            > Name can only contain alphanumeric characters and '-' and can be
            atmost 25 characters long
          type: string
          pattern: ^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$
        home_directory_size:
          description: Size of the home directory for the workbench (Persistent Storage)
          type: integer
          minimum: 5
          maximum: 64000
          default: 20
        resources:
          $ref: '#/components/schemas/Resources'
        env:
          description: >-
            Configure environment variables to be injected in the service either
            as plain text or secrets.
            [Docs](https://docs.truefoundry.com/docs/environment-variables-and-secrets-jobs)
          type: object
          default: null
          additionalProperties:
            type: string
          nullable: true
        mounts:
          description: >-
            Configure data to be mounted to workbench pod(s) as a string, secret
            or volume.
            [Docs](https://docs.truefoundry.com/docs/mounting-volumes-job)
          type: array
          items:
            type: object
            oneOf:
              - $ref: '#/components/schemas/SecretMount'
              - $ref: '#/components/schemas/StringDataMount'
              - $ref: '#/components/schemas/VolumeMount'
        service_account:
          description: +sort=10113
          type: string
        kustomize:
          $ref: '#/components/schemas/Kustomize'
        workspace_fqn:
          description: Fully qualified name of the workspace
          type: string
      title: BaseWorkbenchInput
      x-fern-type-name: BaseWorkbenchInput
    HelmRepo:
      type: object
      required:
        - type
        - repo_url
        - chart
        - version
      properties:
        type:
          description: +value=helm-repo
          type: string
          enum:
            - helm-repo
        repo_url:
          description: Helm repository URL - Needs to be a valid URL.
          type: string
          pattern: >-
            ^(((https?|wss):\/\/)?(?:www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}(?:[-a-zA-Z0-9()@:%_\+.~#?&\/=]*))$
        integration_fqn:
          description: >-
            FQN of the helm repo integration. If you can't find your integration
            here,

            add it through the [Integrations](/integrations) page
          type: string
        chart:
          description: The helm chart name
          type: string
        version:
          description: Helm chart version
          type: string
      title: HelmRepo
      x-fern-type-name: HelmRepo
    OCIRepo:
      description: OCIRepo
      type: object
      required:
        - type
        - oci_chart_url
        - version
      properties:
        type:
          description: +value=oci-repo
          type: string
          enum:
            - oci-repo
        oci_chart_url:
          description: OCI chart URL - Need to be a valid URL.
          type: string
          pattern: >-
            ^(((oci):\/\/)?(?:www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}(?:[-a-zA-Z0-9()@:%_\+.~#?&\/=]*))$
        integration_fqn:
          description: |-
            FQN of the container registry. If you can't find your registry here,
            add it through the [Integrations](/integrations) page
          type: string
        version:
          description: Helm chart version
          type: string
      title: OCIRepo
      x-fern-type-name: OCIRepo
    GitHelmRepo:
      type: object
      required:
        - type
        - repo_url
        - revision
        - path
      properties:
        type:
          description: +value=git-helm-repo
          type: string
          enum:
            - git-helm-repo
        repo_url:
          description: Git repository URL - Needs to be a valid URL.
          type: string
          pattern: >-
            ^(((https?|wss):\/\/)?(?:www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}(?:[-a-zA-Z0-9()@:%_\+.~#?&\/=]*))$
        revision:
          description: Branch/Commit SHA/Tag of the git repo.
          type: string
        path:
          description: Path to the chart.
          type: string
        value_files:
          description: |-
            Helm values files for overriding values in the helm chart.
            The path is relative to the Path directory defined above
          type: array
          items:
            type: string
      title: GitHelmRepo
      x-fern-type-name: GitHelmRepo
    DynamicVolumeConfig:
      description: Create new volume
      type: object
      required:
        - type
        - storage_class
        - size
      properties:
        type:
          description: Volume Type for the volume.
          type: string
          enum:
            - dynamic
        storage_class:
          description: Name of the storage class to be used for the volume.
          type: string
        size:
          description: Size of volume in Gi
          type: integer
          minimum: 1
          maximum: 64000
      title: DynamicVolumeConfig
      x-fern-type-name: DynamicVolumeConfig
    StaticVolumeConfig:
      description: Use existing volume
      type: object
      required:
        - type
        - persistent_volume_name
      properties:
        type:
          description: Volume Type for the volume.
          type: string
          enum:
            - static
        persistent_volume_name:
          description: Persistent Volume Name of the volume to be used.
          type: string
      title: StaticVolumeConfig
      x-fern-type-name: StaticVolumeConfig
    VolumeBrowser:
      description: Volume Browser
      type: object
      required:
        - endpoint
      properties:
        username:
          description: Username for logging in the volume browser.
          type: string
          pattern: ^[a-z][a-z0-9]{1,8}[a-z0-9]$
        password_secret_fqn:
          description: >-
            TFY Secret containing the password for logging in the volume
            browser.
          type: string
          pattern: ^tfy-secret:\/\/.+:.+:.+$
        endpoint:
          $ref: '#/components/schemas/Endpoint'
        service_account:
          description: Kubernetes Service account name for the volume browser.
          type: string
      title: VolumeBrowser
      x-fern-type-name: VolumeBrowser
    LocalSource:
      description: >-
        Describes that we are using code stored in a local developement
        environment to build our image
      type: object
      required:
        - type
        - project_root_path
        - local_build
      properties:
        type:
          description: +value=local
          type: string
          enum:
            - local
        project_root_path:
          description: Local project root path.
          type: string
          default: ./
        local_build:
          description: run docker build locally
          type: boolean
          default: true
      title: LocalSource
      x-fern-type-name: LocalSource
    RemoteSource:
      description: >-
        Describes that we are using code stored in a remote repository to build
        our image
      type: object
      required:
        - type
        - remote_uri
      properties:
        type:
          description: +value=remote
          type: string
          enum:
            - remote
        remote_uri:
          description: Remote repository URI
          type: string
      title: RemoteSource
      x-fern-type-name: RemoteSource
    FlyteTask:
      type: object
      required:
        - template
      properties:
        template:
          $ref: '#/components/schemas/FlyteTaskTemplate'
        description: {}
      title: FlyteTask
      x-fern-type-name: FlyteTask
    FlyteWorkflow:
      type: object
      required:
        - template
      properties:
        template:
          $ref: '#/components/schemas/FlyteWorkflowTemplate'
        description: {}
      title: FlyteWorkflow
      x-fern-type-name: FlyteWorkflow
    FlyteLaunchPlan:
      type: object
      required:
        - id
        - spec
        - closure
      properties:
        id:
          $ref: '#/components/schemas/FlyteLaunchPlanID'
        spec:
          $ref: '#/components/schemas/FlyteLaunchPlanSpec'
        closure: {}
      title: FlyteLaunchPlan
      x-fern-type-name: FlyteLaunchPlan
    WorkflowAlert:
      description: Describes the configuration for the workflow alerts
      type: object
      properties:
        notification_target:
          $ref: '#/components/schemas/NotificationTarget'
        on_completion:
          description: Send an alert when the job completes
          type: boolean
          default: false
        on_failure:
          description: Send an alert when the job fails
          type: boolean
          default: true
      title: WorkflowAlert
      x-fern-type-name: WorkflowAlert
    SparkImage:
      description: >-
        Describes that we are using a pre-built image stored in a Docker Image
        registry
      type: object
      required:
        - type
        - spark_version
        - image_uri
      properties:
        type:
          description: +value=spark-image
          type: string
          enum:
            - spark-image
        spark_version:
          description: Spark version should match the spark version installed in the image.
          type: string
          default: 3.5.2
        image_uri:
          description: >-
            The image URI. Specify the name of the image and the tag.

            If the image is in Dockerhub, you can skip registry-url (for e.g.
            `tensorflow/tensorflow`).

            You can use an image from a private registry using Advanced fields
          type: string
          pattern: ^\S+$
        docker_registry:
          description: >-
            FQN of the container registry. If you can't find your registry here,

            add it through the [Integrations](/integrations?tab=docker-registry)
            page
          type: string
          pattern: ^\S+$
      title: SparkImage
      x-fern-type-name: SparkImage
    SparkImageBuild:
      description: Describes that we are building a new image based on the spec
      type: object
      required:
        - type
        - build_source
        - build_spec
      properties:
        type:
          description: +value=spark-image-build
          type: string
          enum:
            - spark-image-build
        docker_registry:
          description: >-
            FQN of the container registry. If you can't find your registry here,

            add it through the [Integrations](/integrations?tab=docker-registry)
            page
          type: string
          pattern: ^\S+$
        build_source:
          description: Fetch source code
          type: object
          oneOf:
            - $ref: '#/components/schemas/GitSource'
            - $ref: '#/components/schemas/RemoteSource'
          discriminator:
            propertyName: type
        build_spec:
          $ref: '#/components/schemas/SparkBuild'
      title: SparkImageBuild
      x-fern-type-name: SparkImageBuild
    SparkJobPythonEntrypoint:
      description: python
      type: object
      required:
        - type
        - main_application_file
      properties:
        type:
          description: +value=python
          type: string
          enum:
            - python
        main_application_file:
          description: >-
            The main application file to be executed by the spark job. Relative
            path in case of git repository.
          type: string
        arguments:
          description: Arguments to be passed to the main application file.
          type: string
      title: SparkJobPythonEntrypoint
      x-fern-type-name: SparkJobPythonEntrypoint
    SparkJobScalaEntrypoint:
      description: scala
      type: object
      required:
        - type
        - main_application_file
        - main_class
      properties:
        type:
          description: +value=scala
          type: string
          enum:
            - scala
        main_application_file:
          description: The main application file to be executed by the spark job.
          type: string
        main_class:
          description: The main class to be executed by the spark job.
          type: string
        arguments:
          description: Arguments to be passed to the main application file.
          type: string
      title: SparkJobScalaEntrypoint
      x-fern-type-name: SparkJobScalaEntrypoint
    SparkJobJavaEntrypoint:
      description: java
      type: object
      required:
        - type
        - main_application_file
        - main_class
      properties:
        type:
          description: +value=java
          type: string
          enum:
            - java
        main_application_file:
          description: The main application file to be executed by the spark job.
          type: string
        main_class:
          description: The main class to be executed by the spark job.
          type: string
        arguments:
          description: Arguments to be passed to the main application file.
          type: string
      title: SparkJobJavaEntrypoint
      x-fern-type-name: SparkJobJavaEntrypoint
    SparkJobPythonNotebookEntrypoint:
      description: python notebook
      type: object
      required:
        - type
        - main_application_file
      properties:
        type:
          description: +value=python-notebook
          type: string
          enum:
            - python-notebook
        main_application_file:
          description: >-
            The main application file to be executed by the spark job. Relative
            path in case of git repository.
          type: string
      title: SparkJobPythonNotebookEntrypoint
      x-fern-type-name: SparkJobPythonNotebookEntrypoint
    SparkJobScalaNotebookEntrypoint:
      description: scala notebook
      type: object
      required:
        - type
        - main_application_file
      properties:
        type:
          description: +value=scala-notebook
          type: string
          enum:
            - scala-notebook
        main_application_file:
          description: >-
            The main application file to be executed by the spark job. Relative
            path in case of git repository.
          type: string
      title: SparkJobScalaNotebookEntrypoint
      x-fern-type-name: SparkJobScalaNotebookEntrypoint
    SparkDriverConfig:
      description: Driver Config
      type: object
      properties:
        resources:
          $ref: '#/components/schemas/Resources'
      title: SparkDriverConfig
      x-fern-type-name: SparkDriverConfig
    SparkExecutorConfig:
      description: Executor Config
      type: object
      required:
        - instances
      properties:
        instances:
          description: Executor Instances
          type: object
          default:
            type: fixed
            count: 1
          oneOf:
            - $ref: '#/components/schemas/SparkExecutorFixedInstances'
            - $ref: '#/components/schemas/SparkExecutorDynamicScaling'
          discriminator:
            propertyName: type
        resources:
          $ref: '#/components/schemas/Resources'
      title: SparkExecutorConfig
      x-fern-type-name: SparkExecutorConfig
    HeaderMatch:
      type: object
      required:
        - type
        - name
        - exact_match
      properties:
        type:
          description: +value=header
          type: string
          enum:
            - header
        name:
          description: Header name to match on
          type: string
        exact_match:
          description: Header value to match on
          type: string
          default: ''
      title: HeaderMatch
      x-fern-type-name: HeaderMatch
    ForwardAction:
      type: object
      required:
        - type
        - service_uri
        - port
      properties:
        type:
          description: +value=forward
          type: string
          enum:
            - forward
        service_uri:
          description: >-
            Service uri to redirect to. This is the kubernetes fully qualified
            domain name that the target service can be reached on

            Eg - For a service called `sample-service` in workspace `ws` this
            would be `sample-service.ws.svc.cluster.local
          type: string
        port:
          description: Port to redirect the service traffic to
          type: integer
          minimum: 0
          maximum: 65535
      title: ForwardAction
      x-fern-type-name: ForwardAction
    MirrorAction:
      type: object
      required:
        - type
        - service_uri
        - port
        - percentage
      properties:
        type:
          description: +value=mirror
          type: string
          enum:
            - mirror
        service_uri:
          description: >-
            Service uri to mirror to. This is the kubernetes fully qualified
            domain name that the target service can be reached on

            Eg - For a service called `sample-service` in workspace `ws` this
            would be `sample-service.ws.svc.cluster.local
          type: string
        port:
          description: Port to redirect the service traffic to
          type: integer
          minimum: 0
          maximum: 65535
        percentage:
          description: Percentage of requests to mirror
          type: integer
          minimum: 0
          maximum: 100
      title: MirrorAction
      x-fern-type-name: MirrorAction
    DeploymentStatusValue:
      type: string
      enum:
        - INITIALIZED
        - BUILD_SUCCESS
        - BUILD_FAILED
        - DEPLOY_FAILED
        - DEPLOY_FAILED_WITH_RETRY
        - DEPLOY_SUCCESS
        - ROLLOUT_STARTED
        - SET_TRAFFIC
        - PAUSED
        - FAILED
        - CANCELLED
        - REDEPLOY_STARTED
        - BUILDING
      title: DeploymentStatusValue
      x-fern-type-name: DeploymentStatusValue
    DeploymentTransition:
      type: string
      enum:
        - BUILDING
        - DEPLOYING
        - REUSING_EXISTING_BUILD
        - COMPONENTS_DEPLOYING
        - WAITING
        - ''
      title: DeploymentTransition
      x-fern-type-name: DeploymentTransition
    CPUUtilizationMetric:
      type: object
      required:
        - type
        - value
      properties:
        type:
          description: +value=cpu_utilization
          type: string
          enum:
            - cpu_utilization
        value:
          description: >-
            Percentage of cpu request averaged over all replicas which the
            autoscaler should try to maintain
          type: integer
          minimum: 1
          maximum: 100
      title: CPUUtilizationMetric
      x-fern-type-name: CPUUtilizationMetric
    RPSMetric:
      type: object
      required:
        - type
        - value
      properties:
        type:
          description: +value=rps
          type: string
          enum:
            - rps
        value:
          description: >-
            Average request per second averaged over all replicas that
            autoscaler should try to maintain
          type: number
          minimum: 0
          exclusiveMinimum: true
      title: RPSMetric
      x-fern-type-name: RPSMetric
    CronMetric:
      type: object
      required:
        - type
        - start
        - end
        - timezone
      properties:
        type:
          description: +value=cron
          type: string
          enum:
            - cron
        desired_replicas:
          description: >-
            Desired number of replicas during the given interval. Default value
            is max_replicas.
          type: integer
          minimum: 1
        start:
          description: |-
            Cron expression indicating the start of the cron schedule.
            ```
            * * * * *
            | | | | |
            | | | | |___ day of week (0-6) (Sunday is 0)
            | | | |_____ month (1-12)
            | | |_______ day of month (1-31)
            | |_________ hour (0-23)
            |___________ minute (0-59)
            ```
          type: string
        end:
          description: |-
            Cron expression indicating the end of the cron schedule.
            ```
            * * * * *
            | | | | |
            | | | | |___ day of week (0-6) (Sunday is 0)
            | | | |_____ month (1-12)
            | | |_______ day of month (1-31)
            | |_________ hour (0-23)
            |___________ minute (0-59)
            ```
          type: string
        timezone:
          description: >-
            Timezone against which the cron schedule will be calculated, e.g.
            "Asia/Tokyo". Default is machine's local time.

            https://docs.truefoundry.com/docs/list-of-supported-timezones
          type: string
          default: UTC
      title: CronMetric
      x-fern-type-name: CronMetric
    BaseAutoscaling:
      type: object
      required:
        - min_replicas
        - max_replicas
      properties:
        min_replicas:
          description: Minimum number of replicas to keep available
          type: integer
          minimum: 0
          default: 1
        max_replicas:
          description: Maximum number of replicas allowed for the component.
          type: integer
          minimum: 1
          maximum: 500
        polling_interval:
          description: This is the interval to check each trigger on.
          type: integer
          minimum: 0
          default: 30
      title: BaseAutoscaling
      x-fern-type-name: BaseAutoscaling
    CanaryStep:
      type: object
      required:
        - weight_percentage
      properties:
        weight_percentage:
          description: |-
            Percentage of total traffic to be shifted to the canary release.
            The rest will continue to go to the existing deployment
          type: integer
          minimum: 0
          maximum: 100
        pause_duration:
          description: >-
            Duration for which to pause the release. The release process will
            wait for these seconds before proceeding to the next step.

            If this is not set, the step will pause indefinitely on this step
          type: integer
          minimum: 0
      title: CanaryStep
      x-fern-type-name: CanaryStep
    ArtifactsDownload:
      description: >-
        Download and cache models in a volume to enhance loading speeds and
        reduce costs by avoiding repeated downloads.
        [Docs](https://docs.truefoundry.com/docs/download-and-cache-models)
      type: object
      required:
        - artifacts
      properties:
        cache_volume:
          $ref: '#/components/schemas/ArtifactsCacheVolume'
        artifacts:
          description: List of artifacts to be cached
          type: array
          items:
            type: object
            oneOf:
              - $ref: '#/components/schemas/TrueFoundryArtifactSource'
              - $ref: '#/components/schemas/HuggingfaceArtifactSource'
      title: ArtifactsDownload
      x-fern-type-name: ArtifactsDownload
    Port:
      description: Describes the ports the service should be exposed to.
      type: object
      required:
        - port
        - protocol
        - expose
      properties:
        port:
          description: Port number to expose.
          type: integer
          minimum: 1
          maximum: 65535
          default: 80
        protocol:
          description: Protocol for the port.
          type: string
          enum:
            - TCP
            - UDP
          default: TCP
        expose:
          description: Expose the port
          type: boolean
          default: true
        app_protocol:
          description: >-
            Application Protocol for the port.

            Select the application protocol used by your service. For most use
            cases, this should be `http`(HTTP/1.1).

            If you are running a gRPC server, select the `grpc` option.

            This is only applicable if `expose=true`.
          type: string
          enum:
            - http
            - grpc
            - tcp
          default: http
        host:
          description: Host e.g. ai.example.com, app.truefoundry.com
          type: string
          pattern: >-
            ^((([a-zA-Z0-9\-]{1,63}\.)([a-zA-Z0-9\-]{1,63}\.)*([A-Za-z]{1,63}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)))$
        path:
          description: Path e.g. /v1/api/ml/, /v2/docs/
          type: string
          pattern: ^(/([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-_\.]*[a-zA-Z0-9]))*/$
        rewrite_path_to:
          description: >-
            Rewrite the path prefix to a different path.

            If `path` is `/v1/api` and `rewrite_path_to` is `/api`. The URI in
            the HTTP request `http://0.0.0.0:8080/v1/api/houses` will be
            rewritten to `http://0.0.0.0:8080/api/houses` before the request is
            forwarded your service.

            Defaults to `/`.

            This is only applicable if `path` is given.
          type: string
          pattern: ^(/([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-_\.]*[a-zA-Z0-9]))*/$
        auth:
          description: Authentication method for inbound traffic
          type: object
          oneOf:
            - $ref: '#/components/schemas/BasicAuthCreds'
            - $ref: '#/components/schemas/JwtAuthConfig'
            - $ref: '#/components/schemas/TrueFoundryInteractiveLogin'
          discriminator:
            propertyName: type
      title: Port
      x-fern-type-name: Port
    HealthProbe:
      description: >-
        Describes the configuration for the Health Probe's

        To learn more you can go
        [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)
      type: object
      required:
        - config
      properties:
        config:
          $ref: '#/components/schemas/HttpProbe'
        initial_delay_seconds:
          description: >-
            Time to wait after container has started before checking the
            endpoint
          type: integer
          minimum: 0
          maximum: 36000
          default: 0
        period_seconds:
          description: How often to check the endpoint
          type: integer
          minimum: 1
          maximum: 36000
          default: 10
        timeout_seconds:
          description: >-
            Time to wait for a response from the endpoint before considering it
            down
          type: integer
          minimum: 1
          maximum: 36000
          default: 1
        success_threshold:
          description: >-
            Number of successful responses from the endpoint before container is
            considered healthy
          type: integer
          minimum: 1
          maximum: 5000
          default: 1
        failure_threshold:
          description: >-
            Number of consecutive failures before the container is considered
            down
          type: integer
          minimum: 1
          maximum: 5000
          default: 3
      title: HealthProbe
      x-fern-type-name: HealthProbe
    SQSQueueMetricConfig:
      type: object
      required:
        - type
        - queue_length
      properties:
        type:
          description: +value=sqs
          type: string
          enum:
            - sqs
        queue_length:
          description: >-
            Upper limit of the number of backlog messages the auto-scaler will
            try to maintain per replica. If you set this number to 10 and have
            30 messages in the queue and one replica, the auto-scaler will scale
            the number of replicas to 3.
          type: integer
          minimum: 1
        auth:
          description: Receive permissions on the SQS Queue
          type: object
          oneOf:
            - $ref: '#/components/schemas/AwsSqsAccessKeyBasedAuth'
            - $ref: '#/components/schemas/AwsSqsAssumedRoleBasedAuth'
          discriminator:
            propertyName: type
      title: SQSQueueMetricConfig
      x-fern-type-name: SQSQueueMetricConfig
    NATSMetricConfig:
      type: object
      required:
        - type
        - lag_threshold
      properties:
        type:
          description: +value=nats
          type: string
          enum:
            - nats
        lag_threshold:
          description: >-
            Upper limit of the number of backlog messages the auto-scaler will
            try to maintain per replica. If you set this number to 10 and have
            30 messages in the stream and one replica, the auto-scaler will
            scale the number of replicas to 3.
          type: integer
          minimum: 1
      title: NATSMetricConfig
      x-fern-type-name: NATSMetricConfig
    KafkaMetricConfig:
      type: object
      required:
        - type
        - lag_threshold
      properties:
        type:
          description: +value=kafka
          type: string
          enum:
            - kafka
        lag_threshold:
          description: >-
            Upper limit of the number of backlog messages the auto-scaler will
            try to maintain per replica. If you set this number to 10 and have
            30 messages in the stream and one replica, the auto-scaler will
            scale the number of replicas to 3.
          type: integer
          minimum: 1
      title: KafkaMetricConfig
      x-fern-type-name: KafkaMetricConfig
    AMQPMetricConfig:
      type: object
      required:
        - type
        - queue_length
      properties:
        type:
          description: +value=amqp
          type: string
          enum:
            - amqp
        queue_length:
          description: >-
            Upper limit of the number of backlog messages the auto-scaler will
            try to maintain per replica. If you set this number to 10 and have
            30 messages in the stream and one replica, the auto-scaler will
            scale the number of replicas to 3.
          type: integer
          minimum: 1
      title: AMQPMetricConfig
      x-fern-type-name: AMQPMetricConfig
    SQSInputConfig:
      description: Describes the configuration for the input SQS worker
      type: object
      required:
        - type
        - queue_url
        - region_name
        - visibility_timeout
        - wait_time_seconds
      properties:
        type:
          description: +value=sqs
          type: string
          enum:
            - sqs
        queue_url:
          description: AWS SQS Queue URL of Subscriber
          type: string
        region_name:
          description: AWS Region Name
          type: string
        visibility_timeout:
          description: >-
            A period during which Amazon SQS prevents all consumers from
            receiving and processing the message. If one message takes 5 seconds
            to process, you can set this number to 7 or any number higher than
            5. This will ensure that while the message is being processed, it
            will not be available to other replicas. For more information, see
            [here](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html)
          type: integer
          minimum: 1
          maximum: 43200
        wait_time_seconds:
          description: >-
            Wait timeout for long polling. For more information, see
            [here](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-short-and-long-polling.html)
          type: integer
          minimum: 1
          maximum: 20
          default: 19
        auth:
          $ref: '#/components/schemas/AWSAccessKeyAuth'
      title: SQSInputConfig
      x-fern-type-name: SQSInputConfig
    NATSInputConfig:
      description: Describes the configuration for the input NATS worker
      type: object
      required:
        - type
        - nats_url
        - stream_name
        - root_subject
        - consumer_name
        - wait_time_seconds
      properties:
        type:
          description: +value=nats
          type: string
          enum:
            - nats
        nats_url:
          description: Input NATS URL
          type: string
        stream_name:
          description: Name of the NATS stream
          type: string
        root_subject:
          description: Root subject of input NATS
          type: string
          pattern: ^[a-zA-Z0-9][a-zA-Z0-9\-.]+[a-zA-Z0-9]$
        consumer_name:
          description: Consumer name of input NATS
          type: string
          pattern: ^[a-zA-Z0-9][a-zA-Z0-9\-_]+[a-zA-Z0-9]$
        wait_time_seconds:
          description: Wait timeout for long polling.
          type: integer
          minimum: 1
          maximum: 20
          default: 19
        nats_metrics_url:
          description: >-
            URL for the NATS metrics endpoint. It is compulsory if you want to
            use NATS autoscaling.
          type: string
          pattern: ^(http(s?)://).*$
        auth:
          $ref: '#/components/schemas/NATSUserPasswordAuth'
      title: NATSInputConfig
      x-fern-type-name: NATSInputConfig
    KafkaInputConfig:
      description: Describes the configuration for the input Kafka worker
      type: object
      required:
        - type
        - bootstrap_servers
        - topic_name
        - consumer_group
        - tls
      properties:
        type:
          description: +value=kafka
          type: string
          enum:
            - kafka
        bootstrap_servers:
          description: >-
            'Kafka Bootstrap servers - Comma separated list of Kafka brokers
            "hostname:port" to connect to for bootstrap'
          type: string
        topic_name:
          description: Kafka topic to subscribe to
          type: string
        consumer_group:
          description: >-
            The name of the consumer group to join for dynamic partition
            assignment
          type: string
        tls:
          description: TLS configuration for SASL authentication
          type: boolean
          default: true
        wait_time_seconds:
          description: Wait timeout for long polling.
          type: integer
          minimum: 1
          maximum: 300
          default: 10
        auth:
          $ref: '#/components/schemas/KafkaSASLAuth'
      title: KafkaInputConfig
      x-fern-type-name: KafkaInputConfig
    AMQPInputConfig:
      description: Describes the configuration for the input AMQP worker
      type: object
      required:
        - type
        - url
        - queue_name
        - wait_time_seconds
      properties:
        type:
          description: +value=amqp
          type: string
          enum:
            - amqp
        url:
          description: AMQP Queue URL of Subscriber
          type: string
          pattern: >-
            ^(amqp|amqps?)://(?:[^:@]+(?::[^:@]+)?@)?([^/?]+)(?:/([^?]+))?/?([^?]+)?(?:\?(.*))?$
        queue_name:
          description: AMQP Queue Name
          type: string
        wait_time_seconds:
          description: Wait timeout for long polling.
          type: integer
          minimum: 1
          default: 5
      title: AMQPInputConfig
      x-fern-type-name: AMQPInputConfig
    SQSOutputConfig:
      description: Describes the configuration for the output SQS worker
      type: object
      required:
        - type
        - queue_url
        - region_name
      properties:
        type:
          description: +value=sqs
          type: string
          enum:
            - sqs
        queue_url:
          description: AWS SQS Queue URL of Publisher
          type: string
        region_name:
          description: AWS Region Name
          type: string
        auth:
          $ref: '#/components/schemas/AWSAccessKeyAuth'
      title: SQSOutputConfig
      x-fern-type-name: SQSOutputConfig
    NATSOutputConfig:
      description: Describes the configuration for the output NATS worker
      type: object
      required:
        - type
        - nats_url
        - root_subject
      properties:
        type:
          description: +value=nats
          type: string
          enum:
            - nats
        nats_url:
          description: Output NATS URL
          type: string
        root_subject:
          description: Root subject of output NATS
          type: string
          pattern: ^[a-zA-Z0-9][a-zA-Z0-9\-.]+[a-zA-Z0-9]$
        auth:
          $ref: '#/components/schemas/NATSUserPasswordAuth'
      title: NATSOutputConfig
      x-fern-type-name: NATSOutputConfig
    CoreNATSOutputConfig:
      description: Describes the configuration for the output Core NATS worker
      type: object
      required:
        - type
        - nats_url
        - root_subject
      properties:
        type:
          description: +value=core-nats
          type: string
          enum:
            - core-nats
        nats_url:
          description: Output NATS URL
          type: string
        root_subject:
          description: Root subject of output NATS
          type: string
          pattern: ^[a-zA-Z0-9][a-zA-Z0-9\-.]+[a-zA-Z0-9]$
        auth:
          $ref: '#/components/schemas/NATSUserPasswordAuth'
      title: CoreNATSOutputConfig
      x-fern-type-name: CoreNATSOutputConfig
    KafkaOutputConfig:
      description: Describes the configuration for the output Kafka worker
      type: object
      required:
        - type
        - bootstrap_servers
        - topic_name
        - tls
      properties:
        type:
          description: +value=kafka
          type: string
          enum:
            - kafka
        bootstrap_servers:
          description: >-
            'Kafka Bootstrap servers - Comma separated list of Kafka brokers
            "hostname:port" to connect to for bootstrap'
          type: string
        topic_name:
          description: Kafka topic to publish to
          type: string
        tls:
          description: TLS configuration for SASL authentication
          type: boolean
          default: true
        auth:
          $ref: '#/components/schemas/KafkaSASLAuth'
      title: KafkaOutputConfig
      x-fern-type-name: KafkaOutputConfig
    AMQPOutputConfig:
      description: Describes the configuration for the output AMQP worker
      type: object
      required:
        - type
        - url
        - routing_key
      properties:
        type:
          description: +value=amqp
          type: string
          enum:
            - amqp
        url:
          description: AMQP Queue URL of Publisher
          type: string
          pattern: >-
            ^(amqp|amqps?)://(?:[^:@]+(?::[^:@]+)?@)?([^/?]+)(?:/([^?]+))?/?([^?]+)?(?:\?(.*))?$
        routing_key:
          description: AMQP Routing Key to publish to.
          type: string
        exchange_name:
          description: AMQP Exchange Name
          type: string
      title: AMQPOutputConfig
      x-fern-type-name: AMQPOutputConfig
    GitSource:
      description: >-
        Describes that we are using code stored in a git repository to build our
        image
      type: object
      required:
        - type
        - repo_url
        - ref
      properties:
        type:
          description: +value=git
          type: string
          enum:
            - git
        repo_url:
          description: The repository URL.
          type: string
          pattern: ^(https?://)\S+$
        ref:
          description: The commit SHA.
          type: string
          pattern: ^\S+$
        branch_name:
          description: Selecting branch will select latest commit SHA of the branch.
          type: string
          pattern: ^\S+$
      title: GitSource
      x-fern-type-name: GitSource
    DockerFileBuild:
      description: Describes that we are using a dockerfile to build our image
      type: object
      required:
        - type
        - dockerfile_path
        - build_context_path
      properties:
        type:
          description: +value=dockerfile
          type: string
          enum:
            - dockerfile
        dockerfile_path:
          description: The file path of the Dockerfile relative to project root path.
          type: string
          default: ./Dockerfile
        build_context_path:
          description: Build context path for the Dockerfile relative to project root path.
          type: string
          default: ./
        command:
          description: >-
            Override the command to run when the container starts

            When deploying a Job, the command can be templatized by defining
            `params` and referencing them in command

            E.g. `python main.py --learning_rate {{learning_rate}}`
          oneOf:
            - type: string
            - type: array
              items:
                type: string
        build_args:
          description: Build arguments to pass to docker build
          type: object
          additionalProperties:
            type: string
        build_secrets:
          description: >-
            Build secrets you can use in run statements inside dockerfile like
            RUN --mount=type=secret,id=pip_index_url ... you can learn more
            about build secrets here
            https://www.truefoundry.com/docs/docker-build-secrets
          type: array
          items:
            $ref: '#/components/schemas/BuildSecret'
      title: DockerFileBuild
      x-fern-type-name: DockerFileBuild
    PythonBuild:
      description: >-
        Describes that we are using python to build a container image with a
        specific python version and pip packages installed.
      type: object
      required:
        - type
        - build_context_path
        - command
      properties:
        type:
          description: +value=tfy-python-buildpack
          type: string
          enum:
            - tfy-python-buildpack
        python_version:
          description: >-
            Python version to run your application. Should be one of the tags
            listed on [Official Python Docker
            Page](https://hub.docker.com/_/python)
          type: string
          pattern: ^\d+(\.\d+){1,2}([\-\.a-z0-9]+)?$
        build_context_path:
          description: Build path relative to project root path.
          type: string
          default: ./
        requirements_path:
          description: |-
            Path to `requirements.txt` relative to
            `Path to build context`
          type: string
        pip_packages:
          description: |-
            Define pip package requirements.
            In Python/YAML E.g. ["fastapi>=0.90,<1.0", "uvicorn"]
          type: array
          items:
            type: string
        python_dependencies:
          description: Python dependencies to install
          type: object
          oneOf:
            - $ref: '#/components/schemas/Pip'
            - $ref: '#/components/schemas/UV'
            - $ref: '#/components/schemas/Poetry'
          discriminator:
            propertyName: type
        apt_packages:
          description: |-
            Debian packages to install via `apt get`.
            In Python/YAML E.g. ["git", "ffmpeg", "htop"]
          type: array
          items:
            type: string
        command:
          description: >-
            Command to run when the container starts.

            Command will be set as the Entrypoint of the generated image.

            When deploying a Job, the command can be templatized by defining
            `params` and referencing them in command

            E.g. `python main.py --learning_rate {{learning_rate}}`
          oneOf:
            - type: string
            - type: array
              items:
                type: string
        cuda_version:
          description: >-
            Version of CUDA Toolkit and CUDNN to install in the image

            These combinations are based off of publically available docker
            images on docker hub

            You can also specify a valid tag of the form
            {cuda_version_number}-cudnn{cudnn_version_number}-{runtime|devel}-ubuntu{ubuntu_version}

            Refer https://hub.docker.com/r/nvidia/cuda/tags for valid set of
            values

            Note: We use deadsnakes ubuntu ppa to add Python that currently
            supports only Ubuntu 18.04, 20.04 and 22.04
          type: string
          pattern: >-
            ^((\d+\.\d+(\.\d+)?-cudnn(\d+)?-(runtime|devel)-ubuntu\d+\.\d+)|11\.0-cudnn8|11\.1-cudnn8|11\.2-cudnn8|11\.3-cudnn8|11\.4-cudnn8|11\.5-cudnn8|11\.6-cudnn8|11\.7-cudnn8|11\.8-cudnn8|12\.0-cudnn8|12\.1-cudnn8|12\.2-cudnn8|12\.3-cudnn9|12\.4-cudnn9|12\.5-cudnn9|12\.6-cudnn9|12\.8-cudnn9|12\.9-cudnn9)$
      title: PythonBuild
      x-fern-type-name: PythonBuild
    NodeSelector:
      description: >-
        Constraints to select a Node - Specific GPU / Instance Families,
        On-Demand/Spot.
      type: object
      required:
        - type
      properties:
        type:
          description: +value=node_selector
          type: string
          enum:
            - node_selector
        instance_families:
          description: >-
            Instance family of the underlying machine to use. Multiple instance
            families can be supplied.

            The workload is guaranteed to be scheduled on one of them.
          type: array
          items:
            type: string
        capacity_type:
          description: >-
            Configure what type of nodes to run the app. By default no placement
            logic is applied.

            "spot_fallback_on_demand" will try to place the application on spot
            nodes but will fallback to on-demand when spot nodes are not
            available.

            "spot" will strictly place the application on spot nodes.

            "on_demand" will strictly place the application on on-demand nodes.
          type: string
          enum:
            - spot_fallback_on_demand
            - spot
            - on_demand
      title: NodeSelector
      x-fern-type-name: NodeSelector
    NodepoolSelector:
      description: Specify one or more nodepools to run your application on.
      type: object
      required:
        - type
      properties:
        type:
          description: +value=nodepool_selector
          type: string
          enum:
            - nodepool_selector
        nodepools:
          description: >-
            Nodepools where you want to run your workload. Multiple nodepools
            can be selected.
             The workload is guaranteed to be scheduled on one of the nodepool
          type: array
          items:
            type: string
      title: NodepoolSelector
      x-fern-type-name: NodepoolSelector
    NvidiaGPU:
      type: object
      required:
        - type
        - count
      properties:
        type:
          description: +value=nvidia_gpu
          type: string
          enum:
            - nvidia_gpu
        name:
          description: >-
            Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB,
            A100_80GB]

            This field is required for Node Selector and can be ignored in
            Nodepool Selector.

            One instance of the card contains the following amount of memory -

            P4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB,
            A100_40GB: 40GB, A100_80GB: 80 GB
          type: string
        count:
          description: >-
            Count of GPUs to provide to the application

            Note the exact count and max count available for a given GPU type
            depends on cloud provider and cluster type.
          type: integer
          minimum: 1
          maximum: 16
      title: NvidiaGPU
      x-fern-type-name: NvidiaGPU
    AWSInferentia:
      type: object
      required:
        - type
        - count
      properties:
        type:
          description: +value=aws_inferentia
          type: string
          enum:
            - aws_inferentia
        name:
          description: >-
            Name of the AWS Inferentia Accccelerator. One of [INF1, INF2].

            This field is required for Node Selector and can be ignored in
            Nodepool Selector.
          type: string
        count:
          description: Count of Inferentia accelerator chips to provide to the application
          type: integer
          minimum: 1
          maximum: 16
      title: AWSInferentia
      x-fern-type-name: AWSInferentia
    NvidiaMIGGPU:
      type: object
      required:
        - type
        - profile
      properties:
        type:
          description: +value=nvidia_mig_gpu
          type: string
          enum:
            - nvidia_mig_gpu
        name:
          description: >-
            Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB,
            A100_80GB]

            This field is required for Node Selector and can be ignored in
            Nodepool Selector.

            One instance of the card contains the following amount of memory -

            P4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB,
            A100_40GB: 40GB, A100_80GB: 80 GB
          type: string
        profile:
          description: >-
            Name of the MIG profile to use. One of the following based on gpu
            type

            Please refer to
            https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#supported-mig-profiles
            for more details

            A30 - [1g.6gb, 2g.12gb, 4g.24gb]

            A100 40 GB - [1g.5gb, 1g.10gb, 2g.10gb, 3g.20gb, 4g.20gb, 7g.40gb]

            A100 80 GB / H100 80 GB - [1g.10gb, 1g.20gb, 2g.20gb, 3g.40gb,
            4g.40gb, 7g.80gb]

            H100 94 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.47gb, 4g.47gb, 7g.94gb]

            H100 96 GB - [1g.12gb, 1g.24gb, 2g.24gb, 3g.48gb, 4g.48gb, 7g.96gb]

            H200 141 GB - [1g.18gb, 1g.35gb, 2g.35gb, 3g.71gb, 4g.71gb]

            B200 180 GB - [1g.23gb, 1g.45gb, 2g.45gb, 3g.90gb, 4g.90gb,
            7g.180gb]
          type: string
          enum:
            - 1g.6gb
            - 2g.12gb
            - 1g.5gb
            - 1g.10gb
            - 2g.10gb
            - 3g.20gb
            - 4g.20gb
            - 1g.20gb
            - 2g.20gb
            - 3g.40gb
            - 4g.40gb
            - 1g.12gb
            - 1g.24gb
            - 2g.24gb
            - 3g.47gb
            - 4g.47gb
            - 3g.48gb
            - 4g.48gb
            - 1g.18gb
            - 1g.35gb
            - 2g.35gb
            - 3g.71gb
            - 4g.71gb
            - 1g.23gb
            - 1g.45gb
            - 2g.45gb
            - 3g.90gb
            - 4g.90gb
            - 4g.24gb
            - 7g.40gb
            - 7g.80gb
            - 7g.94gb
            - 7g.96gb
            - 7g.180gb
      title: NvidiaMIGGPU
      x-fern-type-name: NvidiaMIGGPU
    NvidiaTimeslicingGPU:
      type: object
      required:
        - type
        - gpu_memory
      properties:
        type:
          description: +value=nvidia_timeslicing_gpu
          type: string
          enum:
            - nvidia_timeslicing_gpu
        name:
          description: >-
            Name of the Nvidia GPU. One of [P4, P100, V100, T4, A10G, A100_40GB,
            A100_80GB]

            This field is required for Node Selector and can be ignored in
            Nodepool Selector.

            One instance of the card contains the following amount of memory -

            P4: 8 GB, P100: 16 GB, V100: 16 GB, T4: 16 GB, A10G: 24 GB,
            A100_40GB: 40GB, A100_80GB: 80 GB
          type: string
        gpu_memory:
          description: >-
            Amount of GPU memory (in MB) to allocate. Please note, this limit is
            not being enforced today but will be in future. Applications are
            expected to operate in co-opertative mode
          type: integer
          minimum: 1
          maximum: 400000
      title: NvidiaTimeslicingGPU
      x-fern-type-name: NvidiaTimeslicingGPU
    GcpTPU:
      type: object
      required:
        - type
        - name
        - topology
      properties:
        type:
          description: +value=gcp_tpu
          type: string
          enum:
            - gcp_tpu
        name:
          description: |-
            Name of the TPU Type. One of
              - `tpu-v4-podslice` (TPU v4, ct4p)
              - `tpu-v5-lite-device` (TPU v5e, ct5l)
              - `tpu-v5-lite-podslice`  (TPU v5e, ct5lp)
              - `tpu-v5p-slice` (TPU v5p, ct5p)
          type: string
          pattern: ^tpu-[a-z\d\-]+$
        topology:
          description: >-
            Topology of the TPU slices. Currently only single-host topology is
            supported.
             Please refer to [TPUs on GKE docs](https://cloud.google.com/kubernetes-engine/docs/concepts/tpus#plan-tpu-configuration)
             Allowed Values:
               - `2x2x1` for `tpu-v4-podslice`
               - One of `1x1`, `2x2`, `2x4` for `tpu-v5-lite-device` and `tpu-v5-lite-podslice`
               - `2x2x1` for `tpu-v5p-slice`
          type: string
          pattern: ^\d+x\d+(x\d+)?$
      title: GcpTPU
      x-fern-type-name: GcpTPU
    NotificationTarget:
      description: +discriminator=type
      type: object
      oneOf:
        - $ref: '#/components/schemas/Email'
        - $ref: '#/components/schemas/SlackWebhook'
        - $ref: '#/components/schemas/SlackBot'
        - $ref: '#/components/schemas/PagerDuty'
        - $ref: '#/components/schemas/MSTeamsWebhook'
      discriminator:
        propertyName: type
      title: NotificationTarget
      x-fern-type-name: NotificationTarget
    Endpoint:
      type: object
      required:
        - host
      properties:
        host:
          description: Host e.g. ai.example.com, app.truefoundry.com
          type: string
          pattern: >-
            ^((([a-zA-Z0-9\-]{1,63}\.)([a-zA-Z0-9\-]{1,63}\.)*([A-Za-z]{1,63}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)))$
        path:
          description: Path e.g. /v1/api/ml/, /v2/docs/
          type: string
          pattern: ^(/([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-_\.]*[a-zA-Z0-9]))*/$
      title: Endpoint
      x-fern-type-name: Endpoint
    FlyteTaskTemplate:
      type: object
      oneOf:
        - $ref: '#/components/schemas/TruefoundryFlyteTaskTemplate'
        - $ref: '#/components/schemas/NativeSnowflakeFlyteTaskTemplate'
      title: FlyteTaskTemplate
      x-fern-type-name: FlyteTaskTemplate
    FlyteWorkflowTemplate:
      type: object
      required:
        - id
      properties:
        id:
          $ref: '#/components/schemas/FlyteWorkflowID'
      title: FlyteWorkflowTemplate
      x-fern-type-name: FlyteWorkflowTemplate
    FlyteLaunchPlanID:
      type: object
      required:
        - resourceType
        - name
      properties:
        resourceType:
          type: string
          enum:
            - LAUNCH_PLAN
        name:
          type: string
      title: FlyteLaunchPlanID
      x-fern-type-name: FlyteLaunchPlanID
    FlyteLaunchPlanSpec:
      type: object
      required:
        - workflowId
      properties:
        workflowId:
          $ref: '#/components/schemas/FlyteWorkflowID'
      title: FlyteLaunchPlanSpec
      x-fern-type-name: FlyteLaunchPlanSpec
    SparkBuild:
      description: >-
        Describes that we are using python to build a container image with a
        specific python version and pip packages installed.
      type: object
      required:
        - type
        - spark_version
        - build_context_path
      properties:
        type:
          description: +value=tfy-spark-buildpack
          type: string
          enum:
            - tfy-spark-buildpack
        spark_version:
          description: Spark version should match the spark version installed in the image.
          type: string
          default: 3.5.2
        build_context_path:
          description: Build path relative to project root path.
          type: string
          default: ./
        requirements_path:
          description: |-
            Path to `requirements.txt` relative to
            `Path to build context`
          type: string
      title: SparkBuild
      x-fern-type-name: SparkBuild
    SparkExecutorFixedInstances:
      description: Fixed Instances
      type: object
      required:
        - type
        - count
      properties:
        type:
          description: +value=fixed
          type: string
          enum:
            - fixed
        count:
          description: Number of instances to start
          type: integer
          minimum: 0
          maximum: 500
          default: 1
      title: SparkExecutorFixedInstances
      x-fern-type-name: SparkExecutorFixedInstances
    SparkExecutorDynamicScaling:
      description: Dynamic Scaling
      type: object
      required:
        - type
        - min
        - max
      properties:
        type:
          description: +value=dynamic
          type: string
          enum:
            - dynamic
        min:
          description: Minimum number of instances to start / scale down to
          type: integer
          minimum: 0
          maximum: 500
          default: 1
        max:
          description: Maximum number of instances to scale up to
          type: integer
          minimum: 0
          maximum: 500
          default: 1
      title: SparkExecutorDynamicScaling
      x-fern-type-name: SparkExecutorDynamicScaling
    ArtifactsCacheVolume:
      description: Describes the volume that will be used to cache the models
      type: object
      required:
        - storage_class
        - cache_size
      properties:
        storage_class:
          description: Storage class of the Volume where artifacts will be cached
          type: string
        cache_size:
          description: >-
            Size of the Volume (in GB) where artifacts will be cached. Should be
            greater than twice the size of artifacts getting cached
          type: integer
          minimum: 1
          maximum: 10000
          default: 200
      title: ArtifactsCacheVolume
      x-fern-type-name: ArtifactsCacheVolume
    TrueFoundryArtifactSource:
      description: Input for Artifact from TrueFoundry Artifact Registry
      type: object
      required:
        - type
        - artifact_version_fqn
        - download_path_env_variable
      properties:
        type:
          description: +value=truefoundry-artifact
          type: string
          enum:
            - truefoundry-artifact
        artifact_version_fqn:
          description: Artifact or Model Version FQN of the artifact to be downloaded
          type: string
        download_path_env_variable:
          description: >-
            Environment variable which will contain the download path of the
            artifact
          type: string
      title: TrueFoundryArtifactSource
      x-fern-type-name: TrueFoundryArtifactSource
    HuggingfaceArtifactSource:
      description: Input for Artifact from Huggingface Model Hub
      type: object
      required:
        - type
        - model_id
        - revision
        - ignore_patterns
        - download_path_env_variable
      properties:
        type:
          description: +value=huggingface-hub
          type: string
          enum:
            - huggingface-hub
        model_id:
          description: Model ID of the artifact to be downloaded
          type: string
        revision:
          description: Revision of the artifact to be downloaded
          type: string
        ignore_patterns:
          description: List of patterns to ignore while downloading the artifact
          type: array
          items:
            type: string
          default:
            - '*.h5'
            - '*.ot'
            - '*.tflite'
            - '*.msgpack'
        download_path_env_variable:
          description: >-
            Environment variable which will contain the download path of the
            artifact
          type: string
      title: HuggingfaceArtifactSource
      x-fern-type-name: HuggingfaceArtifactSource
    BasicAuthCreds:
      description: Username and password
      type: object
      required:
        - type
        - username
        - password
      properties:
        type:
          description: +value=basic_auth
          type: string
          enum:
            - basic_auth
        username:
          description: >-
            Username for service auth - Username for the user to authenticate
            with
          type: string
        password:
          description: >-
            Password for service auth - Password for the user to authenticate
            with
          type: string
      title: BasicAuthCreds
      x-fern-type-name: BasicAuthCreds
    JwtAuthConfig:
      description: Configure JWT-based authentication using JWKS
      type: object
      required:
        - type
        - integration_fqn
      properties:
        type:
          description: +value=jwt_auth
          type: string
          enum:
            - jwt_auth
        integration_fqn:
          description: >-
            FQN of the JWT Auth integration. If you can't find your integration
            here,

            add it through the [Integrations](/integrations) page
          type: string
        enable_login:
          description: Enable login for the service
          type: boolean
        claims:
          description: List of key-value pairs of claims to verify in the JWT token
          type: array
          items:
            type: object
            required:
              - key
              - values
            properties:
              key:
                type: string
              values:
                type: array
                items:
                  type: string
        bypass_auth_paths:
          description: >-
            List of paths that will bypass auth.

            needs to start with a forward slash(/) and should not contain
            wildcards(*)
          type: array
          items:
            type: string
            pattern: ^/[^*]*
      title: JwtAuthConfig
      x-fern-type-name: JwtAuthConfig
    TrueFoundryInteractiveLogin:
      description: Login with truefoundry
      type: object
      required:
        - type
      properties:
        type:
          description: +value=truefoundry_oauth
          type: string
          enum:
            - truefoundry_oauth
        bypass_auth_paths:
          description: >-
            List of paths that will bypass auth.

            needs to start with a forward slash(/) and should not contain
            wildcards(*)
          type: array
          items:
            type: string
            pattern: ^/[^*]*
      title: TrueFoundryInteractiveLogin
      x-fern-type-name: TrueFoundryInteractiveLogin
    HttpProbe:
      description: >-
        Describes the Instructions for assessing container health by executing
        an HTTP GET request.

        To learn more you can go
        [here](https://docs.truefoundry.com/docs/liveness-readiness-probe)
      type: object
      required:
        - type
        - path
        - port
      properties:
        type:
          description: Request Type
          type: string
          enum:
            - http
        path:
          description: Path to the health check endpoint
          type: string
        port:
          description: Listening port for the health check endpoint
          type: integer
          minimum: 0
          maximum: 65535
        host:
          description: Host name to connect to, defaults to the pod IP
          type: string
        scheme:
          description: Scheme to use for connecting to the host
          type: string
          default: HTTP
      title: HttpProbe
      x-fern-type-name: HttpProbe
    AwsSqsAccessKeyBasedAuth:
      description: AWS Access Key Based Auth
      type: object
      required:
        - type
        - access_key_id
        - secret_access_key
      properties:
        type:
          description: +value=access-key-based
          type: string
          enum:
            - access-key-based
        access_key_id:
          description: AWS access key ID that you want to use for authentication.
          type: string
          pattern: ^\S+$
        secret_access_key:
          description: AWS access key secret that you want to use for authentication.
          type: string
          pattern: ^\S+$
      title: AwsSqsAccessKeyBasedAuth
      x-fern-type-name: AwsSqsAccessKeyBasedAuth
    AwsSqsAssumedRoleBasedAuth:
      description: AWS Assumed Role Based Auth
      type: object
      required:
        - type
        - assumed_role_arn
      properties:
        type:
          description: +value=assumed-role-based
          type: string
          enum:
            - assumed-role-based
        assumed_role_arn:
          description: ARN of the role you want to assume.
          type: string
          pattern: ^arn:(aws|aws-us-gov|aws-cn):iam::[0-9]{12}:role(/[\w+=,.@-]+)+$
      title: AwsSqsAssumedRoleBasedAuth
      x-fern-type-name: AwsSqsAssumedRoleBasedAuth
    AWSAccessKeyAuth:
      type: object
      required:
        - aws_access_key_id
        - aws_secret_access_key
      properties:
        aws_access_key_id:
          description: AWS Access Key ID
          type: string
        aws_secret_access_key:
          description: AWS Secret Access Key for the user to authenticate with
          type: string
        aws_session_token:
          description: AWS Session Token, only required when using temporary credentials
          type: string
      title: AWSAccessKeyAuth
      x-fern-type-name: AWSAccessKeyAuth
    NATSUserPasswordAuth:
      description: NATS User Password Authentication
      type: object
      required:
        - account_name
        - user
        - password
      properties:
        account_name:
          description: Name of the NATS account
          type: string
          default: $G
        user:
          description: User for NATS authentication
          type: string
        password:
          description: Password for NATS authentication
          type: string
      title: NATSUserPasswordAuth
      x-fern-type-name: NATSUserPasswordAuth
    KafkaSASLAuth:
      type: object
      required:
        - username
        - password
      properties:
        username:
          description: Username for SASL authentication
          type: string
        password:
          description: Password for SASL authentication
          type: string
      title: KafkaSASLAuth
      x-fern-type-name: KafkaSASLAuth
    BuildSecret:
      type: object
      required:
        - id
        - value
      properties:
        id:
          description: The ID of the build secret.
          type: string
          pattern: ^\S+$
        value:
          description: The value of the build secret.
          type: string
        env:
          description: The name of the environment variable to inject the secret into.
          type: string
          pattern: ^[_a-zA-Z0-9][_a-zA-Z0-9]{1,31}$
      title: BuildSecret
      x-fern-type-name: BuildSecret
    Pip:
      description: Use pip to install requirements files and packages
      type: object
      required:
        - type
      properties:
        type:
          description: +value=pip
          type: string
          enum:
            - pip
        requirements_path:
          description: Path to `requirements.txt` relative to `Path to build context`
          type: string
        pip_packages:
          description: |-
            Define pip package requirements.
            In Python/YAML E.g. ["fastapi>=0.90,<1.0", "uvicorn"]
          type: array
          items:
            type: string
      title: Pip
      x-fern-type-name: Pip
    UV:
      description: |-
        Use `uv` to setup env.
        Your build context root must contain `pyproject.toml` and `uv.lock`
      type: object
      required:
        - type
      properties:
        type:
          description: +value=uv
          type: string
          enum:
            - uv
        uv_version:
          description: UV version to use
          type: string
          default: latest
        sync_options:
          description: Sync options to pass to uv command
          type: string
      title: UV
      x-fern-type-name: UV
    Poetry:
      description: |-
        Use `poetry` to setup env.
        Your build context root must contain `pyproject.toml` and `poetry.lock`
      type: object
      required:
        - type
      properties:
        type:
          description: +value=poetry
          type: string
          enum:
            - poetry
        poetry_version:
          description: Poetry version to use
          type: string
          default: latest
          oneOf:
            - enum:
                - latest
            - pattern: ^\d+(\.\d+){1,2}([\-\.a-z0-9]+)?$
        install_options:
          description: install options to pass to poetry command
          type: string
      title: Poetry
      x-fern-type-name: Poetry
    Email:
      description: Email
      type: object
      required:
        - type
        - notification_channel
        - to_emails
      properties:
        type:
          description: +value=email
          type: string
          enum:
            - email
        notification_channel:
          description: Specify the notification channel to send alerts to
          type: string
          minLength: 1
        to_emails:
          description: >-
            List of recipients' email addresses if the notification channel is
            Email.
          type: array
          items:
            type: string
            minLength: 1
      title: Email
      x-fern-type-name: Email
    SlackWebhook:
      description: Slack Webhook
      type: object
      required:
        - type
        - notification_channel
      properties:
        type:
          description: +value=slack-webhook
          type: string
          enum:
            - slack-webhook
        notification_channel:
          description: Specify the notification channel to send alerts to
          type: string
          minLength: 1
      title: SlackWebhook
      x-fern-type-name: SlackWebhook
    SlackBot:
      type: object
      required:
        - type
        - notification_channel
        - channels
      properties:
        type:
          description: +value=slack-bot
          type: string
          enum:
            - slack-bot
        notification_channel:
          description: Specify the notification channel to send alerts to
          type: string
          minLength: 1
        channels:
          description: List of channels to send messages to.
          type: array
          items:
            type: string
            pattern: ^#[a-z0-9\-_]{2,80}$
      title: SlackBot
      x-fern-type-name: SlackBot
    PagerDuty:
      type: object
      required:
        - type
        - notification_channel
      properties:
        type:
          description: +value=pagerduty
          type: string
          enum:
            - pagerduty
        notification_channel:
          description: Specify the notification channel to send alerts to
          type: string
          minLength: 1
      title: PagerDuty
      x-fern-type-name: PagerDuty
    MSTeamsWebhook:
      description: MS Teams Webhook
      type: object
      required:
        - type
        - notification_channel
      properties:
        type:
          description: +value=ms-teams-webhook
          type: string
          enum:
            - ms-teams-webhook
        notification_channel:
          description: Specify the notification channel to send alerts to
          type: string
          minLength: 1
      title: MSTeamsWebhook
      x-fern-type-name: MSTeamsWebhook
    TruefoundryFlyteTaskTemplate:
      type: object
      required:
        - id
        - custom
      properties:
        id:
          $ref: '#/components/schemas/FlyteTaskID'
        custom:
          $ref: '#/components/schemas/FlyteTaskCustom'
      title: TruefoundryFlyteTaskTemplate
      x-fern-type-name: TruefoundryFlyteTaskTemplate
    NativeSnowflakeFlyteTaskTemplate:
      type: object
      required:
        - id
        - type
        - config
        - sql
      properties:
        id:
          $ref: '#/components/schemas/FlyteTaskID'
        type:
          type: string
          enum:
            - snowflake
        config:
          $ref: '#/components/schemas/SnowflakeConfig'
        sql:
          $ref: '#/components/schemas/SnowflakeSql'
      title: NativeSnowflakeFlyteTaskTemplate
      x-fern-type-name: NativeSnowflakeFlyteTaskTemplate
    FlyteWorkflowID:
      type: object
      required:
        - resourceType
        - name
      properties:
        resourceType:
          type: string
          enum:
            - WORKFLOW
        name:
          type: string
      title: FlyteWorkflowID
      x-fern-type-name: FlyteWorkflowID
    FlyteTaskID:
      type: object
      required:
        - resourceType
        - name
      properties:
        resourceType:
          type: string
          enum:
            - TASK
        name:
          type: string
      title: FlyteTaskID
      x-fern-type-name: FlyteTaskID
    FlyteTaskCustom:
      type: object
      required:
        - truefoundry
      properties:
        truefoundry:
          description: +discriminator=type
          type: object
          oneOf:
            - $ref: '#/components/schemas/PythonTaskConfig'
            - $ref: '#/components/schemas/ContainerTaskConfig'
            - $ref: '#/components/schemas/PySparkTaskConfig'
            - $ref: '#/components/schemas/DatabricksJobTaskConfig'
            - $ref: '#/components/schemas/SnowflakeTaskConfig'
          discriminator:
            propertyName: type
      title: FlyteTaskCustom
      x-fern-type-name: FlyteTaskCustom
    SnowflakeConfig:
      type: object
      required:
        - account
        - schema
        - user
        - warehouse
        - database
      properties:
        account:
          type: string
        schema:
          type: string
        user:
          type: string
        warehouse:
          type: string
        database:
          type: string
      title: SnowflakeConfig
      x-fern-type-name: SnowflakeConfig
    SnowflakeSql:
      type: object
      required:
        - statement
      properties:
        statement:
          type: string
      title: SnowflakeSql
      x-fern-type-name: SnowflakeSql
    PythonTaskConfig:
      description: Describes the configuration for the python function task
      type: object
      required:
        - type
        - image
      properties:
        type:
          description: +value=python-task-config
          type: string
          enum:
            - python-task-config
        image:
          description: Specify the image spec for the task
          type: object
          oneOf:
            - $ref: '#/components/schemas/TaskPythonBuild'
            - $ref: '#/components/schemas/TaskDockerFileBuild'
          discriminator:
            propertyName: type
        env:
          description: >-
            Configure environment variables to be injected in the task either as
            plain text or secrets.
            [Docs](https://docs.truefoundry.com/docs/env-variables)
          type: object
          default: null
          additionalProperties:
            type: string
          nullable: true
        resources:
          $ref: '#/components/schemas/Resources'
        mounts:
          description: Configure data to be mounted to Workflow pod(s) as a volume.
          type: array
          items:
            type: object
            oneOf:
              - $ref: '#/components/schemas/SecretMount'
              - $ref: '#/components/schemas/StringDataMount'
              - $ref: '#/components/schemas/VolumeMount'
        service_account:
          description: Service Account
          type: string
      title: PythonTaskConfig
      x-fern-type-name: PythonTaskConfig
    ContainerTaskConfig:
      type: object
      required:
        - type
        - image
      properties:
        type:
          description: +value=container-task-config
          type: string
          enum:
            - container-task-config
        image:
          description: >-
            Specify whether you want to deploy a Docker image or build and
            deploy from source code
          type: object
          oneOf:
            - $ref: '#/components/schemas/Build'
            - $ref: '#/components/schemas/Image'
          discriminator:
            propertyName: type
        env:
          description: >-
            Configure environment variables to be injected in the task either as
            plain text or secrets.
            [Docs](https://docs.truefoundry.com/docs/env-variables)
          type: object
          default: null
          additionalProperties:
            type: string
          nullable: true
        resources:
          $ref: '#/components/schemas/Resources'
        mounts:
          description: Configure data to be mounted to Workflow pod(s) as a volume.
          type: array
          items:
            type: object
            oneOf:
              - $ref: '#/components/schemas/SecretMount'
              - $ref: '#/components/schemas/StringDataMount'
              - $ref: '#/components/schemas/VolumeMount'
        service_account:
          description: Service Account
          type: string
      title: ContainerTaskConfig
      x-fern-type-name: ContainerTaskConfig
    PySparkTaskConfig:
      type: object
      required:
        - type
        - image
        - driver_config
        - executor_config
      properties:
        type:
          description: +value=pyspark-task-config
          type: string
          enum:
            - pyspark-task-config
        image:
          $ref: '#/components/schemas/TaskPySparkBuild'
        driver_config:
          $ref: '#/components/schemas/SparkDriverConfig'
        executor_config:
          $ref: '#/components/schemas/SparkExecutorConfig'
        spark_conf:
          description: >-
            Extra configuration properties to be passed to the spark job.
            [Docs](https://spark.apache.org/docs/latest/configuration.html)
          type: object
          default: null
          additionalProperties:
            type: string
            minLength: 1
          nullable: true
        env:
          description: >-
            Configure environment variables to be injected in the task either as
            plain text or secrets.
            [Docs](https://docs.truefoundry.com/docs/env-variables)
          type: object
          default: null
          additionalProperties:
            type: string
          nullable: true
        mounts:
          description: Configure data to be mounted to Workflow pod(s) as a volume.
          type: array
          items:
            $ref: '#/components/schemas/VolumeMount'
        service_account:
          description: Service Account
          type: string
      title: PySparkTaskConfig
      x-fern-type-name: PySparkTaskConfig
    DatabricksJobTaskConfig:
      description: >-
        Task that triggers a Databricks job via API and polls until completion.
        Uses image and optional resources; no env or mounts. Execution is
        handled by the CLI (trigger + poll).
      type: object
      required:
        - type
        - image
        - workspace_host
        - job_id
      properties:
        type:
          description: +value=databricks-job-task-config
          type: string
          enum:
            - databricks-job-task-config
        image:
          description: Specify the image spec for the task
          type: object
          oneOf:
            - $ref: '#/components/schemas/TaskPythonBuild'
            - $ref: '#/components/schemas/TaskDockerFileBuild'
          discriminator:
            propertyName: type
        workspace_host:
          description: >-
            Databricks workspace URL, e.g.
            https://<workspace>.cloud.databricks.com
          type: string
        job_id:
          description: The Databricks job ID to run (from Databricks workspace Jobs).
          type: string
        service_account:
          description: Service Account
          type: string
        job_parameters:
          description: >-
            Optional parameters to pass to the job run (e.g. notebook params,
            jar params).
          type: object
          default: null
          additionalProperties:
            type: string
          nullable: true
        timeout_seconds:
          description: >-
            Maximum seconds to wait for the job run to complete. Used by CLI
            when polling.
          type: number
          default: null
          nullable: true
        skip_wait_for_completion:
          description: >-
            If false, the task waits for the Databricks job run to complete
            (trigger and poll). If true, only triggers the job and returns.
            Default false.
          type: boolean
          default: false
        env:
          description: >-
            Configure environment variables to be injected in the task either as
            plain text or secrets.
            [Docs](https://docs.truefoundry.com/docs/env-variables)
          type: object
          default: null
          additionalProperties:
            type: string
          nullable: true
        resources:
          $ref: '#/components/schemas/Resources'
      title: DatabricksJobTaskConfig
      x-fern-type-name: DatabricksJobTaskConfig
    SnowflakeTaskConfig:
      type: object
      required:
        - type
        - user
        - account
        - database
        - schema_name
        - warehouse
      properties:
        type:
          description: +value=snowflake-task-config
          type: string
          enum:
            - snowflake-task-config
        user:
          description: Configuration required to connect and execute tasks in Snowflake.
          type: string
        account:
          description: Snowflake account identifier (e.g., <org>-<account>).
          type: string
        database:
          description: Target Snowflake database where the task will run.
          type: string
        schema_name:
          description: Target schema within the Snowflake database.
          type: string
        warehouse:
          description: Compute warehouse to be used for executing the task.
          type: string
      title: SnowflakeTaskConfig
      x-fern-type-name: SnowflakeTaskConfig
    TaskPythonBuild:
      description: Describes the configuration for the python build for a task
      type: object
      required:
        - type
      properties:
        type:
          description: |-
            +uiType=Hidden
            +value=task-python-build
          type: string
          enum:
            - task-python-build
        docker_registry:
          description: >-
            FQN of the container registry. If you can't find your registry here,

            add it through the [Integrations](/integrations?tab=docker-registry)
            page
          type: string
        python_version:
          description: >-
            Python version to run your application. Should be one of the tags
            listed on [Official Python Docker
            Page](https://hub.docker.com/_/python)
          type: string
          pattern: ^\d+(\.\d+){1,2}([\-\.a-z0-9]+)?$
        requirements_path:
          description: |-
            Path to `requirements.txt` relative to
            `Path to build context`
          type: string
        pip_packages:
          description: |-
            Define pip package requirements.
            In Python/YAML E.g. ["fastapi>=0.90,<1.0", "uvicorn"]
          type: array
          items:
            type: string
        apt_packages:
          description: |-
            Debian packages to install via `apt get`.
            In Python/YAML E.g. ["git", "ffmpeg", "htop"]
          type: array
          items:
            type: string
        cuda_version:
          description: >-
            Version of CUDA Toolkit and CUDNN to install in the image

            These combinations are based off of publically available docker
            images on docker hub

            You can also specify a valid tag of the form
            {cuda_version_number}-cudnn{cudnn_version_number}-{runtime|devel}-ubuntu{ubuntu_version}

            Refer https://hub.docker.com/r/nvidia/cuda/tags for valid set of
            values

            Note: We use deadsnakes ubuntu ppa to add Python that currently
            supports only Ubuntu 18.04, 20.04 and 22.04
          type: string
          pattern: >-
            ^((\d+\.\d+(\.\d+)?-cudnn(\d+)?-(runtime|devel)-ubuntu\d+\.\d+)|11\.0-cudnn8|11\.1-cudnn8|11\.2-cudnn8|11\.3-cudnn8|11\.4-cudnn8|11\.5-cudnn8|11\.6-cudnn8|11\.7-cudnn8|11\.8-cudnn8|12\.0-cudnn8|12\.1-cudnn8|12\.2-cudnn8|12\.3-cudnn9|12\.4-cudnn9|12\.5-cudnn9|12\.6-cudnn9|12\.8-cudnn9|12\.9-cudnn9)$
      title: TaskPythonBuild
      x-fern-type-name: TaskPythonBuild
    TaskDockerFileBuild:
      description: Describes the configuration for the docker build for a task
      type: object
      required:
        - type
        - dockerfile_path
      properties:
        type:
          description: |-
            +uiType=Hidden
            +value=dockerfile
          type: string
          enum:
            - task-dockerfile-build
        docker_registry:
          description: >-
            FQN of the container registry. If you can't find your registry here,

            add it through the [Integrations](/integrations?tab=docker-registry)
            page
          type: string
        dockerfile_path:
          description: The file path of the Dockerfile relative to project root path.
          type: string
          default: ./Dockerfile
        build_args:
          description: Build arguments to pass to docker build
          type: object
          additionalProperties:
            type: string
      title: TaskDockerFileBuild
      x-fern-type-name: TaskDockerFileBuild
    TaskPySparkBuild:
      description: Describes the configuration for the PySpark build for a task
      type: object
      required:
        - type
        - spark_version
      properties:
        type:
          description: |-
            +uiType=Hidden
            +value=task-pyspark-build
          type: string
          enum:
            - task-pyspark-build
        spark_version:
          description: Spark version should match the spark version installed in the image.
          type: string
          default: 3.5.2
        container_image:
          description: >-
            Custom container image URI. If provided, this image is used instead
            of the

            default Spark base image (public.ecr.aws/bitnami/spark). The image
            must be

            Debian-based and have Python and Spark pre-installed.
          type: string
          pattern: ^\S+$
        docker_registry:
          description: >-
            FQN of the container registry. If you can't find your registry here,

            add it through the [Integrations](/integrations?tab=docker-registry)
            page
          type: string
        requirements_path:
          description: |-
            Path to `requirements.txt` relative to
            `Path to build context`
          type: string
        pip_packages:
          description: |-
            Define pip package requirements.
            In Python/YAML E.g. ["fastapi>=0.90,<1.0", "uvicorn"]
          type: array
          items:
            type: string
        apt_packages:
          description: |-
            Debian packages to install via `apt get`.
            In Python/YAML E.g. ["git", "ffmpeg", "htop"]
          type: array
          items:
            type: string
      title: TaskPySparkBuild
      x-fern-type-name: TaskPySparkBuild
  securitySchemes:
    jwt:
      type: http
      scheme: bearer
      bearerFormat: JWT

````