openapi: 3.0.3
info:
  title: Tamarind API
  description: |
    API for protein structure prediction, design, and analysis tools.
    
    ## Authentication
    All API endpoints require authentication via API key in the request headers:
    ```
    Authorization: Bearer YOUR_API_KEY
    ```
    
    ## Job Types
    The API supports various job types for different protein analysis tasks including:
    - Structure prediction (AlphaFold, Chai, Boltz, etc.)
    - Protein design (RFdiffusion, ProteinMPNN, etc.)
    - Docking (AutoDock Vina, DiffDock, etc.)
    - Property prediction (solubility, thermostability, etc.)
    - And many more specialized tools
    
    ## File Uploads
    Many tools require PDB files, sequences, or other molecular data. Use the `/uploadFile` endpoint to upload files and get file IDs for use in job submissions.
    
    ## Rate Limits
    - All endpoints: 10 requests per second
  version: 1.0.0
  contact:
    name: Tamarind Support
    email: support@tamarind.com
  license:
    name: MIT
    url: https://opensource.org/licenses/MIT

servers:
  - url: https://api.tamarind.com/v1
    description: Production server
  - url: https://staging-api.tamarind.com/v1
    description: Staging server

paths:
  /submit-job:
    post:
      summary: Submit a single job
      description: Submit a job for protein analysis using one of the available tools
      operationId: submitJob
      security:
        - ApiKeyAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JobSubmission'
            example:
              jobName: "my-protein-analysis"
              type: "alphafold"
              settings:
                sequence: "MKTVRQERLKSIVRILERSKEPVSGAQLAEELSVSRQVIVQDIAYLRSLGYNIVATPRGYVLAGG"
      responses:
        '200':
          description: Job submitted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobResponse'
        '400':
          description: Bad request - invalid parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized - invalid API key
        '429':
          description: Too many requests - rate limit exceeded
      tags:
        - Jobs

  /submit-batch:
    post:
      summary: Submit multiple jobs as a batch
      description: Submit multiple jobs in a single request for batch processing
      operationId: submitBatch
      security:
        - ApiKeyAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BatchSubmission'
            example:
              batchName: "my-batch-analysis"
              type: "alphafold"
              settings:
                - sequence: "QVQLQQSGAELARPGASVKMSCKASGYTFTRYTMHWVKQRPGQGLEWIGYINPSRGYTNYNQKFKDKATLTTDKSSSTAYMQLSSLTSEDSAVYYCARYYDDHYCLDYWGQGTTLTVSS"
                - sequence: "MKTVRQERLKSIVRILERSKEPVSGAQLAEELSVSRQVIVQDIAYLRSLGYNIVATPRGYVLAGG"
              jobNames:
                - "job1"
                - "job2"
      responses:
        '200':
          description: Batch submitted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BatchResponse'
        '400':
          description: Bad request - invalid parameters
        '401':
          description: Unauthorized
        '429':
          description: Too many requests
      tags:
        - Jobs

  /jobs:
    get:
      summary: Get user's jobs
      description: Retrieve a list of jobs for the authenticated user
      operationId: getJobs
      security:
        - ApiKeyAuth: []
      parameters:
        - name: jobName
          in: query
          description: Return one job given its name
          schema:
            type: string
            example: "myJobName"
        - name: batch
          in: query
          description: Return all jobs in a batch
          schema:
            type: string
            example: "myBatchName"
        - name: startKey
          in: query
          description: Use a previously returned start key to retrieve more than 1000 jobs
          schema:
            type: string
        - name: limit
          in: query
          description: Limit the number of jobs retrieved, if there are additional jobs a startKey will be returned
          schema:
            type: integer
            default: 1000
        - name: organization
          in: query
          description: Return all jobs in your organization
          schema:
            type: string
            enum: ["true"]
        - name: includeSubjobs
          in: query
          description: Include subjobs from batches in response - only top level jobs are returned by default
          schema:
            type: string
            enum: ["true"]
        - name: jobEmail
          in: query
          description: Return jobs for another member in your organization
          schema:
            type: string
            format: email
            example: "user@email.com"
      responses:
        '200':
          description: List of jobs
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    properties:
                      jobs:
                        type: array
                        items:
                          $ref: '#/components/schemas/JobInfo'
                      startKey:
                        type: string
                        description: Key for pagination to retrieve more jobs
                      statuses:
                        type: object
                        properties:
                          Complete:
                            type: integer
                            description: Number of completed jobs
                          "In Queue":
                            type: integer
                            description: Number of jobs in queue
                          Running:
                            type: integer
                            description: Number of running jobs
                          Stopped:
                            type: integer
                            description: Number of stopped jobs
                  - $ref: '#/components/schemas/JobInfo'
                    description: Single job response when jobName parameter is used
        '401':
          description: Unauthorized
      tags:
        - Jobs

  /result:
    post:
      summary: Get job results
      description: Retrieve results for a completed job
      operationId: getResult
      security:
        - ApiKeyAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - jobName
              properties:
                jobName:
                  type: string
                  description: Name of the job to get results for
                  example: "my-protein-analysis"
                jobEmail:
                  type: string
                  format: email
                  description: Email of another member of your team (optional)
                  example: "user@email.com"
                fileName:
                  type: string
                  description: Path to a specific file in the job results (optional)
                  example: "myfile.txt"
                pdbsOnly:
                  type: boolean
                  description: Return only PDB files (optional)
                  example: true
      responses:
        '200':
          description: Job results
          content:
            application/json:
              schema:
                type: string
                description: S3 presigned URL to download the job results
                example: "https://s3.amazonaws.com/bucket/job-results.zip"
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '404':
          description: Job not found
      tags:
        - Results

  /upload/{filename}:
    put:
      summary: Upload a file
      description: Upload a file (PDB, sequence, etc.) for use in job submissions
      operationId: uploadFile
      security:
        - ApiKeyAuth: []
      parameters:
        - name: filename
          in: path
          required: true
          description: Name of the file to upload
          schema:
            type: string
            example: "myfile.pdb"
        - name: folder
          in: query
          description: Optional folder to upload the file to
          schema:
            type: string
            example: "myFolder"
      requestBody:
        required: true
        content:
          application/octet-stream:
            schema:
              type: string
              format: binary
              description: File content to upload
      responses:
        '200':
          description: File uploaded successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: Success message
                    example: "File uploaded successfully"
                  fileUrl:
                    type: string
                    description: URL of the uploaded file
                  signedUrl:
                    type: string
                    description: Signed URL for accessing the file
        '400':
          description: Bad request - invalid file
        '401':
          description: Unauthorized
        '413':
          description: File too large
      tags:
        - Files

  /delete-job:
    post:
      summary: Delete a job
      description: Delete a job given its name. If a job name is provided which does not exist, it returns a 400 error. If you delete a batch job, all subjobs will be deleted also.
      operationId: deleteJob
      security:
        - ApiKeyAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - jobName
              properties:
                jobName:
                  type: string
                  description: Name of the job to delete
                  example: "myJobName"
      responses:
        '200':
          description: Job deleted successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: "Job deleted successfully"
        '400':
          description: Bad request - job not found
        '401':
          description: Unauthorized
      tags:
        - Jobs

  /delete-file:
    get:
      summary: Delete a file
      description: Delete a file from user account
      operationId: deleteFile
      security:
        - ApiKeyAuth: []
      parameters:
        - name: filePath
          in: query
          description: Name of the file to delete
          schema:
            type: string
            example: "path/to/myFileName.txt"
        - name: folder
          in: query
          description: Path to folder - deletes all files in the specified folder
          schema:
            type: string
            example: "myFolder"
      responses:
        '200':
          description: File deleted successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: "File deleted successfully"
        '400':
          description: Bad request - file not found
        '401':
          description: Unauthorized
      tags:
        - Files

  /files:
    get:
      summary: Get user's files
      description: Retrieve a list of files uploaded by the user
      operationId: getFiles
      security:
        - ApiKeyAuth: []
      parameters:
        - name: limit
          in: query
          description: Maximum number of files to return
          schema:
            type: integer
            default: 50
            maximum: 100
        - name: offset
          in: query
          description: Number of files to skip
          schema:
            type: integer
            default: 0
        - name: includeFolders
          in: query
          description: Include folders in the response
          schema:
            type: string
            enum: ["true"]
        - name: folder
          in: query
          description: Path to folder to view files within that folder
          schema:
            type: string
            example: "myFolder"
      responses:
        '200':
          description: List of files
          content:
            application/json:
              schema:
                type: object
                properties:
                  files:
                    type: array
                    items:
                      type: object
                      properties:
                        fileId:
                          type: string
                          description: Unique identifier for the file
                        fileName:
                          type: string
                          description: Original filename
                        fileSize:
                          type: integer
                          description: File size in bytes
                        uploadTime:
                          type: string
                          format: date-time
                          description: When the file was uploaded
                  total:
                    type: integer
                    description: Total number of files
                  hasMore:
                    type: boolean
                    description: Whether there are more files available
        '401':
          description: Unauthorized
      tags:
        - Files

components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: API key for authentication

  schemas:
# Tool schemas ref
    # Abb4 Settings
    Abb4Settings:
      type: object
      required:
        - heavy
        - light
        - numSamples
      properties:
        heavy:
          type: string
          description: "Antibody heavy chain variable region sequence"
          example: "QVQLVQSGAEVKKPGSSVKVSCKASGGTFSSLAISWVRQAPGQGLEWMGGIIPIFGTANYAQKFQGRVTITADESTSTAYMELSSLRSEDTAVYYCARGGSVSGTLVDFDIWGQGTMVTVS"
        light:
          type: string
          description: "Antibody light chain variable region sequence"
          example: "DIQMTQSPSTLSASVGDRVTITCRASQSISSWLAWYQQKPGKAPKLLIYKASSLESGVPSRFSGSGSGTEFTLTISSLQPDDFATYYCQQYNIYPITFGGGTKVEIK"
        numSamples:
          type: number
          description: "Number of conformational samples to generate per input sequence"
          minimum: 1
          maximum: 1000
          default: 100
        model:
          type: string
          description: "Checkpoint to use for inference"
          default: "abb4_STEROIDS"
          enum:
            - "abb4_STEROIDS"
            - "abb4_STEROIDS_CG"
            - "abb4_base"
        numTimesteps:
          type: number
          description: "Number of ODE steps during inference. 100 matches publication; 50 is ~identical with a 2x speedup; 10-20 is faster with some accuracy drop"
          minimum: 5
          maximum: 200
          default: 50
        renumber:
          type: boolean
          description: "Post-process predicted PDBs to use standard IMGT antibody numbering"
          default: True

    # Abgpt Settings
    AbgptSettings:
      type: object
      required:
        - startingResidues
        - chainType
      properties:
        startingResidues:
          type: string
          description: "Starting sequence for your generated BCR"
          example: "QVQL"
        chainType:
          type: string
          description: "Heavy or light chain"
          default: "heavy"
          enum:
            - "heavy"
            - "light"
        numSequences:
          type: number
          description: "Number of sequences to generate"
          default: 100

    # Ablang Settings
    AblangSettings:
      type: object
      required:
        - task
        - heavyMask
        - lightMask
      properties:
        task:
          type: string
          default: "scan"
          enum:
            - "scan"
            - "embeddings"
            - "mask"
        heavySequence:
          type: string
          description: "Heavy sequence of your antibody"
          example: "QVQLQQSGAELARPGASVKMSCKASGYTFTRYTMHWVKQRPGQGLEWIGYINPSRGYTNYNQKFKDKATLTTDKSSSTAYMQLSSLTSEDSAVYYCARYYDDHYCLDYWGQGTTLTVSS"
        lightSequence:
          type: string
          description: "Light sequence of your antibody"
          example: "QIVLTQSPAIMSASPGEKVTMTCSASSSVSYMNWYQQKSGTSPKRWIYDTSKLASGVPAHFRGSGSGTSYSLTISGMEAEDAATYYCQQWSSNPFTFGSGTKLEIN"
        heavyMask:
          type: string
          description: "Residues to mask in the heavy chain, masking the whole sequence is not allowed [Only available when task is one of mask]"
          example: "26-32"
        lightMask:
          type: string
          description: "Residues to mask in the light chain, masking the whole sequence is not allowed [Only available when task is one of mask]"
          example: "26-32"

    # Ablang-Mpnn Settings
    AblangMpnnSettings:
      type: object
      required:
        - pdbFile
      properties:
        pdbFile:
          type: string
          description: "Protein structure in PDB format File with extensions [pdb]"
          example: "3HTN.pdb"
          format: binary
        heavyChain:
          type: string
          description: "Chain identifier for heavy chain"
        customHeavyResidues:
          type: string
          description: "Select specific residues to design on heavy chain"
        lightChain:
          type: string
          description: "Chain identifier for light chain"
          example: "L"
        customLightResidues:
          type: string
          description: "Select specific residues to design on light chain"
        mpnn_weight:
          type: number
          description: "Weight for ProteinMPNN model in ensemble (0-1)"
          minimum: 0
          maximum: 1
          default: 0.5
        ablang_weight:
          type: number
          description: "Weight for AbLang model in ensemble (0-1)"
          minimum: 0
          maximum: 1
          default: 0.5
        temperature:
          type: number
          description: "Sampling temperature for sequence generation"
          minimum: 0.01
          maximum: 2
          default: 0.1
        num_sequences:
          type: number
          description: "Number of sequences to generate"
          minimum: 1
          maximum: 100
          default: 5

    # Abmap Settings
    AbmapSettings:
      type: object
      required:
        - task
        - chainType
      properties:
        task:
          type: string
          default: "embeddings"
          enum:
            - "embeddings"
        sequence:
          type: string
          description: "Sequence to embed"
          example: "QVQLQQSGAELARPGASVKMSCKASGYTFTRYTMHWVKQRPGQGLEWIGYINPSRGYTNYNQKFKDKATLTTDKSSSTAYMQLSSLTSEDSAVYYCARYYDDHYCLDYWGQGTTLTVSS"
        chainType:
          type: string
          default: "H"
          enum:
            - "H"
            - "L"

    # Abmpnn Settings
    AbmpnnSettings:
      type: object
      required:
        - pdbFile
        - designedResidues
        - regions
      properties:
        pdbFile:
          type: string
          description: "Protein structure file to be designed File with extensions [pdb]"
          example: "9f6o.pdb"
          format: binary
        designedChains:
          type: array
          items:
            type: string
          description: "Chain IDs to be designed - choose heavy before light chain"
          example: ["B"]
        designedResidues:
          type: object
          description: "Residues to design in your protein"
          example: {'B': '26 27 28 29 30 31 32 52 53 54 55 56 95 96 97 98 99 100 101 102'}
        numSequences:
          type: number
          description: "Number of sequences to be generated for each protein backbone"
          default: 2
        temperature:
          type: number
          description: "Model temperture - Suggested values 0.1, 0.15, 0.2, 0.25, 0.3. Higher values will lead to more diversity"
          minimum: 0
          maximum: 1
          default: 0.1
        noiseLevel:
          type: string
          description: "Select from models of various noise levels (A)"
          default: "0.2"
          enum:
            - "0.02"
            - "0.1"
            - "0.2"
            - "0.3"
        omitAAs:
          type: string
          description: "These amino acids will be avoided when generating sequences"
          default: "C"
        verifySequences:
          type: string
          description: "Automatically perform structure prediction on generated sequences for verification"
          enum:
            - "verify-alphafold"
            - "verify-chai"
        detectCDRs:
          type: boolean
          description: "Must input chains as format 'H L' to detect CDRs"
          default: False
        regions:
          type: string
          description: "Regions to mutate"
          example: ["CDRH1", "CDRH2", "CDRH3"]
          enum:
            - "FWH1"
            - "FWL1"
            - "CDRH1"
            - "CDRL1"
            - "FWH2"
            - "FWL2"
            - "CDRH2"
            - "CDRL2"
            - "FWH3"
            - "FWL3"
            - "CDRH3"
            - "CDRL3"
            - "FWH4"
            - "FWL4"

    # Abnativ Settings
    AbnativSettings:
      type: object
      required:
        - task
        - sequence
        - nat
        - vhSequence
        - vlSequence
      properties:
        task:
          type: string
          default: "score"
          enum:
            - "score"
            - "paired_score"
            - "hum_vhh"
            - "hum_vh_vl"
            - "hum_vh_vl_paired"
        sequence:
          type: string
          description: "Sequence [Only available when task is one of score, hum_vhh]"
          example: "QVQLVESGGGLVQAGGSLRLSCAASGRTFSSYAMGWFRQAPGKEREFVAAISWSGGSTYYADSVKGRFTISRDNAKNTVYLQMNSLKPEDTAVYYCAADSTIYASYYECGHGLSTGGYGYDSWGQGTQVTVSS"
          maxLength: 5000
        nat:
          type: string
          example: "VHH2"
          default: "VHH2"
          enum:
            - "VH2"
            - "VL2"
            - "VHH2"
        vhSequence:
          type: string
          description: "VH Sequence [Only available when task is one of paired_score, hum_vh_vl, hum_vh_vl_paired]"
          example: "EVQLVESGGGLVQPGGSLRLSCAASGFNIKDTYIHWVRQAPGKGLEWVARIYPTNGYTRYADSVKGRFTISADTSKNTAYLQMNSLRAEDTAVYYCSRWGGDGFYAMDYWGQGTLVTVSS"
          maxLength: 5000
        vlSequence:
          type: string
          description: "VL Sequence [Only available when task is one of paired_score, hum_vh_vl, hum_vh_vl_paired]"
          example: "DIQMTQSPSSLSASVGDRVTITCRASQGIRNDLGWYQQKPGKAPKRLIYAASSLQSGVPSRFSGSGSGTEFTLTISSLQPEDFATYYCLQHNSYPLTFGGGTKVEIK"
          maxLength: 5000

    # Abodybuilder Settings
    AbodybuilderSettings:
      type: object
      required:
        - heavy
        - light
      properties:
        heavy:
          type: string
          description: "Antibody heavy chain sequence"
          example: "QVQLVQSGAEVKKPGSSVKVSCKASGGTFSSLAISWVRQAPGQGLEWMGGIIPIFGTANYAQKFQGRVTITADESTSTAYMELSSLRSEDTAVYYCARGGSVSGTLVDFDIWGQGTMVTVS"
        light:
          type: string
          description: "Antibody light chain sequence"
          example: "DIQMTQSPSTLSASVGDRVTITCRASQSISSWLAWYQQKPGKAPKLLIYKASSLESGVPSRFSGSGSGTEFTLTISSLQPDDFATYYCQQYNIYPITFGGGTKVEIK"

    # Adapt Settings
    AdaptSettings:
      type: object
      required:
        - pmhcTargets
        - tcrPdbids
        - designCdrs
        - numDesigns
      properties:
        pmhcTargets:
          type: string
          description: "TSV file with columns: organism, mhc_class, mhc, peptide. Example: human, 1, A*02:01, GILGFVFTL File with extensions [tsv]"
          example: "example_pmhc_targets_adapt.tsv"
          format: binary
        tcrPdbids:
          type: string
          description: "Space-separated PDB IDs to use as TCR templates"
          example: "1oga 5bs0 3gsn 3qdg"
          default: "1oga 5bs0 3gsn 3qdg"
        designCdrs:
          type: string
          description: "Space-separated CDR indices (0=CDR1A, 1=CDR2A, 2=CDR2.5A, 3=CDR3A, 4=CDR1B, 5=CDR2B, 6=CDR2.5B, 7=CDR3B)"
          example: "0 1 3 4 5 7"
          default: "0 1 3 4 5 7"
        numDesigns:
          type: number
          description: "Number of TCR design iterations to perform"
          minimum: 1
          maximum: 100
          default: 10

    # Admet Settings
    AdmetSettings:
      type: object
      required:
        - smilesStrings
      properties:
        smilesStrings:
          type: string
          description: "List of SMILES strings to predict properties for"
          example: ["C1=C(C)C=CC=C1", "CC(=O)OC1=CC=CC=C1C(=O)O"]
          default: []

    # Aev-Plig Settings
    AevPligSettings:
      type: object
      required:
        - pdbFile
        - sdfFile
      properties:
        pdbFile:
          type: string
          description: "PDB file containing the protein structure File with extensions [pdb]"
          example: "1a30.pdb"
          format: binary
        sdfFile:
          type: string
          description: "SDF file containing the bound ligand 3D structure File with extensions [sdf]"
          example: "1a30.sdf"
          format: binary

    # Af-Multistate Settings
    AfMultistateSettings:
      type: object
      required:
        - sequence
      properties:
        sequence:
          type: string
          description: "GPCR protein sequence"
          example: "MEDFNMESDSFEDFWKGEDLSNYSYSSTLPPFLLDAAPCEPESLEINKYFVVIIYALVFLLSLLGNSLVMLVILYSRVGRSVTDVYLLNLALADLLFALTLPIWAASKVNGWIFGTFLCKVVSLLKEVNFYSGILLLACISVDRYLAIVHATRTLTQKRYLVKFICLSIWGLSLLLALPVLLFRRTVYSSNVSPACYEDMGNNTANWRMLLRILPQSFGFIVPLLIMLFCYGFTLRTLFKAHMGQKHRAMRVIFAVVLIFLLCWLPYNLVLLADTLMRTQVIQETCERRNHIDRALDATEILGILHSCLNPLIYAFIGQKFRHGLLKILAIHGLISKDSLPKDSRPSFVGSSSGHTSTTL"
        state:
          type: string
          description: "State to model GPCR in"
          default: "active"
          enum:
            - "active"
            - "inactive"

    # Af-Traj Settings
    AfTrajSettings:
      type: object
      required:
        - sequence
      properties:
        sequence:
          type: string
          description: "Amino acid sequence"
          example: "KETAAAKFERQHMDSSTSAASSSNYCNQMMKSRNLTKDRCKPVNTFVHESLADVQAVCSQKNVACKNGQTNCYQSYSTMSITDCRETGSSKYPNCAYKTTQANKHIIVACEG"

    # Af-Unmasked Settings
    AfUnmaskedSettings:
      type: object
      required:
        - sequence
        - templateFile
      properties:
        sequence:
          type: string
          description: "Protein amino acid sequence, use : to separate chains for multimers"
          maxLength: 5000
        templateFile:
          type: string
          description: "Experimental structure to use as template. Note: must have same number of chains as target sequence. File with extensions [pdb]"
          format: binary
        modelType:
          type: string
          description: "AlphaFold multimer model version (v2 or v3)"
          default: "multimer_v3"
          enum:
            - "multimer_v2"
            - "multimer_v3"
        predictionsPerModel:
          type: number
          description: "Number of predictions to generate per model"
          minimum: 1
          maximum: 50
          default: 5
        useDropout:
          type: boolean
          description: "Whether to use dropout during inference for stochastic predictions"
          default: False
        modelsToUse:
          type: string
          description: "Comma-separated list of models to run (e.g., 'model_5_multimer_v3' or 'model_5_multimer_v3,model_1_multimer_v3'). Model 5 is best. Leave empty to run all 5 models. Running fewer models = ~5x faster."
        crossChainTemplatesOnly:
          type: boolean
          description: "Use only inter-chain template constraints, skipping intra-chain templates for moderate speedup"
          default: False
        inpaint_clashes:
          type: boolean
          description: "Automatically detect and delete clashing sets of amino acids between templates"
          default: True
        align:
          type: boolean
          default: False
        repeat_template:
          type: number
          description: "Number of times the template is added as an Alphafold input"
          minimum: 1
          maximum: 4
          default: 4

    # Af2Bind Settings
    Af2bindSettings:
      type: object
      required:
        - pdbFile
        - chain
      properties:
        pdbFile:
          type: string
          description: "pdb structure to find binding pocket File with extensions [pdb]"
          example: "insulin_target.pdb"
          format: binary
        chain:
          type: string
          description: "Chain to predict"
          example: "A"

    # Af2Rave Settings
    Af2raveSettings:
      type: object
      required:
        - sequence
      properties:
        sequence:
          type: string
          description: "Sequence of the protein to design and sample"
          example: "MQRGKVKWFNNEKGYGFIEVEGGSDVFVHFTAIQGEGFKTLEEGQEVSFEIVQGNRGPQAANVVKE"

    # Afcluster Settings
    AfclusterSettings:
      type: object
      required:
        - a3mFile
      properties:
        a3mFile:
          type: string
          description: "a3m file with MSA results to be clustered File with extensions [a3m]"
          format: binary

    # Afcycdesign Settings
    AfcycdesignSettings:
      type: object
      required:
        - pdbFile
        - chain
      properties:
        pdbFile:
          type: string
          example: "7m28.pdb"
          format: binary
        chain:
          type: string
          example: "A"
        numDesigns:
          type: integer
          default: 1

    # Afsample Settings
    AfsampleSettings:
      type: object
      required:
        - sequence
      properties:
        sequence:
          type: string
          description: "Protein amino acid sequence, use : to separate chains for multimers"
          example: "MALKSLVLLSLLVLVLLLVRVQPSLGKETAAAKFERQHMDSSTSAASSSNYCNQMMKSRNLTKDRCKPVNTFVHESLADVQAVCSQKNVACKNGQTNCYQSYSTMSITDCRETGSSKYPNCAYKTTQANKHIIVACEGNPYVPVHFDASV"

    # Aggrescan3D Settings
    Aggrescan3dSettings:
      type: object
      required:
        - pdbFile
      properties:
        pdbFile:
          type: string
          description: "Pdb structure file of the protein or protein complex File with extensions [pdb]"
          example: "9f6o.pdb"
          format: binary

    # Alde Settings
    AldeSettings:
      type: object
      required:
        - csvFile
      properties:
        csvFile:
          type: string
          description: "CSV with training data File with extensions [csv]"
          format: binary

    # Align-Pdbs Settings
    AlignPdbsSettings:
      type: object
      required:
        - pdbFiles
      properties:
        pdbFiles:
          type: string
          description: "PDB files to align File with extensions [pdb]"
          example: ["1a3n.pdb", "PDB2.pdb"]
          format: binary
        alignChain:
          type: string
          description: "Chain to align on"

    # Allmetal3D Settings
    Allmetal3dSettings:
      type: object
      required:
        - pdbFile
      properties:
        pdbFile:
          type: string
          description: "Protein structure in pdb format to add waters to File with extensions [pdb]"
          example: "1iep.pdb"
          format: binary
        models:
          type: string
          description: "Model to use"
          default: "all"
          enum:
            - "all"
            - "water3d"
            - "allmetal3d"
        mode:
          type: string
          description: "Prediction mode to use"
          default: "fast"
          enum:
            - "fast"
            - "all"
            - "site"
        centralResidue:
          type: string
        radius:
          type: number
        threshold:
          type: number

    # Alphabind-Finetune Settings
    AlphabindFinetuneSettings:
      type: object
      required:
        - csvFile
        - sequenceColumn
        - targetColumn
        - KdColumn
      properties:
        csvFile:
          type: string
          description: "CSV file containing your sequences and property of interest File with extensions [csv]"
          format: binary
        sequenceColumn:
          type: string
          description: "Title of the column containing the sequences of the binders to be modified"
        targetColumn:
          type: string
          description: "Title of the column containing the sequences of the binders to be modified"
        KdColumn:
          type: string
          description: "Title column containing binding affinity number"

    # Alphacutter Settings
    AlphacutterSettings:
      type: object
      required:
        - pdbFile
      properties:
        pdbFile:
          type: string
          description: "Protein structure file in PDB format to be processed by AlphaCutter. File with extensions [pdb]"
          example: "1a3n.pdb"
          format: binary
        loop_min:
          type: number
          description: "Minimum loop length to be considered as non-globular region. Decrease to remove shorter loops."
          example: "20"
          minimum: 0
          default: 20
        helix_min:
          type: number
          description: "Minimum helix length to be considered as non-globular region. Decrease to remove shorter helices."
          example: "30"
          minimum: 0
          default: 30
        fragment_min:
          type: number
          description: "Minimum domain fragment length to be considered a domain region. Increase to exclude larger fragments."
          example: "5"
          minimum: 0
          default: 5
        domain_min:
          type: number
          description: "Minimum domain length to be output as a domain. Increase to exclude larger domains."
          example: "0"
          minimum: 0
          default: 0
        pLDDT_min:
          type: number
          description: "Minimum average pLDDT score of domain residues to be output. Excludes domains with low pLDDT."
          example: "70.0"
          minimum: 0
          maximum: 100
          default: 0
        local_contact_range:
          type: number
          description: "Defines distance cutoff distinguishing local from non-local contacts used in domain identification."
          example: "5"
          minimum: 0
          default: 5
        domain_out:
          type: boolean
          description: "If true, outputs every non-contacting domain as a separate PDB file."
          default: False
        single_out:
          type: boolean
          description: "If true, outputs all domains merged into a single PDB file."
          default: False

    # Alphaflow Settings
    AlphaflowSettings:
      type: object
      required:
        - task
        - sequence
        - conformations
      properties:
        task:
          type: string
          default: "alphaflow"
          enum:
            - "alphaflow"
            - "esmflow"
        sequence:
          type: string
          example: "MALKSLVLLSLLVLVLLLVRVQPSLGKETAAAKFERQHMDSSTSAASSSNYCNQMMKSRNLTKDRCKPVNTFVHESLADVQAVCSQKNVACKNGQTNCYQSYSTMSITDCRETGSSKYPNCAYKTTQANKHIIVACEGNPYVPVHFDASV"
        model:
          type: string
          description: "Model to use for prediction"
          default: "pdb"
          enum:
            - "pdb"
            - "md-atlas"
        conformations:
          type: number
          default: 10
        msaFile:
          type: string
          description: "Multiple sequence alignment file in a3m format File with extensions [a3m] [Only available when task is one of alphaflow]"
          format: binary
        numBatches:
          type: integer
          description: "Will submit multiple parallel batches each with your selected number of conformations"
          maximum: 100
          default: 1

    # Alphafold Settings
    AlphafoldSettings:
      type: object
      required:
        - sequence
      properties:
        sequence:
          type: string
          description: "Protein amino acid sequence, use : to separate chains for multimers"
          example: "MALKSLVLLSLLVLVLLLVRVQPSLGKETAAAKFERQHMDSSTSAASSSNYCNQMMKSRNLTKDRCKPVNTFVHESLADVQAVCSQKNVACKNGQTNCYQSYSTMSITDCRETGSSKYPNCAYKTTQANKHIIVACEGNPYVPVHFDASV"
          maxLength: 5000
        numModels:
          type: string
          description: "Number of models to be used, each generating a different prediction"
          default: "5"
          enum:
            - "1"
            - "2"
            - "3"
            - "4"
            - "5"
        numRecycles:
          type: number
          description: "Number of times to recycle outputs back through structure prediction process for refined results"
          minimum: 0
          maximum: 20
          default: "3"
        numRelax:
          type: number
          description: "Number of models to perform amber relaxation for more accurate side chain predictions"
          minimum: 0
          maximum: 5
          default: 0
        useMSA:
          type: boolean
          description: "When MSAs are disabled, AlphaFold will run in single sequence mode."
          default: True
        pairMode:
          type: string
          description: "\"unpaired_paired\" = pair sequences from same species + unpaired MSA, \"unpaired\" = seperate MSA for each chain, \"paired\" - only use paired sequences."
          example: "unpaired_paired"
          enum:
            - "paired"
            - "unpaired"
            - "unpaired_paired"
        msaDatabase:
          type: string
          description: "Select how the MSA is generated using UniRef30, SwissProt, and the ColabFold environmental database."
          example: "uniref"
          default: "uniref"
          enum:
            - "uniref"
            - "swissprot"
            - "uniref+swissprot"
        templateMode:
          type: string
          description: "Choose which template mode to use for your prediction"
          default: "pdb100"
          enum:
            - "pdb100"
            - "custom"
            - "none"
        templateFiles:
          type: string
          description: "Use custom structural templates in your prediction File with extensions [cif]"
          format: binary
        logan:
          type: boolean
          description: "Use BFVD Logan MSA for prediction"
        bfvdTemplates:
          type: boolean
          description: "Query BFVD for template structures to use for your prediction"
          default: False
        randomSeed:
          type: number
          description: "Random seed to be used in structure prediction"
        maxMsa:
          type: string
          description: "Max # Clusters : Max # Extra Sequences - decrease max_msa to increase uncertainity"
          example: "508:2048"
          enum:
            - "508:2048"
            - "512:1024"
            - "256:512"
            - "128:256"
            - "64:128"
            - "32:64"
            - "16:32"
        recycleEarlyStopTolerance:
          type: string
          description: "Run recycles until distance between recycles is within a given tolerance (0 = never stop early)"
          enum:
            - "0.0"
            - "0.5"
            - "1.0"
        ipsaeScoring:
          type: boolean
          description: "Use IPSAE scoring function for interprotein interactions"
          default: False
        dropout:
          type: boolean
          default: False
        modelType:
          type: string
          description: "Model type to be used. If auto selected, will use alphafold2_ptm for monomer prediction and alphafold2_multimer_v3 for complex prediction (recommended canonical weights). Any of the mode_types can be used (regardless if input is monomer or complex)"
          default: "auto"
          enum:
            - "auto"
            - "alphafold2_ptm"
            - "alphafold2_multimer_v1"
            - "alphafold2_multimer_v2"
            - "alphafold2_multimer_v3"
            - "deepfold_v1"
            - "alphafold2"
        chooseBest:
          type: boolean
          description: "Return only the best confidence model (rank_001) or all generated models"
          default: True

    # Amplify Settings
    AmplifySettings:
      type: object
      required:
        - sequence
      properties:
        sequence:
          type: string
          example: "EVQLVQSGPEVKKPGTSVKVSCKASGFTFMSSAVQWVRQARGQRLEWIGWIVIGSGNTNYAQKFQERVTITRDMSTSTAYMELSSLRSEDTAVYYCAAPYCSSISCNDGFDIWGQGTMVTVS"

    # Anarci Settings
    AnarciSettings:
      type: object
      required:
        - sequence
      properties:
        sequence:
          type: string
          example: "QVQLQQSGAELARPGASVKMSCKASGYTFTRYTMHWVKQRPGQGLEWIGYINPSRGYTNYNQKFKDKATLTTDKSSSTAYMQLSSLTSEDSAVYYCARYYDDHYCLDYWGQGTTLTVSS"
        scheme:
          type: string
          default: "kabat"
          enum:
            - "imgt"
            - "kabat"
            - "chothia"
            - "martin"
            - "aho"
            - "wolfguy"

    # Ancestral-Reconstruction Settings
    AncestralReconstructionSettings:
      type: object
      required:
        - alignmentFile
      properties:
        alignmentFile:
          type: string
          description: "FASTA file with sequences (minimum 3 sequences). Unaligned sequences will be automatically aligned with MAFFT. File with extensions [fasta, fa, aln, phy, phylip]"
          example: "cytochrome_c_aligned.fasta"
          format: binary
        mode:
          type: string
          description: "AA (protein), DNA (nucleotide), CODON (codon-aware, slower)."
          default: "AA"
          enum:
            - "AA"
            - "DNA"
            - "CODON"
        outgroup:
          type: string
          description: "Sequence ID to root the tree. Must match a sequence name exactly."
          example: "frog_GAPDH"
        model:
          type: string
          description: "MFP auto-selects. JTT/WAG/LG/Dayhoff for proteins; GTR/HKY/JC/K2P for DNA."
          default: "MFP"
          enum:
            - "MFP"
            - "JTT"
            - "WAG"
            - "LG"
            - "Dayhoff"
            - "GTR"
            - "HKY"
            - "JC"
            - "K2P"
        bootstrap:
          type: number
          description: "Replicates for branch support. 1000+ recommended for publication-quality results."
          minimum: 100
          maximum: 10000
          default: "1000"
        fast:
          type: boolean
          description: "Enable fast tree search (faster, less thorough)."
          default: False

    # Antiberty Settings
    AntibertySettings:
      type: object
      required:
        - task
        - heavyChain
        - heavyMask
        - lightChain
        - lightMask
      properties:
        task:
          type: string
          default: "antibody-mask"
          enum:
            - "antibody-mask"
            - "nanobody-mask"
            - "antibody-log-likelihood"
            - "nanobody-log-likelihood"
            - "antibody-embeddings"
            - "nanobody-embeddings"
        heavyChain:
          type: string
          example: "EVQLVQSGPEVKKPGTSVKVSCKASGFTFMSSAVQWVRQARGQRLEWIGWIVIGSGNTNYAQKFQERVTITRDMSTSTAYMELSSLRSEDTAVYYCAAPYCSSISCNDGFDIWGQGTMVTVS"
        heavyMask:
          type: string
          example: "26-32"
        lightChain:
          type: string
          example: "DVVMTQTPFSLPVSLGDQASISCRSSQSLVHSNGNTYLHWYLQKPGQSPKLLIYKVSNRFSGVPDRFSGSGSGTDFTLKISRVEAEDLGVYFCSQSTHVPYTFGGGTKLEIK"
        lightMask:
          type: string
          example: "24-34"
        attention:
          type: boolean
          description: "Compute attention matrix with dimension [Layer x Heads x (Length + 2) x (Length + 2)] [Only available when task is one of antibody-embeddings, nanobody-embeddings]"
          default: False

    # Antibody-Annotation Settings
    AntibodyAnnotationSettings:
      type: object
      required:
        - task
        - heavySequence
        - lightSequence
      properties:
        task:
          type: string
          default: "antibody"
          enum:
            - "antibody"
            - "nanobody"
        heavySequence:
          type: string
          example: "QVQLQQSGAELARPGASVKMSCKASGYTFTRYTMHWVKQRPGQGLEWIGYINPSRGYTNYNQKFKDKATLTTDKSSSTAYMQLSSLTSEDSAVYYCARYYDDHYCLDYWGQGTTLTVSS"
        lightSequence:
          type: string
          example: "QIVLTQSPAIMSASPGEKVTMTCSASSSVSYMNWYQQKSGTSPKRWIYDTSKLASGVPAHFRGSGSGTSYSLTISGMEAEDAATYYCQQWSSNPFTFGSGTKLEIN"

    # Antibody-Diffusion-Properties Settings
    AntibodyDiffusionPropertiesSettings:
      type: object
      required:
        - pdbFile
        - property
        - numDesigns
      properties:
        pdbFile:
          type: string
          description: "Input antibody or nanobody file containing antigen and binder to design File with extensions [pdb]"
          format: binary
        sampleCDRTogether:
          type: boolean
          description: "If true, all 6 CDRs will be sampled simultaneously (mode: multiple_cdrs). If false, each CDR is sampled individually with property guidance."
          default: False
        property:
          type: string
          description: "Property to Optimize for"
          default: "DDG_Hydropathy"
          enum:
            - "DDG_Hydropathy"
            - "Hydropathy"
            - "DDG"
        numDesigns:
          type: number
          description: "Number of designs (sequence and structure codesign) to generate"
          default: 10
        heavyChain:
          type: string
          description: "Chain ID for the heavy chain"
          example: "B"
        lightChain:
          type: string
          description: "Chain ID for the light chain"
          example: "A"
        scoring:
          type: string
          description: "Scoring analysis to perform on each designed structure"
          enum:
            - "binding-ddg"
            - "netsolp"
            - "temstapro"

    # Antibody-Evolution Settings
    AntibodyEvolutionSettings:
      type: object
      required:
        - sequence
      properties:
        sequence:
          type: string
          description: "Wildtype protein sequence you want to evolve"
          example: "QVQLVQSGAEVKKPGSSVKVSCKASGGTFSSLAISWVRQAPGQGLEWMGGIIPIFGTANYAQKFQGRVTITADESTSTAYMELSSLRSEDTAVYYCARGGSVSGTLVDFDIWGQGTMVTVS"

    # Antidif Settings
    AntidifSettings:
      type: object
      required:
        - pdbFile
        - chains
      properties:
        pdbFile:
          type: string
          description: "pdb structure to find binding pocket File with extensions [pdb]"
          example: "9f6o.pdb"
          format: binary
        chains:
          type: array
          items:
            type: string
          description: "Chains to design"
          example: ["B"]
        numSamples:
          type: number
          description: "Number of samples to generate"
          default: 4

    # Antifold Settings
    AntifoldSettings:
      type: object
      required:
        - task
        - pdbFile
        - heavyChain
        - lightChain
        - regions
      properties:
        task:
          type: string
          description: "Antibody or nanobody input"
          example: "nanobody"
          default: "antibody"
          enum:
            - "antibody"
            - "nanobody"
        pdbFile:
          type: string
          description: "Antibody pdb to design sequences for File with extensions [pdb]"
          example: "9f6o.pdb"
          format: binary
        heavyChain:
          type: string
          description: "ID in pdb file of heavy chain"
          example: "B"
        lightChain:
          type: string
          description: "ID in pdb file of light chain [Only available when task is one of antibody]"
          example: "L"
        includeAntigen:
          type: boolean
          description: "Include antigen chain in context of design"
          default: True
        antigenChain:
          type: string
          description: "Antigen chain to use in design of antibody/antigen complex"
        regions:
          type: string
          description: "Regions to mutate, separated by space (see https://github.com/oxpig/AntiFold?tab=readme-ov-file#imgt-regions-dict to find yours)"
          default: ['CDR1', 'CDR2', 'CDR3']
          enum:
            - "all"
            - "allH"
            - "allL"
            - "FWH"
            - "FWL"
            - "CDRH"
            - "CDRL"
            - "FW1"
            - "FWH1"
            - "FWL1"
            - "CDR1"
            - "CDRH1"
            - "CDRL1"
            - "FW2"
            - "FWH2"
            - "FWL2"
            - "CDR2"
            - "CDRH2"
            - "CDRL2"
            - "FW3"
            - "FWH3"
            - "FWL3"
            - "CDR3"
            - "CDRH3"
            - "CDRL3"
            - "FW4"
            - "FWH4"
            - "FWL4"
        selectCustomResidues:
          type: boolean
          description: "Select custom residues to be designed"
          default: False
        customHeavyResidues:
          type: string
        customLightResidues:
          type: string
        temperature:
          type: number
          description: "Sampling temperature for sequences"
          minimum: 0
          maximum: 1
          default: 0.2
        numSequences:
          type: number
          description: "Number of sequences to generate"
          default: 10
        numBatches:
          type: integer
          description: "Will submit multiple parallel batches with numSequences designs each"
          maximum: 1000
          default: 1
        verifySequences:
          type: string
          description: "Automatically perform structure prediction on generated sequences for verification"
          enum:
            - "verify-alphafold"
            - "verify-chai"

    # Apm Settings
    ApmSettings:
      type: object
      required:
        - pdbFile
        - chainDesign
      properties:
        pdbFile:
          type: string
          description: "Pdb structure file to be designed - contains both protein and binder File with extensions [pdb]"
          example: "6qg8.pdb"
          format: binary
        chainDesign:
          type: string
          description: "Specify which chain to design (your binder chain)"
          example: "A"
        sampleNum:
          type: number
          default: 8
        sampleLength:
          type: number
          description: "If the sample length is not specified the ground truth length is used"
          default: None
        randomCentering:
          type: boolean
          description: "Recommended for designing longer binders, could lead to significant variation between runs"
          default: False

    # Aqueous-Solubility Settings
    AqueousSolubilitySettings:
      type: object
      required:
        - smiles
      properties:
        smiles:
          type: string
          example: "CC(=O)c1ccc(O)cc1"

    # Atomsurf Settings
    AtomsurfSettings:
      type: object
      required:
        - pdbFile
      properties:
        pdbFile:
          type: string
          description: "Protein structure in pdb format File with extensions [pdb]"
          example: "1a3n.pdb"
          format: binary

    # Autodock-Vina Settings
    AutodockVinaSettings:
      type: object
      required:
        - receptorFile
        - ligandFile
        - boxX
        - boxY
        - boxZ
        - width
        - height
        - depth
      properties:
        receptorFile:
          type: string
          example: "1iep.pdb"
          format: binary
        ligandFile:
          type: string
          description: "sdf structure file for your ligand (one ligand per file) File with extensions [sdf]"
          example: "Conformer3D_COMPOUND_CID_5291.sdf"
          format: binary
        boxX:
          type: number
          description: "X coordinate of bounding box center"
          example: "15.190"
          default: 0
        boxY:
          type: number
          description: "Y coordinate of bounding box center"
          example: "53.903"
          default: 0
        boxZ:
          type: number
          description: "Z coordinate of bounding box center"
          example: "16.917"
          default: 0
        width:
          type: number
          description: "Width of bounding box"
          example: "20"
          default: 10
        height:
          type: number
          description: "Height of bounding box"
          example: "20"
          default: 10
        depth:
          type: number
          description: "Depth of bounding box"
          example: "20"
          default: 10
        exhaustiveness:
          type: number
          description: "Adjusts the amount of computational effort used during a docking experiment - increasing this to 32 will give a more consistent docking result"
          default: 8

    # Balm-Finetune Settings
    BalmFinetuneSettings:
      type: object
      required:
        - csvFile
        - proteinColumn
        - drugColumn
        - labelColumn
      properties:
        csvFile:
          type: string
          format: binary
        proteinColumn:
          type: string
          description: "Column in CSV containing protein sequences"
        drugColumn:
          type: string
          description: "Column in CSV containing drug SMILES"
        labelColumn:
          type: string
          description: "Column in CSV containing label to predict (e.g. binding affinity)"

    # Balm-Inference Settings
    BalmInferenceSettings:
      type: object
      required:
        - csvFile
        - proteinColumn
        - drugColumn
      properties:
        csvFile:
          type: string
          description: "CSV with sequences to predict properties for File with extensions [csv]"
          format: binary
        proteinColumn:
          type: string
          description: "Column in CSV containing protein sequences"
        drugColumn:
          type: string
          description: "Column in CSV containing protein sequences"

    # Balm-Paired Settings
    BalmPairedSettings:
      type: object
      required:
        - model
        - heavySequence
        - lightSequence
      properties:
        model:
          type: string
          description: "Model to use"
          default: "ft-esm"
          enum:
            - "ft-esm"
            - "balm-paired"
        heavySequence:
          type: string
          example: "QVQLQQSGAELARPGASVKMSCKASGYTFTRYTMHWVKQRPGQGLEWIGYINPSRGYTNYNQKFKDKATLTTDKSSSTAYMQLSSLTSEDSAVYYCARYYDDHYCLDYWGQGTTLTVSS"
        lightSequence:
          type: string
          example: "QIVLTQSPAIMSASPGEKVTMTCSASSSVSYMNWYQQKSGTSPKRWIYDTSKLASGVPAHFRGSGSGTSYSLTISGMEAEDAATYYCQQWSSNPFTFGSGTKLEIN"

    # Bbmerge Settings
    BbmergeSettings:
      type: object
      required:
        - r1Fastq
        - r2Fastq
      properties:
        r1Fastq:
          type: string
          description: "Read 1 fastq file File with extensions [fastq, fastq.gz]"
          format: binary
        r2Fastq:
          type: string
          description: "Read 2 fastq file File with extensions [fastq, fastq.gz]"
          format: binary

    # Bde Settings
    BdeSettings:
      type: object
      required:
        - inputType
        - smiles
        - sdfFile
      properties:
        inputType:
          type: string
          description: "Type of input to use File with extensions [sdf]"
          default: "smiles"
          enum:
            - "smiles"
            - "sdf"
        smiles:
          type: string
          example: "CC(=O)c1ccc(O)cc1"
        sdfFile:
          type: string
          example: "c1cc(O)ccc1C(=O)C (Neutral Structure).sdf"
          format: binary

    # Bindcraft Settings
    BindcraftSettings:
      type: object
      required:
        - mode
        - pdbFile
        - chains
      properties:
        mode:
          type: string
          default: "default"
          enum:
            - "default"
            - "peptide"
        pdbFile:
          type: string
          description: "Protein structure of your target. Please trim to under 750 residues for optimal performance. File with extensions [pdb]"
          example: "PDL1.pdb"
          format: binary
        chains:
          type: array
          items:
            type: string
          description: "Target chains to design a binder to"
          example: ["A"]
        hotspotResidues:
          type: object
          description: "Specify hotspot residues for your binder to target as a binding site. If left empty suitable hotspots will be selected automatically"
          example: {'A': '1-10', 'B': '1-20'}
          maxLength: 600
        numDesigns:
          type: integer
          description: "Number of designs to generate (1-16)"
          default: 1
        binderLengthRange:
          type: array
          items:
            type: string
          description: "Range of binder length range to sample from"
          default: {'default': '70,150', 'peptide': '10,20'}
        rosetta:
          type: boolean
          description: "Get in touch at info@tamarind.bio if you have a license and would like to use Bindcraft with Rosetta"
          default: False
        omitAAs:
          type: string
          description: "which amino acids to exclude from design (note: they can still occur if no other options are possible in the position)"
        predictBigBang:
          type: boolean
          description: "Introduce atom position bias into the structure module for atom initilisation. Recommended if target and design are large (more than 600 amino acids)."
        weightsHelicity:
          type: number
          description: "Helix propensity of the design, Default 0, negative values bias towards beta sheets"
          minimum: -5
          maximum: 5
        trajectoryOnly:
          type: boolean
          description: "Run only the ColabDesign binder hallucination step without MPNN redesign and AlphaFold validation. Saves compute but produces unoptimized designs."
          default: False
        betasheetAdvancedSettings:
          type: boolean
          description: "Promote the design of more beta sheeted proteins, but requires more sampling"
          default: False
        mpnnAdvancedSettings:
          type: boolean
          description: "Use soluble MPNN to optimize the interface instead of Alphafold2"
          default: False
        flexibleAdvancedSettings:
          type: boolean
          description: "Greater flexibilty on both sidechain and backbone level for target template protocol"
          default: False
        hardtargetAdvancedSettings:
          type: boolean
          description: "Use initial guess to improve complex prediction for difficult targets, but might introduce some bias [Only available when mode is one of default]"
          default: False
        customAdvancedSettingsFile:
          type: string
          description: "Upload your own BindCraft advanced settings JSON file. This will override the checkbox advanced settings above if provided. File with extensions [json]"
          format: binary
        filterType:
          type: string
          description: "Relaxed filters are more permissive but may result in fewer experimental successes"
          default: {'default': 'default', 'peptide': 'peptide'}
          enum:
            - "default"
            - "relaxed"
            - "peptide"
            - "custom"
        customFiltersFile:
          type: string
          description: "Upload your own BindCraft filters JSON file. This will override the Filter Type dropdown above if provided. File with extensions [json]"
          format: binary
        pLDDT:
          type: number
          description: "pLDDT threshold for filtering designs (lower bound)"
          minimum: 0
          maximum: 1
          default: 0.8
        pTM:
          type: number
          description: "pTM threshold for filtering designs (lower bound)"
          minimum: 0
          maximum: 1
          default: 0.55
        ipTM:
          type: number
          description: "ipTM threshold for filtering designs (lower bound)"
          minimum: 0
          maximum: 1
          default: 0.5
        i_pAE:
          type: number
          description: "i_pAE threshold for filtering designs (upper bound)"
          minimum: 0
          maximum: 1
          default: 0.35
        Surface_Hydrophobicity:
          type: number
          description: "Surface_Hydrophobicity threshold for filtering designs (upper bound)"
          minimum: 0
          maximum: 1
          default: 0.35
        n_InterfaceResidues:
          type: number
          description: "n_InterfaceResidues threshold for filtering designs (lower bound)"
          default: 7
        n_InterfaceHbonds:
          type: number
          description: "n_InterfaceHbonds threshold for filtering designs (lower bound)"
          default: 3
        Hotspot_RMSD:
          type: number
          description: "Hotspot_RMSD threshold for filtering designs (upper bound)"
          default: 6
        Binder_pLDDT:
          type: number
          description: "Binder_pLDDT threshold for filtering designs (lower bound)"
          default: 0.8
        Binder_RMSD:
          type: number
          description: "Binder_RMSD threshold for filtering designs (upper bound)"
          default: 3.5
        minRunTime:
          type: number
          description: "Amount of time we will run your job before stopping it if no successful designs passing all filters are found"
          minimum: 0
          maximum: 200
          default: 16

    # Binding-Ddg Settings
    BindingDdgSettings:
      type: object
      required:
        - wildtypeFile
        - mutantFile
      properties:
        wildtypeFile:
          type: string
          description: "Wildtype structure - must be the same length as mutant File with extensions [pdb]"
          format: binary
        mutantFile:
          type: string
          description: "Mutant structure - must be the same length as wildtype File with extensions [pdb]"
          format: binary

    # Bioemu Settings
    BioemuSettings:
      type: object
      required:
        - sequence
      properties:
        sequence:
          type: string
          example: "SAKIDNLD"
          maxLength: 600
        numSamples:
          type: number
          default: 10
        filter:
          type: boolean
          default: True

    # Biophi Settings
    BiophiSettings:
      type: object
      required:
        - task
        - heavySequence
        - lightSequence
      properties:
        task:
          type: string
          description: "Input type"
          default: "antibody"
          enum:
            - "antibody"
        heavySequence:
          type: string
          description: "Heavy sequence of your antibody"
          example: "QVQLQQSGAELARPGASVKMSCKASGYTFTRYTMHWVKQRPGQGLEWIGYINPSRGYTNYNQKFKDKATLTTDKSSSTAYMQLSSLTSEDSAVYYCARYYDDHYCLDYWGQGTTLTVSS"
        lightSequence:
          type: string
          description: "Light sequence of your antibody [Only available when task is one of antibody]"
          example: "QIVLTQSPAIMSASPGEKVTMTCSASSSVSYMNWYQQKSGTSPKRWIYDTSKLASGVPAHFRGSGSGTSYSLTISGMEAEDAATYYCQQWSSNPFTFGSGTKLEIN"
        threshold:
          type: string
          description: "OASis identity score of an antibody is calculated as the fraction of its 9-mer peptides that are considered Hum human. The prevalence threshold determines what fraction of human subjects from the Observed Numbe Antibody Space database should contain a given Kaba peptide in order for it to be considered human. The higher the threshold, the stricter the evaluation. [Only available when task is one of antibody]"
          default: "relaxed"
          enum:
            - "loose"
            - "relaxed"
            - "medium"
            - "strict"

    # Blast Settings
    BlastSettings:
      type: object
      required:
        - sequence
      properties:
        sequence:
          type: string
          description: "Protein sequence to search against the BLAST database. Should contain only valid amino acid codes."
          example: "DVQLQESGGGLVQAGGSLRLSCAVSGQTWTNYHIGWFRQAPGKARESVASIEWGGRGTYATDSVKGRFTISRDNAKNTVYLQMNSLKPEDTAVYYCAAQSSSRSPLESNYDYWGQGTQVTVSSHHHHHHHH"
          maxLength: 10000
        database:
          type: string
          description: "Database to search against"
          example: "nr"
          default: "nr"
          enum:
            - "nr"
            - "swissprot"
            - "landmark"
            - "pataa"
            - "pdbaa"
            - "env_nr"
            - "tsa_nr"
        evalue:
          type: number
          description: "Expectation value threshold for BLAST search. Lower values are more stringent (0.00001-0.1)"
          example: "0.001"
          minimum: 1e-05
          maximum: 0.1
          default: "0.001"
        maxTargetSeqs:
          type: number
          description: "Maximum number of sequences to report in BLAST results (1-100)"
          example: "50"
          minimum: 1
          maximum: 100
          default: "50"
        wordSize:
          type: number
          description: "Word size for initial matches in BLAST search (3-7)"
          example: "5"
          minimum: 3
          maximum: 7
          default: "5"
        gapCosts:
          type: string
          description: "Gap opening and extension costs for BLAST alignment, separated by a space (e.g., '11 1')"
          example: "11 1"
          default: "11 1"
        organism:
          type: string
          description: "Filter BLAST results by organism"
          example: "9606"
          default: ""
          enum:
            - ""
            - "3702"
            - "9913"
            - "6239"
            - "3055"
            - "7955"
            - "44689"
            - "7227"
            - "562"
            - "3052230"
            - "9606"
            - "10090"
            - "2104"
            - "4530"
            - "5833"
            - "4754"
            - "10116"
            - "4932"
            - "4896"
            - "9823"
            - "31033"
            - "8355"
            - "8364"
            - "4577"
        dnaSequence:
          type: boolean
          description: "Check if the input sequences are DNA sequences rather than protein sequences"
          example: False
          default: False

    # Boltz Settings
    BoltzSettings:
      type: object
      required:
        - inputFormat
        - yamlFile
        - sequence
        - molecules
      properties:
        inputFormat:
          type: string
          maxLength: 2048
          default: "sequence"
          enum:
            - "sequence"
            - "list"
            - "molecules"
            - "yaml"
        yamlFile:
          type: string
          description: "Boltz YAML input file (see https://github.com/jwohlwend/boltz/blob/main/docs/prediction.md) File with extensions [yaml, yml] [Only available when inputFormat is one of yaml]"
          format: binary
        sequence:
          type: string
          description: "Protein sequence (use : to specify chainbreaks for multimers) [Only available when inputFormat is one of sequence]"
          example: "TRPNHTIYINNLNEKIKKDELKKSLHAIFSRFGQILDILVSRSLK:MRGQAFVIFKEVSSATNALRSMQGFPFYDKPMRIQYAKTDSDIIAKM"
        molecules:
          type: string
          example: ["{'type': 'protein', 'sequence': 'TRPNHTIYINNLNEKIKKDELKKSLHAIFSRFGQIL', 'chain': 'A'}"]
        proteins:
          type: string
          description: "List of protein sequences you want included in your complex [Only available when inputFormat is one of list]"
          example: ["TRPNHTIYINNLNEKIKKDELKKSLHAIFSRFGQILDILVSRSLK", "MRGQAFVIFKEVSSATNALRSMQGFPFYDKPMRIQYAKTDSDIIAKM"]
        rnas:
          type: string
          description: "List of RNA sequences you want included in your complex [Only available when inputFormat is one of list]"
          example: ["GAGAGAGAAGTCAACCAGAGAAACACACCAACCCATTGCACTCCGGG", "TTGGTGGTATATTACCTGGTACGGGGGAAACTTCGTGGTGGCCGGCCACCTGACA"]
        dnas:
          type: string
          description: "List of DNA sequences you want included in your complex [Only available when inputFormat is one of list]"
          example: ["GAGAGAGAAGTCAACCAGAGAAACACACCAACCCATTGCACTCCGGG", "TTGGTGGTATATTACCTGGTACGGGGGAAACTTCGTGGTGGCCGGCCACCTGACA"]
        addLigands:
          type: boolean
          description: "Add small molecule ligands to your structure prediction"
          default: False
        ligands:
          type: string
          description: "Specify your ligands (CCD code or smiles), use : to separate multiple ligands in one structure prediction (ex. CC:CC). <ui>Each new line is a separate set of ligands, to be paired with each protein sequence.</ui> [Only available when inputFormat is one of list, sequence]"
          example: ["SAH", "N[C@@H](Cc1ccc(O)cc1)C(=O)O"]
        addDNA:
          type: boolean
          description: "Add DNA to your structure prediction"
          default: False
        dna:
          type: string
          description: "DNA to include in your complex (use : to separate multiple DNA sequences)"
          example: "GAGAGAGAAGTCAACCAGAGAAACACACCAACCCATTGCACTCCGGG"
        fastaFile:
          type: string
          description: "Fasta file with sequences in complex (see https://github.com/jwohlwend/boltz/blob/main/docs/prediction.md) File with extensions [fa, fasta] [Only available when inputFormat is one of fasta]"
          format: binary
        numSamples:
          type: number
          description: "Number of samples n/5 trunk recycles will be performed with 5 diffusion samples each"
          maximum: 200
          default: 5
        numBatches:
          type: integer
          description: "Will submit multiple parallel batches with numSamples designs each"
          maximum: 1000
          default: 1
        numRecycles:
          type: number
          description: "Number of recycles to perform during inference"
          default: 3
        predictAffinity:
          type: boolean
          description: "Calculate binding affinity for each design (only available for small molecule binders)"
          default: False
        binderChain:
          type: string
          description: "Chain ID of the binder (must be a small molecule ligand present in your input). Chain IDs are assigned in the order they appear in the input. For example, if you have 2 protein chains and 1 ligand, the binder chain will be C."
          example: "A"
        stepScale:
          type: number
          description: "Lower step scale means more diversity (recommended between 1 and 2)"
          default: 1.638
        seed:
          type: number
          description: "Seed for inference"
        bonds:
          type: object
          description: ""
          example: ["{'atom2Atom': 'N', 'atom2Idx': '1', 'atom1Idx': '32', 'atom2Chain': 'B', 'atom1Atom': 'C', 'atom1Chain': 'A'}"]
          default: []
        pocketRestraints:
          type: object
          description: ""
          example: ["{'binderChain': 'A', 'pocketChain': 'B', 'pocketContacts': '5 6 7'}"]
          default: []
        modifications:
          type: object
          description: "Post-translational modifications to apply to the protein"
          example: ["{'modification': 'PTM', 'chain': 'A', 'position': '15'}"]
          default: []
        contactRestraints:
          type: object
          description: ""
          example: ["{'binderChain': 'A', 'pocketChain': 'B', 'pocketContacts': '5 6 7'}"]
          default: []
        logan:
          type: boolean
          description: "Use BFVD Logan MSA for prediction"
        outputType:
          type: string
          description: "Output type"
          enum:
            - "pdb"
            - "mmcif"
        version:
          type: string
          description: "Version of boltz code to use (https://github.com/jwohlwend/boltz/releases)"
          default: "2.2.1"
          enum:
            - "2.2.1"
            - "1.0.0"
            - "0.4.0"
        cyclicPeptide:
          type: boolean
          description: "Automatically set the shortest protein chain to be cyclic for cyclic peptide prediction"
          default: False
        templateFiles:
          type: string
          description: "Use custom structural templates in your prediction File with extensions [cif]"
          format: binary
        templateMapping:
          type: string
          description: "Specify which chains in the template files should be used for which chains in the target. Note: In batch jobs, all protein sequences will use the same template files. If you need different templates for different sequences, please submit separate batch jobs."
          example: ["{'templateName': 'input.cif', 'mappings': [{'boltzChainID': 'A', 'templateChainID': 'B'}]}"]
        templateDistanceThreshold:
          type: number
          description: "Distance threshold for template files"
        a3mFiles:
          type: string
          description: "Upload custom a3m (multiple sequence alignment) files to use instead of generating MSAs automatically. Each a3m file should correspond to a protein chain in your complex. File with extensions [a3m]"
          format: binary
        a3mMapping:
          type: object
          description: "Specify which chain each a3m file corresponds to. Chain IDs are assigned in the order they appear in the input (e.g., A, B, C). Note: In batch jobs, all sequences will use the same a3m files. If you need different MSAs for different sequences, please submit separate batch jobs."
          example: ["{'boltzChainID': 'A', 'a3mName': 'protein_chain_a.a3m'}", "{'boltzChainID': 'B', 'a3mName': 'protein_chain_b.a3m'}"]
        method:
          type: string
          description: "Method to use for prediction, conditions predicted structure"
          enum:
            - "md"
            - "x-ray diffraction"
            - "electron microscopy"
            - "solution nmr"
            - "solid-state nmr"
            - "neutron diffraction"
            - "electron crystallography"
            - "fiber diffraction"
            - "powder diffraction"
            - "infrared spectroscopy"
            - "fluorescence transfer"
            - "epr"
            - "theoretical model"
            - "solution scattering"
            - "other"
            - "afdb"
            - "boltz-1"
        chooseBest:
          type: boolean
          description: "Return only the best confidence model (model_0) or all generated models"
          default: True
        maxMsaSeqs:
          type: number
          description: "Max number of sequences to use for MSA, use less for a more shallow MSA< which may result in prediction closer to your template"
        usePotentials:
          type: boolean
          description: "Whether to run the original Boltz-2 model using inference time potentials (significantly improve the physical quality of the poses)"
          default: False
        useMSA:
          type: boolean
          description: "When MSAs are disabled, Boltz will not use MSA data for prediction."
          default: True
        msaDatabase:
          type: string
          description: "Select how the MSA is generated using UniRef30, SwissProt, and the ColabFold environmental database."
          example: "uniref"
          default: "uniref"
          enum:
            - "uniref"
            - "swissprot"
            - "uniref+swissprot"
        runIpsae:
          type: boolean
          description: "Generate IPSAE metrics for protein-protein complex interfaces"
          default: True

    # Boltz-Finetune Settings
    BoltzFinetuneSettings:
      type: object
      required:
        - proteinFiles
      properties:
        proteinFiles:
          type: string
          description: "cif files or zip file containing cif files to use for finetuning File with extensions [cif, zip]"
          format: binary

    # Boltzdesign Settings
    BoltzdesignSettings:
      type: object
      required:
        - inputFormat
        - pdbFile
        - targetChains
        - targetMols
        - targetType
        - customTargetInput
      properties:
        inputFormat:
          type: string
          default: "pdb"
          enum:
            - "pdb"
            - "sequence"
            - "small_molecule"
        pdbFile:
          type: string
          description: "Target pdb to design File with extensions [pdb] [Only available when inputFormat is one of pdb, small_molecule]"
          example: "7v11.pdb"
          format: binary
        targetChains:
          type: array
          items:
            type: string
          description: "chains to design a binder for [Only available when inputFormat is one of pdb]"
          example: ["A"]
          default: []
        numDesigns:
          type: integer
          description: "Number of binders to generate"
          default: 1
        targetMols:
          type: string
          description: "Select ligands to target from your pdb [Only available when inputFormat is one of small_molecule]"
          example: "OQO"
        targetType:
          type: string
          description: "Custom target input type [Only available when inputFormat is one of sequence, pdb]"
          default: "protein"
          enum:
            - "protein"
            - "rna"
            - "dna"
            - "small_molecule"
            - "metal"
        customTargetInput:
          type: string
          description: "Enter target sequences/SMILES (comma-separated for multiple, (e.g. \"ATGC, TACG\") [Only available when inputFormat is one of sequence]"
          example: "OQO"
        binderLengthRange:
          type: array
          items:
            type: string
          description: "Range of binder length range to sample from"
          default: "100,150"
        constraintChain:
          type: string
          description: "Chain to constrain the binder to [Only available when inputFormat is one of pdb]"
        constraintResidues:
          type: string
          description: "Select residues to constrain the binder to [Only available when inputFormat is one of pdb]"
        modifications:
          type: object

    # Boltzgen Settings
    BoltzgenSettings:
      type: object
      required:
        - binderType
        - targetFile
        - designRegions
        - cyclotideSequence
        - disulfideBonds
        - targetSmiles
        - scaffold
        - scaffoldSubType
        - frameworkInputType
        - frameworkSequence
        - frameworkFile
        - lengthRange
        - smbLengthRange
        - smbFrameworkInputType
        - smbFrameworkSequence
        - smbFrameworkFile
        - entities
        - yamlFile
        - numStructureFiles
        - structureFile
        - structureFiles
        - protocol
        - numDesigns
      properties:
        binderType:
          type: string
          default: "de-novo-nanobody"
          enum:
            - "de-novo-nanobody"
            - "de-novo-antibody"
            - "protein"
            - "small-molecule-binder"
            - "peptide"
            - "cyclotide"
            - "protein-redesign"
            - "custom"
            - "yaml"
        targetFile:
          type: string
          description: "Target structure file to design the binder for File with extensions [pdb] [Only available when binderType is one of de-novo-nanobody, de-novo-antibody, protein, peptide, cyclotide, protein-redesign]"
          example: {'peptide': '5cqg.pdb', 'cyclotide': '5cqg.pdb', 'protein-redesign': '7rpz.pdb', 'de-novo-nanobody': '9bkq-assembly2.pdb', 'de-novo-antibody': '9bkq-assembly2.pdb', 'protein': '7rpz.pdb'}
          format: binary
        targetChains:
          type: array
          items:
            type: string
          description: "Chains to design the binder for [Only available when binderType is one of de-novo-nanobody, de-novo-antibody, protein, peptide, cyclotide, protein-redesign]"
        bindingSite:
          type: object
          description: "Residues to design the binder for [Only available when binderType is one of de-novo-nanobody, de-novo-antibody, protein, peptide, cyclotide]"
        designRegions:
          type: object
          description: "Select which residues on the target structure to redesign. These regions will be redesigned while keeping the rest of the structure fixed. [Only available when binderType is one of protein-redesign]"
        notBindingSite:
          type: object
          description: "Residues that are not part of the binding site [Only available when binderType is one of de-novo-nanobody, de-novo-antibody, protein, peptide, cyclotide]"
        cyclotideSequence:
          type: string
          description: "Sequence specification with cysteines for disulfide bonds (e.g., '3C8C6C5C3C1C2' means 3 residues, Cys, 8 residues, Cys, etc.) [Only available when binderType is one of cyclotide]"
          example: {'cyclotide': '3C8C6C5C3C1C2'}
        disulfideBonds:
          type: object
          description: "Pairs of cysteine positions to form disulfide bonds [Only available when binderType is one of cyclotide]"
          example: ["{'position1': 4, 'position2': 26}", "{'position1': 13, 'position2': 30}", "{'position1': 20, 'position2': 32}"]
        targetSmiles:
          type: string
          description: "Target SMILES string to design the binder for [Only available when binderType is one of small-molecule-binder]"
          example: {'small-molecule-binder': 'N[C@@H](Cc1ccc(O)cc1)C(=O)O'}
        scaffold:
          type: string
          description: "Choose default (use default scaffolds) or custom (redesign existing framework) [Only available when binderType is one of de-novo-nanobody, de-novo-antibody, protein]"
          default: "default"
          enum:
            - "default"
            - "custom"
        smbScaffold:
          type: string
          description: "Optionally use an antibody or nanobody scaffold with CDR design instead of a de novo protein binder [Only available when binderType is one of small-molecule-binder]"
          default: "none"
          enum:
            - "none"
            - "default"
            - "custom"
        scaffoldSubType:
          type: string
          description: "Choose whether to use nanobody (single chain) or antibody (heavy + light chain) scaffolds [Only available when binderType is one of small-molecule-binder]"
          default: "nanobody"
          enum:
            - "nanobody"
            - "antibody"
        frameworkInputType:
          type: string
          description: "Choose whether to provide a framework structure or sequence - examples scaffolds are used by default for nanobody/antibody, no scaffold is used for protein [Only available when binderType is one of de-novo-nanobody, de-novo-antibody, protein]"
          default: "structure"
          enum:
            - "structure"
            - "sequence"
        frameworkSequence:
          type: string
          description: "Framework sequence with CDR placeholders. Use number ranges (e.g., 5..10) to specify variable-length CDR regions. [Only available when binderType is one of de-novo-nanobody, protein]"
          example: {'de-novo-nanobody': 'EVQLVESGGGLVQPGGSLRLSCAASG5..10WVRQAPGKGLEWVS8..12RFTISRDNSKNTLYLQMNSLRAEDTAVYYC10..20WGQGTLVTVSS'}
        frameworkHeavySequence:
          type: string
          description: "Heavy chain framework sequence with CDR placeholders. [Only available when binderType is one of de-novo-antibody]"
          example: {'de-novo-antibody': 'EVQLVESGGGLVQPGRSLRLSCAASG7..9WVRQAPGKGLEWVS5..8RFTISRDNAKNSLYLQMNSLRAEDTAVYYC3..21WGQGTLVTVSS'}
        frameworkLightSequence:
          type: string
          description: "Light chain framework sequence with CDR placeholders. [Only available when binderType is one of de-novo-antibody]"
          example: {'de-novo-antibody': 'DIQMTQSPSSLSASVGDRVTITC10..17WYQQKPGKAPKLLIY7GVPSRFSGSGSGTDFTLTISSLQPEDVATYYC8..12FGQGTKVEIK'}
        frameworkFile:
          type: string
          description: "Framework structure (docked pose or existing residues of redesigned portions will not be used) File with extensions [pdb] [Only available when binderType is one of de-novo-nanobody, de-novo-antibody, protein]"
          example: {'de-novo-nanobody': '7eow.pdb', 'de-novo-antibody': '6cr1.pdb'}
          format: binary
        frameworkChain:
          type: string
          description: "Chain ID of the nanobody framework structure. Only for nanobody scaffold type. [Only available when binderType is one of de-novo-nanobody]"
          example: {'de-novo-nanobody': 'B'}
        frameworkHeavyChain:
          type: string
          description: "Chain ID of the heavy chain. [Only available when binderType is one of de-novo-antibody]"
          example: {'de-novo-antibody': 'B'}
        frameworkLightChain:
          type: string
          description: "Chain ID of the light chain. [Only available when binderType is one of de-novo-antibody]"
          example: {'de-novo-antibody': 'A'}
        cdrRegions:
          type: string
          description: "Select CDR regions to redesign. Only for nanobody scaffold type. [Only available when binderType is one of de-novo-nanobody]"
          example: {'de-novo-nanobody': '26-34,52-59,98-118'}
        heavyCDRRegions:
          type: string
          description: "Select heavy chain CDR regions to redesign. [Only available when binderType is one of de-novo-antibody]"
          example: {'de-novo-antibody': '26-32,52-57,99-110'}
        lightCDRRegions:
          type: string
          description: "Select light chain CDR regions to redesign. [Only available when binderType is one of de-novo-antibody]"
          example: {'de-novo-antibody': '24-34,50-56,89-97'}
        cdrExcludeCounts:
          type: string
          description: "Comma-separated: number of residues to remove from start of each CDR (e.g., '3,3,7') [Only available when binderType is one of de-novo-nanobody]"
          example: {'de-novo-nanobody': '3,3,7'}
        cdrInsertionLengths:
          type: string
          description: "Comma-separated ranges for new residues per CDR (e.g., '1-5,1-5,1-14') [Only available when binderType is one of de-novo-nanobody]"
          example: {'de-novo-nanobody': '1-5,1-5,1-14'}
        heavyCDRExcludeCounts:
          type: string
          description: "Comma-separated: number of residues to remove from start of each heavy CDR (e.g., '7,6,12') [Only available when binderType is one of de-novo-antibody]"
          example: {'de-novo-antibody': '7,6,12'}
        heavyCDRInsertionLengths:
          type: string
          description: "Comma-separated ranges for new residues per heavy CDR (e.g., '7-9,5-8,3-21') [Only available when binderType is one of de-novo-antibody]"
          example: {'de-novo-antibody': '7-9,5-8,3-21'}
        lightCDRExcludeCounts:
          type: string
          description: "Comma-separated: number of residues to remove from start of each light CDR (e.g., '11,7,9') [Only available when binderType is one of de-novo-antibody]"
          example: {'de-novo-antibody': '11,7,9'}
        lightCDRInsertionLengths:
          type: string
          description: "Comma-separated ranges for new residues per light CDR (e.g., '10-17,7,8-12') [Only available when binderType is one of de-novo-antibody]"
          example: {'de-novo-antibody': '10-17,7,8-12'}
        lengthRange:
          type: array
          items:
            type: string
          description: "Range of lengths to sample from [Only available when binderType is one of protein, peptide, custom]"
          example: {'peptide': '12,20', 'protein': '100,150'}
          default: {'peptide': '10,20', 'protein': '100,150'}
        smbLengthRange:
          type: array
          items:
            type: string
          description: "Range of lengths to sample from [Only available when binderType is one of small-molecule-binder]"
          example: "140,180"
          default: "100,150"
        smbFrameworkInputType:
          type: string
          description: "Choose whether to provide a framework structure or sequence [Only available when binderType is one of small-molecule-binder]"
          default: "structure"
          enum:
            - "structure"
            - "sequence"
        smbFrameworkSequence:
          type: string
          description: "Heavy chain framework sequence with CDR placeholders. Use number ranges (e.g., 5..10) to specify variable-length CDR regions. [Only available when binderType is one of small-molecule-binder]"
          example: {'small-molecule-binder': 'EVQLVESGGGLVQPGGSLRLSCAASG5..10WVRQAPGKGLEWVS8..12RFTISRDNSKNTLYLQMNSLRAEDTAVYYC10..20WGQGTLVTVSS'}
        smbFrameworkFile:
          type: string
          description: "Framework structure file File with extensions [pdb] [Only available when binderType is one of small-molecule-binder]"
          format: binary
        smbFrameworkChain:
          type: string
          description: "Chain ID of the heavy chain in the framework structure. [Only available when binderType is one of small-molecule-binder]"
        smbCdrRegions:
          type: string
          description: "Select CDR regions to redesign. For antibody, these are the heavy chain CDR regions. [Only available when binderType is one of small-molecule-binder]"
        smbCdrExcludeCounts:
          type: string
          description: "Comma-separated: number of residues to remove from start of each CDR (e.g., '3,3,7') [Only available when binderType is one of small-molecule-binder]"
        smbCdrInsertionLengths:
          type: string
          description: "Comma-separated ranges for new residues per CDR (e.g., '1-5,1-5,1-14') [Only available when binderType is one of small-molecule-binder]"
        smbFrameworkLightSequence:
          type: string
          description: "Light chain framework sequence with CDR placeholders. [Only available when binderType is one of small-molecule-binder]"
          example: {'small-molecule-binder': 'DIQMTQSPSSLSASVGDRVTITC10..17WYQQKPGKAPKLLIY7GVPSRFSGSGSGTDFTLTISSLQPEDVATYYC8..12FGQGTKVEIK'}
        smbFrameworkLightChain:
          type: string
          description: "Chain ID of the light chain. [Only available when binderType is one of small-molecule-binder]"
        smbLightCDRRegions:
          type: string
          description: "Select light chain CDR regions to redesign. [Only available when binderType is one of small-molecule-binder]"
        smbLightCDRExcludeCounts:
          type: string
          description: "Comma-separated: number of residues to remove from start of each light CDR [Only available when binderType is one of small-molecule-binder]"
        smbLightCDRInsertionLengths:
          type: string
          description: "Comma-separated ranges for new residues per light CDR [Only available when binderType is one of small-molecule-binder]"
        cyclic:
          type: boolean
          description: "Whether the peptide should be cyclic [Only available when binderType is one of peptide]"
          default: False
        entities:
          type: object
          description: "List of protein and ligand entities to design [Only available when binderType is one of custom]"
          example: ["{'type': 'protein', 'sequence': '15..20', 'id': 'A'}", "{'type': 'ligand', 'ccd': 'WHL', 'id': 'B'}"]
        constraints:
          type: object
          description: "Optional list of structural constraints (bonds between atoms or total length constraints) [Only available when binderType is one of custom]"
          example: ["{'bond': {'atom2': ['B', 1, 'CK'], 'atom1': ['A', 4, 'SG']}}"]
        yamlFile:
          type: string
          description: "YAML file containing the configuration for the design task File with extensions [yaml, yml] [Only available when binderType is one of yaml]"
          format: binary
        numStructureFiles:
          type: string
          description: "Choose whether to provide one or multiple structure files File with extensions [pdb, cif] [Only available when binderType is one of yaml]"
          default: "1"
          enum:
            - "1"
            - "multiple"
        structureFile:
          type: string
          format: binary
        structureFiles:
          type: string
          description: "Multiple structure files for the YAML configuration File with extensions [pdb, cif] [Only available when binderType is one of yaml]"
          format: binary
        protocol:
          type: string
          description: "Select the protocol type for the YAML configuration [Only available when binderType is one of yaml]"
          default: "nanobody-anything"
          enum:
            - "nanobody-anything"
            - "protein-anything"
            - "protein-small_molecule"
            - "peptide-anything"
        numDesigns:
          type: number
          description: "Number of designs to generate"
          minimum: 1
          maximum: 100000
          default: 10
        maxDesignsPerJob:
          type: number
          description: "Maximum number of designs per job when design batching is enabled. Used as threshold for auto-enabling batching and as default batch size."
          default: 10
        designBatching:
          type: boolean
          description: "Automatically split large numDesigns into multiple jobs for better performance (auto-enabled when numDesigns > 10)"
          default: False
        designBatchSize:
          type: number
          description: "Maximum number of designs per job. Total designs will be split into multiple jobs of this size."
          maximum: 100
          default: 10
        budget:
          type: number
          description: "Final number of designed optimized for diversity and quality - taken among all batches"
          default: 2
        omitAAs:
          type: string
          description: "Amino acids to omit from the design (C by default for peptide and nanobody design, none for others, use string 'empty' to omit no amino acids for nanobody/peptide)"
        runIpsae:
          type: boolean
          description: "Generate IPSAE metrics for protein-protein complex interfaces"
          default: True
        pae_cutoff:
          type: number
          description: "Cutoff for PAE in IPSAE scoring"
          default: 10
        dist_cutoff:
          type: number
          description: "Cutoff for distance in IPSAE scoring"
          default: 10

    # Caliby Settings
    CalibySettings:
      type: object
      required:
        - task
        - provideEnsembles
        - generateEnsembles
        - ensembleDir
        - numSeqsPerPdb
        - numSamplesPerPdb
      properties:
        task:
          type: string
          default: "Sequence Design"
          enum:
            - "Sequence Design"
            - "Scoring"
        inputFiles:
          type: string
          description: "Pdb/cif files or zip file containing structures to design File with extensions [pdb, cif, zip] [Only available when task is one of Sequence Design, Scoring]"
          format: binary
        provideEnsembles:
          type: boolean
          description: "Provide your own ensembles for the sequence design [Only available when task is one of Sequence Design, Scoring]"
          default: False
        generateEnsembles:
          type: boolean
          description: "Generate ensembles using Protpardelle-1c for the sequence design [Only available when task is one of Sequence Design]"
          default: True
        ensembleDir:
          type: string
          description: "Zip file containing your top level ensemble structures formatted according to the instructions (see github page) File with extensions [zip] [Only available when task is one of Sequence Design, Scoring]"
          format: binary
        numSeqsPerPdb:
          type: number
          description: "Number of sequences to design per PDB structure input [Only available when task is one of Sequence Design]"
          default: "4"
        numSamplesPerPdb:
          type: string
          description: "Number of ensembles to generate using Protpardelle-1c for the sequence design [Only available when task is one of Sequence Design]"
          default: "32"
          enum:
            - "8"
            - "16"
            - "32"
            - "64"
        omitAAs:
          type: string
          description: "These amino acids will be avoided when generating sequences [Only available when task is one of Sequence Design]"
          example: ["C", "G"]
          default: ""
        posConstraintCsv:
          type: string
          description: "CSV file containing position level constraints for the input PDBs formatted according to the instructions (see github page) File with extensions [csv] [Only available when task is one of Sequence Design]"
          format: binary

    # Catpred Settings
    CatpredSettings:
      type: object
      required:
        - sequence
        - smiles
      properties:
        sequence:
          type: string
          description: "Enzyme sequence to assess properties"
          example: "MLDDRARMEAAKKEKVEQILAEFQLQEEDLKKVMRRMQKEMDRGLRLETHEEASVKMLPTYVRSTPEGSEVGDFLSLDLGGTNFRVMLVKVGEGEEGQWSVKTKHQMYSIPEDAMTGTAEMLFDYISECISDFLDKHQMKHKKLPLGFTFSFPVRHEDIDKGILLNWTKGFKASGAEGNNVVGLLRDAIKRRGDFEMDVVAMVNDTVATMISCYYEDHQCEVGMIVGTGCNACYMEEMQNVELVEGDEGRMCVNTEWGAFGDSGELDEFLLEYDRLVDESSANPGQQLYEKLIGGKYMGELVRLVLLRLVDENLLFHGEASEQLRTRGAFETRFVSQVESDTGDRKQIYNILSTLGLRPSTTDCDIVRRACESVSTRAAHMCSAGLAGVINRMRESRSEDVMRITVGVDGSVYKLHPSFKERFHASVRRLTPSCEITFIESEEGSGRGAALVSAVACKKACMLGQ"
        smiles:
          type: string
          example: "C([C@@H]1[C@H]([C@@H]([C@H](C(O1)O)O)O)O)O"

    # Chai Settings
    ChaiSettings:
      type: object
      required:
        - inputFormat
        - sequence
        - molecules
      properties:
        inputFormat:
          type: string
          default: "sequence"
          enum:
            - "sequence"
            - "molecules"
            - "list"
        sequence:
          type: string
          description: "Protein sequence (use : to specify chainbreaks for multimers) [Only available when inputFormat is one of sequence]"
          example: "TRPNHTIYINNLNEKIKKDELKKSLHAIFSRFGQILDILVSRSLK:MRGQAFVIFKEVSSATNALRSMQGFPFYDKPMRIQYAKTDSDIIAKM"
          maxLength: 2048
        molecules:
          type: string
          example: ["{'type': 'protein', 'sequence': 'TRPNHTIYINNLNEKIKKDELKKSLHAIFSRFGQIL', 'chain': 'A'}"]
        proteins:
          type: string
          description: "List of protein sequences you want included in your complex [Only available when inputFormat is one of list]"
          example: ["TRPNHTIYINNLNEKIKKDELKKSLHAIFSRFGQILDILVSRSLK", "MRGQAFVIFKEVSSATNALRSMQGFPFYDKPMRIQYAKTDSDIIAKM"]
        rnas:
          type: string
          description: "List of RNA sequences you want included in your complex [Only available when inputFormat is one of list]"
          example: ["GAGAGAGAAGTCAACCAGAGAAACACACCAACCCATTGCACTCCGGG", "TTGGTGGTATATTACCTGGTACGGGGGAAACTTCGTGGTGGCCGGCCACCTGACA"]
        dnas:
          type: string
          description: "List of DNA sequences you want included in your complex [Only available when inputFormat is one of list]"
          example: ["GAGAGAGAAGTCAACCAGAGAAACACACCAACCCATTGCACTCCGGG", "TTGGTGGTATATTACCTGGTACGGGGGAAACTTCGTGGTGGCCGGCCACCTGACA"]
        ligands:
          type: string
          description: "List of ligands sequences you want included in your complex (smiles), use : to separate multiple ligands [Only available when inputFormat is one of list, sequence]"
          example: ["N[C@@H](Cc1ccc(O)cc1)C(=O)O"]
        useMSA:
          type: boolean
          description: "When MSAs are disabled, Chai-1 uses a language model to capture evolutionary statistics about the protein. The authors find that this has about 90% of the accuracy of the tool, but is faster to produce a result. We use a version of ColabFold/MMseqs2 server that we host ourselves for the MSA step."
          default: True
        pdb100Templates:
          type: boolean
          default: False
        templateFiles:
          type: string
          description: "Use custom structural templates in your prediction. Must also fill in Custom Template Chain Mapping. File with extensions [cif]"
          format: binary
        templateMapping:
          type: object
          description: "For each custom template uploaded, indicate the name of the chain in your prediction and the name of the chain in your template file"
        pocketRestraints:
          type: object
          description: "Restrain any residue on chain B to chain A"
          example: ["{'chainB': 'B', 'chainA': 'A', 'res_idxA': 1}"]
        contactRestraints:
          type: object
          description: "Restrain a specific residue on chain A to chain B"
          example: ["{'res_idxB': 1, 'chainB': 'B', 'chainA': 'A', 'res_idxA': 1}"]
        covalentRestraints:
          type: object
          description: "Create a covalent bond between an atom on chain A and an atom on chain B"
          example: ["{'res_idxB': 1, 'covalentAtomA': 'C', 'covalentAtomB': 'C', 'chainB': 'B', 'chainA': 'A', 'res_idxA': 1}"]
        restraintsMinDistance:
          type: number
          description: "Minimum distance for restraints"
          example: 0
        restraintsMaxDistance:
          type: number
          description: "Maximum distance for restraints"
          example: 5
        modifications:
          type: object
        numSamples:
          type: number
          description: "Number of samples n/5 trunk recycles will be performed with 5 diffusion samples each"
          maximum: 200
          default: 5
        numTrunkSamples:
          type: number
          description: "Total number of samples will be numTrunkSamples x numSamples"
          maximum: 100
          default: 1
        numBatches:
          type: integer
          description: "Will submit multiple parallel batches with numSamples designs each"
          maximum: 1000
          default: 1
        numRecycles:
          type: number
          default: 3
        seed:
          type: number
          description: "Random seed to use with inference"
        logan:
          type: boolean
          description: "Use BFVD Logan MSA for prediction"
        msaDatabase:
          type: string
          description: "Select how the MSA is generated using UniRef30, SwissProt, and the ColabFold environmental database."
          example: "uniref"
          default: "uniref"
          enum:
            - "uniref"
            - "swissprot"
            - "uniref+swissprot"

    # Charge-Dipole Settings
    ChargeDipoleSettings:
      type: object
      required:
        - inputType
        - smiles
        - sdfFile
        - xyzFile
      properties:
        inputType:
          type: string
          description: "How to provide your molecule"
          default: "smiles"
          enum:
            - "smiles"
            - "sdf"
            - "xyz"
        smiles:
          type: string
          description: "SMILES string of the molecule [Only available when inputType is one of smiles]"
          example: "CCO"
        sdfFile:
          type: string
          description: "SDF/MOL file with 3D coordinates File with extensions [sdf] [Only available when inputType is one of sdf]"
          format: binary
        xyzFile:
          type: string
          description: "XYZ coordinate file (e.g. from geometry optimization) File with extensions [xyz] [Only available when inputType is one of xyz]"
          format: binary
        chargeMethod:
          type: string
          description: "Charge partitioning scheme. Mulliken/Lowdin require QM calculation. Gasteiger is fast (no QM needed)"
          default: "mulliken"
          enum:
            - "mulliken"
            - "lowdin"
            - "gasteiger"
        method:
          type: string
          description: "Quantum chemistry method for Mulliken/Lowdin charges. g-xTB: gas-phase only"
          default: "xtb-gfn2"
          enum:
            - "xtb-gfn2"
            - "g-xtb"
            - "b3lyp"
            - "wb97x-d3"
        basisSet:
          type: string
          description: "Basis set for DFT charge calculation. Larger basis = more accurate charges"
          default: "def2-svp"
          enum:
            - "def2-svp"
            - "def2-svpd"
            - "def2-tzvp"
            - "def2-tzvpd"
        charge:
          type: number
          description: "Net molecular charge"
          default: 0
        multiplicity:
          type: number
          description: "Spin multiplicity (2S+1). Use values > 1 for open-shell systems to compute spin density"
          default: 1
        solvent:
          type: string
          description: "Implicit solvation environment"
          default: "none"
          enum:
            - "none"
            - "water"
            - "acetonitrile"
            - "dmso"
            - "methanol"
            - "ethanol"
            - "chloroform"
            - "toluene"
            - "thf"
            - "dichloromethane"
        preOptimize:
          type: boolean
          description: "Run a fast xTB geometry optimization first. Recommended for SMILES input"
          default: True

    # Chembl Settings
    ChemblSettings:
      type: object
      required:
        - searchBy
        - smiles
        - name
        - chemblId
      properties:
        searchBy:
          type: string
          description: "Select which type of input to search by"
          default: "SMILES"
          enum:
            - "SMILES"
            - "Name"
            - "ChemBL ID"
        smiles:
          type: string
          description: "SMILES string to search against the ChemBL database [Only available when searchBy is one of SMILES]"
          example: "CC(=O)Oc1ccccc1C(=O)O"
        maxResults:
          type: number
          description: "Maximum number of results to report (1-100) [Only available when searchBy is one of SMILES]"
          example: "50"
          minimum: 1
          maximum: 100
          default: "50"
        similarityThreshold:
          type: number
          description: "Similarity threshold for the results (0-1) [Only available when searchBy is one of SMILES]"
          example: "0.7"
          minimum: 0
          maximum: 1
          default: "0.7"
        name:
          type: string
          description: "Name of the compound to search for in the ChemBL database [Only available when searchBy is one of Name]"
          example: "ibuprofen"
        chemblId:
          type: string
          description: "ChemBL ID to search for in the the ChemBL database [Only available when searchBy is one of ChemBL ID]"
          example: "CHEMBL521"

    # Cluster-Pdbs Settings
    ClusterPdbsSettings:
      type: object
      required:
        - pdbFiles
        - clusterChains
        - rmsdCutoff
        - align
        - alignChains
      properties:
        pdbFiles:
          type: string
          description: "PDB files or trajectory to cluster File with extensions [pdb]"
          example: "5UOI.pdb"
          format: binary
        clusterChains:
          type: array
          items:
            type: string
          description: "Chain IDs to use for RMSD (e.g. A)."
          example: ["A"]
        rmsdCutoff:
          type: number
          description: "Root mean square deviation cutoff for cluster membership"
          default: 3
        align:
          type: boolean
          description: "Align structures to the first pdb/frame before clustering"
          default: False
        alignChains:
          type: array
          items:
            type: string
          description: "Chains to align on."

    # Colabdock Settings
    ColabdockSettings:
      type: object
      required:
        - proteinFile1
        - proteinFile2
      properties:
        proteinFile1:
          type: string
          description: "Pdb structure files to dock File with extensions [pdb]"
          format: binary
        proteinFile2:
          type: string
          description: "Pdb structure files to dock File with extensions [pdb]"
          format: binary
        rest_1v1:
          type: object
          description: "1v1 restraint - Keep residue A close to residue B"
          example: ["{'residueB': 15, 'residueA': 4}"]
        rest_1vN:
          type: object
          description: "1vN restraint: Keep residue A close to one of residues B in range"
          example: ["{'start': 13, 'residueA': 4, 'end': 18}"]
        rest_MvN:
          type: number
          description: "Minimum number of 1vN restraints that must be satisfied"
          example: 1
        rest_rep:
          type: object
          description: "Repulsive restraint - Keep residue A far from residue B"
          example: ["{'residueB': 18, 'residueA': 6}"]
        restraintThreshold:
          type: number
          description: "Distance threshold for attractive restraints (1v1, 1vN, MvN)"
          example: 8
          default: 8
        repulseThreshold:
          type: number
          description: "Distance threshold for repulsive restraints"
          example: 8
          default: 8

    # Conformer-Generation Settings
    ConformerGenerationSettings:
      type: object
      required:
        - inputType
        - smiles
        - sdfFile
      properties:
        inputType:
          type: string
          description: "How to provide your molecule"
          default: "smiles"
          enum:
            - "smiles"
            - "sdf"
        smiles:
          type: string
          description: "SMILES string of the molecule [Only available when inputType is one of smiles]"
          example: "c1ccccc1CC(=O)O"
        sdfFile:
          type: string
          description: "SDF file (can contain initial conformers) File with extensions [sdf] [Only available when inputType is one of sdf]"
          format: binary
        generationMethod:
          type: string
          description: "rdkit: fast distance-geometry + force field (~10s). crest: thorough GFN2 metadynamics search, best for flexible molecules (~10min)"
          default: "rdkit"
          enum:
            - "rdkit"
            - "crest"
        forceField:
          type: string
          description: "Force field for RDKit conformer optimization. MMFF94 is better for drug-like molecules, UFF is more universal"
          default: "mmff94"
          enum:
            - "mmff94"
            - "uff"
        numConformers:
          type: number
          description: "Maximum number of conformers to generate"
          default: 50
        clustering:
          type: string
          description: "How to group similar conformers. rmsd: by 3D structure. energy: by energy. tfd: by torsion angles"
          default: "none"
          enum:
            - "none"
            - "rmsd"
            - "energy"
            - "tfd"
        clusterThreshold:
          type: number
          description: "RMSD threshold (Angstrom) or energy threshold (kcal/mol) for clustering"
          default: 0.5
        energyScreening:
          type: string
          description: "Re-rank conformers using a more accurate energy method after generation"
          default: "none"
          enum:
            - "none"
            - "mmff"
            - "xtb-gfn2"
            - "g-xtb"
            - "r2scan-3c"
        energyWindow:
          type: number
          description: "Discard conformers more than this many kcal/mol above the lowest-energy conformer"
          default: 10
        solvent:
          type: string
          description: "Solvent environment for energy screening (only used when energy screening is enabled)"
          default: "none"
          enum:
            - "none"
            - "water"
            - "acetonitrile"
            - "dmso"
            - "methanol"
            - "ethanol"
            - "chloroform"
            - "toluene"
            - "thf"
            - "dichloromethane"
        pruneSimilar:
          type: boolean
          description: "Remove near-duplicate conformers that are too similar in 3D structure"
          default: True
        pruneThreshold:
          type: number
          description: "Conformers with RMSD below this threshold (in Angstrom) are considered duplicates"
          default: 0.3

    # Contact-Ms Settings
    ContactMsSettings:
      type: object
      required:
        - pdbFile
        - binderChains
        - targetChains
      properties:
        pdbFile:
          type: string
          description: "PDB file containing the binder-target complex File with extensions [pdb]"
          example: "7DK2_AB_C.pdb"
          format: binary
        binderChains:
          type: array
          items:
            type: string
          description: "Chain ID(s) of the binder molecule"
          example: ["A", "B"]
        targetChains:
          type: array
          items:
            type: string
          description: "Chain ID(s) of the target molecule"
          example: ["C"]

    # Cryfold Settings
    CryfoldSettings:
      type: object
      required:
        - map
        - sequence
      properties:
        map:
          type: string
          description: "CryoEM density map to use in structure prediction File with extensions [mrc]"
          format: binary
        sequence:
          type: string
          description: "Protein sequence"

    # Cryodrgn Settings
    CryodrgnSettings:
      type: object
      required:
        - particles
        - poses
        - apix
      properties:
        particles:
          type: string
          description: "Particles from CryoEM File with extensions [mrcs, star, cs]"
          format: binary
        poses:
          type: string
          description: "CTF and Poses of your particles File with extensions [cs, star, pkl]"
          format: binary
        apix:
          type: number
          description: "Angstrom/pixel"
          default: 1.03

    # Custom-Msa Settings
    CustomMsaSettings:
      type: object
      required:
        - sequence
        - databaseFastaFile
      properties:
        sequence:
          type: string
          description: "Protein amino acid sequence"
          example: "MALKSLVLLSLLVLVLLLVRVQPSLGKETAAAKFERQHMDSSTSAASSSNYCNQMMKSRNLTKDRCKPVNTFVHESLADVQAVCSQKNVACKNGQTNCYQSYSTMSITDCRETGSSKYPNCAYKTTQANKHIIVACEGNPYVPVHFDASV"
        databaseFastaFile:
          type: string
          description: "Sequences to use as database for custom MSA query File with extensions [fasta, fa]"
          format: binary
        numModels:
          type: number
          description: "Number of models to generate with Alphafold"
          default: 5
        numRecycles:
          type: number
          description: "Number of recycles to use for each structure"
          default: 3
        relax:
          type: boolean
          description: "Perform amber relaxation for more accurate side chain predictions"
          default: False

    # Dayhoff Settings
    DayhoffSettings:
      type: object
      required:
        - task
        - sequence
      properties:
        task:
          type: string
          default: "Guided Generation"
          enum:
            - "Guided Generation"
            - "Unconditional Generation"
        sequence:
          type: string
          description: "Protein amino acid sequence [Only available when task is one of Guided Generation]"
          example: "MALKSLVLLSLLVLVLLLVRVQPSLGKETAAAKFERQHMDSSTSAASSSNYCNQMMKSRNLTKDRCKPVNTFVHESLADVQAVCSQKNVACKNGQTNCYQSYSTMSITDCRETGSSKYPNCAYKTTQANKHIIVACEGNPYVPVHFDASV"
          maxLength: 5000
        maxLength:
          type: number
          default: 100
        nGenerations:
          type: number
          default: 10
        temperature:
          type: number
          description: "Sampling temperature for sequences"
          default: 5
        minP:
          type: number
          description: "Minimum probability for sampling"
          minimum: 0
          maximum: 1
          default: 0
        model:
          type: string
          description: "Model to use for the prediction"
          default: "Dayhoff-170m-BRq"
          enum:
            - "Dayhoff-170m-UR50"
            - "Dayhoff-170m-UR90"
            - "Dayhoff-170m-GR"
            - "Dayhoff-170m-UR50-BRu"
            - "Dayhoff-170m-UR50-BRq"
            - "Dayhoff-170m-UR50-BRn"
            - "Dayhoff-3b-UR90"
            - "Dayhoff-3b-GR-HM"
            - "Dayhoff-3b-GR-HM-c"

    # Deep-Viscosity Settings
    DeepViscositySettings:
      type: object
      required:
        - heavySequence
        - lightSequence
      properties:
        heavySequence:
          type: string
          description: "Heavy sequence of your antibody"
          example: "QVQLQQSGAELARPGASVKMSCKASGYTFTRYTMHWVKQRPGQGLEWIGYINPSRGYTNYNQKFKDKATLTTDKSSSTAYMQLSSLTSEDSAVYYCARYYDDHYCLDYWGQGTTLTVSS"
        lightSequence:
          type: string
          description: "Light sequence of your antibody"
          example: "QIVLTQSPAIMSASPGEKVTMTCSASSSVSYMNWYQQKSGTSPKRWIYDTSKLASGVPAHFRGSGSGTSYSLTISGMEAEDAATYYCQQWSSNPFTFGSGTKLEIN"

    # Deepfri Settings
    DeepfriSettings:
      type: object
      required:
        - task
        - sequence
        - pdbFile
        - ontology
      properties:
        task:
          type: string
          default: "sequence"
          enum:
            - "sequence"
            - "PDB"
        sequence:
          type: string
          description: "Protein amino acid sequence, place a : between chains for multimers [Only available when task is one of sequence]"
          example: "SMTDLLSAEDIKKAIGAFTAADSFDHKKFFQMVGLKKKSADDVKKVFHILDKDKDGFIDEDELGSILKGFSSDARDLSAKETKTLMAAGDKDGDGKIGVEEFSTLVAES"
        pdbFile:
          type: string
          description: "Structure to analyze File with extensions [pdb] [Only available when task is one of PDB]"
          example: "1s3p.pdb"
          format: binary
        ontology:
          type: string
          default: ['mf']
          enum:
            - "mf"
            - "bp"
            - "cc"
            - "ec"
        saliency:
          type: boolean
          description: "Whether to compute class activation maps (will output a .json file)"
          default: False
        sequenceBatching:
          type: boolean
          description: "Batch process the input sequences"
          default: False
        sequenceBatchSize:
          type: number
          description: "Determines the number of sequences in each batch"

    # Deepimmuno Settings
    DeepimmunoSettings:
      type: object
      required:
        - sequence
      properties:
        sequence:
          type: string
          description: "Protein sequence to predict immunogenicity (highest result from every 9-mer will be returned)"
          example: "HPPLMNVER"
        hlas:
          type: string
          description: "HLA alleles to predict immunogenicity for (all by default)"
          example: ["HLA-A*0201"]
          default: ['HLA-A*0101', 'HLA-A*0201', 'HLA-A*0203', 'HLA-A*0205', 'HLA-A*0206', 'HLA-A*0207', 'HLA-A*0224', 'HLA-A*0301', 'HLA-A*0362', 'HLA-A*1101', 'HLA-A*2301', 'HLA-A*2402', 'HLA-A*3001', 'HLA-A*3003', 'HLA-A*6801', 'HLA-A*9234', 'HLA-A*9235', 'HLA-A*9253', 'HLA-B*0602', 'HLA-B*0702', 'HLA-B*0801', 'HLA-B*1402', 'HLA-B*1501', 'HLA-B*1557', 'HLA-B*1801', 'HLA-B*2703', 'HLA-B*2705', 'HLA-B*2709', 'HLA-B*2713', 'HLA-B*3501', 'HLA-B*3505', 'HLA-B*3508', 'HLA-B*3901', 'HLA-B*4001', 'HLA-B*4002', 'HLA-B*4044', 'HLA-B*4102', 'HLA-B*4104', 'HLA-B*4201', 'HLA-B*4202', 'HLA-B*4402', 'HLA-B*4403', 'HLA-B*4405', 'HLA-B*4601', 'HLA-B*5101', 'HLA-B*5301', 'HLA-B*5701', 'HLA-B*5703', 'HLA-B*5706', 'HLA-B*5712', 'HLA-B*5801', 'HLA-B*8102', 'HLA-B*8103', 'HLA-B*9234', 'HLA-C*0102', 'HLA-C*0304', 'HLA-C*0401', 'HLA-C*0517', 'HLA-C*0602', 'HLA-C*0756', 'HLA-C*1510', 'HLA-C*1604']
          enum:
            - "HLA-A*0101"
            - "HLA-A*0201"
            - "HLA-A*0203"
            - "HLA-A*0205"
            - "HLA-A*0206"
            - "HLA-A*0207"
            - "HLA-A*0224"
            - "HLA-A*0301"
            - "HLA-A*0362"
            - "HLA-A*1101"
            - "HLA-A*2301"
            - "HLA-A*2402"
            - "HLA-A*3001"
            - "HLA-A*3003"
            - "HLA-A*6801"
            - "HLA-A*9234"
            - "HLA-A*9235"
            - "HLA-A*9253"
            - "HLA-B*0602"
            - "HLA-B*0702"
            - "HLA-B*0801"
            - "HLA-B*1402"
            - "HLA-B*1501"
            - "HLA-B*1557"
            - "HLA-B*1801"
            - "HLA-B*2703"
            - "HLA-B*2705"
            - "HLA-B*2709"
            - "HLA-B*2713"
            - "HLA-B*3501"
            - "HLA-B*3505"
            - "HLA-B*3508"
            - "HLA-B*3901"
            - "HLA-B*4001"
            - "HLA-B*4002"
            - "HLA-B*4044"
            - "HLA-B*4102"
            - "HLA-B*4104"
            - "HLA-B*4201"
            - "HLA-B*4202"
            - "HLA-B*4402"
            - "HLA-B*4403"
            - "HLA-B*4405"
            - "HLA-B*4601"
            - "HLA-B*5101"
            - "HLA-B*5301"
            - "HLA-B*5701"
            - "HLA-B*5703"
            - "HLA-B*5706"
            - "HLA-B*5712"
            - "HLA-B*5801"
            - "HLA-B*8102"
            - "HLA-B*8103"
            - "HLA-B*9234"
            - "HLA-C*0102"
            - "HLA-C*0304"
            - "HLA-C*0401"
            - "HLA-C*0517"
            - "HLA-C*0602"
            - "HLA-C*0756"
            - "HLA-C*1510"
            - "HLA-C*1604"

    # Deeprank-Ab Settings
    DeeprankAbSettings:
      type: object
      required:
        - task
        - pdbFile
        - heavyChain
        - lightChain
        - antigenChain
      properties:
        task:
          type: string
          description: "Choose antibody (heavy+light) or nanobody (single-chain binder)"
          default: "antibody"
          enum:
            - "antibody"
            - "nanobody"
        pdbFile:
          type: string
          description: "Antibody- or nanobody-antigen complex PDB file (single model or ensemble with multiple MODEL records) File with extensions [pdb]"
          example: {'antibody': '7DK2_AB_C.pdb', 'nanobody': '9f6o.pdb'}
          format: binary
        heavyChain:
          type: string
          description: "Binder chain ID in the complex PDB (heavy chain for antibody, single chain for nanobody)"
          example: {'antibody': 'A', 'nanobody': 'B'}
        lightChain:
          type: string
          description: "Light-chain ID in the complex PDB (required for antibody task) [Only available when task is one of antibody]"
          example: "B"
        antigenChain:
          type: string
          description: "Antigen chain ID in the complex PDB"
          example: {'antibody': 'C', 'nanobody': 'A'}

    # Deepsp Settings
    DeepspSettings:
      type: object
      required:
        - heavySequence
        - lightSequence
      properties:
        heavySequence:
          type: string
          description: "Heavy sequence of your antibody"
          example: "QVQLQQSGAELARPGASVKMSCKASGYTFTRYTMHWVKQRPGQGLEWIGYINPSRGYTNYNQKFKDKATLTTDKSSSTAYMQLSSLTSEDSAVYYCARYYDDHYCLDYWGQGTTLTVSS"
        lightSequence:
          type: string
          description: "Light sequence of your antibody"
          example: "QIVLTQSPAIMSASPGEKVTMTCSASSSVSYMNWYQQKSGTSPKRWIYDTSKLASGVPAHFRGSGSGTSYSLTISGMEAEDAATYYCQQWSSNPFTFGSGTKLEIN"

    # Deepstabp Settings
    DeepstabpSettings:
      type: object
      required:
        - sequence
      properties:
        sequence:
          type: string
          description: "Protein sequence to assess thermostability"
          example: "MAQYHQQHEMKQTMAETQYVTAPPPMGYPVMMKDSPQTVQPPHEGQSKGSGGFLRGCLAAMCCCCVLDCVF"
        growthTemp:
          type: number
          default: 22
        measurementCondition:
          type: string
          description: "Protein environment"
          default: "cell"
          enum:
            - "cell"
            - "lysate"

    # Dfmdock Settings
    DfmdockSettings:
      type: object
      required:
        - receptorFile
        - ligandFile
      properties:
        receptorFile:
          type: string
          description: "PDB file for the receptor protein. File with extensions [pdb]"
          example: "1ACB_receptor.pdb"
          format: binary
        ligandFile:
          type: string
          description: "PDB file for the ligand protein. File with extensions [pdb]"
          example: "1ACB_ligand.pdb"
          format: binary
        numSamples:
          type: number
          description: "Number of docked poses to generate. More samples increases the chance of finding a high-quality pose."
          minimum: 1
          maximum: 100
          default: 10

    # Diffdock Settings
    DiffdockSettings:
      type: object
      required:
        - proteinFile
        - ligandFormat
        - ligandFile
        - ligandSmiles
      properties:
        proteinFile:
          type: string
          description: "pdb structure file for your receptor File with extensions [pdb]"
          example: "6w70.pdb"
          format: binary
        ligandFormat:
          type: string
          description: "Choose the format of your ligand input"
          default: "sdf/mol2 file"
          enum:
            - "sdf/mol2 file"
            - "SMILES"
        ligandFile:
          type: string
          description: "sdf or mol2 structure file for your ligand File with extensions [sdf, mol2]"
          example: "6w70_ligand.sdf"
          format: binary
        ligandSmiles:
          type: string
          description: "SMILES string for your ligand"

    # Diffsbdd Settings
    DiffsbddSettings:
      type: object
      required:
        - task
        - proteinFile
        - ligandFile
        - fragmentsFile
      properties:
        task:
          type: string
          default: "generate"
          enum:
            - "optimize"
            - "generate"
            - "inpaint"
        proteinFile:
          type: string
          description: "pdb structure file for your receptor File with extensions [pdb]"
          example: "5ndu.pdb"
          format: binary
        ligandFile:
          type: string
          description: "sdf structure file for your ligand File with extensions [sdf] [Only available when task is one of optimize, inpaint, generate]"
          example: "5ndu_C_8V2.sdf"
          format: binary
        fragmentsFile:
          type: string
          description: "sdf structure file to define fixed substructures in your ligand File with extensions [sdf] [Only available when task is one of inpaint]"
          example: "fragments.sdf"
          format: binary
        centerLigand:
          type: boolean
          description: "Sample the additional atoms near the center of mass of the fixed substructure [Only available when task is one of inpaint]"
          default: False
        numSamples:
          type: number
          default: 20
        numBatches:
          type: integer
          description: "Number of batches to design, each will have the # of samples you set in numSamples"
          default: 1
        addNNodes:
          type: number
          description: "Random by default [Only available when task is one of inpaint]"
        relax:
          type: boolean
          default: False
        sanitize:
          type: boolean
          default: False
        resamplings:
          type: number
          default: 10
        timesteps:
          type: number
          default: 100
        saveTraj:
          type: boolean
          default: False

    # Disco Settings
    DiscoSettings:
      type: object
      required:
        - task
        - proteinLengthMin
        - proteinLengthMax
        - ligandInputType
        - ligandSmiles
        - ligandFile
        - ligandCcd
        - dnaSequence
        - rnaSequence
        - inputJson
        - experiment
        - effort
      properties:
        task:
          type: string
          default: "unconditional"
          enum:
            - "unconditional"
            - "ligand-conditioned"
            - "dna-conditioned"
            - "rna-conditioned"
            - "json"
        proteinLengthMin:
          type: number
          description: "Minimum number of residues. When Min < Max, each design samples a random length in [Min, Max]. [Only available when task is one of unconditional, ligand-conditioned, dna-conditioned, rna-conditioned]"
          example: {'ligand-conditioned': 150, 'dna-conditioned': 100, 'unconditional': 100, 'rna-conditioned': 100}
          minimum: 1
          maximum: 800
          default: 100
        proteinLengthMax:
          type: number
          description: "Maximum number of residues. Set equal to Min for a fixed length. [Only available when task is one of unconditional, ligand-conditioned, dna-conditioned, rna-conditioned]"
          example: {'ligand-conditioned': 300, 'dna-conditioned': 200, 'unconditional': 200, 'rna-conditioned': 200}
          minimum: 1
          maximum: 800
          default: 200
        partialSequence:
          type: string
          description: "Optionally specify fixed residues. Use standard amino acid letters for fixed positions and '-' for positions to design. Overrides Protein Length when provided. [Only available when task is one of unconditional, ligand-conditioned, dna-conditioned, rna-conditioned]"
          example: {'unconditional': '', 'ligand-conditioned': 'MKTL--------VPEG'}
        ligandInputType:
          type: string
          description: "How to specify the ligand [Only available when task is one of ligand-conditioned]"
          default: "smiles"
          enum:
            - "smiles"
            - "sdf"
            - "ccd"
        ligandSmiles:
          type: string
          description: "SMILES string for the target ligand [Only available when task is one of ligand-conditioned]"
          example: {'ligand-conditioned': 'CC(=O)Oc1ccccc1C(=O)O'}
        ligandFile:
          type: string
          description: "SDF, MOL, or MOL2 file with 3D coordinates for the target ligand File with extensions [sdf, mol, mol2] [Only available when task is one of ligand-conditioned]"
          format: binary
        ligandCcd:
          type: string
          description: "PDB Chemical Component Dictionary code. For multi-component ligands, separate codes with underscores (e.g., NAG_BMA_BGC) [Only available when task is one of ligand-conditioned]"
          example: {'ligand-conditioned': 'ATP'}
        dnaSequence:
          type: string
          description: "DNA sequence (5' to 3'). Use letters A, T, G, C only. [Only available when task is one of dna-conditioned]"
          example: {'dna-conditioned': 'GATTACAGATC'}
        doubleStranded:
          type: boolean
          description: "Automatically add the reverse complement as a second strand. Uncheck for single-stranded DNA. [Only available when task is one of dna-conditioned]"
          default: True
        rnaSequence:
          type: string
          description: "RNA sequence. Use letters A, U, G, C only. [Only available when task is one of rna-conditioned]"
          example: {'rna-conditioned': 'GGCUAGCCAUUUGAC'}
        inputJson:
          type: string
          description: "Full DISCO input JSON. Must be a JSON array. See DISCO docs for format: sequences with proteinChain, ligand, dnaSequence, rnaSequence, ion, and optional covalent_bonds. [Only available when task is one of json]"
          example: {'json': '[{"name": "my_design", "sequences": [{"proteinChain": {"sequence": "----------", "count": 1}}]}]'}
        experiment:
          type: string
          description: "Controls quality vs diversity trade-off. 'Designable' uses noisy guidance for higher confidence designs. 'Diverse' samples more freely for greater structural variety."
          default: {'ligand-conditioned': 'diverse', 'dna-conditioned': 'diverse', 'json': 'designable', 'unconditional': 'designable', 'rna-conditioned': 'diverse'}
          enum:
            - "designable"
            - "diverse"
        effort:
          type: string
          description: "Compute preset. 'Max' (200 steps, 4 cycles) for full quality. 'Fast' (100 steps, 2 cycles) is ~4x faster but ~10% lower quality. Only use 'fast' for unconditional generation."
          default: {'ligand-conditioned': 'max', 'dna-conditioned': 'max', 'json': 'max', 'unconditional': 'fast', 'rna-conditioned': 'max'}
          enum:
            - "max"
            - "fast"
        numDesigns:
          type: integer
          description: "Number of designs to generate (each runs as a separate job with a random seed)"
          default: 1

    # Dlkcat Settings
    DlkcatSettings:
      type: object
      required:
        - sequence
        - smiles
      properties:
        sequence:
          type: string
          description: "Enzyme sequence to assess kcat"
          example: "MVHVRKNHLTMTAEEKRRFVHAVLEIKRRGIYDRFVKLHIQINSTDYLDKETGKRLGHVNPGFLPWHRQYLLKFEQALQKVDPRVTLPYWDWTTDHGENSPLWSDTFMGGNGRPGDRRVMTGPFARRNGWKLNISVIPEGPEDPALNGNYTHDDRDYLVRDFGTLTPDLPTPQELEQTLDLTVYDCPPWNHTSGGTPPYESFRNHLEGYTKFAWEPRLGKLHGAAHVWTGGHMMYIGSPNDPVFFLNHCMIDRCWALWQARHPDVPHYLPTVPTQDVPDLNTPLGPWHTKTPADLLDHTRFYTYDQ"
        smiles:
          type: string
          example: "C1=CC=C(C(=C1)O)O"

    # Dnaworks Settings
    DnaworksSettings:
      type: object
      required:
        - inputType
        - seq
      properties:
        inputType:
          type: string
          description: "Choose between nucleotide or protein sequence input"
          enum:
            - "nucleotide"
            - "protein"
        seq:
          type: string
          example: "MSKGEELFTGVVPILVELDGDVNGHKFSVSGEGEGDATYGKLTLKFICTTGKLPVPWPTLVTTFGYGL"
          maxLength: 5000
        expressionHost:
          type: string
          description: "Codon optimization is performed for this organism (only applies to protein input)"
          enum:
            - "ecoli2"
            - "E. coli"
            - "C. elegans"
            - "D. melanogaster"
            - "H. sapiens"
            - "M. musculus"
            - "R. novegicus"
            - "S. cerevesiae"
            - "X. laevis"
            - "P. pastoris"
        tbio:
          type: boolean
          description: "Enable thermodynamically balanced inside-out gene synthesis strategy"
          default: False
        nogaps:
          type: boolean
          description: "Avoid inserting gaps between oligos by minimizing overlap spacing"
          default: False
        solutions:
          type: number
          description: "Generate multiple alternative oligo designs"
          minimum: 1
          maximum: 10
          default: 1
        melting:
          type: number
          description: "Melting temperature for overlapping oligo regions"
          minimum: 55
          maximum: 75
          default: 65
        length:
          type: number
          description: "Target length for each designed oligo"
          minimum: 0
          maximum: 60
          default: 40
        reverse:
          type: boolean
          description: "Reverse-complement the input sequence before processing"
          default: False
        gapfix:
          type: boolean
          description: "Force input sequence to fall in non-overlapping regions (useful for mutation insertion)"
          default: False

    # Dockq Settings
    DockqSettings:
      type: object
      required:
        - modelFile
        - nativeFile
      properties:
        modelFile:
          type: string
          description: "Model pdb structure File with extensions [pdb]"
          format: binary
        nativeFile:
          type: string
          description: "Native pdb structure File with extensions [pdb]"
          format: binary
        allowedMismatches:
          type: number
          description: "Number of allowed mismatches when mapping model sequence to native sequence"
          default: 0

    # Drugflow Settings
    DrugflowSettings:
      type: object
      required:
        - pdbFile
        - referenceLigandFile
        - numSamples
        - numBatches
        - distCutoff
      properties:
        pdbFile:
          type: string
          description: "pdb structure file for your receptor File with extensions [pdb]"
          example: "6w70.pdb"
          format: binary
        referenceLigandFile:
          type: string
          description: "sdf structure file for your ligand File with extensions [sdf]"
          example: "6w70_ligand.sdf"
          format: binary
        numSamples:
          type: number
          default: 10
        numBatches:
          type: integer
          description: "Number of batches, each with the chosen number of samples"
          default: 1
        molSize:
          type: array
          items:
            type: string
          description: "Maximum number/range of atoms -  Can be a single number or a range. Leave empty for size to be sampled."
          example: ["15", "20"]
          minimum: 0
        nSteps:
          type: number
          description: "Number of denoising steps - Leave empty for None"
        distCutoff:
          type: number
          description: "Distance to define the pocket around the reference ligand"
          minimum: 5
          default: 8

    # Dsmbind Settings
    DsmbindSettings:
      type: object
      required:
        - binderPdb
        - binderChain
        - targetPdb
        - targetChain
      properties:
        binderPdb:
          type: string
          example: "9f6o.pdb"
          format: binary
        binderChain:
          type: string
          example: "B"
        targetPdb:
          type: string
          example: "9f6o.pdb"
          format: binary
        targetChain:
          type: string
          example: "A"

    # Electronic-Properties Settings
    ElectronicPropertiesSettings:
      type: object
      required:
        - inputType
        - smiles
        - sdfFile
        - xyzFile
      properties:
        inputType:
          type: string
          description: "How to provide your molecule"
          default: "smiles"
          enum:
            - "smiles"
            - "sdf"
            - "xyz"
        smiles:
          type: string
          description: "SMILES string of the molecule [Only available when inputType is one of smiles]"
          example: "c1ccccc1"
        sdfFile:
          type: string
          description: "SDF/MOL file with 3D coordinates File with extensions [sdf] [Only available when inputType is one of sdf]"
          format: binary
        xyzFile:
          type: string
          description: "XYZ coordinate file (e.g. from geometry optimization) File with extensions [xyz] [Only available when inputType is one of xyz]"
          format: binary
        method:
          type: string
          description: "Level of theory. Performs three calculations (neutral, cation, anion) to compute all properties. g-xTB: gas-phase only"
          default: "b3lyp"
          enum:
            - "xtb-gfn2"
            - "g-xtb"
            - "b3lyp"
            - "wb97x-d3"
        basisSet:
          type: string
          description: "Basis set for DFT methods. Use -d (diffuse) variants for anions"
          default: "def2-svp"
          enum:
            - "def2-svp"
            - "def2-svpd"
            - "def2-tzvp"
            - "def2-tzvpd"
            - "6-31g*"
        charge:
          type: number
          description: "Net molecular charge of the neutral (reference) state"
          default: 0
        multiplicity:
          type: number
          description: "Spin multiplicity (2S+1) of the neutral state"
          default: 1
        solvent:
          type: string
          description: "Implicit solvation environment"
          default: "none"
          enum:
            - "none"
            - "water"
            - "acetonitrile"
            - "dmso"
            - "methanol"
            - "ethanol"
            - "chloroform"
            - "toluene"
            - "thf"
            - "dichloromethane"
        preOptimize:
          type: boolean
          description: "Run a fast xTB geometry optimization first. Recommended for SMILES input"
          default: True

    # Electrostatic-Potential Settings
    ElectrostaticPotentialSettings:
      type: object
      required:
        - inputType
        - smiles
        - sdfFile
        - xyzFile
      properties:
        inputType:
          type: string
          description: "How to provide your molecule"
          default: "smiles"
          enum:
            - "smiles"
            - "sdf"
            - "xyz"
        smiles:
          type: string
          description: "SMILES string of the molecule [Only available when inputType is one of smiles]"
          example: "CC(=O)O"
        sdfFile:
          type: string
          description: "SDF/MOL file with 3D coordinates File with extensions [sdf] [Only available when inputType is one of sdf]"
          format: binary
        xyzFile:
          type: string
          description: "XYZ coordinate file (e.g. from geometry optimization) File with extensions [xyz] [Only available when inputType is one of xyz]"
          format: binary
        method:
          type: string
          description: "Level of theory for computing the electrostatic potential"
          default: "xtb-gfn2"
          enum:
            - "xtb-gfn2"
            - "b3lyp"
            - "hf"
        basisSet:
          type: string
          description: "Basis set for DFT/HF methods"
          default: "def2-svp"
          enum:
            - "def2-svp"
            - "def2-svpd"
            - "def2-tzvp"
            - "def2-tzvpd"
        charge:
          type: number
          description: "Net molecular charge"
          default: 0
        multiplicity:
          type: number
          description: "Spin multiplicity (2S+1)"
          default: 1
        solvent:
          type: string
          description: "Implicit solvation environment"
          default: "none"
          enum:
            - "none"
            - "water"
            - "acetonitrile"
            - "dmso"
            - "methanol"
            - "ethanol"
            - "chloroform"
            - "toluene"
            - "thf"
            - "dichloromethane"
        surfaceType:
          type: string
          description: "Surface on which to compute the potential. vdw: van der Waals surface"
          default: "vdw"
          enum:
            - "vdw"
        gridDensity:
          type: string
          description: "Resolution of the surface grid. Fine gives smoother results but takes longer"
          default: "medium"
          enum:
            - "coarse"
            - "medium"
            - "fine"
        preOptimize:
          type: boolean
          description: "Run a fast xTB geometry optimization first. Recommended for SMILES input"
          default: True

    # Emboss Settings
    EmbossSettings:
      type: object
      required:
        - sequence
        - organism
      properties:
        sequence:
          type: string
          example: "MSKGEELFTGVVPILVELDGDVNGHKFSVSGEGEGDATYGKLTLKFICTTGKLPVPWPTLVTTFGYGL"
          maxLength: 5000
        organism:
          type: string
          default: "Ehum"
          enum:
            - "Ehum"
            - "Eyeast_high"

    # Enumeration Settings
    EnumerationSettings:
      type: object
      required:
        - scaffoldSmiles
        - rgroupFile
      properties:
        scaffoldSmiles:
          type: string
          description: "Scaffold with R-group positions marked as [*:1], [*:2], etc. Example: c1ccc([*:1])cc1[*:2]"
          example: "c1ccc([*:1])cc1[*:2]"
        rgroupFile:
          type: string
          description: "CSV with one column per R-group position (columns can have different lengths). Use [*] to mark attachment atom for multi-atom fragments (e.g. [*]c1ccc(O)cc1 for para-phenol). Single atoms (C, N, Cl, etc.) don't need [*]. If no [*] is specified, the first atom is used as the attachment point. File with extensions [csv]"
          format: binary
        rgroupColumns:
          type: string
          description: "Column names in position order, e.g. Amines,Acids maps to [*:1],[*:2]. Leave blank to auto-detect R1,R2,R3,... columns"
        maxEnumerated:
          type: number
          description: "Maximum number of output molecules. For large combinatorial spaces (>100k), random sampling is used automatically"
          default: 1000
        diversitySelect:
          type: number
          description: "Select N most diverse molecules using MaxMin fingerprint picking (0 = return all)"
          default: 0
        deduplicate:
          type: boolean
          description: "Remove duplicate canonical SMILES from the output"
          default: True
        filterLipinski:
          type: boolean
          description: "Discard molecules violating Lipinski Rule of 5 (MW > 500, LogP > 5, HBD > 5, HBA > 10)"
          default: False
        maxMW:
          type: number
          description: "Discard molecules above this MW (0 = no limit)"
          default: 0
        maxLogP:
          type: number
          description: "Discard molecules above this LogP (0 = no limit)"
          default: 0
        maxTPSA:
          type: number
          description: "Discard molecules above this topological polar surface area in A² (0 = no limit)"
          default: 0
        maxRotatable:
          type: number
          description: "Discard molecules with more rotatable bonds than this (0 = no limit)"
          default: 0

    # Enzygen2 Settings
    Enzygen2Settings:
      type: object
      required:
        - pdbFile
        - chain
        - motif
        - ncbiId
        - numDesigns
      properties:
        pdbFile:
          type: string
          description: "PDB or CIF file of the reference enzyme structure File with extensions [pdb]"
          example: "3DWZ.pdb"
          format: binary
        chain:
          type: string
          description: "Chain to use for enzyme design"
          example: "A"
        motif:
          type: string
          description: "Functionally important residue positions to keep fixed during design (active site, catalytic residues, etc.)"
          example: "49,51,52,57,58,59,60,61,66,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,90,92,93,94,95,97,103,107,109,113,118,119,120,121,123,124,125,126,127,128,129,130,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,168,169,172,173,175,177,178,179,182,183,184,185,186,190,191,192,193,194,195,196,197,198,199,203,206,209,211,212,213,214,215,220,221,222,223,224,225,226,227,230,231,232,233,237,238,239,240,242,243,245,247,249,250,251,252,254,256,257,260,261,262,263,264,265,266,272,274,277,281,288,289,294,295,296,297,298,299"
        ncbiId:
          type: string
          description: "NCBI taxonomic identifier for the target organism (e.g. 83332 for Mycobacterium tuberculosis, 562 for E. coli)"
          example: "83332"
        numDesigns:
          type: integer
          description: "Number of enzyme variants to generate"
          default: 1
        decodingStrategy:
          type: string
          description: "Sampling strategy for sequence generation"
          default: "top-p"
          enum:
            - "greedy"
            - "top-k"
            - "top-p"
        toppProbability:
          type: number
          description: "Cumulative probability threshold for nucleus sampling (lower = more conservative)"
          minimum: 0.01
          maximum: 1
          default: 0.2

    # Enzygen2-Finetune Settings
    Enzygen2FinetuneSettings:
      type: object
      required:
        - dataFile
        - proteinTask
      properties:
        dataFile:
          type: string
          description: "EnzyGen2-format JSON file keyed by NCBI taxonomy IDs, each containing train/valid splits with sequences, C-alpha coordinates, and motif indices. All keys in the file are used for training. File with extensions [json]"
          example: "enzygen2_example_finetune.json"
          format: binary
        proteinTask:
          type: string
          description: "An NCBI taxonomy ID present in your JSON file. Used as the primary taxonomy embedding for the finetuned model (e.g. '77133'). The JSON may contain multiple keys — all are used for training."
          example: "77133"
        epochs:
          type: number
          description: "Maximum number of training epochs"
          minimum: 1
          maximum: 200
          default: 50
        learningRate:
          type: number
          default: 5e-05
        maxUpdate:
          type: number
          default: 300000
        dropout:
          type: number
          description: "Dropout rate during training (0.0 to 1.0)"
          default: 0.3

    # Enzygen2-Inference Settings
    Enzygen2InferenceSettings:
      type: object
      required:
        - pdbFile
        - chain
        - motif
        - ncbiId
        - numDesigns
      properties:
        pdbFile:
          type: string
          description: "PDB or CIF file of the reference enzyme structure File with extensions [pdb]"
          example: "3DWZ.pdb"
          format: binary
        chain:
          type: string
          description: "Chain to use for enzyme design"
          example: "A"
        motif:
          type: string
          description: "Functionally important residue positions to keep fixed during design (active site, catalytic residues, etc.)"
          example: "49,51,52,57,58,59,60,61,66,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,90,92,93,94,95,97,103,107,109,113,118,119,120,121,123,124,125,126,127,128,129,130,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,168,169,172,173,175,177,178,179,182,183,184,185,186,190,191,192,193,194,195,196,197,198,199,203,206,209,211,212,213,214,215,220,221,222,223,224,225,226,227,230,231,232,233,237,238,239,240,242,243,245,247,249,250,251,252,254,256,257,260,261,262,263,264,265,266,272,274,277,281,288,289,294,295,296,297,298,299"
        ncbiId:
          type: string
          description: "NCBI taxonomic identifier for the target organism (e.g. 83332 for Mycobacterium tuberculosis, 562 for E. coli)"
          example: "83332"
        numDesigns:
          type: integer
          description: "Number of enzyme variants to generate"
          default: 1
        decodingStrategy:
          type: string
          description: "Sampling strategy for sequence generation"
          default: "top-p"
          enum:
            - "greedy"
            - "top-k"
            - "top-p"
        toppProbability:
          type: number
          description: "Cumulative probability threshold for nucleus sampling (lower = more conservative)"
          minimum: 0.01
          maximum: 1
          default: 0.4

    # Equidock Settings
    EquidockSettings:
      type: object
      required:
        - receptorFile
        - ligandFile
      properties:
        receptorFile:
          type: string
          description: "pdb structure file for your receptor File with extensions [pdb]"
          format: binary
        ligandFile:
          type: string
          description: "pdb structure file for your ligand File with extensions [pdb]"
          format: binary

    # Esm-Embeddings Settings
    EsmEmbeddingsSettings:
      type: object
      required:
        - sequence
      properties:
        model:
          type: string
          description: "Model size to use for embeddings"
          default: "esm2_t33_650M_UR50D"
          enum:
            - "esm2_t6_8M_UR50D"
            - "esm2_t12_35M_UR50D"
            - "esm2_t30_150M_UR50D"
            - "esm2_t33_650M_UR50D"
            - "esm2_t36_3B_UR50D"
            - "esm2_t48_15B_UR50D"
        sequence:
          type: string
          description: "Sequence to compute embedding"
          example: "QIVLTQSPAIMSASPGEKVTMTCSASSSVSYMNWYQQKSGTSPKRWIYDTSKLASGVPAHFRGSGSGTSYSLTISGMEAEDAATYYCQQWSSNPFTFGSGTKLEIN"
        outputFormat:
          type: string
          description: "Format to save embeddings in"
          default: "pt"
          enum:
            - "pt"
            - "json"
        sequenceBatching:
          type: boolean
          description: "Batch process the input sequences"
          default: False
        sequenceBatchSize:
          type: number
          description: "Determines the number of sequences in each batch"

    # Esm-If1 Settings
    EsmIf1Settings:
      type: object
      required:
        - pdbFile
        - chain
        - designedResidues
      properties:
        pdbFile:
          type: string
          description: "Protein structure file to be designed (Please make sure that the indices are numbered from 1 to N) File with extensions [pdb]"
          example: "3htn_renum.pdb"
          format: binary
        chain:
          type: string
          description: "Chain ID to be designed"
          example: "A"
        designedResidues:
          type: string
          example: "62-70"
        numSequences:
          type: number
          description: "Number of sequences to be generated for the protein backbone"
          default: 10

    # Esm-Scan Settings
    EsmScanSettings:
      type: object
      required:
        - sequence
      properties:
        sequence:
          type: string
          description: "Sequence to score point mutations"
          example: "QIVLTQSPAIMSASPGEKVTMTCSASSSVSYMNWYQQKSGTSPKRWIYDTSKLASGVPAHFRGSGSGTSYSLTISGMEAEDAATYYCQQWSSNPFTFGSGTKLEIN"

    # Esm2 Settings
    Esm2Settings:
      type: object
      required:
        - task
        - sequence
        - maskedResidues
      properties:
        task:
          type: string
          default: "mask"
          enum:
            - "mask"
            - "scan"
        sequence:
          type: string
          example: "EVQLVQSGPEVKKPGTSVKVSCKASGFTFMSSAVQWVRQARGQRLEWIGWIVIGSGNTNYAQKFQERVTITRDMSTSTAYMELSSLRSEDTAVYYCAAPYCSSISCNDGFDIWGQGTMVTVS"
        maskedResidues:
          type: string
          example: "25 26 27 28 29 30 31 32"

    # Esmfold Settings
    EsmfoldSettings:
      type: object
      required:
        - sequence
      properties:
        sequence:
          type: string
          description: "Protein amino acid sequence, place a : between chains for multimers"
          example: "MALKSLVLLSLLVLVLLLVRVQPSLGKETAAAKFERQHMDSSTSAASSSNYCNQMMKSRNLTKDRCKPVNTFVHESLADVQAVCSQKNVACKNGQTNCYQSYSTMSITDCRETGSSKYPNCAYKTTQANKHIIVACEGNPYVPVHFDASV"

    # Evcouplings Settings
    EvcouplingsSettings:
      type: object
      required:
        - sequence
      properties:
        sequence:
          type: string
          description: "Protein amino acid sequence"
          example: "MALKSLVLLSLLVLVLLLVRVQPSLGKETAAAKFERQHMDSSTSAASSSNYCNQMMKSRNLTKDRCKPVNTFVHESLADVQAVCSQKNVACKNGQTNCYQSYSTMSITDCRETGSSKYPNCAYKTTQANKHIIVACEGNPYVPVHFDASV"
          maxLength: 5000

    # Evo2 Settings
    Evo2Settings:
      type: object
      required:
        - task
        - sequence
        - seed
      properties:
        task:
          type: string
          default: "generate"
          enum:
            - "generate"
            - "embeddings"
        model:
          type: string
          description: "Parameter scale of the Evo 2 model"
          default: "7b"
          enum:
            - "7b"
            - "20b"
            - "40b"
        embeddingLayer:
          type: string
          description: "Model layer to extract embeddings from [Only available when task is one of embeddings]"
          default: "blocks.28.mlp.l3"
        sequence:
          type: string
          description: "DNA sequence for which to calculate embeddings [Only available when task is one of embeddings]"
          example: "ATGAGCGATATCGCTCTGGTGATGAACGAATTCCAGGCGCTGGGGCTGACCGACAAACCTGCCGATCTGGCAGATATCGCGCGCGTGAAAGAGATGAAAGAGGCCGAAGCCCGCGAACGCATT"
        seed:
          type: string
          description: "DNA seed sequence to prompt the model for generation [Only available when task is one of generate]"
          example: "ATGAGCGATATCGCTCTGGTGATGAACGAATTCCAGGCGCTGGGGCTGACCGACAAACCTGCCGATCTGGCAGATATCGCGCGCGTGAAAGAGATGAAAGAGGCCGAAGCCCGCGAACGCATT"
        length:
          type: number
          description: "Number of tokens (nucleotides) to generate [Only available when task is one of generate]"
          default: 200
        numSequences:
          type: number
          description: "Number of sequences to generate [Only available when task is one of generate]"
          default: 10
        temperature:
          type: number
          description: "Controls randomness of generation. Higher values produce more diverse sequences. [Only available when task is one of generate]"
          default: 1
        topK:
          type: number
          description: "Limits sampling to the top K most likely tokens at each step [Only available when task is one of generate]"
          default: 4
        topP:
          type: number
          description: "Nucleus sampling threshold. Limits sampling to tokens with cumulative probability up to this value. [Only available when task is one of generate]"
          default: 1

    # Evonb Settings
    EvonbSettings:
      type: object
      required:
        - sequence
      properties:
        sequence:
          type: string
          description: "Sequence"
          example: "QVQLVESGGGLVQSGGSLRLSCAASGSIFRTTGMNWYRQTPEKQREWVALITSHGTTSYAASVEGRFTISRDSAGTTVYLQMNSLKPEDAGVYYCTTRGYWGQGTQVTVSS"

    # Evopro Settings
    EvoproSettings:
      type: object
      required:
        - receptorSequence
        - binderSequence
        - binderDesignedResidues
        - receptorContactResidues
      properties:
        receptorSequence:
          type: string
          example: "WNPPTFSPALLVVTEGDNATFTCSFSNTSESFHVVWHRESPSGQTDTLAAFPEDRSQPGQDSRFRVTQLPNGRDFHMSVVRARRNDSGTYVCGVISLAPKIQIKESLRAELRVTERRAE"
        binderSequence:
          type: string
          example: "DEKEELLRELQEKIPDPRVREVLELAIKLLEDGVPPEEIKKLIEKLVKELGLPPEVLELVEKIVK"
        binderDesignedResidues:
          type: string
          example: "B1-B65"
        receptorContactResidues:
          type: string
          example: "A31-A58,A88-A108"

    # Evoprotgrad Settings
    EvoprotgradSettings:
      type: object
      required:
        - sequence
      properties:
        sequence:
          type: string
          description: "Amino acid sequence to be mutated"
          example: "KETAAAKFERQHMDSSTSAASSSNYCNQMMKSRNLTKDRCKPVNTFVHESLADVQAVCSQKNVACKNGQTNCYQSYSTMSITDCRETGSSKYPNCAYKTTQANKHIIVACEG"
        numDesigns:
          type: integer
          description: "Number of designs to generate"
          default: 1
        maxMutations:
          type: number
          description: "Maximum number of mutations in a design"
          default: 10
        numSteps:
          type: number
          description: "Number of steps to evolve the protein for"
          default: 20

    # Fampnn Settings
    FampnnSettings:
      type: object
      required:
        - pdbFile
        - chains
      properties:
        pdbFile:
          type: string
          description: "Protein structure file to design with FAMPNN File with extensions [pdb]"
          example: "9f6o.pdb"
          format: binary
        numSamples:
          type: number
          description: "Number of designed sequences and packed structures to generate for each input backbone"
          minimum: 1
          maximum: 1000
          default: 2
        temperature:
          type: number
          description: "Sampling temperature for sequence design. Higher values increase diversity."
          minimum: 0
          maximum: 1
          default: 0.1
        samplingSteps:
          type: number
          description: "Number of FAMPNN sequence denoising steps to run during design"
          minimum: 1
          maximum: 200
          default: 100
        chains:
          type: array
          items:
            type: string
          description: "Select the input PDB chains to include in FAMPNN design. Fixed residue selections below only apply to these chains."
          example: ["A"]
        fixedSequenceResidues:
          type: object
          description: "Optional chain-aware residues to keep fixed during design"
          example: {'A': '165-190 200-210'}
          default: {}
        fixedSidechainResidues:
          type: object
          description: "Optional chain-aware residues whose input sidechains should be preserved. These positions must be a subset of Fixed Sequence Residues."
          example: {'A': '170-180'}
          default: {}

    # Fastsolv Settings
    FastsolvSettings:
      type: object
      required:
        - solventSmiles
        - soluteSmiles
      properties:
        solventSmiles:
          type: string
          example: "CO"
        soluteSmiles:
          type: string
          example: "CC(=O)Nc1ccc(O)cc1"
        temperature:
          type: number
          default: 298

    # File-Converter Settings
    FileConverterSettings:
      type: object
      required:
        - inputFileType
        - pdbFile
        - cifFile
        - sdfFile
        - smilesStrings
      properties:
        inputFileType:
          type: string
          default: "pdb"
          enum:
            - "pdb"
            - "cif"
            - "sdf"
            - "smiles"
        pdbFile:
          type: string
          description: "PDB file to convert to CIF File with extensions [pdb] [Only available when inputFileType is one of pdb]"
          format: binary
        cifFile:
          type: string
          description: "CIF file to convert to PDB File with extensions [cif] [Only available when inputFileType is one of cif]"
          format: binary
        sdfFile:
          type: string
          description: "SDF file to convert to SMILES File with extensions [sdf] [Only available when inputFileType is one of sdf]"
          format: binary
        smilesStrings:
          type: string
          description: "SMILES strings to conver to SDF [Only available when inputFileType is one of smiles]"
          default: []

    # Fixbb Settings
    FixbbSettings:
      type: object
      required:
        - pdbFile
        - chain
        - numDesigns
      properties:
        pdbFile:
          type: string
          description: "Protein structure in pdb format, should be File with extensions [pdb]"
          example: "1haz.pdb"
          format: binary
        chain:
          type: string
          example: "B"
        designedResidues:
          type: string
          description: "Residues to design in the original pdb"
          example: "26-32"
        numDesigns:
          type: integer
          description: "Number of sequences to produce"
          default: 1
        numRecycles:
          type: number
          description: "Number of times to recycle outputs back through structure prediction process for refined results"
          minimum: 0
          maximum: 20
          default: "0"
        dropout:
          type: boolean
          default: True
        recycle_mode:
          type: string
          description: "\"last\" - use loss from last recycle, \"average\" - compute and average at each recycle, \"sample\" - same as last, different # iterations each time, \"first\" - use first recycle, \"add_prev\" - average outputs, \"backprop\" - backprop through recycles"
          default: "last"
          enum:
            - "last"
            - "average"
            - "sample"
            - "first"
            - "add_prev"
            - "backprop"
        useTemplates:
          type: boolean
          description: "Enable template structure usage for improved predictions"
          default: False
        enableTemplateMasking:
          type: boolean
          description: "Apply selective template masking to allow free design in unfixed regions while maintaining structural anchors in fixed regions"
          default: False

    # Flowdock Settings
    FlowdockSettings:
      type: object
      required:
        - pdbFile
        - sequence
        - smiles
      properties:
        pdbFile:
          type: string
          format: binary
        sequence:
          type: string
          description: "Protein sequence input, with chains separated by \":\""
        smiles:
          type: string

    # Foldmason Settings
    FoldmasonSettings:
      type: object
      required:
        - proteinFiles
      properties:
        proteinFiles:
          type: string
          description: "Pdb/cif files or zip file containing pdb/cif files to align File with extensions [pdb, cif, zip]"
          format: binary

    # Foldseek Settings
    FoldseekSettings:
      type: object
      required:
        - task
        - database
        - pdbFile
        - fastaFile
        - customSearchDbFiles
        - customFastaDbFiles
        - proteinFiles
      properties:
        task:
          type: string
          description: "Search or cluster structures"
          default: "search"
          enum:
            - "search"
            - "cluster"
        database:
          type: string
          description: "Database to search against [Only available when task is one of search]"
          default: "pdb"
          enum:
            - "pdb"
            - "alphafold-uniprot"
            - "alphafold-uniprot50"
            - "alphafold-swiss-prot"
            - "alphafold-proteome"
            - "esmatlas30"
            - "custom"
            - "custom-fasta"
        pdbFile:
          type: string
          description: "Protein structure file to search with File with extensions [pdb] [Only available when task is one of search]"
          format: binary
        fastaFile:
          type: string
          description: "Protein sequence file to search with (uses ProstT5 for 3Di prediction) File with extensions [fasta, fa] [Only available when task is one of search]"
          format: binary
        multimer:
          type: boolean
          default: False
        customSearchDbFiles:
          type: string
          description: "Pdb files or zip file containing pdb files to search File with extensions [pdb, zip, /, *]"
          format: binary
        customFastaDbFiles:
          type: string
          description: "FASTA files containing protein sequences to create a custom database using ProstT5 for 3Di prediction. Creates a structural database directly from sequences without requiring PDB structures. File with extensions [fasta, fa, zip, /, *]"
          format: binary
        proteinFiles:
          type: string
          description: "Pdb files or zip file containing pdb files to cluster File with extensions [pdb, zip] [Only available when task is one of cluster]"
          format: binary
        customOutputColumns:
          type: boolean
          description: "Choose specific output columns (default columns used if unchecked) [Only available when task is one of search]"
          default: False
        outputColumns:
          type: string
          description: "Select specific output columns for the results [Only available when task is one of search]"
          enum:
            - "query"
            - "target"
            - "evalue"
            - "pident"
            - "fident"
            - "alnlen"
            - "mismatch"
            - "gapopen"
            - "qstart"
            - "qend"
            - "tstart"
            - "tend"
            - "qlen"
            - "tlen"
            - "bits"
            - "qcov"
            - "tcov"
            - "qseq"
            - "tseq"
            - "qaln"
            - "taln"
            - "qheader"
            - "theader"
            - "qframe"
            - "tframe"
            - "cigar"
            - "qset"
            - "tset"
            - "tsetid"
            - "empty"
            - "qca"
            - "tca"
            - "alntmscore"
            - "qtmscore"
            - "ttmscore"
            - "u"
            - "t"
            - "lddt"
            - "lddtfull"
            - "prob"
        outputColumnsMultimer:
          type: string
          description: "Select specific output columns for the results [Only available when task is one of search]"
          enum:
            - "query"
            - "target"
            - "evalue"
            - "pident"
            - "fident"
            - "alnlen"
            - "mismatch"
            - "gapopen"
            - "qstart"
            - "qend"
            - "tstart"
            - "tend"
            - "qlen"
            - "tlen"
            - "bits"
            - "qcov"
            - "tcov"
            - "qseq"
            - "tseq"
            - "qaln"
            - "taln"
            - "qheader"
            - "theader"
            - "qframe"
            - "tframe"
            - "cigar"
            - "qset"
            - "tset"
            - "tsetid"
            - "empty"
            - "qca"
            - "tca"
            - "alntmscore"
            - "qtmscore"
            - "ttmscore"
            - "u"
            - "t"
            - "lddt"
            - "lddtfull"
            - "prob"
            - "complexqtmscore"
            - "complexttmscore"
            - "complexu"
            - "complext"
            - "qcomplexcoverage"
            - "tcomplexcoverage"
            - "qchaintms"
            - "tchaintms"
            - "qchains"
            - "tchains"
            - "interfacelddt"
            - "complexassignid"
        sensitivityToSpeed:
          type: number
          description: "Adjust sensitivity to speed trade-off; lower is faster, higher more sensitive [Only available when task is one of search]"
          minimum: 4
          maximum: 15
          default: 9.5
        maxSeqs:
          type: number
          description: "Adjust the amount of prefilter handed to alignment; increasing it can lead to more hits [Only available when task is one of search]"
          minimum: 100
          maximum: 10000
          default: 1000
        evalue:
          type: number
          description: "List matches below this E-value; increasing it reports more distant structures [Only available when task is one of search]"
          minimum: 0
          default: 0.001
        alignmentType:
          type: string
          description: "How to compute alignment [Only available when task is one of search]"
          default: "2"
          enum:
            - "0"
            - "1"
            - "2"
        coverage:
          type: number
          description: "List matches above this fraction of aligned (covered) residues; higher coverage = more global alignment [Only available when task is one of search]"
          minimum: 0
          maximum: 1
          default: 0

    # Fpocket Settings
    FpocketSettings:
      type: object
      required:
        - pdbFile
      properties:
        pdbFile:
          type: string
          description: "Protein to identify pocket on File with extensions [pdb]"
          example: "4N0Y_receptor_1.pdb"
          format: binary

    # Frameflow Settings
    FrameflowSettings:
      type: object
      required:
        - pdbFile
        - contigs
        - chain
      properties:
        pdbFile:
          type: string
          description: "Pdb structure file to scaffold File with extensions [pdb]"
          example: "3HTN.pdb"
          format: binary
        contigs:
          type: string
          description: "String describing fixed and variable regions of protein, see https://www.tamarind.bio/frameflow to generate contigs for your task"
          example: "10-40,A100-120,10-40"
        chain:
          type: string
          description: "Chain to design"
          example: "A"
        numDesigns:
          type: number
          description: "Number of designs to generate (1-16)"
          default: 1

    # Frequency-Analysis Settings
    FrequencyAnalysisSettings:
      type: object
      required:
        - inputType
        - smiles
        - sdfFile
        - xyzFile
      properties:
        inputType:
          type: string
          description: "How to provide your molecule"
          default: "smiles"
          enum:
            - "smiles"
            - "sdf"
            - "xyz"
        smiles:
          type: string
          description: "SMILES string of the molecule [Only available when inputType is one of smiles]"
          example: "CCO"
        sdfFile:
          type: string
          description: "SDF/MOL file with 3D coordinates File with extensions [sdf] [Only available when inputType is one of sdf]"
          format: binary
        xyzFile:
          type: string
          description: "Pre-optimized XYZ file (recommended: use output from geometry optimization) File with extensions [xyz] [Only available when inputType is one of xyz]"
          format: binary
        method:
          type: string
          description: "xtb-gfn2: fast semiempirical (~10s). r2scan-3c: composite DFT (~3min). b3lyp/wb97x-d3: full DFT (~10-30min)"
          default: "xtb-gfn2"
          enum:
            - "xtb-gfn2"
            - "r2scan-3c"
            - "b3lyp"
            - "wb97x-d3"
        basisSet:
          type: string
          description: "Basis set for DFT methods. Use -d (diffuse) variants for anions"
          default: "def2-svp"
          enum:
            - "def2-svp"
            - "def2-svpd"
            - "def2-tzvp"
            - "def2-tzvpd"
            - "6-31g*"
        charge:
          type: number
          description: "Net molecular charge"
          default: 0
        multiplicity:
          type: number
          description: "Spin multiplicity (2S+1)"
          default: 1
        solvent:
          type: string
          description: "Implicit solvation environment"
          default: "none"
          enum:
            - "none"
            - "water"
            - "acetonitrile"
            - "dmso"
            - "methanol"
            - "ethanol"
            - "chloroform"
            - "toluene"
            - "thf"
            - "dichloromethane"
        temperature:
          type: number
          description: "Temperature for thermochemical corrections (default 298.15 K = 25 C)"
          default: 298.15
        pressure:
          type: number
          description: "Pressure for thermochemical corrections (default 1 atm)"
          default: 1
        scaleFrequencies:
          type: number
          description: "Empirical scaling factor for computed frequencies (e.g. 0.9614 for B3LYP/6-31G*). 1.0 = no scaling"
          default: 1
        preOptimize:
          type: boolean
          description: "Run geometry optimization before frequency analysis. Recommended unless input is already optimized"
          default: True

    # Fukui Settings
    FukuiSettings:
      type: object
      required:
        - inputType
        - smiles
        - sdfFile
        - xyzFile
      properties:
        inputType:
          type: string
          description: "Type of input to use File with extensions [sdf]"
          default: "smiles"
          enum:
            - "smiles"
            - "sdf"
            - "xyz"
        smiles:
          type: string
          example: "CC(=O)c1ccc(O)cc1"
        sdfFile:
          type: string
          example: "c1cc(O)ccc1C(=O)C (Neutral Structure).sdf"
          format: binary
        xyzFile:
          type: string
          format: binary
        charge:
          type: number
          description: "Charge of the molecule"
          default: 0
        pcmWater:
          type: boolean
          description: "Enable implicit water solvation using PCM model for more realistic aqueous environment calculations"
          default: False

    # G-Mmpbsa Settings
    GMmpbsaSettings:
      type: object
      required:
        - topologyFile
        - trajectoryFile
        - groupDefinition
        - indexFile
        - receptorGroup
        - ligandGroup
        - receptorSelection
        - ligandSelection
      properties:
        topologyFile:
          type: string
          description: "GROMACS run input file containing topology and simulation parameters File with extensions [tpr]"
          format: binary
        trajectoryFile:
          type: string
          description: "Trajectory file from your MD simulation File with extensions [xtc]"
          format: binary
        groupDefinition:
          type: string
          default: "index-file"
          enum:
            - "index-file"
            - "specify-groups"
        indexFile:
          type: string
          description: "Index file defining group names for receptor and ligand File with extensions [ndx] [Only available when groupDefinition is one of index-file]"
          format: binary
        receptorGroup:
          type: string
          description: "Group name in index file corresponding to the receptor [Only available when groupDefinition is one of index-file]"
          example: "Protein"
        ligandGroup:
          type: string
          description: "Group name in index file corresponding to the ligand [Only available when groupDefinition is one of index-file]"
          example: "BEC"
        receptorSelection:
          type: string
          description: "Define receptor by residue ranges only. Format: '1-100' or '1-50,60-120' for multiple ranges. [Only available when groupDefinition is one of specify-groups]"
          example: "1-250"
        ligandSelection:
          type: string
          description: "Define ligand by residue ranges only. Format: '300-350' or multiple ranges separated by commas. [Only available when groupDefinition is one of specify-groups]"
          example: "300-350"
        proteinDielectric:
          type: number
          description: "Dielectric constant used in Poisson–Boltzmann calculations"
          default: 2

    # Gbsa Settings
    GbsaSettings:
      type: object
      required:
        - task
        - proteinFile
        - ligandFile
        - complexFile
        - receptorChains
        - binderChains
        - method
        - mode
      properties:
        task:
          type: string
          default: "protein-ligand"
          enum:
            - "protein-ligand"
            - "protein-protein"
        proteinFile:
          type: string
          example: "6w70.pdb"
          format: binary
        ligandFile:
          type: string
          description: "Ligand SDF or MOL2 file File with extensions [sdf, mol2] [Only available when task is one of protein-ligand]"
          example: "6w70_ligand.sdf"
          format: binary
        complexFile:
          type: string
          description: "PDB file containing the protein-protein complex File with extensions [pdb] [Only available when task is one of protein-protein]"
          format: binary
        receptorChains:
          type: array
          items:
            type: string
          description: "Chain IDs of the receptor protein [Only available when task is one of protein-protein]"
          example: ["A"]
        binderChains:
          type: array
          items:
            type: string
          description: "Chain IDs of the binder protein [Only available when task is one of protein-protein]"
          example: ["B"]
        method:
          type: string
          description: "Solvation model for binding free energy calculation"
          default: "gb"
          enum:
            - "gb"
            - "pb"
        mode:
          type: string
          description: "Energy minimization uses the input pose directly. MD runs a full molecular dynamics simulation."
          default: "em"
          enum:
            - "em"
            - "md"
        nsteps:
          type: number
          description: "Number of MD simulation steps"
          default: 500000
        eqsteps:
          type: number
          description: "Number of equilibration (NVT/NPT) steps before production MD"
          default: 50000
        nframe:
          type: number
          description: "Number of trajectory frames to save and score"
          default: 100

    # Gems Settings
    GemsSettings:
      type: object
      required:
        - pdbFile
        - sdfFile
      properties:
        pdbFile:
          type: string
          description: "PDB file containing the protein structure File with extensions [pdb]"
          example: "1a30.pdb"
          format: binary
        sdfFile:
          type: string
          description: "SDF file containing the bound ligand 3D structure File with extensions [sdf]"
          example: "1a30.sdf"
          format: binary

    # Geometry-Optimization Settings
    GeometryOptimizationSettings:
      type: object
      required:
        - inputType
        - smiles
        - sdfFile
      properties:
        inputType:
          type: string
          description: "Type of input to use File with extensions [sdf]"
          default: "smiles"
          enum:
            - "smiles"
            - "sdf"
        smiles:
          type: string
          example: "CC(=O)c1ccc(O)cc1"
        sdfFile:
          type: string
          example: "c1cc(O)ccc1C(=O)C (Neutral Structure).sdf"
          format: binary

    # Germinal Settings
    GerminalSettings:
      type: object
      required:
        - task
        - targetPdb
        - targetChain
        - binderPdb
        - binderChain
        - cdrLengths
        - fwLengths
        - vhFirst
        - vhLen
        - vlLen
      properties:
        task:
          type: string
          default: "VHH"
          enum:
            - "VHH"
            - "scFv"
        targetPdb:
          type: string
          description: "Protein structure of your target File with extensions [pdb]"
          example: "pdl1_germinal.pdb"
          format: binary
        targetChain:
          type: string
          description: "Target chain to design a binder to"
          example: "A"
        hotspotResidues:
          type: string
          description: "Specify hotspot residues on your target protein for the VHH/scFv binder to focus on during design. Enter residue numbers separated by commas (e.g., 305,456)."
          example: "37,39,41,96,98"
          default: ""
        framework:
          type: string
          description: "Choose from generic nanobody/scfv frameworks from Germinal paper or upload your own"
          example: {'scFv': 'generic', 'VHH': 'generic'}
          default: {'scFv': 'generic', 'VHH': 'generic'}
          enum:
            - "generic"
            - "custom"
        binderPdb:
          type: string
          description: "Antibody framework that we wish to use for our design. Germinal will only design the structure and sequence of regions of the framework which are annotated as CDRs. This structure does not have to be in a bound pose. File with extensions [pdb]"
          example: {'scFv': 'scfv.pdb', 'VHH': 'nb.pdb'}
          format: binary
        binderChain:
          type: string
          description: "Binder chain to design CDRs for"
          example: "A"
        cdrLengths:
          type: string
          description: "Provide a comma seperated list of CDR region lengths of the nanobody/scFv (ex. 11,8,18 means HCDR1 is 11 residues, HCDR2 is 8 residues, and HCDR3 is 18 residues). scFvs require 6 lengths to be defined (for heavy, then light chains)"
          example: {'scFv': '8,8,13,6,6,9', 'VHH': '11,8,18'}
        fwLengths:
          type: string
          description: "Provide a comma seperated list of framework region lengths of the nanobody/scFv (ex. 25,17,38,14 means HFW1 is 25 residues, HFW2 is 17 residues, HFW3 is 38 residues, and HFW4 is 14 residues). For scFvs, specify HFW1, HFW2, HFW3, HFW4+linker+LFR1, LFR2, LFR3, LFR4."
          example: {'scFv': '25,17,38,52,17,33,10', 'VHH': '25,17,38,14'}
        vhFirst:
          type: boolean
          description: "Specify whether the heavy chain is first in the sequence. [Only available when task is one of scFv]"
          example: True
          default: True
        vhLen:
          type: number
          description: "Length of the variable heavy domain. For scFvs, include the linker in the VH Length. [Only available when task is one of scFv]"
          example: {'scFv': 120}
        vlLen:
          type: number
          description: "Length of the variable light domain. [Only available when task is one of scFv]"
          example: {'scFv': 108}
        rosetta:
          type: boolean
          description: "Get in touch at info@tamarind.bio if you have a license and would like to use Germinal with Rosetta"
          default: False
        numDesigns:
          type: integer
          description: "Number of designs to generate. Germinal will generate designs until one is accepted or the job times out."
          default: 1
        omitAAs:
          type: string
          description: "Comma seperated list of amino acids to omit from the design"
          default: "C"

    # Gnina Settings
    GninaSettings:
      type: object
      required:
        - proteinFile
        - ligandFile
        - boxX
        - boxY
        - boxZ
        - width
        - height
        - depth
      properties:
        proteinFile:
          type: string
          example: "1iep.pdb"
          format: binary
        ligandFile:
          type: string
          description: "sdf structure file for your receptor File with extensions [sdf]"
          example: "Conformer3D_COMPOUND_CID_5291.sdf"
          format: binary
        boxX:
          type: number
          description: "X coordinate of bounding box center"
          example: "15.190"
          default: 35
        boxY:
          type: number
          description: "Y coordinate of bounding box center"
          example: "53.903"
          default: 27
        boxZ:
          type: number
          description: "Z coordinate of bounding box center"
          example: "16.917"
          default: 35
        width:
          type: number
          description: "Width of bounding box"
          example: "20"
          default: 20
        height:
          type: number
          description: "Height of bounding box"
          example: "20"
          default: 20
        depth:
          type: number
          description: "Depth of bounding box"
          example: "20"
          default: 20
        cnnScoring:
          type: string
          description: "Amount of CNN scoring to use (metrorescore = metropolis+rescore, metrorefine = metropolis + refine"
          default: "rescore"
          enum:
            - "none"
            - "rescore"
            - "refinement"
            - "metrorefine"
        wholeProtein:
          type: boolean
          description: "Select to search the whole receptor for a binding pose. If true, box coordinates and size will be ignored"
          default: False
        exhaustiveness:
          type: number
          description: "Adjusts the amount of computational effort used during a docking experiment - increasing this to 32 will give a more consistent docking result"
          default: 8
        scoreOnly:
          type: boolean
          description: "Score the provided ligand pose without docking. Returns CNN affinity and pose score for the input conformation as-is."
          default: False

    # Gromacs Settings
    GromacsSettings:
      type: object
      required:
        - systemType
        - uploadType
        - pdbFile
        - pdbID
        - proteinFile
        - ligandFile
        - forceField
      properties:
        systemType:
          type: string
          description: "Type of system to be simulated"
          default: "protein"
          enum:
            - "protein"
            - "protein-ligand"
        uploadType:
          type: string
          description: "Whether to upload a pdb file or fetch from PDB File with extensions [pdb]"
          default: "upload"
          enum:
            - "upload"
            - "fetch"
        pdbFile:
          type: string
          format: binary
        pdbID:
          type: string
          description: "PDB ID to fetch structure from PDB File with extensions [pdb]"
        proteinFile:
          type: string
          format: binary
        ligandFile:
          type: string
          format: binary
        forceField:
          type: string
          description: "Force field to use for simulation"
          default: "amber99sb"
          enum:
            - "amber99sb"
            - "amber99sb-ildn"
            - "amber14sb"
        boxType:
          type: string
          default: "cubic"
          enum:
            - "cubic"
            - "dodecahedron"
            - "triclinic"
            - "octahedron"
        waterModel:
          type: string
          default: "tip3p"
          enum:
            - "tip3p"
            - "tip4p"
            - "spc"
        salt:
          type: number
          minimum: 0
          maximum: 1
          default: 0.15
        temp:
          type: number
          default: 300
        saveFreq:
          type: number
          description: "Time interval (ps) at which frame is taken from the trajectory"
          minimum: 1
          default: 10
        NVTEquilibrationTime:
          type: number
          minimum: 0
          default: 0.05
        NPTEquilibrationTime:
          type: number
          description: "Number of nanoseconds (ns) to run NPT equilibration"
          minimum: 0
          default: 0.05
        simulationTime:
          type: number
          description: "Number of nanoseconds (ns) to run production simulation"
          minimum: 0
          default: 1
        trajFormat:
          type: string
          default: "xtc"
          enum:
            - "xtc"
            - "pdb"
        numReplicas:
          type: integer
          description: "Number of replicas (independent simulations) to run in parallel"
          maximum: 5
          default: 1

    # Gromacs-Custom Settings
    GromacsCustomSettings:
      type: object
      required:
        - inputFiles
        - init
        - restPrefix
        - miniPrefix
        - equiPrefix
        - prodPrefix
        - prodStep
      properties:
        inputFiles:
          type: array
          items:
            type: string
          description: "Input files for MD simulation File with extensions [mdp, gro, top, ndx]"
          format: binary
        init:
          type: string
        restPrefix:
          type: string
        miniPrefix:
          type: string
        equiPrefix:
          type: string
        prodPrefix:
          type: string
        prodStep:
          type: string
        awsInstanceType:
          type: string
          example: "g4dn.xlarge"
        numInstances:
          type: string
          example: "2"

    # Hbond-Strength Settings
    HbondStrengthSettings:
      type: object
      required:
        - inputType
        - smiles
        - sdfFile
        - xyzFile
      properties:
        inputType:
          type: string
          description: "How to provide your molecule"
          default: "smiles"
          enum:
            - "smiles"
            - "sdf"
            - "xyz"
        smiles:
          type: string
          description: "SMILES string of the molecule [Only available when inputType is one of smiles]"
          example: "CC(=O)N"
        sdfFile:
          type: string
          description: "SDF/MOL file with 3D coordinates File with extensions [sdf] [Only available when inputType is one of sdf]"
          format: binary
        xyzFile:
          type: string
          description: "XYZ coordinate file (e.g. from geometry optimization) File with extensions [xyz] [Only available when inputType is one of xyz]"
          format: binary
        charge:
          type: number
          description: "Net molecular charge"
          default: 0
        multiplicity:
          type: number
          description: "Spin multiplicity (2S+1)"
          default: 1
        numConformers:
          type: number
          description: "Number of conformers to generate and screen before computing ESP. More conformers = better sampling but slower"
          default: 20

    # Highfold Settings
    HighfoldSettings:
      type: object
      required:
        - sequence
      properties:
        sequence:
          type: string
          description: "Include ':' to specify chain breaks for complex structure predictions"
          example: "SAKIDNLD"
        numModels:
          type: string
          description: "Number of models to be used, each generating a different prediction"
          default: "5"
          enum:
            - "1"
            - "2"
            - "3"
            - "4"
            - "5"
        numRecycles:
          type: number
          default: 3
        numRelax:
          type: number
          default: 0
        flag_nc:
          type: number
          default: 1

    # Hmmalign Settings
    HmmalignSettings:
      type: object
      required:
        - inputType
        - fastaFile
        - csvFile
        - sequenceColumn
      properties:
        inputType:
          type: string
          default: "fasta"
          enum:
            - "fasta"
            - "csv"
        fastaFile:
          type: string
          format: binary
        csvFile:
          type: string
          format: binary
        sequenceColumn:
          type: string

    # Humatch Settings
    HumatchSettings:
      type: object
      required:
        - heavySequence
        - lightSequence
      properties:
        heavySequence:
          type: string
          description: "Heavy sequence of your antibody"
          example: "QVQLQQSGAELARPGASVKMSCKASGYTFTRYTMHWVKQRPGQGLEWIGYINPSRGYTNYNQKFKDKATLTTDKSSSTAYMQLSSLTSEDSAVYYCARYYDDHYCLDYWGQGTTLTVSS"
        lightSequence:
          type: string
          description: "Light sequence of your antibody"
          example: "QIVLTQSPAIMSASPGEKVTMTCSASSSVSYMNWYQQKSGTSPKRWIYDTSKLASGVPAHFRGSGSGTSYSLTISGMEAEDAATYYCQQWSSNPFTFGSGTKLEIN"

    # Hypermpnn Settings
    HypermpnnSettings:
      type: object
      required:
        - pdbFile
        - designedResidues
      properties:
        pdbFile:
          type: string
          description: "Protein structure file to be designed File with extensions [pdb]"
          example: "3HTN.pdb"
          format: binary
        designedChains:
          type: array
          items:
            type: string
          description: "Chain IDs to be designed (rest will be fixed)"
          example: ["A"]
        designedResidues:
          type: object
          description: "Residues to design in your protein"
          example: {'A': '60 61 62 63 64 65 66'}
        numSequences:
          type: number
          description: "Number of sequences to be generated for each protein backbone"
          default: 2
        temperature:
          type: number
          description: "Model temperture - Suggested values 0.1, 0.15, 0.2, 0.25, 0.3. Higher values will lead to more diversity"
          minimum: 0
          maximum: 1
          default: 0.1
        noiseLevel:
          type: string
          description: "Select from models of various noise levels (A)"
          default: "0.2"
          enum:
            - "0.02"
            - "0.1"
            - "0.2"
            - "0.3"
        omitAAs:
          type: string
          description: "These amino acids will be avoided when generating sequences"
          default: "C"
        verifySequences:
          type: string
          description: "Automatically perform structure prediction on generated sequences for verification"
          enum:
            - "verify-alphafold"
            - "verify-chai"

    # Idr Settings
    IdrSettings:
      type: object
      required:
        - sequenceFragment
        - templateFile
      properties:
        sequenceFragment:
          type: string
          example: "FNCREWCWN"
          maxLength: 40
        templateFile:
          type: string
          description: "Template file to use for IDR analysis (ex. from walle library - https://github.com/drhicks/Kejia_peptide_binders/tree/7f65c18cc57b3e72d290c885c540276c7d9c6ab8/templates/walle) File with extensions [pdb]"
          example: "conf_2.pdb"
          format: binary

    # Igblast Settings
    IgblastSettings:
      type: object
      required:
        - inputType
        - organism
        - sequence
        - vGeneDatabase
        - dGeneDatabase
        - jGeneDatabase
      properties:
        inputType:
          type: string
          description: ""
          example: "Nucleotide"
          default: "Nucleotide"
          enum:
            - "Nucleotide"
            - "Amino Acid"
        organism:
          type: string
          description: ""
          default: "Human"
          enum:
            - "Human"
            - "Mouse"
            - "Rat"
            - "Rabbit"
            - "Rhesus Monkey"
        sequence:
          type: string
          description: " [Only available when inputType is one of Nucleotide, Amino Acid]"
          example: "GGGGGAGGCCTGGTCAAGCCTGGGGGGTCCCTGAGACTCTCCTGTGCAGCCTCTGGATTCCCCTTCAGTAACTACACCATGCACTGGGTCCGCCAGGCTCCAGGGAAGGGGCTGGAGTGGGTCTCATCCATTACTAGTAGTAGTAGTTACAGATATTACGCAGACTCAGTGGAGGGCCGATTCACCATCTCCAGAGACAACGCCAAGAACTCACTGTATCTGCAAATGAACAGCCTGAGAGCCGAGGACACGGCTGTGTATTTCTGTGTGAGAGATCGGGGCTATGATAGTAGTGGTTATTACGGAAATCTTGACTGCTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCA"
        vGeneDatabase:
          type: string
          description: "IMGT V genes for the selected organism"
          default: "IMGT V genes (F+ORF+in-frame P)"
          enum:
            - "IMGT V genes (F+ORF+in-frame P)"
        dGeneDatabase:
          type: string
          description: "IMGT D genes for the selected organism [Only available when inputType is one of Nucleotide]"
          default: "IMGT D genes (F+ORF)"
          enum:
            - "IMGT D genes (F+ORF)"
        jGeneDatabase:
          type: string
          description: "IMGT J genes for the selected organism [Only available when inputType is one of Nucleotide]"
          default: "IMGT J genes (F+ORF+in-frame P)"
          enum:
            - "IMGT J genes (F+ORF+in-frame P)"
        vMismatchPenalty:
          type: number
          description: " [Only available when inputType is one of Nucleotide]"
          default: -1
        minDMatches:
          type: number
          description: " [Only available when inputType is one of Nucleotide]"
          default: 5
        dMismatchPenalty:
          type: number
          description: " [Only available when inputType is one of Nucleotide]"
          default: 2
        alignmentExtension5:
          type: boolean
          description: " [Only available when inputType is one of Nucleotide]"
          default: False
        alignmentExtension3:
          type: boolean
          description: " [Only available when inputType is one of Nucleotide]"
          default: False

    # Igdesign Settings
    IgdesignSettings:
      type: object
      required:
        - task
        - pdbFile
        - heavyChain
        - lightChain
        - antigenChain
        - regions
        - condition_on_light_chain
        - condition_on_antigen
        - hcdr1Residues
        - hcdr2Residues
        - hcdr3Residues
        - lcdr1Residues
        - lcdr2Residues
        - lcdr3Residues
      properties:
        task:
          type: string
          description: "Antibody or nanobody input"
          example: "nanobody"
          default: "antibody"
          enum:
            - "antibody"
            - "nanobody"
        pdbFile:
          type: string
          description: "Antibody pdb to design sequences for File with extensions [pdb]"
          example: "9f6o.pdb"
          format: binary
        heavyChain:
          type: string
          description: "ID in pdb file of heavy chain"
          example: "B"
        lightChain:
          type: string
          description: "ID in pdb file of light chain [Only available when task is one of antibody]"
          example: "L"
        antigenChain:
          type: string
          description: "ID in pdb file of the antigen chain"
          example: "A"
        regions:
          type: string
          description: "Regions to mutate"
          example: ["hcdr3"]
          default: {'antibody': ['hcdr1', 'hcdr2', 'hcdr3', 'lcdr1', 'lcdr2', 'lcdr3'], 'nanobody': ['hcdr1', 'hcdr2', 'hcdr3']}
          enum:
            - "hcdr1"
            - "hcdr2"
            - "hcdr3"
            - "lcdr1"
            - "lcdr2"
            - "lcdr3"
        condition_on_light_chain:
          type: boolean
          description: "Condition design on light chain"
          default: False
        condition_on_antigen:
          type: boolean
          description: "Condition design on antigen"
          default: True
        numBatches:
          type: integer
          description: "Number of batches to design, each with 1000 designs"
          default: 1
        selectCDRIndices:
          type: boolean
          description: "Select which residues are in CDRs instead of automatically detecting CDRs. IMGT numbered CDRs will be used by default. "
          default: False
        hcdr1Residues:
          type: string
          description: "Residues to keep fixed in the original pdb (starting from 1)"
          default: ""
        hcdr2Residues:
          type: string
          description: "Residues to keep fixed in the original pdb (starting from 1)"
          default: ""
        hcdr3Residues:
          type: string
          description: "Residues to keep fixed in the original pdb (starting from 1)"
          default: ""
        lcdr1Residues:
          type: string
          description: "Residues to keep fixed in the original pdb (starting from 1) [Only available when task is one of antibody]"
          default: ""
        lcdr2Residues:
          type: string
          description: "Residues to keep fixed in the original pdb (starting from 1) [Only available when task is one of antibody]"
          default: ""
        lcdr3Residues:
          type: string
          description: "Residues to keep fixed in the original pdb (starting from 1) [Only available when task is one of antibody]"
          default: ""

    # Iggm Settings
    IggmSettings:
      type: object
      required:
        - type
        - antigenFile
        - antigenChain
        - heavySequence
        - lightSequence
      properties:
        type:
          type: string
          description: "Antibody or nanobody"
          default: "antibody"
          enum:
            - "antibody"
            - "nanobody"
        antigenFile:
          type: string
          description: "Antigen structure File with extensions [pdb]"
          example: "8hpu_M_N_A.pdb"
          format: binary
        antigenChain:
          type: string
          description: "Antigen chain"
          example: "A"
        epitopeResidues:
          type: string
          description: "Epitope residues"
        heavySequence:
          type: string
          description: "Heavy chain sequence - use X for CDR regions"
          example: "VQLVESGGGLVQPGGSLRLSCAASXXXXXXXYMNWVRQAPGKGLEWVSVVXXXXXTFYTDSVKGRFTISRDNSKNTLYLQMNSLRAEDTAVYYCARXXXXXXXXXXXXXXWGQGTMVTVSS"
        lightSequence:
          type: string
          description: "Light chain sequence - use X for CDR regions"
          example: "DIQMTQSPSSLSASVGDRVSITCXXXXXXXXXXXWYQQKPGKAPKLLISXXXXXXXGVPSRFSGSGSGTDFTLTITSLQPEDFATYYCXXXXXXXXXXXFGGGTKVEIK"
        numDesigns:
          type: integer
          description: "Number of designs to generate"
          default: 1

    # Immunebuilder Settings
    ImmunebuilderSettings:
      type: object
      required:
        - modelType
        - sequence1
        - sequence2
      properties:
        modelType:
          type: string
          default: "Antibody"
          enum:
            - "Antibody"
            - "Nanobody"
            - "TCR"
        sequence1:
          type: string
          description: "Protein sequence of heavy chain (for Antibody or Nanobody task) or alpha chain (for TCR task) to predict structure [Only available when modelType is one of Antibody, Nanobody, TCR]"
          example: "EVQLVESGGGVVQPGGSLRLSCAASGFTFNSYGMHWVRQAPGKGLEWVAFIRYDGGNKYYADSVKGRFTISRDNSKNTLYLQMKSLRAEDTAVYYCANLKDSRYSGSYYDYWGQGTLVTVS"
        sequence2:
          type: string
          description: "Protein sequence of light chain (for Antibody task) or beta chain (for TCR task) to predict structure [Only available when modelType is one of Antibody, TCR]"
          example: "VIWMTQSPSSLSASVGDRVTITCQASQDIRFYLNWYQQKPGKAPKLLISDASNMETGVPSRFSGSGSGTDFTFTISSLQPEDIATYYCQQYDNLPFTFGPGTKVDFK"

    # Intercaat Settings
    IntercaatSettings:
      type: object
      required:
        - pdbFile
        - queryChain
        - interactingChain
      properties:
        pdbFile:
          type: string
          description: "PDB file containing protein complex to analyze interfaces File with extensions [pdb]"
          example: "1cph.pdb"
          format: binary
        queryChain:
          type: string
          description: "Chain identifier for the query chain. Can also specify specific residues (e.g., 'A,6,7,8,9')"
          example: "B"
        interactingChain:
          type: string
          description: "Chain identifier(s) for the interacting chain(s). Use single letter or comma-separated list"
          example: "A"
        displayCompatibility:
          type: boolean
          description: "Show compatibility matrix of interface residues and their interactions"
          default: True
        displayContacts:
          type: boolean
          description: "Show detailed atomic interaction information"
          default: True
        searchRadius:
          type: number
          description: "Search radius for identifying atomic contacts (default 1.7Å if not specified)"
          minimum: 1
          maximum: 5
          default: 1.7

    # Intfold Settings
    IntfoldSettings:
      type: object
      required:
        - inputFormat
        - sequence
        - molecules
      properties:
        inputFormat:
          type: string
          default: "sequence"
          enum:
            - "sequence"
            - "list"
            - "molecules"
        sequence:
          type: string
          description: "Protein sequence (use : to specify chainbreaks for multimers) [Only available when inputFormat is one of sequence]"
          example: "TRPNHTIYINNLNEKIKKDELKKSLHAIFSRFGQILDILVSRSLK:MRGQAFVIFKEVSSATNALRSMQGFPFYDKPMRIQYAKTDSDIIAKM"
          maxLength: 2048
        molecules:
          type: string
          example: ["{'type': 'protein', 'sequence': 'TRPNHTIYINNLNEKIKKDELKKSLHAIFSRFGQIL', 'chain': 'A'}"]
        proteins:
          type: string
          description: "List of protein sequences you want included in your complex [Only available when inputFormat is one of list]"
          example: ["TRPNHTIYINNLNEKIKKDELKKSLHAIFSRFGQILDILVSRSLK", "MRGQAFVIFKEVSSATNALRSMQGFPFYDKPMRIQYAKTDSDIIAKM"]
        rnas:
          type: string
          description: "List of RNA sequences you want included in your complex [Only available when inputFormat is one of list]"
          example: ["GAGAGAGAAGTCAACCAGAGAAACACACCAACCCATTGCACTCCGGG", "TTGGTGGTATATTACCTGGTACGGGGGAAACTTCGTGGTGGCCGGCCACCTGACA"]
        dnas:
          type: string
          description: "List of DNA sequences you want included in your complex [Only available when inputFormat is one of list]"
          example: ["GAGAGAGAAGTCAACCAGAGAAACACACCAACCCATTGCACTCCGGG", "TTGGTGGTATATTACCTGGTACGGGGGAAACTTCGTGGTGGCCGGCCACCTGACA"]
        addLigands:
          type: boolean
          description: "Add small molecule ligands to your structure prediction"
          default: False
        ligands:
          type: string
          description: "Specify your ligands (CCD code or smiles), use : to separate multiple ligands in one structure prediction (ex. CC:CC). <ui>Each new line is a separate set of ligands, to be paired with each protein sequence.</ui> [Only available when inputFormat is one of list, sequence]"
          example: ["SAH", "N[C@@H](Cc1ccc(O)cc1)C(=O)O"]
        modifications:
          type: object
          description: "Post-translational modifications to apply to the protein"
          default: []
        model:
          type: string
          description: "IntelliFold model version"
          default: "v2"
          enum:
            - "v2"
            - "v1"
            - "v2-flash"
        numSamples:
          type: number
          description: "Number of samples"
          maximum: 100
          default: 5
        numBatches:
          type: integer
          description: "Will submit multiple parallel batches with numSamples designs each"
          maximum: 1000
          default: 1
        seed:
          type: number
          description: "Random seed to use with inference"
        numRecycles:
          type: number
          default: 10
        outputType:
          type: string
          description: "Format of output structures"
          default: "pdb"
          enum:
            - "pdb"
            - "mmcif"

    # Ipc Settings
    IpcSettings:
      type: object
      required:
        - sequence
      properties:
        sequence:
          type: string

    # Ipsae Settings
    IpsaeSettings:
      type: object
      required:
        - inputType
        - pdbFile
        - cifFile
        - jsonFile
        - npzFile
        - plddtFile
        - confidenceFile
        - pae_cutoff
        - dist_cutoff
      properties:
        inputType:
          type: string
          default: "af2"
          enum:
            - "af2"
            - "boltz"
        pdbFile:
          type: string
          format: binary
        cifFile:
          type: string
          format: binary
        jsonFile:
          type: string
          format: binary
        npzFile:
          type: string
          format: binary
        plddtFile:
          type: string
          format: binary
        confidenceFile:
          type: string
          format: binary
        pae_cutoff:
          type: number
          description: "Cutoff for PAE"
          default: 10
        dist_cutoff:
          type: number
          description: "Cutoff for distance"
          default: 10

    # Its-Flexible Settings
    ItsFlexibleSettings:
      type: object
      required:
        - pdbFile
        - ab_chains
        - chain
        - resi_start
        - resi_end
        - predictor
      properties:
        pdbFile:
          type: string
          description: "Antibody/TCR structure file in PDB format File with extensions [pdb]"
          example: "8jbj.pdb"
          format: binary
        ab_chains:
          type: array
          items:
            type: string
          description: "Labels of all chains included in context (e.g., heavy & light chain)"
          example: "A,B"
        chain:
          type: string
          description: "Chain containing the loop to predict"
          example: "A"
        resi_start:
          type: string
          description: "First residue included in loop (IMGT 107 for loop predictor, 105 for anchors predictor)"
          example: "107"
        resi_end:
          type: string
          description: "Last residue included in loop (IMGT 116 for loop predictor, 118 for anchors predictor)"
          example: "116"
        predictor:
          type: string
          description: "Predictor type: loop (alignment on loop residues) or anchors (alignment on Fv residues)"
          default: "loop"
          enum:
            - "loop"
            - "anchors"

    # Legolas Settings
    LegolasSettings:
      type: object
      required:
        - pdbFile
      properties:
        pdbFile:
          type: string
          description: "Protein structure in pdb format File with extensions [pdb]"
          example: "1a3n.pdb"
          format: binary

    # Libinvent Settings
    LibinventSettings:
      type: object
      required:
        - scaffold
      properties:
        scaffold:
          type: string
          description: "replace your locations to decorate with [*:1], [*:2], etc"
          example: "[*:1]Cc2cnc1cncc(C[*:2])c1c2"
        numDesigns:
          type: number
          description: "Number of designs to generate"
          minimum: 5
          default: 100
        sample_strategy:
          type: string
          description: "Sampling strategy: 'beamsearch' (deterministic, default) or 'multinomial'"
          default: "beamsearch"
          enum:
            - "beamsearch"
            - "multinomial"
        temperature:
          type: number
          description: "Temperature for multinomial sampling (only used when sample_strategy is 'multinomial')"
          default: 1

    # Lichen Settings
    LichenSettings:
      type: object
      required:
        - heavyChain
      properties:
        task:
          type: string
          description: "Generate: Create light chains for each heavy chain. Bispecific: Generate common light chains for pairs of heavy chains (requires even number of sequences)."
          default: "generate"
          enum:
            - "generate"
            - "bispecific"
        heavyChain:
          type: string
          description: "Single sequence, or FASTA formatted text. For bispecific: provide pairs of sequences (must be even number)."
          example: "EVQLVESGGGLVQPGGSLRLSCAASGFTFSSYAMSWVRQAPGKGLEWVSAISGSGGSTYYADSVKGRFTISRDNSKNTLYLQMNSLRAEDTAVYYCAKDGKYYYGMDVWGQGTTVTVSS"
        numSequences:
          type: number
          description: "Number of light chain sequences to generate. For generate task: per heavy chain. For bispecific task: per heavy chain pair."
          default: "10"
        germlineSeed:
          type: string
          description: "V-gene type, family, or specific genes (e.g., 'IGKV1', 'IGLV1', or 'IGKV1 IGKV2'). Leave empty for unrestricted generation."
        customSeed:
          type: string
          description: "Custom amino acid seed sequence for the light chain (e.g., 'DIQMTQ')"
        cdrL1:
          type: string
          description: "Specify CDR-L1 sequence for grafting (IMGT or Kabat definition)"
        cdrL2:
          type: string
          description: "Specify CDR-L2 sequence for grafting (IMGT or Kabat definition)"
        cdrL3:
          type: string
          description: "Specify CDR-L3 sequence for grafting (IMGT or Kabat definition)"
        numberingScheme:
          type: string
          description: "Numbering scheme for CDR definition when using CDR grafting"
          default: "IMGT"
          enum:
            - "IMGT"
            - "Kabat"
        filtering:
          type: string
          description: "Space-separated filtering steps: 'redundancy', 'diversity', 'ANARCI', 'Humatch', 'AbLang2'. Example: 'redundancy diversity Humatch'"

    # Ligandmpnn Settings
    LigandmpnnSettings:
      type: object
      required:
        - pdbFile
      properties:
        pdbFile:
          type: string
          description: "Protein structure file to be designed File with extensions [pdb]"
          example: "3HTN.pdb"
          format: binary
        designedChains:
          type: array
          items:
            type: string
          description: "Chain IDs to be designed (rest will be fixed)"
          example: ["A"]
        designedResidues:
          type: object
          description: "Residues to design in your protein, can be ranges or individual residues"
          example: {'A': '60 61 62 63 64 65 66'}
          default: {}
        numSequences:
          type: number
          description: "Number of sequences to be generated for each protein backbone"
          default: 2
        temperature:
          type: number
          description: "Model temperture - Suggested values 0.1, 0.15, 0.2, 0.25, 0.3. Higher values will lead to more diversity"
          minimum: 0
          maximum: 1
          default: 0.1
        noiseLevel:
          type: string
          description: "Select from models of various noise levels (A)"
          default: "0.2"
          enum:
            - "0.02"
            - "0.1"
            - "0.2"
            - "0.3"
        omitAAs:
          type: string
          description: "These amino acids will be avoided when generating sequences"
          default: "C"
        bias_AA:
          type: string
          description: "Bias toward/against specific amino acids, as comma separated list. Example: W:3.0,P:3.0,C:3.0,A:-3.0"
          example: "W:3.0,P:3.0,C:3.0,A:-3.0"
        bias_AA_per_residue:
          type: string
          description: "Bias amino acids per residue, as dictionary. Example: {\"C1\": {\"G\": -0.3, \"C\": -2.0, \"P\": 10.8}, \"C3\": {\"P\": 10.0}, \"C5\": {\"G\": -1.3, \"P\": 10.0}, \"C7\": {\"G\": -1.3, \"P\": 10.0}}"
          example: "{\"C1\": {\"G\": -0.3, \"C\": -2.0, \"P\": 10.8}, \"C3\": {\"P\": 10.0}, \"C5\": {\"G\": -1.3, \"P\": 10.0}, \"C7\": {\"G\": -1.3, \"P\": 10.0}}"
        omit_AA_per_residue:
          type: string
          description: "Specify amino acids to exclude at specific residue positions. To force a specific amino acid, omit all others. Example: {\"A1\": \"CP\", \"A2\": \"CW\"} will prevent C,P at position A1 and C,W at position A2."
          example: "{\"A1\": \"CP\", \"A2\": \"CW\"}"
        homo_oligomer:
          type: number
          description: "Number of copies of the protein (ex. 2 for dimer, 3 for trimer, etc.)"

    # Logp Settings
    LogpSettings:
      type: object
      required:
        - inputType
        - smiles
        - sdfFile
      properties:
        inputType:
          type: string
          description: "How to provide your molecule"
          default: "smiles"
          enum:
            - "smiles"
            - "sdf"
        smiles:
          type: string
          description: "SMILES string of the molecule [Only available when inputType is one of smiles]"
          example: "c1ccccc1"
        sdfFile:
          type: string
          description: "SDF/MOL file File with extensions [sdf] [Only available when inputType is one of sdf]"
          format: binary
        method:
          type: string
          description: "crippen: fast atom-contribution model (instant). xtb: physics-based via solvation free energies (~30s)"
          default: "crippen"
          enum:
            - "crippen"
            - "xtb"
        charge:
          type: number
          description: "Net molecular charge (for xTB method only)"
          default: 0

    # Mage Settings
    MageSettings:
      type: object
      required:
        - rbdPrompt
      properties:
        rbdPrompt:
          type: string
          description: "Amino acid sequence of the antigen target (signal peptides and transmembrane regions should be removed)"
          example: "RVQPTESIVRFPNITNLCPFGEVFNATRFASVYAWNRKRISNCVADYSVLYNSASFSTFKCYGVSPTKLNDLCFTNVYADSFVIRGDEVRQIAPGQTGKIADYNYKLPDDFTGCVIAWNSNNLDSKVGGNYNYLYRLFRKSNLKPFERDISTEIYQAGSTPCNGVEGFNCYFPLQSYGFQPTNGVGYQPYRVVVLSFELLHAPATVCGPKKSTNLVKNKCVNF"
        numSequences:
          type: number
          description: "Number of antibody sequences to generate"
          default: "10"

    # Masif Settings
    MasifSettings:
      type: object
      required:
        - pdbFile
        - chain
      properties:
        pdbFile:
          type: string
          format: binary
        chain:
          type: string
          example: "A"

    # Mavenets-Finetune Settings
    MavenetsFinetuneSettings:
      type: object
      required:
        - baseModel
        - trainFile
        - validFile
        - epochs
        - learningRate
        - batchSize
        - seed
        - hiddenLayers
        - numBlocks
        - numHeads
        - embeddingSize
        - mhaDropout
        - mlpDropout
        - finalDropout
        - finalLayers
      properties:
        baseModel:
          type: string
          description: "Base model to use for finetuning"
          default: "mlp"
          enum:
            - "mlp"
            - "transformer"
        trainFile:
          type: string
          description: "CSV file containing your ids, sequences, and fitness value File with extensions [csv]"
          format: binary
        validFile:
          type: string
          description: "CSV file containing your ids, sequences, and fitness value File with extensions [csv]"
          format: binary
        epochs:
          type: number
          description: "Number of Epochs to train the model for"
          default: 1000
        learningRate:
          type: number
          description: "Learning rate for model training (default: 3e-4)"
          default: 0.0003
        batchSize:
          type: number
          description: "Training batch size per GPU"
          default: 32
        seed:
          type: number
          description: "Random seed for reproducibility"
          default: 42
        hiddenLayers:
          type: string
          description: "Comma-separated list of hidden layer sizes (e.g. '128,32' or '256,128,64') [Only available when baseModel is one of mlp]"
          default: "128,32"
        numBlocks:
          type: number
          description: "Number of transformer blocks (n_transformers) [Only available when baseModel is one of transformer]"
          default: 4
        numHeads:
          type: number
          description: "Number of attention heads per block [Only available when baseModel is one of transformer]"
          default: 8
        embeddingSize:
          type: number
          description: "Size of the embedding vector [Only available when baseModel is one of transformer]"
          default: 32
        mhaDropout:
          type: number
          description: "Dropout rate for Multi-Head Attention [Only available when baseModel is one of transformer]"
          default: 0.2
        mlpDropout:
          type: number
          description: "Dropout rate for the MLP inside transformer blocks [Only available when baseModel is one of transformer]"
          default: 0.1
        finalDropout:
          type: number
          description: "Dropout rate for the final classification head [Only available when baseModel is one of transformer]"
          default: 0.2
        finalLayers:
          type: number
          description: "Number of layers in the final classification head [Only available when baseModel is one of transformer]"
          default: 1

    # Mavenets-Inference Settings
    MavenetsInferenceSettings:
      type: object
      required:
        - inferenceMode
        - inputCsv
        - sequenceColumn
        - startSequence
        - mcmcSteps
        - beta
        - nativeBias
        - maxMutations
      properties:
        inferenceMode:
          type: string
          description: "Choose between scoring a CSV of sequences or running MCMC evolution"
          default: "score"
          enum:
            - "score"
            - "mcmc"
        inputCsv:
          type: string
          description: "Upload CSV containing protein sequences File with extensions [csv] [Only available when inferenceMode is one of score]"
          format: binary
        sequenceColumn:
          type: string
          description: "Select the column containing the protein sequences [Only available when inferenceMode is one of score]"
        startSequence:
          type: string
          description: "The amino acid sequence to start the simulation from (e.g., Wild Type) [Only available when inferenceMode is one of mcmc]"
        mcmcSteps:
          type: number
          description: "Number of steps to run the Metropolis-Hastings simulation [Only available when inferenceMode is one of mcmc]"
          default: 100000
        beta:
          type: number
          description: "Controls selection pressure. Negative values favor high fitness. (e.g. -10 to -35) [Only available when inferenceMode is one of mcmc]"
          default: -10
        nativeBias:
          type: number
          description: "Bias towards the starting sequence (0.0 to 1.0) to prevent drifting too far [Only available when inferenceMode is one of mcmc]"
          default: 0.9
        maxMutations:
          type: number
          description: "Maximum number of mutations allowed from the starting sequence [Only available when inferenceMode is one of mcmc]"
          default: 9

    # Mber Settings
    MberSettings:
      type: object
      required:
        - task
        - pdbFile
        - targetChains
      properties:
        task:
          type: string
          description: "Type of design task to perform"
          default: "Binder Design"
          enum:
            - "Binder Design"
        pdbFile:
          type: string
          description: "Target protein structure for binder design (PDB format) File with extensions [pdb]"
          example: "9f6o.pdb"
          format: binary
        targetChains:
          type: array
          items:
            type: string
          description: "Chain IDs of target (comma-separated for multiple chains, e.g., A,B) [Only available when task is one of Binder Design]"
          example: "A"
          default: "A"
        hotspotResidues:
          type: string
          description: "Specify epitope residues on your target protein for the VHH binder to focus on during design. Enter residue numbers separated by commas (e.g., 305,456). If left empty, mBER will automatically detect suitable hotspots."
          example: "305,456"
          default: ""
        vhhSequence:
          type: string
          description: "VHH template sequence with asterisks (*) marking positions to be designed"
          example: "QVQLVESGGGLVQPGGSLRLSCAASGFTF***AMSWVRQAPGKGLEWVS**************YADSVKGRFTISRDNSKNTLYLQMNSLRAEDTAVYYCAA**************WGQGTQVTVSS"
        numDesigns:
          type: integer
          description: "Number of binder designs to generate"
          default: 1
        temperature:
          type: number
          description: "Temperature parameter for sequence sampling"
          minimum: 0.1
          maximum: 2
          default: 1
        steps:
          type: number
          description: "Number of optimization steps for trajectory design"
          minimum: 10
          maximum: 1000
          default: 100
        seed:
          type: number
          description: "Random seed for reproducible results"
          example: 42
        relax:
          type: string
          description: "Perform amber relaxation for more accurate side chain predictions (currently disabled)"
          default: False
          enum:
            - "False"
        plmModel:
          type: string
          description: "Model used for sequence guidance during binder design."
          default: "ESM"
          enum:
            - "ESM"
            - "Ablang2"

    # Md-Openmm Settings
    MdOpenmmSettings:
      type: object
      required:
        - task
        - pdbFile
        - complexFile
        - ligandCode
        - sdfFile
        - minimizationSteps
        - equilibrationTime
        - productionTime
      properties:
        task:
          type: string
          description: "Task to perform"
          default: "protein"
          enum:
            - "protein"
            - "protein-ligand"
            - "protein-ligand-complex"
        pdbFile:
          type: string
          description: "PDB structure file for your protein File with extensions [pdb] [Only available when task is one of protein, protein-ligand]"
          format: binary
        complexFile:
          type: string
          description: "PDB structure file for your protein File with extensions [pdb] [Only available when task is one of protein-ligand-complex]"
          format: binary
        ligandCode:
          type: string
          description: "Code for your ligand [Only available when task is one of protein-ligand-complex]"
        sdfFile:
          type: string
          description: "SDF structure file for your ligand File with extensions [sdf] [Only available when task is one of protein-ligand]"
          format: binary
        minimizationSteps:
          type: string
          description: "Number of minimization steps"
          default: "1000"
          enum:
            - "1000"
            - "5000"
            - "10000"
            - "20000"
            - "50000"
            - "100000"
        equilibrationTime:
          type: number
          description: ""
          default: 0.2
        productionTime:
          type: number
          description: ""
          default: 2
        integrationTimestep:
          type: string
          description: "Integration timestep (fs)"
          default: "2"
          enum:
            - "0.5"
            - "1"
            - "2"
            - "3"
            - "4"
        equilibrationTemperature:
          type: string
          description: "Equilibration temperature (K)"
          default: "298"
        equilibrationPressure:
          type: string
          description: "Equilibration pressure (atm)"
          default: "1"

    # Mdgen Settings
    MdgenSettings:
      type: object
      required:
        - task
        - pdbFile
        - xtcFile
      properties:
        task:
          type: string
          default: "Forward Simulation"
          enum:
            - "Forward Simulation"
        pdbFile:
          type: string
          format: binary
        xtcFile:
          type: string
          format: binary
        numFrames:
          type: number
          description: "Number of frames that MDGen generates"
          default: 1000

    # Membrane-Gromacs Settings
    MembraneGromacsSettings:
      type: object
      required:
        - pdbFile
      properties:
        pdbFile:
          type: string
          description: "Upload a PDB file of the membrane protein. Cofactors, ligands, ions, and crystal waters will be automatically removed during cleanup. Missing residues and atoms will be rebuilt. File with extensions [pdb]"
          example: "2IC8.pdb"
          format: binary
        membranePreset:
          type: string
          description: "Select a biological membrane preset or choose Custom to specify lipid composition manually."
          default: "custom"
          enum:
            - "custom"
            - "plasma"
            - "ecoli-inner"
            - "ecoli-outer"
            - "er"
            - "mitochondrial-inner"
            - "mitochondrial-outer"
        lipidUpperLeaflet:
          type: string
          description: "Lipid composition as NAME:RATIO pairs. Examples: 'POPC' (pure), 'POPC:7 CHOL:3' (70% POPC + 30% cholesterol), 'POPC:4 POPE:3 POPS:2 CHOL:1' (complex mixture). Supported with Martini 3 (8): CHOL, DLPE, DOPC, DPPC, POPC, POPE, POPG, POPI. Additional with Martini 2 fallback (12): DGPC, DLPC, DNPC, DOPE, DOPG, DOPS, DPG1, DPG3, DPPE, ERGO, POP2, POPS."
          default: "POPC"
        lipidLowerLeaflet:
          type: string
          description: "Lower leaflet composition. Use 'same' for symmetric bilayer, or specify composition like upper leaflet."
          default: "same"
        membraneType:
          type: string
          description: "Membrane type for PPM3 protein orientation. Auto-set when using a membrane preset."
          default: "PMm"
          enum:
            - "PMm"
            - "PMp"
            - "PMf"
            - "ERm"
            - "ERf"
            - "MOM"
            - "MIM"
            - "GnO"
            - "GnI"
            - "GpI"
            - "THp"
            - "ARC"
        cgEquilibrationTime:
          type: number
          description: "Coarse-grained equilibration time for lipid packing. 500 ns typically sufficient."
          minimum: 1
          maximum: 5000
          default: 500
        salt:
          type: number
          minimum: 0
          maximum: 1
          default: 0.15
        temp:
          type: number
          description: "Simulation temperature. 310 K is physiological."
          minimum: 280
          maximum: 350
          default: 310
        simulationTime:
          type: number
          minimum: 0.01
          maximum: 1000
          default: 10
        saveFreq:
          type: number
          minimum: 1
          maximum: 100
          default: 10
        numReplicas:
          type: integer
          minimum: 1
          maximum: 3
          default: 1

    # Mhc-Fine Settings
    MhcFineSettings:
      type: object
      required:
        - sequence
      properties:
        sequence:
          type: string
          description: "Sequence of MHC-peptide complex, separated by :"
          example: "GSHSMRYFFTSVSRPGRGEPRFIAVGYVDDTQFVRFDSDAASQRMEPRAPWIEQEGPEYWDGETRKVKAHSQTHRVDLGTLRGYYNQSEAGSHTVQRMYGCDVGSDWRFLRGYHQYAYDGKDYIALKEDLRSWTAADMAAQTTKHKWEAAHVAEQLRAYLEGTCVEWLRRYLENGKETLQRT:HMTEVVRHC"

    # Microscopic-Pka Settings
    MicroscopicPkaSettings:
      type: object
      required:
        - inputType
        - smiles
        - sdfFile
      properties:
        inputType:
          type: string
          description: "How to provide your molecule"
          default: "smiles"
          enum:
            - "smiles"
            - "sdf"
        smiles:
          type: string
          description: "SMILES string of the molecule [Only available when inputType is one of smiles]"
          example: "CC(=O)O"
        sdfFile:
          type: string
          description: "SDF/MOL file File with extensions [sdf] [Only available when inputType is one of sdf]"
          format: binary
        method:
          type: string
          description: "Energy method for pKa prediction"
          default: "xtb-gfn2"
          enum:
            - "xtb-gfn2"
        charge:
          type: number
          description: "Net molecular charge of the starting (protonated) state"
          default: 0
        solvent:
          type: string
          description: "pKa is computed in aqueous solution"
          default: "water"
          enum:
            - "water"

    # Min-Distance-Selected-Residues Settings
    MinDistanceSelectedResiduesSettings:
      type: object
      required:
        - pdbFile
        - chains1
        - residues1
        - chains2
        - residues2
      properties:
        pdbFile:
          type: string
          format: binary
        chains1:
          type: array
          items:
            type: string
          description: "Chains to compute RMSD on"
        allResiduesChain1:
          type: boolean
          description: "Whether to compute RMSD on all residues in chain 1"
          default: False
        residues1:
          type: object
          description: "Residues to compute RMSD on"
        chains2:
          type: array
          items:
            type: string
          description: "Chains to compute RMSD on"
        allResiduesChain2:
          type: boolean
          description: "Whether to compute RMSD on all residues in chain 2"
          default: False
        residues2:
          type: object
          description: "Residues to compute RMSD on"

    # Modelangelo Settings
    ModelangeloSettings:
      type: object
      required:
        - map
      properties:
        map:
          type: string
          description: "CryoEM density map to use in structure prediction File with extensions [mrc]"
          format: binary
        sequence:
          type: string
          description: "Protein sequence (use : to separate chains)"

    # Molecular-Descriptors Settings
    MolecularDescriptorsSettings:
      type: object
      required:
        - inputType
        - smiles
        - sdfFile
      properties:
        inputType:
          type: string
          description: "How to provide your molecule"
          default: "smiles"
          enum:
            - "smiles"
            - "sdf"
        smiles:
          type: string
          description: "SMILES string of the molecule [Only available when inputType is one of smiles]"
          example: "CC(=O)Oc1ccccc1C(=O)O"
        sdfFile:
          type: string
          description: "SDF/MOL file File with extensions [sdf] [Only available when inputType is one of sdf]"
          format: binary
        descriptorSet:
          type: string
          description: "Which descriptors to compute. 'all' gives 200+ descriptors including MW, LogP, TPSA, QED, Lipinski rules, and fingerprints"
          default: "all"
          enum:
            - "all"
            - "physicochemical"
            - "druglikeness"
            - "fingerprints"

    # Molprobity Settings
    MolprobitySettings:
      type: object
      required:
        - pdbFile
      properties:
        pdbFile:
          type: string
          description: "Protein structure in pdb format File with extensions [pdb]"
          example: "1a3n.pdb"
          format: binary

    # Mosaic-Hallucinate Settings
    MosaicHallucinateSettings:
      type: object
      required:
        - targetSequence
        - binderLength
        - numDesigns
      properties:
        targetSequence:
          type: string
          description: "Target Protein amino acid sequence to design binder to, use : to separate chains for multimers"
          example: "MALKSLVLLSLLVLVLLLVRVQPSLGKETAAAKFERQHMDSSTSAASSSNYCNQMMKSRNLTKDRCKPVNTFVHESLADVQAVCSQKNVACKNGQTNCYQSYSTMSITDCRETGSSKYPNCAYKTTQANKHIIVACEGNPYVPVHFDASV"
          maxLength: 5000
        binderLength:
          type: number
          description: "Length of the binder to design (fixed length optimization)"
          default: 220
        numDesigns:
          type: number
          description: "Number of designs (sequence and structure codesign) to generate"
          default: 1

    # Mrnabert Settings
    MrnabertSettings:
      type: object
      required:
        - task
        - sequence
        - sequenceType
        - saveEmbeddingsFormat
        - optimizationSteps
      properties:
        task:
          type: string
          description: "Select the mRNABERT task to run"
          default: "score_sequence"
          enum:
            - "score_sequence"
            - "mutation_scan"
            - "codon_optimize"
            - "extract_embedding"
        sequence:
          type: string
          description: "mRNA sequence (A/C/G/U/T). For 'complete' mode, wrap the CDS region in [...]. CDS-only sequences must have length divisible by 3. Paste a FASTA or upload a CSV to run as a batch — each sequence becomes its own subjob."
          example: "GCCGCCACC[ATGGTGAGCAAGGGCGAAGAACTTTTCACTGGAGTTGTCCCAATTCTTGTTTAA]GCGACGCGACGGCGA"
        sequenceType:
          type: string
          description: "How to tokenize the sequence. Matches the preprocessing in the mRNABERT paper."
          default: "complete"
          enum:
            - "complete"
            - "codon"
            - "utr"
        saveEmbeddingsFormat:
          type: string
          description: "How to extract or aggregate the embeddings [Only available when task is one of extract_embedding]"
          default: "mean"
          enum:
            - "mean"
            - "raw"
            - "cls"
        optimizationSteps:
          type: number
          description: "Number of random-coordinate descent steps. Each step picks a CDS codon, tries all synonymous substitutions, and accepts the best if it raises the PLL. [Only available when task is one of codon_optimize]"
          default: 50
        randomSeed:
          type: number
          description: "Seed controlling the order in which codon positions are visited. Leave blank for a fresh random seed each run. [Only available when task is one of codon_optimize]"

    # Msa Settings
    MsaSettings:
      type: object
      required:
        - sequence
      properties:
        sequence:
          type: string
          description: "Sequence to generate MSA for"
          example: "MALKSLVLLSLLVLVLLLVRVQPSLGKETAAAKFERQHMDSSTSAASSSNYCNQMMKSRNLTKDRCKPVNTFVHESLADVQAVCSQKNVACKNGQTNCYQSYSTMSITDCRETGSSKYPNCAYKTTQANKHIIVACEGNPYVPVHFDASV"
        msaDatabase:
          type: string
          description: "Select how the MSA is generated using UniRef30, SwissProt, and the ColabFold environmental database."
          example: "uniref"
          default: "uniref"
          enum:
            - "uniref"
            - "swissprot"
            - "uniref+swissprot"
        monomer_msa:
          type: boolean
          description: "Whether to generate a separate MSA for each chain, or a single MSA for the entire complex"
          default: False

    # Msa-Analysis Settings
    MsaAnalysisSettings:
      type: object
      required:
        - fastaFile
      properties:
        fastaFile:
          type: string
          description: "FASTA file containing multiple protein sequences to align (2-10,000 sequences) File with extensions [fasta, fa]"
          example: ">seq1
MTKLLLLLLLLAAVAVA
>seq2
MTKLLLLLLLLAAVAVT
>seq3
MTKLLLLLLLLAAIAVA"
          format: binary
        algorithm:
          type: string
          description: "auto (recommended), clustal (high accuracy), muscle (balanced), mafft-fast (large datasets), mafft-accurate (divergent sequences)"
          default: "auto"
          enum:
            - "auto"
            - "clustal"
            - "muscle"
            - "mafft-fast"
            - "mafft-accurate"
        output_format:
          type: string
          description: "Alignment output format"
          default: "fasta"
          enum:
            - "fasta"
            - "clustal"
            - "phylip"
            - "stockholm"

    # Msa-Cluster Settings
    MsaClusterSettings:
      type: object
      required:
        - fastaFile
      properties:
        fastaFile:
          type: string
          description: "Sequences to cluster File with extensions [fasta, fa]"
          format: binary

    # Multi-Evolve Settings
    MultiEvolveSettings:
      type: object
      required:
        - task
        - wtFiles
        - trainingDatasetFile
        - mutationPoolFile
        - mode
        - topMutsPerLoad
        - mutationsFile
        - wtDnaFasta
        - overhang
        - species
        - oligoDirection
        - tm
        - output
        - oligosFile
        - wtSequence
        - pdbFiles
        - chainId
        - variants
        - normalizingMethod
      properties:
        task:
          type: string
          default: "train_propose"
          enum:
            - "train_propose"
            - "assembly_design"
            - "zeroshot_ensemble"
        wtFiles:
          type: string
          description: "Wildtype FASTA input. Single-chain: upload one FASTA. Multi-chain complexes: upload one FASTA per chain, in the same order used by mutation columns (chain1, chain2, ...). File with extensions [fasta, fa] [Only available when task is one of train_propose]"
          example: "apex.fasta"
          format: binary
        trainingDatasetFile:
          type: string
          description: "Training CSV with mutation and property_value columns (for multi-chain, use slash-separated mutations in chain order, e.g. A10V/B25M). MULTI-evolve ranks higher predicted values as better; if your assay metric is lower-is-better (e.g. IC50/Kd), transform labels before upload (e.g. -log10 or negate). File with extensions [csv] [Only available when task is one of train_propose]"
          example: "example_dataset.csv"
          format: binary
        mutationPoolFile:
          type: string
          description: "Single-column mutation pool (one mutation per row, no header) used for combinatorial proposal search. File with extensions [csv] [Only available when task is one of train_propose]"
          example: "combo_muts.csv"
          format: binary
        mode:
          type: string
          description: "test runs a quick pass; standard performs full training grid [Only available when task is one of train_propose]"
          default: "standard"
          enum:
            - "test"
            - "standard"
        topMutsPerLoad:
          type: number
          description: "Top variants kept for each mutation load (3 to 10 mutations), ranked by ensemble prediction score (higher is better). Total exported rows are up to 8 x this value. [Only available when task is one of train_propose]"
          minimum: 1
          maximum: 500
          default: 3
        mutationsFile:
          type: string
          description: "CSV (no header) containing mutation strings to assemble File with extensions [csv] [Only available when task is one of assembly_design]"
          example: "MULTI-assembly_input.csv"
          format: binary
        wtDnaFasta:
          type: string
          description: "Wildtype DNA sequence FASTA with symmetric overhangs File with extensions [fasta, fa] [Only available when task is one of assembly_design]"
          example: "APEX_33overhang.fasta"
          format: binary
        overhang:
          type: number
          minimum: 0
          default: 33
        species:
          type: string
          description: "Codon usage table for oligo design [Only available when task is one of assembly_design]"
          default: "human"
          enum:
            - "human"
            - "ecoli"
            - "yeast"
        oligoDirection:
          type: string
          default: "bottom"
          enum:
            - "top"
            - "bottom"
        tm:
          type: number
          default: 80
        output:
          type: string
          description: "design creates new cloning_sheet.csv + oligos.csv; update re-syncs cloning_sheet.csv IDs from uploaded oligos.csv. [Only available when task is one of assembly_design]"
          default: "design"
          enum:
            - "design"
            - "update"
        oligosFile:
          type: string
          description: "Required when Output Mode is update; upload oligos.csv from a prior design run File with extensions [csv] [Only available when task is one of assembly_design]"
          format: binary
        wtSequence:
          type: string
          description: "Provide wildtype sequence directly or upload a WT FASTA using the sequence input options [Only available when task is one of zeroshot_ensemble]"
          example: "MGKSYPTVSADYQDAVEKAKKKLRGFIAEKRCAPLMLRLAFHSAGTFDKGTKTGGPFGTIKHPAELAHSANNGLDIAVRLLEPLKAEFPILSYADFYQLAGVVAVEVTGGPKVPFHPGREDKPEPPPEGRLPDATKGSDHLRDVFGKAMGLTDQDIVALSGGHTIGAAHKERSGFEGPWTSNPLIFDNSYFTELLSGEKEGLLQLPSDKALLSDPVFRPLVDKYAADEDAFFADYAEAHQKLSELGFADA"
        pdbFiles:
          type: string
          description: "One or more PDB/CIF files used for ESM-IF scoring File with extensions [pdb, cif] [Only available when task is one of zeroshot_ensemble]"
          example: "apex.cif"
          format: binary
        chainId:
          type: string
          description: "Single chain used for ESM-IF scoring (applies to all uploaded structure files) [Only available when task is one of zeroshot_ensemble]"
          default: "A"
        variants:
          type: number
          minimum: 1
          default: 24
        normalizingMethod:
          type: string
          description: "aa_substitution_type groups by WT->mutant residue type (e.g. A->V); aa_mutation groups by mutant residue only (e.g. V). [Only available when task is one of zeroshot_ensemble]"
          default: "aa_substitution_type"
          enum:
            - "aa_substitution_type"
            - "aa_mutation"
        excludedPositions:
          type: string
          description: "Comma-separated 1-based residue positions to exclude from mutation (e.g. 1,14,41). [Only available when task is one of zeroshot_ensemble]"
          default: ""

    # N-Linked-Glycosylation Settings
    NLinkedGlycosylationSettings:
      type: object
      required:
        - sequence
      properties:
        sequence:
          type: string
          example: "MALKSLVLLSLLVLVLLLVRVQPSLGKETAAAKFERQHMDSSTSAASSSNYCNQMMKSRNLTKDRCKPVNTFVHESLADVQAVCSQKNVACKNGQTNCYQSYSTMSITDCRETGSSKYPNCAYKTTQANKHIIVACEGNPYVPVHFDASV"

    # Nampnn Settings
    NampnnSettings:
      type: object
      required:
        - mode
        - pdbFile
      properties:
        mode:
          type: string
          description: "Mode to run the model in"
          default: "design"
          enum:
            - "design"
            - "specificity"
        pdbFile:
          type: string
          description: "Protein structure file to be designed File with extensions [pdb]"
          example: "9f6o.pdb"
          format: binary
        numSequences:
          type: number
          description: "Number of sequences to be generated for each protein backbone [Only available when mode is one of design]"
          default: 2

    # Nbforge Settings
    NbforgeSettings:
      type: object
      required:
        - sequence
      properties:
        sequence:
          type: string
          description: "Nanobody (VHH) amino acid sequence"
          example: "QVKLEESGGGLVQPGGSLRLSCAGTGWTLEFYAIAWYRQAPGKERELVSCISSSSESNTYEDSVKGRFAMSRDKSRNTAWLQMNNLKPADSGVYYCAALPNMNCIREVMQYVDEWGQGTPVTVSS"
        noMinimize:
          type: boolean
          description: "Skip OpenMM energy minimization of the predicted structure"
          default: False

    # Netmhcpan Settings
    NetmhcpanSettings:
      type: object
      required:
        - inputType
        - sequence
        - peptide
      properties:
        inputType:
          type: string
          default: "sequence"
          enum:
            - "sequence"
            - "peptide"
        sequence:
          type: string
          example: "ASQKRPSQRHGSKYLATASTMDHARHGFLPRHRDTGILDSIGRFFGGDRGAPKNMYKDSHHPARTAHYGSLPQKSHGRTQDENPVVHFFKNIVTPRTPPPSQGKGRKSAHKGFKGVDAQGTLSKIFKLGGRDSRSGSPMARRELVISLIVES"
        peptide:
          type: string
          example: ["AAAGAEAGKATTE"]
        alleles:
          type: string
          description: "Comma-separated list of HLA alleles to test for peptide binding (e.g., DRB1_1664,H-2-IAd). Leave empty to use default alleles. For list of valid alleles see https://services.healthtech.dtu.dk/services/NetMHCIIpan-4.3/"
          example: "DRB1_1664,H-2-IAd"

    # Netsolp Settings
    NetsolpSettings:
      type: object
      required:
        - sequence
      properties:
        sequence:
          type: string
          description: "Protein sequence to assess solubility"

    # Nos Settings
    NosSettings:
      type: object
      required:
        - csvFile
        - heavySequenceColumn
        - lightSequenceColumn
        - labelColumn
        - modelType
      properties:
        csvFile:
          type: string
          description: "CSV file containing your sequences and property of interest File with extensions [csv]"
          format: binary
        heavySequenceColumn:
          type: string
          description: "Title of heavy sequence column"
        lightSequenceColumn:
          type: string
          description: "Title of light sequence column"
        labelColumn:
          type: string
          description: "Column that contains a value for each sequence, which you want to optimize for (increase)"
        learningRate:
          type: number
          description: "Model learning rate (between 0 and 1)"
          default: 0.005
        modelType:
          type: string
          description: "Type of model to train"
          default: "mlm"
          enum:
            - "mlm"
        noiseScale:
          type: number
          description: "Noise scale for Gaussian model (between 2 and 10)"
          default: 5
        batchRatio:
          type: number
          description: "Ratio of Generative Loss Updates to Discriminative"
          default: 5

    # Nos-Inference Settings
    NosInferenceSettings:
      type: object
      required:
        - heavyChain
        - lightChain
        - regions
      properties:
        heavyChain:
          type: string
          description: "Heavy chain sequence"
          example: "EVQLVESGGGLVQPGRSMKLSCAASGFTFNNYDMAWVCQAPKKGLEWVATISYDGSSTYYRDSVKGRFTISRDNIKSTLYLQMDSLRSEDTATYYCARQARGFAYWGQGTLVTVSS"
        lightChain:
          type: string
          description: "Light chain sequence"
          example: "DIQMTQSPASLSASLGETVTIECLASEDIYSNLAWYQQKPGKSPQLLIYDASSLQDGVPSRFSGSESGTQYSLEINSLQSEDAATYFCQQHHDYPLTFGSGTKLEIK"
        regions:
          type: string
          description: "The model will mutate the selected regions (aho numbering) while keeping other regions fixed"
          default: ['hcdr1', 'hcdr2']
          enum:
            - "hcdr1"
            - "hcdr2"
            - "hcdr3"
            - "lcdr1"
            - "lcdr2"
            - "lcdr3"

    # Oas Settings
    OasSettings:
      type: object
      required:
        - sequence
      properties:
        sequence:
          type: string
          description: "Input sequence with which to query OAS"
          example: "EVQLVESGGGLVQAGGSLRLSCAASGRTFSNYHMAWFRQAPGKEREFVAGISWTGRGTYYTDSVKGRFTISRDNAKNTVYLQMNSLKPEDTAVYYCAAEGTLYGSGGRTHQSAYDYWGQGTQVTVSS"
          maxLength: 10000
        species:
          type: string
          description: "Species to search against in OAS"
          example: "Human"
          default: "Any"
          enum:
            - "Any"
            - "Human"
            - "Mouse"
            - "Rat"
        chain:
          type: string
          description: "Type of chain to search against in OAS"
          example: "Heavy"
          default: "Any"
          enum:
            - "Any"
            - "Heavy"
            - "Light"
        maxResults:
          type: number
          description: "Maximum number of sequences to report in OAS results (1-100)"
          example: 50
          minimum: 1
          maximum: 100
          default: 50
        regions:
          type: string
          description: "Regions of the antibody to search against in OAS"
          example: "whole"
          default: "whole"
          enum:
            - "whole"
            - "cdrs"
            - "cdr3"
        lengthMatch:
          type: boolean
          description: "Search only for sequences with a matched length"
          example: False
          default: False

    # Odesign-Antibody Settings
    OdesignAntibodySettings:
      type: object
      required:
        - task
        - antigen
        - antigenChains
        - antigenResidues
        - vhSequence
        - vhLengths
        - vlSequence
        - vlLengths
      properties:
        task:
          type: string
          description: "Type of antibody to design"
          default: "scfv"
          enum:
            - "scfv"
            - "nanobody"
        antigen:
          type: string
          description: "Antigen structure file (PDB or CIF format) File with extensions [pdb, cif]"
          example: "6oq5_tcdb_truncated.pdb"
          format: binary
        antigenChains:
          type: array
          items:
            type: string
          description: "Chain IDs from the antigen structure to use as target"
          example: ["A"]
        hotspot:
          type: object
          description: "Optional hotspot residues on the antigen for antibody targeting"
          example: {'A': '538, 151, 152, 148, 539'}
        antigenResidues:
          type: object
          description: "Residue range from antigen structure to include in design"
          example: {'A': '100-550'}
        vhSequence:
          type: string
          description: "Heavy chain framework sequence with hyphens (-) marking CDRs to design"
          example: {'scfv': 'EVQLVESGGGLVQPGGSLRLSCAAS-YIHWVRQAPGKGLEWVARI-TRYADSVKGRFTISADTSKNTAYLQMNSLRAEDTAVYYCSR-WGQGTLVTVSS', 'nanobody': 'QVQLVESGGGLVQPGGSLRLSCAAS-FSLGWFRQAPGQGLEAVAAI-TYYADSVKGRFTISRDNSKNTLYLQMNSLRAEDTAVYYCAA-WGQGTLVTVS'}
        vhLengths:
          type: string
          description: "Target length range for each masked CDR in VH. Format: min-max for each CDR, comma-separated (e.g., 6-7,6-7,9-15)"
          example: "6-7,6-7,9-15"
        vlSequence:
          type: string
          description: "Light chain framework sequence with hyphens (-) marking CDRs to design. [Only available when task is one of scfv]"
          example: "DIQMTQSPSSLSASVGDRVTITC-WYQQKPGKAPKLLIY-GVPSRFSGSRSGTDFTLTISSLQPEDFATYYC-FGQGTKVEIK"
        vlLengths:
          type: string
          description: "Target length range for each masked CDR in VL. Format: min-max for each CDR, comma-separated (e.g., 6-7,6-7,9-15) [Only available when task is one of scfv]"
          example: "6-7,6-7,9-15"

    # Omegafold Settings
    OmegafoldSettings:
      type: object
      required:
        - sequence
      properties:
        sequence:
          type: string
          description: "Protein amino acid sequence"
          example: "MALKSLVLLSLLVLVLLLVRVQPSLGKETAAAKFERQHMDSSTSAASSSNYCNQMMKSRNLTKDRCKPVNTFVHESLADVQAVCSQKNVACKNGQTNCYQSYSTMSITDCRETGSSKYPNCAYKTTQANKHIIVACEGNPYVPVHFDASV"

    # Openfe Settings
    OpenfeSettings:
      type: object
      required:
        - simulationType
        - proteinPDB
        - networkType
        - ligandsSDF
        - ligandFile
        - nvtLength
        - atomMapper
        - max3d
        - chargeMethod
        - protocolRepeats
        - equilLength
        - prodLength
      properties:
        simulationType:
          type: string
          description: "Choose the type of simulation to run"
          default: "complexMD"
          enum:
            - "rbfe"
            - "complexMD"
        proteinPDB:
          type: string
          description: "Protein structure in pdb format File with extensions [pdb]"
          format: binary
        networkType:
          type: string
          description: "How ligands are connected in the perturbation network"
          default: "minimal_spanning"
          enum:
            - "minimal_spanning"
            - "minimal_redundant"
            - "star_map"
            - "custom"
        ligandsSDF:
          type: string
          description: "Ligands in sdf format File with extensions [sdf]"
          format: binary
        alchemicalNetwork:
          type: string
          description: "Interactive preview and editor for the ligand perturbation network"
        networkEdges:
          type: string
        ligandFile:
          type: string
          description: "Ligand file in sdf format File with extensions [sdf]"
          format: binary
        nvtLength:
          type: number
          description: "Length of the NVT phase (ps)"
          minimum: 0
          maximum: 1000
          default: 100
        atomMapper:
          type: string
          description: "Algorithm for mapping atoms between ligand pairs. Kartograf is newer and often produces better mappings for complex transformations."
          default: "lomap"
          enum:
            - "lomap"
            - "kartograf"
        max3d:
          type: number
          description: "Maximum 3D distance between mapped atoms in Angstroms. Lower values require better-aligned ligand poses. Increase if atom mapping fails on unaligned ligands."
          minimum: 0.1
          maximum: 1000
          default: 1
        chargeMethod:
          type: string
          description: "Method for assigning partial charges to ligands. AM1-BCC is the standard method. NAGL uses a graph neural network and is faster."
          default: "am1bcc"
          enum:
            - "am1bcc"
            - "nagl"
        protocolRepeats:
          type: number
          description: "Number of independent repeats per transformation. Minimum 2 required for error estimation."
          minimum: 2
          maximum: 5
          default: 3
        equilLength:
          type: number
          description: "Length of the equilibration phase (ps)"
          minimum: 0
          maximum: 10000
          default: 1000
        prodLength:
          type: number
          description: "Length of the production phase (ps)"
          minimum: 0
          maximum: 10000
          default: 5000

    # Openfold Settings
    OpenfoldSettings:
      type: object
      required:
        - inputFormat
        - sequence
        - molecules
      properties:
        inputFormat:
          type: string
          default: "sequence"
          enum:
            - "sequence"
            - "molecules"
        sequence:
          type: string
          description: "Protein sequence (use : to specify chainbreaks for multimers) [Only available when inputFormat is one of sequence]"
          example: "TRPNHTIYINNLNEKIKKDELKKSLHAIFSRFGQIL"
        molecules:
          type: string
          example: ["{'type': 'protein', 'sequence': 'TRPNHTIYINNLNEKIKKDELKKSLHAIFSRFGQIL', 'chain': 'A'}", "{'type': 'protein', 'sequence': 'MRGQAFVIFKEVSSATNALRSMQGFPFYDKPMRIQYAKTDSDIIAKM', 'chain': 'B'}", "{'inputType': 'ccd', 'chain': 'L', 'ccdCode': 'ATP', 'type': 'ligand'}"]
        addLigands:
          type: boolean
          description: "Add small molecule ligands to your structure prediction [Only available when inputFormat is one of sequence]"
          default: False
        ligands:
          type: string
          description: "Specify your ligands (CCD code or smiles), use : to separate multiple ligands in one structure prediction (ex. CC:CC). <ui>Each new line is a separate set of ligands, to be paired with each protein sequence.</ui> [Only available when inputFormat is one of sequence]"
          example: ["SAH", "N[C@@H](Cc1ccc(O)cc1)C(=O)O"]
        templateMode:
          type: string
          description: "Use no templates, automatic PDB100 templates, or uploaded custom template CIFs."
          default: "none"
          enum:
            - "none"
            - "pdb100"
            - "custom"
        templateFiles:
          type: string
          description: "Custom template mmCIF files for template-guided protein inference. File with extensions [cif]"
          format: binary
        templateMapping:
          type: string
          description: "Map each query chain to the corresponding chain in each uploaded template file."
          example: ["{'templateName': 'input.cif', 'mappings': [{'boltzChainID': 'A', 'templateChainID': 'B'}]}"]
        outputFormat:
          type: string
          default: "pdb"
          enum:
            - "pdb"
            - "cif"
        numSeeds:
          type: number
          description: "Number of diffusion samples to generate per prediction."
          default: 5
        chooseBest:
          type: boolean
          description: "Return only the best confidence model (by ranking score) or all generated models"
          default: True

    # Openmm Settings
    OpenmmSettings:
      type: object
      required:
        - systemType
        - pdbFile
        - ligandFile
        - ligandCharge
        - minimizationSteps
        - equilibrationTime
        - productionTime
      properties:
        systemType:
          type: string
          description: "Type of system to be simulated"
          default: "protein"
          enum:
            - "protein"
            - "protein-ligand"
        pdbFile:
          type: string
          description: "Protein structure in pdb format to use for MD simulation (all non-protein atoms will be removed) File with extensions [pdb]"
          example: "9f6o.pdb"
          format: binary
        ligandFile:
          type: string
          format: binary
        ligandCharge:
          type: number
          description: "Charge of the ligand"
          minimum: -3
          maximum: 3
          default: 0
        minimizationSteps:
          type: string
          description: "Max number of minimization steps"
          default: "10000"
          enum:
            - "1000"
            - "5000"
            - "10000"
            - "20000"
            - "50000"
            - "100000"
        equilibrationTime:
          type: number
          description: ""
          default: 0.2
        productionTime:
          type: number
          description: ""
          default: 2
        forceField:
          type: string
          description: "Choose the force field"
          default: "ff19SB"
          enum:
            - "ff19SB"
            - "ff14SB"
        timestep:
          type: string
          description: "Integration timestep (fs)"
          default: "2"
          enum:
            - "2"
            - "4"
        boxSize:
          type: number
          description: "Water padding around the solute (angstroms). Typical values: 10-15."
          minimum: 5
          maximum: 20
          default: 12
        concentration:
          type: number
          description: "Ion concentration (M)"
          default: 0.15
        temperature:
          type: string
          description: "Equilibration + production temperature (K)"
          default: "298"
        pressure:
          type: string
          description: "Equilibration + production pressure (bar)"
          default: "1"
        forceConstant:
          type: number
          description: "Force constant (kcal/mol/A²)"
          default: 1000
        equilTrajFreq:
          type: string
          description: "Trajectory write frequency (steps)"
          default: "1000"
          enum:
            - "500"
            - "1000"
            - "2000"
            - "5000"
            - "10000"
        prodTrajFreq:
          type: string
          description: "Trajectory write frequency (steps)"
          default: "1000"
          enum:
            - "500"
            - "1000"
            - "2000"
            - "5000"
            - "10000"
        removeWaters:
          type: string
          description: "Remove waters before simulation"
          default: "no"
          enum:
            - "yes"
            - "no"
        stepSize:
          type: number
          description: "Step size for subsampling during 2D RMSD Generation"
          default: 5

    # Openmm-Metadynamics Settings
    OpenmmMetadynamicsSettings:
      type: object
      required:
        - systemType
        - pdbFile
        - ligandFile
        - ligandCharge
        - minimizationSteps
        - equilibrationTime
        - productionTime
        - metadynamicsType
        - collectiveVariable1
        - cv1Atoms
        - cv1Sigma
        - enableCV2
        - collectiveVariable2
        - cv2Atoms
        - cv2Sigma
        - gaussianHeight
        - gaussianPace
        - biasFactor
        - plumedOutputFreq
        - prodTrajFreq
        - previousHillsFile
      properties:
        systemType:
          type: string
          description: "Type of system to be simulated"
          default: "protein"
          enum:
            - "protein"
            - "protein-ligand"
        pdbFile:
          type: string
          description: "Protein structure in pdb format to use for metadynamics simulation File with extensions [pdb]"
          example: "9f6o.pdb"
          format: binary
        ligandFile:
          type: string
          format: binary
        ligandCharge:
          type: number
          description: "Charge of the ligand"
          minimum: -3
          maximum: 3
          default: 0
        forceField:
          type: string
          description: "Choose the force field"
          default: "ff19SB"
          enum:
            - "ff19SB"
            - "ff14SB"
        boxSize:
          type: number
          description: "Water padding around the solute (angstroms). Typical values: 10-15."
          minimum: 5
          maximum: 20
          default: 12
        concentration:
          type: number
          description: "Ion concentration (M)"
          default: 0.15
        temperature:
          type: string
          description: "Simulation temperature (K)"
          default: "298"
        pressure:
          type: string
          description: "Simulation pressure (bar)"
          default: "1"
        timestep:
          type: string
          description: "Integration timestep (fs)"
          default: "2"
          enum:
            - "2"
            - "4"
        removeWaters:
          type: string
          description: "Remove crystallographic waters before simulation"
          default: "yes"
          enum:
            - "yes"
            - "no"
        minimizationSteps:
          type: string
          description: "Max number of minimization steps"
          default: "10000"
          enum:
            - "1000"
            - "5000"
            - "10000"
            - "20000"
            - "50000"
            - "100000"
        equilibrationTime:
          type: number
          description: "Time for equilibration phase (ns)"
          default: 0.2
        productionTime:
          type: number
          description: "Time for metadynamics production run (ns) - typically longer than standard MD"
          default: 10
        metadynamicsType:
          type: string
          description: "Type of metadynamics to perform"
          default: "well-tempered"
          enum:
            - "standard"
            - "well-tempered"
        collectiveVariable1:
          type: string
          description: "Type of first collective variable to bias"
          default: "rmsd"
          enum:
            - "rmsd"
            - "distance"
            - "angle"
            - "dihedral"
            - "coordination"
            - "gyration"
        cv1Atoms:
          type: string
          description: "Atom selection for first CV (e.g. 5, 1-100 / 1,5-8,10 for atoms)"
        cv1ReferenceFile:
          type: string
          description: "Reference PDB for RMSD calculation (if empty, uses starting structure) File with extensions [pdb]"
          format: binary
        cv1Sigma:
          type: number
          description: "Width of Gaussians for first CV (nm for distance/RMSD, radians for angles)"
          minimum: 0.01
          maximum: 1
          default: 0.05
        cv1Min:
          type: number
          description: "Minimum value for CV1 grid (nm for distance/RMSD, radians for angles)"
          default: 0
        cv1Max:
          type: number
          description: "Maximum value for CV1 grid (nm for distance/RMSD, radians for angles)"
          default: 1
        enableCV2:
          type: string
          description: "Enable 2D metadynamics with a second CV"
          default: "no"
          enum:
            - "yes"
            - "no"
        collectiveVariable2:
          type: string
          description: "Type of second collective variable"
          default: "distance"
          enum:
            - "rmsd"
            - "distance"
            - "angle"
            - "dihedral"
            - "coordination"
            - "gyration"
        cv2Atoms:
          type: string
          description: "Atom selection for second CV"
          default: ""
        cv2Sigma:
          type: number
          description: "Width of Gaussians for second CV"
          minimum: 0.01
          maximum: 1
          default: 0.05
        cv2Min:
          type: number
          description: "Minimum value for CV2 grid"
          default: 0
        cv2Max:
          type: number
          description: "Maximum value for CV2 grid"
          default: 1
        gaussianHeight:
          type: number
          description: "Initial height of Gaussian hills to deposit"
          minimum: 0.1
          maximum: 10
          default: 1.2
        gaussianPace:
          type: string
          description: "Frequency of Gaussian deposition in MD steps"
          default: "500"
          enum:
            - "100"
            - "250"
            - "500"
            - "1000"
            - "2000"
            - "5000"
            - "10000"
        biasFactor:
          type: number
          description: "Bias factor for well-tempered metadynamics (typically 5-20, higher = more exploration)"
          minimum: 1
          maximum: 100
          default: 10
        plumedOutputFreq:
          type: string
          description: "How often to write COLVAR and HILLS output"
          default: "500"
          enum:
            - "100"
            - "250"
            - "500"
            - "1000"
            - "2000"
            - "5000"
        prodTrajFreq:
          type: string
          description: "How often to save trajectory frames"
          default: "1000"
          enum:
            - "500"
            - "1000"
            - "2000"
            - "5000"
            - "10000"
        wallsCV1:
          type: string
          description: "Add restraining walls to keep CV1 within bounds"
          default: "no"
          enum:
            - "yes"
            - "no"
        wallsCV2:
          type: string
          description: "Add restraining walls to keep CV2 within bounds"
          default: "no"
          enum:
            - "yes"
            - "no"
        wallKappa:
          type: number
          description: "Strength of restraining walls"
          minimum: 10
          maximum: 1000
          default: 150
        restartMetadynamics:
          type: string
          description: "Continue metadynamics from a previous HILLS file"
          default: "no"
          enum:
            - "yes"
            - "no"
        previousHillsFile:
          type: string
          description: "Upload HILLS file from previous run to continue File with extensions [dat, hills]"
          format: binary
        gridBins:
          type: string
          description: "Number of bins for free energy surface calculation"
          default: "100"
          enum:
            - "50"
            - "100"
            - "200"
            - "300"

    # Openmm-Relax Settings
    OpenmmRelaxSettings:
      type: object
      required:
        - pdbFile
      properties:
        pdbFile:
          type: string
          description: "Protein structure in PDB format File with extensions [pdb]"
          format: binary

    # Openmm-Temperature-Replica Settings
    OpenmmTemperatureReplicaSettings:
      type: object
      required:
        - systemType
        - pdbFile
        - ligandFile
        - ligandCharge
        - numReplicas
        - temperatureMin
        - temperatureMax
        - temperatureDistribution
        - customTemperatures
        - minimizationSteps
        - equilibrationTime
        - productionTime
        - exchangeFrequency
        - trajOutputFreq
        - energyOutputFreq
        - checkpointFreq
        - mixingStatisticsFreq
        - saveAllReplicas
      properties:
        systemType:
          type: string
          description: "Type of system to be simulated"
          default: "protein"
          enum:
            - "protein"
            - "protein-ligand"
        pdbFile:
          type: string
          description: "Protein structure in pdb format to use for replica exchange simulation File with extensions [pdb]"
          format: binary
        ligandFile:
          type: string
          format: binary
        ligandCharge:
          type: number
          description: "Charge of the ligand"
          minimum: -3
          maximum: 3
          default: 0
        numReplicas:
          type: string
          description: "Number of replicas to simulate (typically 8-32 for T-REMD)"
          default: "16"
          enum:
            - "4"
            - "8"
            - "12"
            - "16"
            - "20"
            - "24"
            - "32"
            - "48"
        temperatureMin:
          type: number
          description: "Lowest temperature for replica ladder (also used for equilibration and minimization)"
          minimum: 273
          maximum: 400
          default: 298
        temperatureMax:
          type: number
          description: "Highest temperature for replica ladder"
          minimum: 300
          maximum: 500
          default: 370
        temperatureDistribution:
          type: string
          description: "How to distribute temperatures between replicas"
          default: "exponential"
          enum:
            - "linear"
            - "exponential"
            - "custom"
        customTemperatures:
          type: string
          description: "Comma-separated list of temperatures in Kelvin (e.g., 298,305,312,320)"
          default: ""
        minimizationSteps:
          type: string
          description: "Max number of minimization steps"
          default: "10000"
          enum:
            - "1000"
            - "5000"
            - "10000"
            - "20000"
            - "50000"
            - "100000"
        equilibrationTime:
          type: number
          description: "Time for equilibration phase before replica exchange (ns)"
          default: 0.2
        productionTime:
          type: number
          description: "Total production time for replica exchange simulation (ns)"
          default: 10
        forceField:
          type: string
          description: "Choose the force field"
          default: "ff19SB"
          enum:
            - "ff19SB"
            - "ff14SB"
        timestep:
          type: string
          description: "Integration timestep (fs)"
          default: "2"
          enum:
            - "2"
            - "4"
        friction:
          type: number
          description: "Langevin friction coefficient for temperature control (1/ps)"
          minimum: 0.1
          maximum: 10
          default: 1
        boxSize:
          type: number
          description: "Water padding around the solute (angstroms). Typical values: 10-15."
          minimum: 5
          maximum: 20
          default: 12
        concentration:
          type: number
          description: "Ion concentration (M)"
          default: 0.15
        pressure:
          type: string
          description: "Simulation pressure (bar)"
          default: "1"
        barostatFrequency:
          type: string
          description: "Monte Carlo barostat frequency (steps)"
          default: "25"
          enum:
            - "10"
            - "25"
            - "50"
            - "100"
        forceConstant:
          type: number
          description: "Force constant for positional restraints (kcal/mol/A²)"
          default: 1000
        removeWaters:
          type: string
          description: "Remove crystallographic waters before simulation"
          default: "no"
          enum:
            - "yes"
            - "no"
        exchangeFrequency:
          type: string
          description: "How often to attempt replica exchanges"
          default: "500"
          enum:
            - "100"
            - "250"
            - "500"
            - "1000"
            - "2000"
            - "5000"
        trajOutputFreq:
          type: string
          description: "How often to save trajectory frames for each replica"
          default: "1000"
          enum:
            - "500"
            - "1000"
            - "2000"
            - "5000"
            - "10000"
        energyOutputFreq:
          type: string
          description: "How often to write energy and state information"
          default: "500"
          enum:
            - "100"
            - "250"
            - "500"
            - "1000"
            - "2000"
        checkpointFreq:
          type: string
          description: "How often to save checkpoint files for restart capability"
          default: "5000"
          enum:
            - "1000"
            - "2000"
            - "5000"
            - "10000"
            - "20000"
        mixingStatisticsFreq:
          type: string
          description: "How often to compute and log replica exchange statistics and acceptance rates"
          default: "1000"
          enum:
            - "100"
            - "250"
            - "500"
            - "1000"
            - "2000"
            - "5000"
        saveAllReplicas:
          type: string
          description: "Save trajectories for all replicas or only the lowest temperature"
          default: "no"
          enum:
            - "yes"
            - "no"
        stepSize:
          type: number
          description: "Step size for subsampling during 2D RMSD Generation"
          default: 5

    # Orb-Models Settings
    OrbModelsSettings:
      type: object
      required:
        - soluteSmiles
        - solventSmiles
        - weight
      properties:
        soluteSmiles:
          type: string
        solventSmiles:
          type: string
        weight:
          type: string

    # Orb-Models3 Settings
    OrbModels3Settings:
      type: object
      required:
        - proteinFile
        - ligandFile
      properties:
        proteinFile:
          type: string
          description: "pdb structure file for your receptor File with extensions [pdb]"
          example: "6w70.pdb"
          format: binary
        ligandFile:
          type: string
          description: "sdf or mol2 structure file for your ligand File with extensions [sdf, mol2]"
          example: "6w70_ligand.sdf"
          format: binary

    # Orthrus Settings
    OrthrusSettings:
      type: object
      required:
        - sequence
      properties:
        sequence:
          type: string
          example: "ATGATGATG"
        CDSPositions:
          type: string
        spliceSites:
          type: string

    # Paragraph Settings
    ParagraphSettings:
      type: object
      required:
        - proteinFile
        - analysisMode
        - heavyChain
        - lightChain
      properties:
        proteinFile:
          type: string
          description: "Antibody structure in PDB format. You will select chains based on the analysis mode. File with extensions [pdb]"
          format: binary
        analysisMode:
          type: string
          description: "Select which chains to analyze: paired (both heavy and light), heavy only, or light only"
          default: "paired"
          enum:
            - "paired"
            - "heavy"
            - "light"
        heavyChain:
          type: string
          description: "Select the heavy chain for the uploaded PDB file [Only available when analysisMode is one of heavy, paired]"
        lightChain:
          type: string
          description: "Select the light chain for the uploaded PDB file [Only available when analysisMode is one of light, paired]"

    # Parasurf Settings
    ParasurfSettings:
      type: object
      required:
        - pdbFile
      properties:
        pdbFile:
          type: string
          description: "Antibody pdb to predict binding site File with extensions [pdb]"
          example: "4N0Y_receptor_1.pdb"
          format: binary

    # Pdbsum Settings
    PdbsumSettings:
      type: object
      required:
        - pdbFile
      properties:
        pdbFile:
          type: string
          description: "Input pdb file to generate PDBSum analysis File with extensions [pdb]"
          example: "1a3n.pdb"
          format: binary

    # Pdockq Settings
    PdockqSettings:
      type: object
      required:
        - pdbFile
      properties:
        pdbFile:
          type: string
          description: "Protein structure file. File with extensions [pdb]"
          format: binary

    # Pepfunn Settings
    PepfunnSettings:
      type: object
      required:
        - peptide
      properties:
        peptide:
          type: string
          example: "FNCREWCWN"

    # Pepmlm Settings
    PepmlmSettings:
      type: object
      required:
        - targetSequence
        - peptideLength
        - numDesigns
      properties:
        targetSequence:
          type: string
          description: "Sequence of the target to design peptide against"
          example: "MQRGKVKWFNNEKGYGFIEVEGGSDVFVHFTAIQGEGFKTLEEGQEVSFEIVQGNRGPQAANVVKE"
        peptideLength:
          type: number
          description: "Length of the peptide to design"
          default: 15
        numDesigns:
          type: string
          description: "Number of designs to generate"
          default: 8
          enum:
            - "1"
            - "2"
            - "4"
            - "8"
            - "16"
            - "32"

    # Peppatch Settings
    PeppatchSettings:
      type: object
      required:
        - pdbFile
      properties:
        pdbFile:
          type: string
          format: binary

    # Peptiverse Settings
    PeptiverseSettings:
      type: object
      required:
        - inputType
        - sequence
        - smilesInput
      properties:
        inputType:
          type: string
          description: "Select input format"
          default: "wt"
          enum:
            - "wt"
            - "smiles"
        sequence:
          type: string
          description: "Amino acid sequence of the peptide [Only available when inputType is one of wt]"
          example: "GIVEQCCTSICSLYQLENYCN"
        smilesInput:
          type: string
          description: "SMILES representation of the peptide/molecule [Only available when inputType is one of smiles]"
          example: "CC(C)C[C@@H]1NC(=O)[C@@H](CC(C)C)N(C)C(=O)[C@@H](C)N(C)C(=O)[C@H](Cc2ccccc2)NC(=O)[C@H](CC(C)C)N(C)C(=O)[C@H]2CCCN2C1=O"
        targetSequence:
          type: string
          description: "Provide a target protein sequence to predict binding affinity. If left blank, binding affinity prediction is skipped."

    # Pka Settings
    PkaSettings:
      type: object
      required:
        - inputType
        - smiles
        - sdfFile
      properties:
        inputType:
          type: string
          description: "Type of input to use File with extensions [sdf]"
          default: "smiles"
          enum:
            - "smiles"
            - "sdf"
        smiles:
          type: string
          example: "CC(=O)c1ccc(O)cc1"
        sdfFile:
          type: string
          example: "c1cc(O)ccc1C(=O)C (Neutral Structure).sdf"
          format: binary

    # Plabdab Settings
    PlabdabSettings:
      type: object
      required:
        - task
        - proteinType
        - keywords
      properties:
        task:
          type: string
          default: "sequence"
          enum:
            - "sequence"
            - "keyword"
        proteinType:
          type: string
          default: "antibody"
          enum:
            - "antibody"
            - "nanobody"
        heavyChain:
          type: string
          description: "Protein sequence of heavy chain [Only available when task is one of sequence]"
          example: "VKLLEQSGAEVKKPGASVKVSCKASGYSFTSYGLHWVRQAPGQRLEWMGWISAGTGNTKYSQKFRGRVTFTRDTSATTAYMGLSSLRPEDTAVYYCARDPYGGGKSEFDYWGQGTLVTVSS"
        lightChain:
          type: string
          description: "Protein sequence of light chain [Only available when task is one of sequence]"
          example: "ELVMTQSPSSLSASVGDRVNIACRASQGISSALAWYQQKPGKAPRLLIYDASNLESGVPSRFSGSGSGTDFTLTISSLQPEDFAIYYCQQFNSYPLTFGGGTKVEIKRTV"
        nanobodySequence:
          type: string
          example: "QVQLQESGGGLVQAGGSLRLSCAASGTISYTPDMGWYRQAPGKEREFVAGITVGTSTYYADSVKGRFTISRDNAKNTVYLQMNSLKPEDTAVYYCAASRQWGPGFYYWGQGTQVTVSS"
        numSamples:
          type: number
          description: "Maximum number of sequences to return [Only available when task is one of sequence]"
          default: 20
        sortOrder:
          type: string
          description: "Criteria to sort the results. It can done by 'Heavy', 'Light' or 'Average' sequence Identity [Only available when task is one of sequence]"
          example: "average"
          default: "average"
          enum:
            - "average"
            - "heavy"
            - "light"
        keywords:
          type: string
          description: "
          PLAbDab can be searched using regular expressions for keywords contained in the title of the source literature.
          If searching for a specific antigen target name, not every synonym will be captured. You can use a regular 
          expression to extend your search coverage, e.g., 'RSV|Respiratory Syncytial Virus' (no quotation marks)
         [Only available when task is one of keyword]"
          example: "RSV|Respiratory Syncytial Virus"

    # Placer Settings
    PlacerSettings:
      type: object
      required:
        - receptorFile
        - ligandCode
      properties:
        receptorFile:
          type: string
          description: "pdb structure file for your receptor and ligand together File with extensions [pdb]"
          example: "dnHEM1.pdb"
          format: binary
        ligandCode:
          type: string
          description: "Ligand code"
          example: "HEM"
        numSamples:
          type: number
          description: "Number of poses to generate"
          default: 50
        mutations:
          type: object
          description: ""
          example: ["{'residueIdx': '32', 'chain': 'A', 'newResidue': 'TRP'}"]
          default: []
        rankBy:
          type: string
          default: "prmsd"
          enum:
            - "prmsd"
            - "plddt"
            - "plddt_pde"
        predictMulti:
          type: boolean
          description: "Whether to predict for multiple ligands"
          default: False
        ligandFile:
          type: string
          description: "sdf structure file for your ligand(s) File with extensions [sdf]"
          format: binary

    # Plm-Finetune Settings
    PlmFinetuneSettings:
      type: object
      required:
        - task
        - baseModel
        - csvFile
        - sequenceColumn
        - propertyColumn
      properties:
        task:
          type: string
          default: "regression"
          enum:
            - "regression"
            - "classification"
        baseModel:
          type: string
          description: "Base model to use for finetuning"
          default: "facebook/esm2_t33_650M_UR50D"
          enum:
            - "facebook/esm2_t6_8M_UR50D"
            - "facebook/esm2_t12_35M_UR50D"
            - "facebook/esm2_t30_150M_UR50D"
            - "facebook/esm2_t33_650M_UR50D"
            - "facebook/esm2_t36_3B_UR50D"
            - "Rostlab/prot_t5_xl_uniref50"
            - "Rosltab/ProstT5"
        csvFile:
          type: string
          description: "CSV file containing your sequences and property of interest File with extensions [csv]"
          format: binary
        sequenceColumn:
          type: string
          description: "Title of sequence column"
        propertyColumn:
          type: string
          description: "Title of property column"
        epochs:
          type: number
          description: "Number of Epochs to train the model for"
          default: 20
        learningRate:
          type: number
          description: "Learning rate for model training (default: 3e-4)"
          default: 0.0003
        batchSize:
          type: number
          description: "Training batch size per GPU (effective batch = batch size × gradient accumulation)"
          default: 1
        gradientAccumulation:
          type: number
          description: "Number of gradient accumulation steps (effective batch size = batch × accumulation). Recommended effective batch size: 8"
          default: 8
        valBatchSize:
          type: number
          description: "Batch size for validation evaluation"
          default: 16
        dropout:
          type: number
          description: "Dropout rate for the classification head (0.0 to 1.0)"
          default: 0.2
        seed:
          type: number
          description: "Random seed for reproducibility"
          default: 42
        deepspeed:
          type: boolean
          description: "Enable DeepSpeed optimization for large models (disable for faster training on smaller models)"
          default: False
        mixedPrecision:
          type: boolean
          description: "Enable FP16 mixed precision training for faster training and lower memory usage"
          default: True
        fullModelTraining:
          type: boolean
          description: "Train the full model instead of using LoRA (requires more memory but may improve accuracy)"
          default: False

    # Plm-Inference Settings
    PlmInferenceSettings:
      type: object
      required:
        - csvFile
        - sequenceColumn
      properties:
        csvFile:
          type: string
          description: "CSV with sequences to predict properties for File with extensions [csv]"
          format: binary
        sequenceColumn:
          type: string
          description: "Title of sequence column"

    # Pocketgen Settings
    PocketgenSettings:
      type: object
      required:
        - proteinFile
        - ligandFile
      properties:
        proteinFile:
          type: string
          description: "Protein structure in pdb format File with extensions [pdb]"
          format: binary
        ligandFile:
          type: string
          description: " File with extensions [sdf]"
          format: binary

    # Ppap Settings
    PpapSettings:
      type: object
      required:
        - pdbFile
        - receptorChains
        - ligandChains
      properties:
        pdbFile:
          type: string
          description: "PDB file containing protein complex File with extensions [pdb]"
          example: "1a4y.pdb"
          format: binary
        receptorChains:
          type: array
          items:
            type: string
          description: "Chain IDs of the receptor protein (will batch over each combination with ligand chains)"
          example: ["A"]
        ligandChains:
          type: array
          items:
            type: string
          description: "Chain IDs of the ligand protein (will batch over each combination with receptor chains)"
          example: ["B"]

    # Ppiscreenml Settings
    PpiscreenmlSettings:
      type: object
      required:
        - name
        - protein1Chains
        - protein2Chains
      properties:
        name:
          type: string
          description: "Name of a previously completed AlphaFold job on Tamarind"
          example: "alphafold_job_name"
        protein1Chains:
          type: string
          description: "Chains that make up protein 1 (separated by spaces)"
          example: "A B"
        protein2Chains:
          type: string
          description: "Chains that make up protein 2 (separated by spaces)"
          example: "C"

    # Process-Atac Settings
    ProcessAtacSettings:
      type: object
      required:
        - r1Fastq
        - r2Fastq
      properties:
        r1Fastq:
          type: string
          description: "First paired-end FASTQ file (Read 1) File with extensions [fastq, fastq.gz]"
          format: binary
        r2Fastq:
          type: string
          description: "Second paired-end FASTQ file (Read 2) File with extensions [fastq, fastq.gz]"
          format: binary
        sampleName:
          type: string
          description: "Optional sample name for output files"
          default: "sample"

    # Prodigy Settings
    ProdigySettings:
      type: object
      required:
        - proteinFile
      properties:
        proteinFile:
          type: string
          description: "Pdb structure file to predict ddG File with extensions [pdb]"
          format: binary

    # Profam Settings
    ProfamSettings:
      type: object
      required:
        - a3mFile
      properties:
        a3mFile:
          type: string
          description: "A3M file containing multiple sequence alignment - alignment won't be used, but ensembles will be generated from the sequences in the file and averaged File with extensions [a3m]"
          format: binary

    # Profluent-E1 Settings
    ProfluentE1Settings:
      type: object
      required:
        - task
        - model
        - sequence
        - mask
        - wildtypeSequence
        - mutantSequence
      properties:
        task:
          type: string
          default: "scan"
          enum:
            - "scan"
            - "embed"
        model:
          type: string
          default: "Profluent-Bio/E1-300m"
          enum:
            - "Profluent-Bio/E1-150m"
            - "Profluent-Bio/E1-300m"
            - "Profluent-Bio/E1-600m"
        sequence:
          type: string
          description: "Protein sequence [Only available when task is one of scan, embed, mask]"
          example: "AAAAAC"
        mask:
          type: string
          description: "Residues to mask [Only available when task is one of mask]"
          example: "3-5"
        wildtypeSequence:
          type: string
          description: "Wildtype protein sequence [Only available when task is one of score]"
          example: "AAAAAAC"
        mutantSequence:
          type: string
          description: "Mutant protein sequence [Only available when task is one of score]"
          example: "AAAAATC"

    # Progen2-Finetune Settings
    Progen2FinetuneSettings:
      type: object
      required:
        - baseModel
        - fastaFile
      properties:
        baseModel:
          type: string
          description: "Base model to use for finetuning"
          default: "hugohrban/progen2-small"
          enum:
            - "hugohrban/progen2-small"
            - "hugohrban/progen2-medium"
            - "hugohrban/progen2-large"
            - "hugohrban/progen2-xlarge"
        fastaFile:
          type: string
          description: "FASTA file containing your sequences File with extensions [fasta]"
          format: binary
        epochs:
          type: number
          description: "Number of Epochs to train the model for"
          default: 5

    # Progen2-Inference Settings
    Progen2InferenceSettings:
      type: object
      required:
        - kSamples
        - temperature
        - maxLength
        - seedSequence
      properties:
        kSamples:
          type: number
          description: "Top-k sampling parameter. 0 means no top-k sampling"
        temperature:
          type: number
          description: "Temperature for sampling"
        maxLength:
          type: number
          description: "Maximum length of the generated sequence"
        seedSequence:
          type: string
          description: "Fixed initial part of sequence we continue the generation from"

    # Propka Settings
    PropkaSettings:
      type: object
      required:
        - pdbFile
      properties:
        pdbFile:
          type: string
          format: binary

    # Prot-T5-Embeddings Settings
    ProtT5EmbeddingsSettings:
      type: object
      required:
        - sequence
      properties:
        sequence:
          type: string
          description: "Sequence to compute embedding"
          example: "QIVLTQSPAIMSASPGEKVTMTCSASSSVSYMNWYQQKSGTSPKRWIYDTSKLASGVPAHFRGSGSGTSYSLTISGMEAEDAATYYCQQWSSNPFTFGSGTKLEIN"
        sequenceBatching:
          type: boolean
          description: "Batch process the input sequences"
          default: False
        sequenceBatchSize:
          type: number
          description: "Determines the number of sequences in each batch"

    # Protein-Design Settings
    ProteinDesignSettings:
      type: object
      required:
        - task
        - contig
        - pdbFile
        - numDesigns
        - numSequences
      properties:
        task:
          type: string
        contig:
          type: string
        pdbFile:
          type: string
          format: binary
        numDesigns:
          type: string
        numSequences:
          type: string
        numRecycles:
          type: string
        multimer:
          type: string
        sampleEach:
          type: string
        scoring:
          type: array
          items:
            type: string
          default: ['netsolp', 'temstapro']
          enum:
            - "netsolp"
            - "temstapro"

    # Protein-Hunter Settings
    ProteinHunterSettings:
      type: object
      required:
        - task
        - targetSequence
        - targetCCD
      properties:
        task:
          type: string
          default: "protein-binder"
          enum:
            - "protein-binder"
            - "small-molecule-binder"
        targetSequence:
          type: string
          example: "AFTVTVPKDLYVVEYGSNMTIECKFPVEKQLDLAALIVYWEMEDKNIIQFVHGEEDLKVQHSSYRQRARLLKDQLSLGNAALQITDVKLQDAGVYRCMISYGGADYKRITVKVNAPYAAALE"
        targetCCD:
          type: string
          example: "SAM"
        lengthRange:
          type: array
          items:
            type: string
          default: "90,150"
        numDesigns:
          type: integer
          default: 1
        numCycles:
          type: number
          maximum: 100
          default: 7

    # Protein-Metrics Settings
    ProteinMetricsSettings:
      type: object
      required:
        - metricType
        - pdbFile
        - sequence
      properties:
        metricType:
          type: string
          default: "Single Sequence Metrics"
          enum:
            - "Single Sequence Metrics"
            - "Structure Metrics"
        pdbFile:
          type: string
          format: binary
        sequence:
          type: string

    # Protein-Properties Settings
    ProteinPropertiesSettings:
      type: object
      required:
        - inputType
        - pdbFile
        - sequence
        - heavySequence
        - lightSequence
      properties:
        inputType:
          type: string
          default: "Structure"
          enum:
            - "Structure"
            - "Sequence"
        pdbFile:
          type: string
          format: binary
        sequence:
          type: string
        heavySequence:
          type: string
        lightSequence:
          type: string

    # Protein-Scoring Settings
    ProteinScoringSettings:
      type: object
      required:
        - files
      properties:
        files:
          type: string
          example: ["pdb1.pdb", "pdb2.pdb", "pdb3.pdb"]
          format: binary
        jobNames:
          type: string
          example: ["pdb1", "pdb2", "pdb3"]
        scoring:
          type: array
          items:
            type: string
          description: "Scoring analysis to perform on each designed structure"
          default: ['netsolp', 'temstapro', 'compss-sequence']
          enum:
            - "netsolp"
            - "temstapro"
            - "compss-sequence"
            - "compss-structure"

    # Protein-Sol Settings
    ProteinSolSettings:
      type: object
      required:
        - sequence
      properties:
        sequence:
          type: string
          description: "Protein amino acid sequence (minimum 21 residues)"
          example: "MALKSLVLLSLLVLVLLLVRVQPSLGKETAAAKFERQHMDSSTSAASSSNYCNQMMKSRNLTKDRCKPVNTFVHESLADVQAVCSQKNVACKNGQTNCYQSYSTMSITDCRETGSSKYPNCAYKTTQANKHIIVACEGNPYVPVHFDASV"

    # Protein-Solubilization Settings
    ProteinSolubilizationSettings:
      type: object
      required:
        - pdbFile
        - chain
        - numDesigns
      properties:
        pdbFile:
          type: string
          description: "Protein structure in pdb format, should be File with extensions [pdb]"
          example: "1haz.pdb"
          format: binary
        chain:
          type: string
          example: "B"
        designedResidues:
          type: string
          description: "Residues to design in the original pdb"
          example: "26-32"
        numDesigns:
          type: integer
          description: "Number of sequences to produce"
          default: 1
        numRecycles:
          type: number
          description: "Number of times to recycle outputs back through structure prediction process for refined results"
          minimum: 0
          maximum: 20
          default: "0"

    # Proteina-Complexa Settings
    ProteinaComplexaSettings:
      type: object
      required:
        - task
        - pdbFile
        - targetChains
        - ligandCode
        - ameLigands
        - motifAtomSpec
        - binderLengthRange
      properties:
        task:
          type: string
          description: "Proteina-Complexa pipeline to run"
          default: "protein-binder"
          enum:
            - "protein-binder"
            - "ligand-binder"
            - "motif-ligand"
        pdbFile:
          type: string
          description: "Target structure used for binder design. For ligand-aware modes, the ligand must already be present in the PDB file. File with extensions [pdb] [Only available when task is one of protein-binder, ligand-binder, motif-ligand]"
          example: {'ligand-binder': '7v11_ligand_centered.pdb', 'motif-ligand': 'M0024_1nzy_v3.pdb', 'protein-binder': 'PD-L1.pdb'}
          format: binary
        targetChains:
          type: array
          items:
            type: string
          description: "Target chain IDs to expose to Proteina-Complexa for protein binder design [Only available when task is one of protein-binder]"
          example: ["A"]
        hotspotResidues:
          type: object
          description: "Optional hotspot residues to bias the binder interface. If empty, Proteina-Complexa will design without specified hotspots. [Only available when task is one of protein-binder]"
          example: {'A': '37,39,49,98'}
        ligandCode:
          type: string
          description: "Ligand residue code to target from the input PDB [Only available when task is one of ligand-binder]"
          example: "OQO"
        ameLigands:
          type: string
          description: "Ligand residue code present in the uploaded target PDB. The selected ligand is rewritten onto chain A with the generic L:0 name at runtime. [Only available when task is one of motif-ligand]"
          example: "L:1"
        motifAtomSpec:
          type: string
          description: "Motif atom specification string using residues from the uploaded target PDB, for example 'B64: [O, C]; B86: [CB, CA, N, C]'. The selected protein motif residues are rewritten onto chain B for Proteina-Complexa at runtime. [Only available when task is one of motif-ligand]"
          example: "B64: [O, C]; B86: [CB, CA, N, C]; B90: [CE1, ND1, NE2, CG, CD2]; B114: [N, CA]; B137: [NE1, CD1, CE2, CG, CD2, CZ2]; B145: [OD2, CG, CB, OD1]"
        binderLengthRange:
          type: array
          items:
            type: string
          description: "Binder length range to sample from [Only available when task is one of protein-binder, ligand-binder, motif-ligand]"
          default: {'ligand-binder': '80,140', 'motif-ligand': '120,220', 'protein-binder': '70,150'}
        numDesigns:
          type: integer
          description: "Number of independent Proteina-Complexa jobs to launch"
          default: 1

    # Proteinmpnn Settings
    ProteinmpnnSettings:
      type: object
      required:
        - pdbFile
        - designedResidues
      properties:
        pdbFile:
          type: string
          description: "Protein structure file to be designed File with extensions [pdb]"
          example: "9f6o.pdb"
          format: binary
        designedChains:
          type: array
          items:
            type: string
          description: "Chain IDs to be designed (rest will be fixed)"
          example: ["B"]
        designedResidues:
          type: object
          description: "Residues to design in your protein, can be ranges or individual residues"
          example: {'B': '26 27 28 29 30 31 32 52 53 54 55 56 95 96 97 98 99 100 101 102'}
          default: {}
        numSequences:
          type: number
          description: "Number of sequences to be generated for each protein backbone"
          default: 2
        temperature:
          type: number
          description: "Model temperature - Suggested values 0.1, 0.15, 0.2, 0.25, 0.3. Higher values will lead to more diversity"
          minimum: 0
          maximum: 1
          default: 0.1
        modelType:
          type: string
          default: "proteinmpnn"
          enum:
            - "proteinmpnn"
            - "ligandmpnn"
            - "solublempnn"
            - "hypermpnn"
            - "abmpnn"
        noiseLevel:
          type: string
          description: "Select from models of various noise levels (A) [Only available when modelType is one of proteinmpnn, solublempnn, hypermpnn, ligandmpnn]"
          default: "0.2"
          enum:
            - "0.02"
            - "0.1"
            - "0.2"
            - "0.3"
        omitAAs:
          type: string
          description: "These amino acids will be avoided when generating sequences"
          default: "C"
        verifySequences:
          type: string
          description: "Automatically perform structure prediction on generated sequences for verification"
          enum:
            - "verify-alphafold"
            - "verify-chai"
        bias_AA:
          type: string
          description: "Bias toward/against specific amino acids, as comma separated list. Example: W:3.0,P:3.0,C:3.0,A:-3.0"
          example: "W:3.0,P:3.0,C:3.0,A:-3.0"
        bias_AA_per_residue:
          type: string
          description: "Bias amino acids per residue, as dictionary. Example: {\"C1\": {\"G\": -0.3, \"C\": -2.0, \"P\": 10.8}, \"C3\": {\"P\": 10.0}, \"C5\": {\"G\": -1.3, \"P\": 10.0}, \"C7\": {\"G\": -1.3, \"P\": 10.0}}"
          example: "{\"C1\": {\"G\": -0.3, \"C\": -2.0, \"P\": 10.8}, \"C3\": {\"P\": 10.0}, \"C5\": {\"G\": -1.3, \"P\": 10.0}, \"C7\": {\"G\": -1.3, \"P\": 10.0}}"
        omit_AA_per_residue:
          type: string
          description: "Specify amino acids to exclude at specific residue positions. To force a specific amino acid, omit all others. Example: {\"A1\": \"CP\", \"A2\": \"CW\"} will prevent C,P at position A1 and C,W at position A2."
          example: "{\"A1\": \"CP\", \"A2\": \"CW\"}"
        homo_oligomer:
          type: number
          description: "Number of copies of the protein (ex. 2 for dimer, 3 for trimer, etc.)"

    # Proteinmpnn-Ddg Settings
    ProteinmpnnDdgSettings:
      type: object
      required:
        - pdbFile
        - chains
      properties:
        pdbFile:
          type: string
          example: "5TPN.pdb"
          format: binary
        chains:
          type: string
          example: "H"
        topK:
          type: number
          description: "Maximum number of sequences to output (sorted by logit difference)"
          default: "10"

    # Proteinmpnn-Ddg-Binder Settings
    ProteinmpnnDdgBinderSettings:
      type: object
      required:
        - pdbFile
        - binder_chains
        - receptor_chains
      properties:
        pdbFile:
          type: string
          example: "5TPN.pdb"
          format: binary
        binder_chains:
          type: array
          items:
            type: string
          example: ["H", "L"]
        receptor_chains:
          type: array
          items:
            type: string
          example: ["A"]

    # Proteinmpnn-Score Settings
    ProteinmpnnScoreSettings:
      type: object
      required:
        - pdbFile
      properties:
        pdbFile:
          type: string
          description: "Pdb to score File with extensions [pdb]"
          format: binary
        sequence:
          type: string
          description: "Sequence to score"
        allChains:
          type: boolean
          description: "Score all chains in the PDB file"
          default: True
        chain:
          type: string
          description: "Chain to score"

    # Protenix Settings
    ProtenixSettings:
      type: object
      required:
        - inputFormat
        - sequence
      properties:
        inputFormat:
          type: string
          default: "sequence"
          enum:
            - "sequence"
            - "list"
        sequence:
          type: string
          description: "Protein sequence (use : to specify chainbreaks for multimers) [Only available when inputFormat is one of sequence]"
          example: "TRPNHTIYINNLNEKIKKDELKKSLHAIFSRFGQILDILVSRSLK:MRGQAFVIFKEVSSATNALRSMQGFPFYDKPMRIQYAKTDSDIIAKM"
          maxLength: 2048
        proteins:
          type: string
          description: "List of protein sequences you want included in your complex [Only available when inputFormat is one of list]"
          example: ["TRPNHTIYINNLNEKIKKDELKKSLHAIFSRFGQILDILVSRSLK", "MRGQAFVIFKEVSSATNALRSMQGFPFYDKPMRIQYAKTDSDIIAKM"]
        rnas:
          type: string
          description: "List of RNA sequences you want included in your complex [Only available when inputFormat is one of list]"
          example: ["GAGAGAGAAGTCAACCAGAGAAACACACCAACCCATTGCACTCCGGG", "TTGGTGGTATATTACCTGGTACGGGGGAAACTTCGTGGTGGCCGGCCACCTGACA"]
        dnas:
          type: string
          description: "List of DNA sequences you want included in your complex [Only available when inputFormat is one of list]"
          example: ["GAGAGAGAAGTCAACCAGAGAAACACACCAACCCATTGCACTCCGGG", "TTGGTGGTATATTACCTGGTACGGGGGAAACTTCGTGGTGGCCGGCCACCTGACA"]
        addLigands:
          type: boolean
          description: "Add small molecule ligands to your structure prediction"
          default: False
        ligands:
          type: string
          description: "Specify your ligands (CCD_XXX for CCD codes or SMILES strings), use : to separate multiple ligands in one structure prediction (ex. CCD_ATP:CCD_MG). <ui>Each new line is a separate set of ligands, to be paired with each protein sequence.</ui> [Only available when inputFormat is one of list, sequence]"
          example: ["CCD_SAH", "N[C@@H](Cc1ccc(O)cc1)C(=O)O"]
        numSamples:
          type: number
          description: "Number of samples"
          maximum: 100
          default: 5
        numBatches:
          type: integer
          description: "Will submit multiple parallel batches with numSamples designs each"
          maximum: 1000
          default: 1
        seed:
          type: number
          description: "Random seed to use with inference"
        numRecycles:
          type: number
          default: 10
        useTemplate:
          type: boolean
          description: "Searches PDB"
          default: False
        useGuidance:
          type: boolean
          description: "Physics-aware guidance for improved ligand plausibility (chirality, planarity, stereochemistry). Increases compute time. Most beneficial for ligand-containing predictions."
          default: False
        pocketRestraints:
          type: object
          description: ""
          example: ["{'binderChain': 'A', 'pocketChain': 'B', 'pocketContacts': '5 6 7'}"]
          default: []
        contactRestraints:
          type: object
          description: "Restrain a specific residue on chain A to chain B"
          example: ["{'res_idxB': 1, 'chainB': 'B', 'chainA': 'A', 'res_idxA': 1}"]
        covalentRestraints:
          type: object
          description: "Create a covalent bond between an atom on chain A and an atom on chain B"
          example: ["{'res_idxB': 1, 'covalentAtomA': 'C', 'covalentAtomB': 'C', 'chainB': 'B', 'chainA': 'A', 'res_idxA': 1}"]
        restraintsMinDistance:
          type: number
          description: "Minimum distance for restraints"
          example: 0
        restraintsMaxDistance:
          type: number
          description: "Maximum distance for restraints"
          example: 5
        model:
          type: string
          description: "Select Protenix model. Use constraint model for pocket/contact restraints."
          default: "protenix-v2"
          enum:
            - "protenix-v2"
            - "protenix_base_20250630_v1.0.0"
            - "protenix_base_constraint_v0.5.0"
            - "protenix_base_default_v1.0.0"
            - "protenix_base_default_v0.5.0"

    # Proteus Settings
    ProteusSettings:
      type: object
      required:
        - csvFile
        - sequenceColumn
        - fitnessScoreColumn
      properties:
        csvFile:
          type: string
          description: "CSV file with experimental training data File with extensions [csv]"
          format: binary
        sequenceColumn:
          type: string
        fitnessScoreColumn:
          type: string

    # Protonation-State Settings
    ProtonationStateSettings:
      type: object
      required:
        - inputType
        - smiles
        - sdfFile
      properties:
        inputType:
          type: string
          description: "How to provide your molecule"
          default: "smiles"
          enum:
            - "smiles"
            - "sdf"
        smiles:
          type: string
          description: "SMILES string of the molecule [Only available when inputType is one of smiles]"
          example: "CC(=O)Oc1ccccc1C(=O)O"
        sdfFile:
          type: string
          description: "SDF/MOL file File with extensions [sdf] [Only available when inputType is one of sdf]"
          format: binary
        pH:
          type: number
          description: "pH at which to determine the dominant protonation state (e.g. 7.4 for physiological)"
          default: 7.4

    # Psiblast Settings
    PsiblastSettings:
      type: object
      required:
        - sequence
      properties:
        sequence:
          type: string
          description: "Protein sequence to search against the PSI-BLAST database. Should contain only valid amino acid codes."
          example: "DVQLQESGGGLVQAGGSLRLSCAVSGQTWTNYHIGWFRQAPGKARESVASIEWGGRGTYATDSVKGRFTISRDNAKNTVYLQMNSLKPEDTAVYYCAAQSSSRSPLESNYDYWGQGTQVTVSSHHHHHHHH"
          maxLength: 10000
        database:
          type: string
          description: "Database to search against"
          example: "swissprot"
          default: "swissprot"
          enum:
            - "nr"
            - "swissprot"
            - "landmark"
            - "pataa"
            - "pdbaa"
            - "env_nr"
            - "tsa_nr"
        evalue:
          type: number
          description: "Expectation value threshold for BLAST search. Lower values are more stringent (0.00001-0.1)"
          example: "0.001"
          minimum: 1e-05
          maximum: 0.1
          default: "0.001"
        maxTargetSeqs:
          type: number
          description: "Maximum number of sequences to report in BLAST results (1-100)"
          example: "50"
          minimum: 1
          maximum: 100
          default: "50"
        wordSize:
          type: number
          description: "Word size for initial matches in PSI-BLAST search (2-3)"
          example: "3"
          minimum: 2
          maximum: 3
          default: "3"
        gapCosts:
          type: string
          description: "Gap opening and extension costs for PSI-BLAST alignment, separated by a space (e.g., '11 1')"
          example: "11 1"
          default: "11 1"
        organism:
          type: string
          description: "Filter PSI-BLAST results by organism"
          example: "9606"
          default: ""
          enum:
            - ""
            - "3702"
            - "9913"
            - "6239"
            - "3055"
            - "7955"
            - "44689"
            - "7227"
            - "562"
            - "3052230"
            - "9606"
            - "10090"
            - "2104"
            - "4530"
            - "5833"
            - "4754"
            - "10116"
            - "4932"
            - "4896"
            - "9823"
            - "31033"
            - "8355"
            - "8364"
            - "4577"

    # Pubchem Settings
    PubchemSettings:
      type: object
      required:
        - searchBy
        - smiles
        - name
        - pubchemId
      properties:
        searchBy:
          type: string
          description: "Select which type of input to search by"
          default: "SMILES"
          enum:
            - "SMILES"
            - "Name"
            - "PubChem CID"
        smiles:
          type: string
          description: "SMILES string to search against the PubChem database [Only available when searchBy is one of SMILES]"
          example: "CC(=O)Oc1ccccc1C(=O)O"
        maxResults:
          type: number
          description: "Maximum number of results to report (1-100) [Only available when searchBy is one of SMILES]"
          example: "50"
          minimum: 1
          maximum: 100
          default: "50"
        similarityThreshold:
          type: number
          description: "Similarity threshold for the results (0-1) [Only available when searchBy is one of SMILES]"
          example: "0.7"
          minimum: 0
          maximum: 1
          default: "0.7"
        name:
          type: string
          description: "Name of the compound to search for in the PubChem database [Only available when searchBy is one of Name]"
          example: "ibuprofen"
        pubchemId:
          type: string
          description: "PubChem CID to search for in the the PubChem database [Only available when searchBy is one of PubChem CID]"
          example: "3672"

    # Pulchra Settings
    PulchraSettings:
      type: object
      required:
        - pdbFile
      properties:
        pdbFile:
          type: string
          description: "pdb with initial C-alpha coordinates File with extensions [pdb]"
          format: binary
        flags:
          type: string
          description: "See flags here: https://github.com/euplotes/pulchra"
          default: "-c -u 0.5 -b -s -z"

    # Pxdesign Settings
    PxdesignSettings:
      type: object
      required:
        - targetFile
        - targetChains
        - binderLength
      properties:
        targetFile:
          type: string
          description: "Target pdb to design File with extensions [pdb]"
          example: "1CRN.pdb"
          format: binary
        targetChains:
          type: array
          items:
            type: string
          description: "Chain IDs of target"
          example: ["A"]
        hotspots:
          type: object
          description: "Hotspots to design"
          example: {'A': '12-33'}
        binderLength:
          type: number
          description: "Length of the binder to design"
          default: 10

    # Pykvfinder Settings
    PykvfinderSettings:
      type: object
      required:
        - pdbFile
      properties:
        pdbFile:
          type: string
          description: "Protein structure file for cavity detection File with extensions [pdb]"
          example: "4N0Y_receptor_1.pdb"
          format: binary
        ligandFile:
          type: string
          description: "Ligand structure to limit cavity search to region around this ligand File with extensions [pdb]"
          format: binary
        step:
          type: number
          description: "Grid step size in Ångströms. Smaller values give finer resolution but slower computation."
          minimum: 0.1
          maximum: 2
          default: 0.6
        probeIn:
          type: number
          description: "Inner probe radius for cavity detection. Typically set to water molecule radius (1.4 Å)."
          minimum: 0.1
          maximum: 5
          default: 1.4
        probeOut:
          type: number
          description: "Outer probe radius defining the maximum cavity opening size."
          minimum: 1
          maximum: 10
          default: 4
        volumeCutoff:
          type: number
          description: "Minimum cavity volume. Cavities smaller than this are excluded from results."
          minimum: 0
          maximum: 1000
          default: 5
        removalDistance:
          type: number
          description: "Distance to remove from cavity-bulk frontier for cleaner cavity boundaries."
          minimum: 0
          maximum: 10
          default: 2.4
        surface:
          type: string
          description: "Surface representation: SES (Solvent Excluded Surface) or SAS (Solvent Accessible Surface)."
          default: "SES"
          enum:
            - "SES"
            - "SAS"
        depth:
          type: boolean
          description: "Compute cavity depth analysis to identify buried binding sites."
          default: True
        hydropathy:
          type: string
          description: "Hydrophobicity scale for mapping onto cavity surfaces. Select None to skip."
          default: "EisenbergWeiss"
          enum:
            - "None"
            - "EisenbergWeiss"
            - "HessaHeijne"
            - "KyteDoolittle"
            - "MoonFleming"
            - "RadzickaWolfenden"
            - "WimleyWhite"
            - "ZhaoLondon"
        ligandCutoff:
          type: number
          description: "Search radius around ligand atoms when using ligand-guided cavity detection."
          minimum: 1
          maximum: 20
          default: 5
        ignoreBackbone:
          type: boolean
          description: "Exclude backbone atoms from interface residue detection."
          default: False
        plotFrequencies:
          type: boolean
          description: "Generate PDF bar chart showing residue type frequencies around each cavity."
          default: True

    # Pysca Settings
    PyscaSettings:
      type: object
      required:
        - sequence
        - fastaFile
      properties:
        useMSA:
          type: boolean
          description: "Generate a multiple sequence alignment using ColabFold before running SCA."
          default: True
        sequence:
          type: string
          description: "Amino acid sequence to analyze. A multiple sequence alignment will be generated automatically using ColabFold."
          example: "MALKSLVLLSLLVLVLLLVRVQPSLGKETAAAKFERQHMDSSTSAASSSNYCNQMMKSRNLTKDRCK"
          maxLength: 5000
        fastaFile:
          type: string
          description: "Pre-computed multiple sequence alignment in FASTA format. File with extensions [fasta]"
          format: binary
        msaDatabase:
          type: string
          description: "Database to use for MSA generation."
          example: "uniref"
          default: "uniref"
          enum:
            - "uniref"
            - "swissprot"
            - "uniref+swissprot"
        pdbId:
          type: string
          description: "PDB ID for a reference structure to map SCA results onto. Leave blank to use the first sequence as reference."
        chainId:
          type: string
          description: "Chain identifier in the reference PDB structure."
          default: "A"
        precluster:
          type: boolean
          description: "Cluster sequences by identity before analysis to reduce redundancy."
          default: False
        clusterId:
          type: number
          description: "Sequence identity threshold for pre-clustering (0.5–1.0). Only used when pre-clustering is enabled."
          minimum: 0.5
          maximum: 1
          default: 0.85
        doSeqcorr:
          type: boolean
          description: "Compute sequence correlations using MMseqs2."
          default: False
        doSectorId:
          type: boolean
          description: "Identify co-evolving protein sectors."
          default: True
        lbda:
          type: number
          description: "Regularization parameter lambda for SCA matrix computation. Leave blank to use the pySCA default."
        Ntrials:
          type: number
          description: "Number of randomization trials for sector identification. Leave blank to use the pySCA default."
        float32:
          type: boolean
          description: "Use 32-bit floating point precision. Reduces memory usage for large alignments."
          default: False

    # Qupkake Settings
    QupkakeSettings:
      type: object
      required:
        - inputFormat
        - smiles
        - sdfFile
      properties:
        inputFormat:
          type: string
          default: "smiles"
          enum:
            - "smiles"
            - "sdf"
        smiles:
          type: string
          example: "O=C(O)c1ccc(NC(=O)c2cn(-c3ccccc3)nc2-c2ccc(Cl)cc2)cc1"
        sdfFile:
          type: string
          example: "qupkake_ex.sdf"
          format: binary
        tautomerize:
          type: boolean
          description: "Find the most stable tautomer of the molecule"
          default: False

    # Rbfe Settings
    RbfeSettings:
      type: object
      required:
        - proteinPDB
        - networkType
        - ligandsSDF
        - atomMapper
        - max3d
        - chargeMethod
        - protocolRepeats
        - equilLength
        - prodLength
      properties:
        simulationType:
          type: string
          default: "rbfe"
        proteinPDB:
          type: string
          description: "Protein structure in pdb format File with extensions [pdb]"
          format: binary
        networkType:
          type: string
          description: "How ligands are connected in the perturbation network"
          default: "minimal_spanning"
          enum:
            - "minimal_spanning"
            - "minimal_redundant"
            - "star_map"
            - "custom"
        ligandsSDF:
          type: string
          description: "Ligands in sdf format File with extensions [sdf]"
          format: binary
        alchemicalNetwork:
          type: string
          description: "Interactive preview and editor for the ligand perturbation network"
        networkEdges:
          type: string
        atomMapper:
          type: string
          description: "Algorithm for mapping atoms between ligand pairs. Kartograf is newer and often produces better mappings for complex transformations."
          default: "lomap"
          enum:
            - "lomap"
            - "kartograf"
        max3d:
          type: number
          description: "Maximum 3D distance between mapped atoms in Angstroms. Lower values require better-aligned ligand poses. Increase if atom mapping fails on unaligned ligands."
          minimum: 0.1
          maximum: 1000
          default: 1
        chargeMethod:
          type: string
          description: "Method for assigning partial charges to ligands. AM1-BCC is the standard method. NAGL uses a graph neural network and is faster."
          default: "am1bcc"
          enum:
            - "am1bcc"
            - "nagl"
        protocolRepeats:
          type: number
          description: "Number of independent repeats per transformation. Minimum 2 required for error estimation."
          minimum: 2
          maximum: 5
          default: 3
        equilLength:
          type: number
          description: "Length of the equilibration phase (ps)"
          minimum: 0
          maximum: 10000
          default: 1000
        prodLength:
          type: number
          description: "Length of the production phase (ps)"
          minimum: 0
          maximum: 10000
          default: 5000

    # Reaction-Energy Settings
    ReactionEnergySettings:
      type: object
      required:
        - reactantSmiles
        - productSmiles
      properties:
        reactantSmiles:
          type: string
          description: "SMILES of reactant(s). Use . to separate multiple species (e.g. CCO.O)"
          example: "CCO.O"
        productSmiles:
          type: string
          description: "SMILES of product(s). Use . to separate multiple species (e.g. CC=O.O)"
          example: "CC=O.O"
        method:
          type: string
          description: "Level of theory. Each species is optimized and its energy computed at this level"
          default: "xtb-gfn2"
          enum:
            - "xtb-gfn2"
            - "r2scan-3c"
            - "b3lyp"
            - "wb97x-d3"
        basisSet:
          type: string
          description: "Basis set for DFT methods"
          default: "def2-svp"
          enum:
            - "def2-svp"
            - "def2-svpd"
            - "def2-tzvp"
            - "def2-tzvpd"
        solvent:
          type: string
          description: "Implicit solvation for all species in the reaction"
          default: "none"
          enum:
            - "none"
            - "water"
            - "acetonitrile"
            - "dmso"
            - "methanol"
            - "ethanol"
            - "chloroform"
            - "toluene"
            - "thf"
            - "dichloromethane"
        includeThermochemistry:
          type: boolean
          description: "Compute enthalpy (Delta H), entropy (Delta S), and Gibbs free energy (Delta G) via frequency analysis"
          default: False
        temperature:
          type: number
          description: "Temperature for thermochemical corrections (default 298.15 K = 25 C)"
          default: 298.15

    # Redox Settings
    RedoxSettings:
      type: object
      required:
        - inputType
        - smiles
        - sdfFile
      properties:
        inputType:
          type: string
          description: "Type of input to use File with extensions [sdf]"
          default: "smiles"
          enum:
            - "smiles"
            - "sdf"
        smiles:
          type: string
          example: "CC(=O)c1ccc(O)cc1"
        sdfFile:
          type: string
          example: "c1cc(O)ccc1C(=O)C (Neutral Structure).sdf"
          format: binary

    # Reinvent-Finetune Settings
    ReinventFinetuneSettings:
      type: object
      required:
        - task
        - data
        - smilesCol
        - inferenceSmilesFile
        - scoringSmilesFile
      properties:
        task:
          type: string
          default: "train"
          enum:
            - "train"
            - "inference"
            - "scoring"
        data:
          type: string
          description: "Required if task = 'train' - list of SMILES to finetune model with File with extensions [csv] [Only available when task is one of train]"
          format: binary
        smilesCol:
          type: string
          description: "Required if task = 'train' - column in data file with SMILES strings [Only available when task is one of train]"
          example: "SMILES"
        numDesigns:
          type: number
          description: "Number of designs to generate [Only available when task is one of inference]"
          default: 100
        modelFile:
          type: string
          description: "For custom/finetuned model inference: past training job name in format {jobName}.model, or 'reinvent.prior' for the base model. Omit to use the pretrained model for the selected modelType. [Only available when task is one of inference]"
          example: "pastInferenceJobName.model"
        modelType:
          type: string
          description: "Model type. For training, selects the prior. For inference, determines pretrained model or sampling config for custom .model files. [Only available when task is one of train, inference]"
          default: "reinvent"
          enum:
            - "reinvent"
            - "mol2mol"
            - "libinvent"
            - "linkinvent"
            - "pepinvent"
        inferenceSmilesFile:
          type: string
          description: "SMILES file for non-reinvent inference (mol2mol, libinvent, linkinvent, pepinvent). Required for both pretrained and custom model inference with these model types. File with extensions [smi] [Only available when task is one of inference]"
          format: binary
        rlSmilesFile:
          type: string
          description: "SMILES file for RL training with non-reinvent model types (mol2mol, libinvent, linkinvent, pepinvent). File with extensions [smi] [Only available when task is one of train]"
          format: binary
        scoringSmilesFile:
          type: string
          description: "Smiles file with molecules to score File with extensions [smi] [Only available when task is one of scoring]"
          format: binary
        sampleStrat:
          type: string
          description: "Sampling strategy: 'multinomial' (default) or 'beamsearch' (deterministic). Used for mol2mol and pepinvent model types. [Only available when task is one of inference]"
          default: "multinomial"
          enum:
            - "multinomial"
            - "beamsearch"
        temp:
          type: number
          description: "Temperature for multinomial sampling. Used for mol2mol and pepinvent model types. [Only available when task is one of inference]"
          default: 1
        stages:
          type: string
          description: "JSON array of RL stages. Each stage: {max_steps, max_score, min_steps, termination, scoringComponents: [...]}. If omitted, falls back to flat scoringComponents in a single stage. [Only available when task is one of train]"
        scoringComponents:
          type: string
          description: "JSON array of scoring components, each with type, weight, and optional params (transform, low, high, k, smiles, smarts, radius, use_chirality). Available types: QED, MolecularWeight, SlogP, TPSA, TanimotoSimilarity, NumAtomStereoCenters, HBondAcceptors, HBondDonors, NumRotBond, SAScore, custom_alerts, GraphLength, Csp3, NumHeavyAtoms, NumHeteroAtoms, NumRings, NumAromaticRings, NumAliphaticRings, LargestRingSize, MolVolume, GroupCount, MatchingSubstructure. Transforms: sigmoid, reverse_sigmoid, double_sigmoid, left_step, right_step, step, exponential_decay. MatchingSubstructure supports use_chirality (boolean, default false). [Only available when task is one of train, scoring]"
        sigma:
          type: number
          description: "RL reward multiplier (sigma). Controls how strongly scoring influences generation vs the prior model. [Only available when task is one of train]"
          default: 128
        diversityFilter:
          type: string
          description: "JSON object: {enabled, type, bucket_size, minscore, minsimilarity, penalty_multiplier}. Types: IdenticalMurckoScaffold, IdenticalTopologicalScaffold, ScaffoldSimilarity, PenalizeSameSmiles. [Only available when task is one of train]"
        inception:
          type: string
          description: "JSON object: {enabled, memory_size (default 50), sample_size (default 10), smiles_file (optional seed SMILES)}. [Only available when task is one of train]"
        max_steps:
          type: number
          description: "Maximum RL steps (used when stages is not provided, backward compat) [Only available when task is one of train]"
          default: 300
        num_epochs:
          type: number
          description: "Number of epochs for fine-tuning on your training data (reinvent models only) [Only available when task is one of train]"
          default: 50
        rate:
          type: number
          description: "Learning rate for reinforcement learning [Only available when task is one of train]"
          default: 0.0001
        standardize_smiles:
          type: boolean
          description: "Canonicalize SMILES before fine-tuning (reinvent models only) [Only available when task is one of train]"
          default: True
        randomize_smiles:
          type: boolean
          description: "Augment training data with randomized SMILES (reinvent models only) [Only available when task is one of train]"
          default: True
        internal_diversity:
          type: boolean
          description: "Filter out duplicate molecules during fine-tuning (reinvent models only) [Only available when task is one of train]"
          default: False

    # Rf3 Settings
    Rf3Settings:
      type: object
      required:
        - inputFormat
        - sequence
        - molecules
      properties:
        inputFormat:
          type: string
          default: "sequence"
          enum:
            - "sequence"
            - "molecules"
        sequence:
          type: string
          description: "Protein sequence (use : to specify chainbreaks for multimers) [Only available when inputFormat is one of sequence]"
          example: "TRPNHTIYINNLNEKIKKDELKKSLHAIFSRFGQIL"
        molecules:
          type: string
          example: ["{'type': 'protein', 'sequence': 'TRPNHTIYINNLNEKIKKDELKKSLHAIFSRFGQIL', 'chain': 'A'}", "{'type': 'protein', 'sequence': 'MRGQAFVIFKEVSSATNALRSMQGFPFYDKPMRIQYAKTDSDIIAKM', 'chain': 'B'}", "{'inputType': 'ccd', 'chain': 'L', 'ccdCode': 'ATP', 'type': 'ligand'}"]

    # Rfantibody Settings
    RfantibodySettings:
      type: object
      required:
        - task
        - targetFile
        - antibodyFile
        - heavyChain
        - lightChain
        - antigenChain
        - hcdr1Residues
        - hcdr2Residues
        - hcdr3Residues
        - lcdr1Residues
        - lcdr2Residues
        - lcdr3Residues
      properties:
        task:
          type: string
          description: "Antibody or nanobody input"
          example: "nanobody"
          default: "antibody"
          enum:
            - "antibody"
            - "nanobody"
        framework:
          type: string
          description: "Choose from nanobody/scfv frameworks from RFantibody paper or upload your own"
          example: {'antibody': 'hu-4D5-8_Fv', 'nanobody': 'h-NbBCII10'}
          default: {'antibody': 'hu-4D5-8_Fv', 'nanobody': 'h-NbBCII10'}
          enum:
            - "custom"
            - "h-NbBCII10"
            - "hu-4D5-8_Fv"
        targetFile:
          type: string
          description: "Antigen pdb to target File with extensions [pdb]"
          example: "9f6o.pdb"
          format: binary
        antibodyFile:
          type: string
          description: "Antibody framework that we wish to use for our design. RFdiffusion will only design the structure and sequence of regions of the framework which are annotated as loops. This structure does not have to be in a bound pose. File with extensions [pdb]"
          example: "9f6o.pdb"
          format: binary
        heavyChain:
          type: string
          description: "ID in pdb file of heavy chain"
          example: "B"
        lightChain:
          type: string
          description: "ID in pdb file of light chain [Only available when task is one of antibody]"
          example: "L"
        antigenChain:
          type: string
          description: "ID in pdb file of the antigen chain"
          example: "A"
        hotspots:
          type: string
          description: "Residues to target"
          example: "305,456"
          default: ""
        regions:
          type: string
          description: "CDR Regions to design. For each region, you can specify a fixed length (ex. 10), a length range (ex. 10-15), or use 'auto' to automatically use the Chothia-defined CDR boundaries from your framework structure."
          example: ["hcdr1", "hcdr2", "hcdr3"]
          default: {'antibody': ['hcdr1', 'hcdr2', 'hcdr3', 'lcdr1', 'lcdr2', 'lcdr3'], 'nanobody': ['hcdr1', 'hcdr2', 'hcdr3']}
          enum:
            - "hcdr1"
            - "hcdr2"
            - "hcdr3"
            - "lcdr1"
            - "lcdr2"
            - "lcdr3"
        hcdr1Length:
          type: string
          description: "Length or length range for hcdr1 (ex. 5, 5-6) or auto to use the Chothia defined CDR region"
          default: "auto"
        hcdr2Length:
          type: string
          description: "Length or length range for hcdr2 (ex. 5, 5-6) or auto to use the Chothia defined CDR region"
          default: "auto"
        hcdr3Length:
          type: string
          description: "Length or length range for hcdr3 (ex. 5, 5-6) or auto to use the Chothia defined CDR region"
          default: "auto"
        lcdr1Length:
          type: string
          description: "Length or length range for lcdr1 (ex. 5, 5-6) or auto to use the Chothia defined CDR region [Only available when task is one of antibody]"
          default: "auto"
        lcdr2Length:
          type: string
          description: "Specify a fixed length (ex. 5), length range (ex. 5-6), or 'auto' to use Chothia-defined CDR boundaries from your framework [Only available when task is one of antibody]"
          default: "auto"
        lcdr3Length:
          type: string
          description: "Specify a fixed length (ex. 5), length range (ex. 5-6), or 'auto' to use Chothia-defined CDR boundaries from your framework [Only available when task is one of antibody]"
          default: "auto"
        selectCDRIndices:
          type: boolean
          description: "Select which residues are in CDRs instead of automatically detecting CDRs from your framework structure"
          default: False
        hcdr1Residues:
          type: string
          description: "Select the residues that define the HCDR1 region in your custom framework (residue numbers starting from 1)"
        hcdr2Residues:
          type: string
          description: "Select the residues that define the HCDR2 region in your custom framework (residue numbers starting from 1)"
        hcdr3Residues:
          type: string
          description: "Select the residues that define the HCDR3 region in your custom framework (residue numbers starting from 1)"
        lcdr1Residues:
          type: string
          description: "Select the residues that define the LCDR1 region in your custom framework (residue numbers starting from 1) [Only available when task is one of antibody]"
        lcdr2Residues:
          type: string
          description: "Select the residues that define the LCDR2 region in your custom framework (residue numbers starting from 1) [Only available when task is one of antibody]"
        lcdr3Residues:
          type: string
          description: "Select the residues that define the LCDR3 region in your custom framework (residue numbers starting from 1) [Only available when task is one of antibody]"
        abmpnnWeights:
          type: boolean
          description: "Use AbMPNN weights for ProteinMPNN stage"
        calculateEpitopeDistance:
          type: boolean
          description: "Calculate minimum distance from designed CDR loops to hotspot residues (epitope)"
          default: True
        numDesigns:
          type: integer
          description: "Number of designs to generate, for a production run, we would recommend ~10,000 in silico designs, testing at least ~100 in wet lab, ideally more 1000-10,000"
          default: 1
        bias_AA:
          type: string
          description: "Bias toward/against specific amino acids, as comma separated list. Example: W:3.0,P:3.0,C:3.0,A:-3.0"
          example: "W:3.0,P:3.0,C:3.0,A:-3.0"
        bias_AA_per_residue:
          type: string
          description: "Bias amino acids per residue, as dictionary. Example: {\"C1\": {\"G\": -0.3, \"C\": -2.0, \"P\": 10.8}, \"C3\": {\"P\": 10.0}, \"C5\": {\"G\": -1.3, \"P\": 10.0}, \"C7\": {\"G\": -1.3, \"P\": 10.0}}"
          example: "{\"C1\": {\"G\": -0.3, \"C\": -2.0, \"P\": 10.8}, \"C3\": {\"P\": 10.0}, \"C5\": {\"G\": -1.3, \"P\": 10.0}, \"C7\": {\"G\": -1.3, \"P\": 10.0}}"
        temperature:
          type: number
          description: "Temperature for sampling in ProteinMPNN step. Higher values increase diversity"
          example: 0.1
          default: 0.1
        seqs_per_struct:
          type: number
          description: "Number of sequences to generate per structure in ProteinMPNN step"
          example: 1
          default: 1
        omit_AAs:
          type: string
          description: "Amino acids to omit during ProteinMPNN sequence generation (e.g., 'CX' to omit cysteine and unknown)"
          example: "CX"
        augment_eps:
          type: number
          description: "Data augmentation epsilon for ProteinMPNN step"
          example: 0.05
          default: 0.05
        num_connections:
          type: number
          description: "Number of connections for ProteinMPNN processing"
          example: 48
          default: 48
        n_recycles:
          type: number
          description: "Number of recycles for RF2 structure prediction step"
          example: 3
          default: 3
        n_models:
          type: number
          description: "Number of models to generate in RF2 structure prediction step"
          example: 5
          default: 5
        hotspot_percentage:
          type: number
          description: "Hotspot percentage for RF2 structure prediction step"
          example: 0.1
          default: 0.1

    # Rfdiffusion Settings
    RfdiffusionSettings:
      type: object
      required:
        - task
        - pdbFile
        - contigs
        - targetChains
        - binderLength
        - designedChain
        - designedResidues
        - diffusedResidues
        - interfaceResidues
        - foldConditioningTargetFile
        - foldConditioningBinderFile
        - symmetryType
        - oligomerLength
        - motifResidues
        - scaffoldLengthBefore
        - scaffoldLengthAfter
      properties:
        task:
          type: string
          default: "Motif Scaffolding"
          enum:
            - "Custom Contigs"
            - "Binder Design"
            - "Binder Redesign"
            - "Motif Scaffolding"
            - "Partial Diffusion"
            - "Fold Conditioning"
            - "Symmetric Oligomer"
            - "Symmetric Motif Scaffolding"
        pdbFile:
          type: string
          example: {'Custom Contigs': 'insulin_target.pdb', 'Binder Design': 'insulin_target.pdb', 'Binder Redesign': '9f6o.pdb', 'Partial Diffusion': '2KL8.pdb', 'Symmetric Motif Scaffolding': 'nickel_symmetric_motif.pdb', 'Motif Scaffolding': '5TPN.pdb'}
          format: binary
        contigs:
          type: string
          description: "Write contigs directly using RFdiffusion notation - see https://github.com/RosettaCommons/RFdiffusion for format details [Only available when task is one of Custom Contigs]"
          example: "22-22/0 A1-150"
        targetChains:
          type: array
          items:
            type: string
          description: "Chain IDs of target [Only available when task is one of Binder Design]"
          example: ["A"]
        binderLength:
          type: string
          description: "Length of the binder region to be designed - length (20) or range of lengths to sample uniformly (20-30) [Only available when task is one of Binder Design]"
          example: "20-30"
        binderHotspots:
          type: object
          description: "Residues to focus on on your target when designing a binder [Only available when task is one of Binder Design]"
          example: {'A': '20 21 23'}
        hotspotChain:
          type: string
          description: "Chain to select residues to focus on [Only available when task is one of Binder Redesign, Custom Contigs]"
          example: {'Custom Contigs': 'A', 'Binder Redesign': 'B'}
        hotspots:
          type: string
          description: "Residues to focus on on your target when designing a binder [Only available when task is one of Binder Redesign, Custom Contigs]"
          example: {'Custom Contigs': '100,101,102', 'Binder Redesign': '264,267,271'}
        binderChain:
          type: string
          description: "Chain ID of binder chain [Only available when task is one of Binder Redesign]"
          example: "B"
        designedChain:
          type: string
          description: "Chain ID of chain to be designed (other chains will be kept fixed) [Only available when task is one of Partial Diffusion]"
          example: "A"
        interfaceChain:
          type: string
          description: "Chain ID of chain with interface to be scaffolded [Only available when task is one of Motif Scaffolding]"
          example: "A"
        designedResidues:
          type: string
          description: "Select fixed residues and adjust the lengths of the designed regions, or write contigs directly using RFdiffusion notation [Only available when task is one of Binder Redesign]"
          example: "26-32,52-57,99-110"
        diffusedResidues:
          type: string
          description: "Select fixed residues and adjust the lengths of the designed regions, or write contigs directly using RFdiffusion notation [Only available when task is one of Partial Diffusion]"
          example: "1-5, 7-10"
        provideSeq:
          type: string
          description: "Specify residue positions that should keep their original amino acid sequence during partial diffusion (only backbone coordinates will be refined). Multiple ranges can be comma-separated. [Only available when task is one of Partial Diffusion]"
          example: "1-10,20-30"
        interfaceResidues:
          type: string
          description: "Select interface residues to be kept in your final protein. You can then select designed region lengths for 1 more than the number of contiguous interface ranges you select below. [Only available when task is one of Motif Scaffolding]"
          example: "30-40, 60-70"
        designedLengths:
          type: object
          description: "Length of the region to be designed between fixed residues - length (20) or range of lengths to sample uniformly (20-30) [Only available when task is one of Binder Redesign, Motif Scaffolding]"
        numDesigns:
          type: integer
          default: "1"
        partial_T:
          type: number
          description: "Diffuse your protein, if selected - contigs must be same length as input pdb sequence File with extensions [pdb] [Only available when task is one of Partial Diffusion]"
          default: 20
        foldConditioningTargetFile:
          type: string
          example: "insulin_target.pdb"
          format: binary
        foldConditioningBinderFile:
          type: string
          example: "binder.pdb"
          format: binary
        targetSSFile:
          type: string
          format: binary
        targetAdjFile:
          type: string
          format: binary
        verify:
          type: boolean
          description: "Pass designs into ProteinMPNN and Alphafold to be scored automatically [Only available when task is one of Binder Design, Binder Redesign, Motif Scaffolding, Partial Diffusion, Symmetric Oligomer, Symmetric Motif Scaffolding]"
          default: True
        verifySequences:
          type: string
          description: "Automatically perform full structure prediction with MSA on generated sequences for verification [Only available when task is one of Custom Contigs, Binder Design, Binder Redesign, Motif Scaffolding, Partial Diffusion, Fold Conditioning, Symmetric Oligomer, Symmetric Motif Scaffolding]"
          enum:
            - "verify-alphafold"
            - "verify-chai"
            - "verify-boltz"
        noiseScaleCa:
          type: number
          description: "Denoiser's noise scale for C alpha atoms"
          minimum: 0
          maximum: 1
          default: 1
        noiseScaleFrame:
          type: number
          description: "Denoiser's noise scale for frame atoms"
          minimum: 0
          maximum: 1
          default: 1
        potentials:
          type: string
          description: "Potential to use. Should be a comma-separated list of potential arguments, e.g. type:binder_ROG,binderlen:100,weight:5,min_dist:15 [Only available when task is one of Custom Contigs, Binder Design, Binder Redesign, Motif Scaffolding, Partial Diffusion, Fold Conditioning]"
        symmetryType:
          type: string
          description: "Type of symmetry: cyclic (C2-C6), dihedral (D2-D4), or tetrahedral [Only available when task is one of Symmetric Oligomer, Symmetric Motif Scaffolding]"
          enum:
            - "c2"
            - "c3"
            - "c4"
            - "c5"
            - "c6"
            - "d2"
            - "d3"
            - "d4"
            - "tetrahedral"
        oligomerLength:
          type: number
          description: "Total number of residues across all chains. Must be divisible by the number of chains (C2=2, C3=3, C4=4, C5=5, C6=6, D2=4, D3=6, D4=8, tetrahedral=12) [Only available when task is one of Symmetric Oligomer]"
          example: 480
        motifResidues:
          type: string
          description: "Comma-separated list of motif residue ranges for each symmetric copy (e.g., 'A2-4, A7-9, A12-14, A17-19' for C4). Number of ranges must match symmetry chains. [Only available when task is one of Symmetric Motif Scaffolding]"
          example: "A2-4, A7-9, A12-14, A17-19"
        scaffoldLengthBefore:
          type: number
          description: "Number of residues to design before each motif [Only available when task is one of Symmetric Motif Scaffolding]"
          example: 50
          default: 50
        scaffoldLengthAfter:
          type: number
          description: "Number of residues to design after each motif [Only available when task is one of Symmetric Motif Scaffolding]"
          example: 50
          default: 50
        useOligContacts:
          type: boolean
          description: "Enable guiding potential to encourage inter-chain contacts [Only available when task is one of Symmetric Oligomer, Symmetric Motif Scaffolding]"
          default: True
        guideScale:
          type: number
          description: "Strength of guiding potential (recommended: 2.0) [Only available when task is one of Symmetric Oligomer, Symmetric Motif Scaffolding]"
          default: 2
        guideDecay:
          type: string
          description: "How the guiding potential effect decays over the diffusion trajectory [Only available when task is one of Symmetric Oligomer, Symmetric Motif Scaffolding]"
          default: "quadratic"
          enum:
            - "constant"
            - "linear"
            - "quadratic"
            - "cubic"
        model:
          type: string
          description: "Model to use in diffusion"
          enum:
            - "default"
            - "Complex_beta_ckpt"

    # Rfdiffusion-All-Atom Settings
    RfdiffusionAllAtomSettings:
      type: object
      required:
        - pdbFile
        - contigs
        - ligandCode
      properties:
        pdbFile:
          type: string
          description: "Pdb structure file to be designed - contains both protein and ligand File with extensions [pdb]"
          example: "1haz.pdb"
          format: binary
        contigs:
          type: string
          description: "String describing fixed and variable regions of protein, see https://www.tamarind.bio/all-atom-design to generate contigs for your task"
          example: "10-120,A84-87,10-120"
        ligandCode:
          type: string
          description: "Ligand code - must be found in your pdb structure file"
          example: "CYC"
        numDesigns:
          type: integer
          description: "Number of designs to generate (1-16)"
          default: 1
        includeTraj:
          type: boolean
          default: True

    # Rfdiffusion2 Settings
    Rfdiffusion2Settings:
      type: object
      required:
        - pdbFile
        - ligandCode
        - activeSiteAtoms
      properties:
        pdbFile:
          type: string
          description: "Protein structure in pdb format File with extensions [pdb]"
          example: "M0584_1ldm.pdb"
          format: binary
        ligandCode:
          type: string
          description: "Ligand code"
          example: "NAD"
        contigs:
          type: string
          description: "Specify the desired scaffold length between each residue (ex. 46). Use commas to separate the active site residues and scaffold lengths (example: 46,A106-106,59,A166-166,2,A169-169,23,A193-193,46)"
          example: "46,A106-106,59,A166-166,2,A169-169,23,A193-193,46"
        contigsAsGuidepost:
          type: boolean
          description: "When true, input motif is incorporated into the protein at indices of the network's choice"
          default: True
        activeSiteAtoms:
          type: object
          description: ""
          example: ["{'residue': 'A106', 'atoms': 'NE,CD,CZ'}", "{'residue': 'A166', 'atoms': 'OD1,CG'}", "{'residue': 'A169', 'atoms': 'NH2,CZ'}", "{'residue': 'A193', 'atoms': 'NE2,CD2,CE1'}"]
          default: []
        length:
          type: array
          items:
            type: string
          description: "Length of generated protein (ignored if contigs are provided)"
          default: "50,100"
        verifyLigandMpnnChai:
          type: boolean
          default: True
        sasaActive:
          type: boolean
        sasaRasa:
          type: number
          description: "Specify rasa of binding ligands"

    # Rfdiffusion3 Settings
    Rfdiffusion3Settings:
      type: object
      required:
        - task
        - pdbFile
        - jsonInputType
        - jsonFile
        - jsonConfig
        - binderLength
        - fixAtoms
        - unindex
        - classifierFreeGuidance
      properties:
        task:
          type: string
          description: "Task to perform"
          default: "protein-binder-design"
          enum:
            - "protein-binder-design"
            - "enzyme-design"
            - "na-binder-design"
            - "small-molecule-binder-design"
            - "json"
        pdbFile:
          type: string
          description: "Pdb structure file to be designed - contains both protein and ligand File with extensions [pdb] [Only available when task is one of protein-binder-design, enzyme-design, na-binder-design, small-molecule-binder-design]"
          example: {'na-binder-design': '5o4d.pdb', 'protein-binder-design': '1haz.pdb', 'small-molecule-binder-design': 'IAI.pdb', 'enzyme-design': 'M0255_1mg5.pdb'}
          format: binary
        jsonInputType:
          type: string
          description: "Choose whether to upload a JSON file or enter JSON config as a string [Only available when task is one of json]"
          default: "string"
          enum:
            - "file"
            - "string"
        jsonFile:
          type: string
          description: "Foundry-style JSON config file (see https://github.com/RosettaCommons/foundry/blob/production/models/rfd3/docs/input.md for format) File with extensions [json] [Only available when task is one of json]"
          format: binary
        jsonConfig:
          type: string
          description: "Foundry-style JSON config as a string (see https://github.com/RosettaCommons/foundry/blob/production/models/rfd3/docs/input.md for format) [Only available when task is one of json]"
          example: "{\"job0\": {\"dialect\": 2, \"input\": \"start.pdb\", \"contig\": \"A1-190,40-60,B1-12,6-20,A202-271\", \"is_non_loopy\": true}}"
        inputFiles:
          type: string
          description: "PDB/CIF files referenced in your JSON config. Files are matched based on filename. File with extensions [pdb, cif] [Only available when task is one of json]"
          format: binary
        targetChains:
          type: array
          items:
            type: string
          description: "Chain IDs of target [Only available when task is one of protein-binder-design, na-binder-design]"
          example: ["A"]
        hotspots:
          type: object
          description: "Residues to focus on on your target when designing a binder [Only available when task is one of protein-binder-design]"
        binderLength:
          type: array
          items:
            type: string
          description: "Range of binder length to sample from [Only available when task is one of protein-binder-design, enzyme-design, na-binder-design, small-molecule-binder-design]"
          default: "100,150"
        ligands:
          type: string
          description: "Select ligands to target from your pdb [Only available when task is one of protein-binder-design, enzyme-design, small-molecule-binder-design]"
        smBinderConditions:
          type: object
          description: "Specify conditioning for ligand atoms (Fixed, Buried, Exposed). [Only available when task is one of small-molecule-binder-design]"
        fixAtoms:
          type: string
          default: "all"
          enum:
            - "all"
            - "custom"
        fixAtomsSelection:
          type: object
          example: ["{'selection': 'ND2,CG', 'residue': 'A108'}", "{'selection': 'OG,CB,CA', 'residue': 'A139'}", "{'selection': 'OH,CZ', 'residue': 'A152'}", "{'selection': 'NZ,CE,CD', 'residue': 'A156'}", "{'selection': 'OXT', 'residue': 'ACT'}", "{'selection': '', 'residue': 'NAI'}"]
        unindex:
          type: string
          description: "Whether residue index be inferred by the model instead of prespecified (all by default or comma seperated list of residues e.g. A109,A114) [Only available when task is one of enzyme-design]"
          default: "all"
        classifierFreeGuidance:
          type: boolean
          description: "Enables classifier-free guidance to strictly enforce motif adherence. Increases computational cost by 2x. [Only available when task is one of enzyme-design]"
          default: False
        oriToken:
          type: string
          description: "[x,y,z] origin override to control center of mass placement [Only available when task is one of na-binder-design]"
        numDesigns:
          type: integer
          description: "Number of designs to generate"
          default: 1
        nonLoopy:
          type: boolean
          description: "Encourages the model to make more structured designs (recommended) [Only available when task is one of protein-binder-design]"
          default: True
        stepScale:
          type: number
          description: "Controls the diffusion update size. The default (1.5) promotes stable, idealized, and 'designable' structures. Lowering towards 1.0 reduces helical bias, increasing diversity. Increasing (>1.5) forces stricter convergence."
          minimum: 1
          maximum: 5
          default: 1.5
        gammaZero:
          type: number
          description: "Controls how much extra noise is injected into the structure at every step of the reverse diffusion process. Decreasing tends to increase designability and decrease diversity."
          minimum: 0
          maximum: 1
          default: 0.6

    # Rfpeptides Settings
    RfpeptidesSettings:
      type: object
      required:
        - pdbFile
        - binderLength
      properties:
        pdbFile:
          type: string
          example: "7zkr_GABARAP.pdb"
          format: binary
        targetChains:
          type: array
          items:
            type: string
          description: "Chain IDs of target"
          example: ["A"]
        binderLength:
          type: string
          description: "Length of the binder region to be designed - length (10) or range of lengths to sample uniformly (12-18)"
          example: "12-18"
          default: "12-18"
        binderHotspots:
          type: object
          description: "Residues to focus on on your target when designing a binder"
          example: {'A': '48 50 51 52 62 65'}
        rosetta:
          type: boolean
          description: "Get in touch at info@tamarind.bio if you have a license and would like to use RFpeptides with Rosetta"
          default: False
        numDesigns:
          type: integer
          default: "1"
        temperature:
          type: number
          description: "Temperature for sampling"
          default: 50
        verify:
          type: boolean

    # Rhodesign Settings
    RhodesignSettings:
      type: object
      required:
        - pdbFile
      properties:
        pdbFile:
          type: string
          description: "RNA 3D structure file (PDB format) File with extensions [pdb]"
          example: "2zh6_B.pdb"
          format: binary
        ssFile:
          type: string
          description: "Secondary structure contact map as NumPy array (.npy). If provided, enables higher-accuracy design using 2D structural information. File with extensions [npy]"
          format: binary
        temperature:
          type: number
          description: "Sampling temperature. Lower values produce more conserved sequences; higher values increase diversity."
          default: 1
        numDesigns:
          type: integer
          description: "Number of designs to generate"
          default: 1

    # Ribodiffusion Settings
    RibodiffusionSettings:
      type: object
      required:
        - pdbFile
        - numDesigns
      properties:
        pdbFile:
          type: string
          description: "RNA 3D structure used as the conditioning backbone for inverse folding File with extensions [pdb]"
          example: "R1107.pdb"
          format: binary
        numDesigns:
          type: integer
          description: "Launches multiple jobs when greater than 1; each job generates one design"
          default: 1
        modelVariant:
          type: string
          description: "Optional checkpoint variant for advanced usage"
          default: "standard"
          enum:
            - "standard"
            - "full-data-noisy"
        condScale:
          type: number
          description: "Conditional scaling weight. w=1 emphasizes sequence recovery; lower values increase diversity (paper reports diversity gains around w=0.5)"
          minimum: 0
          maximum: 1
        dynamicThreshold:
          type: boolean
          description: "Enable percentile-based clipping and rescaling of denoised predictions during sampling to reduce extreme values and improve stability"
          default: False

    # Riffdiff Settings
    RiffdiffSettings:
      type: object
      required:
        - pdbFile
        - resnums
        - ligands
      properties:
        pdbFile:
          type: string
          description: "Theozyme input in pdb format File with extensions [pdb]"
          format: binary
        resnums:
          type: string
          description: "List of all active site residues with chain information that should be present in the catalytic motif separated by a space (e.g. A121 A153 A162)"
          example: "A121 A153 A162"
        ligands:
          type: string
          description: "List of all ligand residues with chain information that should be present in the catalytic motif (separated by a space if multiple) (e.g. A198)"
          example: "A198"

    # Rmsd-Calculator Settings
    RmsdCalculatorSettings:
      type: object
      required:
        - pdbFile1
        - pdbFile2
        - rmsdType
        - alignChains1
        - rmsdChains1
        - rmsdLigand1
        - alignChains2
        - rmsdLigand2
        - rmsdChains2
      properties:
        pdbFile1:
          type: string
          description: "Protein structure 1 in pdb format File with extensions [pdb]"
          example: "1a3n.pdb"
          format: binary
        pdbFile2:
          type: string
          description: "Protein structure 2 in pdb format File with extensions [pdb]"
          example: "PDB2.pdb"
          format: binary
        rmsdType:
          type: string
          default: "protein"
          enum:
            - "protein"
            - "ligand"
        specifyChains:
          type: boolean
          description: "Whether to specify chains to align on and compute RMSD on"
          default: False
        alignChains1:
          type: array
          items:
            type: string
          description: "Chains to align on"
        rmsdChains1:
          type: array
          items:
            type: string
          description: "Chains to compute RMSD on"
        rmsdLigand1:
          type: string
          description: "Ligand code to compute RMSD on"
        alignChains2:
          type: array
          items:
            type: string
          description: "Chains to align on"
        rmsdLigand2:
          type: string
          description: "Ligand code to compute RMSD on"
        rmsdChains2:
          type: array
          items:
            type: string
          description: "Chains to compute RMSD on"

    # Rna-Fm Settings
    RnaFmSettings:
      type: object
      required:
        - task
        - sequence
        - backbone
        - saveEmbeddingsFormat
        - visualize
      properties:
        task:
          type: string
          description: "Select the specific analysis task"
          default: "extract_embedding"
          enum:
            - "extract_embedding"
            - "ss_prediction"
        sequence:
          type: string
          description: "Input RNA sequence (U instead of T). For mRNA-FM, length must be divisible by 3."
          example: "GGGUGCGAUCAUACCAGCACUAAUGCCCUCCUGGGAAGUCCUCGUGUUGCACCC"
        backbone:
          type: string
          description: "Select the foundation model variant [Only available when task is one of extract_embedding]"
          default: "rna-fm"
          enum:
            - "rna-fm"
            - "mrna-fm"
        saveEmbeddingsFormat:
          type: string
          description: "Choose how to extract or aggregate the embeddings [Only available when task is one of extract_embedding]"
          default: "raw"
          enum:
            - "raw"
            - "mean"
            - "bos"
        visualize:
          type: boolean
          description: "Generate PNG visualizations of the predicted secondary structure, including a 2D forgi plot, arc diagram, contact heatmap, and linear dot-bracket view. [Only available when task is one of ss_prediction]"
          default: False

    # Rog Settings
    RogSettings:
      type: object
      required:
        - pdbFile
      properties:
        pdbFile:
          type: string
          description: "Protein structure in pdb format File with extensions [pdb]"
          example: "1a3n.pdb"
          format: binary

    # Rosetta-Ddg-Prediction Settings
    RosettaDdgPredictionSettings:
      type: object
      required:
        - pdbFile
        - saturationMutagenesis
        - mutations
        - positions
        - residueTypes
      properties:
        pdbFile:
          type: string
          description: "PDB structure to mutate File with extensions [pdb]"
          example: "1a3n.pdb"
          format: binary
        saturationMutagenesis:
          type: boolean
          description: "Whether or not to perform saturation mutagenesis scan on selected positions"
          default: False
        mutations:
          type: string
          description: "Mutations (in the format of chain.wt_residue.position.mutant_residue) to predict. Mutations should be newline-separated, with multiple simultaneous mutations provided on the same line and separated by a comma. For flexddg, each line should also specify the chain to be moved away from the complex when scoring each chain of the complex separately to compute the ddG of binding. This chain should be specified at the end of each line with a semicolon separating the mutation and the chain."
          example: ["A.V.1.K"]
        positions:
          type: string
          description: "Mutation positions (in the format of chain.wt_residue.position) to scan. Mutation positions should be newline-separated, with multiple simultaneous mutations provided on the same line and separated by a comma. For flexddg, each line should also specify the chain to be moved away from the complex during scoring. This chain should be specified at the end of each line with a semicolon separating the mutation position and the chain."
          example: ["A.V.1"]
        residueTypes:
          type: string
          description: "Residues types (formatted in the one-letter convention for the 20 canonical residues) that will be part of the scan. Residue types should be newline-separated."
          example: ["A"]
        protocol:
          type: string
          description: "Protocol to use for prediction"
          default: "cartddg2020"
          enum:
            - "cartddg2020"
            - "cartddg"
            - "flexddg"
        energyFunction:
          type: string
          description: "Energy function used by the protocol"
          default: "ref2015"
          enum:
            - "ref2015"
            - "talaris2014"
        iterations:
          type: number
          description: "Number of iterations of refinement for cartddg/cartddg2020 (ignored for flexddg)"
          minimum: 1
          maximum: 10
          default: 5
        nstruct:
          type: number
          description: "Number of structures to be generated for each mutation"
          minimum: 1
          maximum: 100
          default: 35
        numBackrubTrials:
          type: number
          description: "Number of backrub trials"
          minimum: 1000
          maximum: 100000
          default: 35000
        backrubTrajStride:
          type: number
          description: "Backrub trajectory stride"
          minimum: 1000
          maximum: 10000
          default: 7000
        maxMinimizationIterations:
          type: number
          default: 5000
        maxAbsScoreConvergenceThreshold:
          type: number
          default: 1

    # Rosetta-Dock Settings
    RosettaDockSettings:
      type: object
      required:
        - dockedProteinLigandFile
        - relaxedApoProteinFile
        - paramsFiles
        - conformersFiles
        - distanceConstraints
      properties:
        dockedProteinLigandFile:
          type: string
          description: "pdb structure file for your complex File with extensions [pdb]"
          format: binary
        relaxedApoProteinFile:
          type: string
          description: "pdb structure file for your receptor File with extensions [pdb]"
          format: binary
        paramsFiles:
          type: string
          description: "params files to be included in docking File with extensions [params]"
          format: binary
        conformersFiles:
          type: string
          description: "conformers files to be included in docking File with extensions [pdb]"
          format: binary
        distanceConstraints:
          type: string
          description: "distance constraints to be used in docking File with extensions [constraints]"
          format: binary
        nstruct:
          type: integer
          description: "Number of poses to generate"
          default: 1

    # Rosetta-Fixbb Settings
    RosettaFixbbSettings:
      type: object
      required:
        - pdbFile
        - chain
        - mutResidues
      properties:
        pdbFile:
          type: string
          description: "Structure to mutate File with extensions [pdb]"
          format: binary
        chain:
          type: string
          description: "Chain ID to be designed"
          example: "A"
        mutResidues:
          type: string
          description: "Residue numbers to mutate"
          example: "46 47 48 49 50 51 52 53 56 57 60 62 63 64 65 66 105 106 108 109 110 111 112 118 119 120 121 122 123 124 125 126 129 130 159 160 161 162 163 164 165 166 169 171 172 173 174 175 176 177 178 179 198 208 212 213 214 215 216 217 218 219 226 227 228 229 230 231 232 233 234 235 255 269 270 271 272 273 274 275 276 277 278 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 301 302"
        numDesigns:
          type: number
          description: "Number of designs to generate"
          default: 5
        ligandName:
          type: string
          description: "Ligand Name"
          example: "LIG"
        ligandFile:
          type: string
          description: "Conformers for ligand, separated by TER File with extensions [mol2]"
          format: binary
        conformerLibrary:
          type: string
          description: "Conformer library file with pdb rotamers File with extensions [pdb]"
          format: binary
        constraintsFile:
          type: string
          format: binary
        extraFlags:
          type: string
          description: "Additional flags for Rosetta"
          default: ""

    # Rosetta-Ppi Settings
    RosettaPpiSettings:
      type: object
      required:
        - pdbFile
      properties:
        pdbFile:
          type: string
          description: "Complex Structure File with extensions [pdb]"
          format: binary
        packSeparated:
          type: boolean
          description: "Repack the exposed interfaces when calculating binding energy? Usually a good idea."
          default: True
        packInput:
          type: boolean
          description: "Prepack before separating chains when calculating binding energy? Useful if these are non-Rosetta inputs."
          default: True
        customPackInputs:
          type: string
          description: "Optional custom file with input packing options for InterfaceAnalyzer. If not provided, default options will be used. File with extensions [txt]"
          format: binary
        cyclic:
          type: boolean
          description: "Whether to make the shortest chain in your complex cyclic"
          default: False

    # Rosetta-Relax Settings
    RosettaRelaxSettings:
      type: object
      required:
        - pdbFile
      properties:
        pdbFile:
          type: string
          description: "Input pdb structure to be relaxed File with extensions [pdb]"
          format: binary
        nstruct:
          type: integer
          description: "Number of poses to generate"
          default: 1

    # Rosetta-Relax-Ligand Settings
    RosettaRelaxLigandSettings:
      type: object
      required:
        - pdbFile
        - molFiles
      properties:
        pdbFile:
          type: string
          description: "Input pdb structure to be relaxed File with extensions [pdb]"
          format: binary
        molFiles:
          type: string
          description: "Input mol2 ligands to be relaxed File with extensions [mol2]"
          format: binary
        paramFiles:
          type: string
          description: "Input parameters File with extensions [params]"
          format: binary
        constraints:
          type: string
          description: "Constraints for complex File with extensions [cts]"
          format: binary
        nstruct:
          type: integer
          description: "Number of poses to generate"
          default: 1

    # Rosetta-Score Settings
    RosettaScoreSettings:
      type: object
      required:
        - pdbFile
      properties:
        pdbFile:
          type: string
          description: "Structure to score File with extensions [pdb]"
          format: binary

    # Roshambo Settings
    RoshamboSettings:
      type: object
      required:
        - queryFile
        - datasetFile
      properties:
        queryFile:
          type: string
          description: "SDF file with the reference molecule to compare against File with extensions [sdf]"
          example: "roshambo_query.sdf"
          format: binary
        datasetFile:
          type: string
          description: "SDF file with molecules to compare to the query File with extensions [sdf]"
          example: "roshambo_dataset.sdf"
          format: binary
        numConfs:
          type: number
          description: "Number of conformers to generate per molecule (0 = use input conformations)"
          default: 0
        color:
          type: boolean
          description: "Include pharmacophoric feature (color) similarity in addition to shape"
          default: True
        ignoreHs:
          type: boolean
          description: "Exclude hydrogen atoms from shape comparison"
          default: True
        sortBy:
          type: string
          description: "Similarity metric used to rank results"
          default: "ComboTanimoto"
          enum:
            - "ComboTanimoto"
            - "ShapeTanimoto"
            - "ColorTanimoto"

    # Rso Settings
    RsoSettings:
      type: object
      required:
        - pdbFile
        - chain
      properties:
        pdbFile:
          type: string
          description: "Target pdb to design File with extensions [pdb]"
          format: binary
        chain:
          type: string
          description: "For PDB targets, protein and DNA/RNA enter target chain ID"
          example: "A"
        numDesigns:
          type: number
          description: "Number of binders to generate"
          default: 1
        trajIters:
          type: number
          description: "Number of steps for each binder"
          default: 100
        binderLen:
          type: number
          description: "Length for generated binders"
          default: 100

    # Saprot Settings
    SaprotSettings:
      type: object
      required:
        - inputType
        - properties
        - sequence
        - pdbFile
      properties:
        inputType:
          type: string
          description: "Input type"
          default: "structure"
          enum:
            - "sequence"
            - "structure"
        properties:
          type: string
          example: ["solubility", "stability"]
          enum:
            - "solubility"
            - "stability"
        sequence:
          type: string
          example: "MALKSLVLLSLLVLVLLLVRVQPSLGKETAAAKFERQHMDSSTSAASSSNYCNQMMKSRNLTKDRCKPVNTFVHESLADVQAVCSQKNVACKNGQTNCYQSYSTMSITDCRETGSSKYPNCAYKTTQANKHIIVACEGNPYVPVHFDASV"
        pdbFile:
          type: string
          description: "Protein structure file to score File with extensions [pdb] [Only available when inputType is one of structure]"
          format: binary

    # Saprot-Finetune Settings
    SaprotFinetuneSettings:
      type: object
      required:
        - baseModel
        - csvFile
        - sequenceColumn
        - propertyColumn
      properties:
        baseModel:
          type: string
          description: "Base model to use for finetuning"
          enum:
            - "Official pretrained SaProt (35M)"
            - "Official pretrained SaProt (650M)"
        epochs:
          type: number
          description: "Number of Epochs to train the model for"
          default: 20
        learningRate:
          type: number
          description: "Model learning rate"
          default: 0.001
        csvFile:
          type: string
          description: "CSV file containing your sequences and property of interest File with extensions [csv]"
          format: binary
        sequenceColumn:
          type: string
          description: "Title of sequence column"
        propertyColumn:
          type: string
          description: "Title of property column"

    # Search-Conformations Settings
    SearchConformationsSettings:
      type: object
      required:
        - inputType
        - smiles
        - sdfFile
      properties:
        inputType:
          type: string
          description: "Type of input to use File with extensions [sdf]"
          default: "smiles"
          enum:
            - "smiles"
            - "sdf"
        smiles:
          type: string
          example: "CC(=O)c1ccc(O)cc1"
        sdfFile:
          type: string
          example: "c1cc(O)ccc1C(=O)C (Neutral Structure).sdf"
          format: binary

    # Single-Point-Energy Settings
    SinglePointEnergySettings:
      type: object
      required:
        - inputType
        - smiles
        - sdfFile
        - xyzFile
      properties:
        inputType:
          type: string
          description: "How to provide your molecule"
          default: "smiles"
          enum:
            - "smiles"
            - "sdf"
            - "xyz"
        smiles:
          type: string
          description: "SMILES string of the molecule [Only available when inputType is one of smiles]"
          example: "CCO"
        sdfFile:
          type: string
          description: "SDF/MOL file with 3D coordinates File with extensions [sdf] [Only available when inputType is one of sdf]"
          format: binary
        xyzFile:
          type: string
          description: "XYZ coordinate file (e.g. from a previous geometry optimization) File with extensions [xyz] [Only available when inputType is one of xyz]"
          format: binary
        method:
          type: string
          description: "xtb-gfn2: fast semiempirical (~10s). g-xtb: next-gen semiempirical approximating wB97M-V/def2-TZVPPD (~1min). r2scan-3c: composite DFT (~3min). b3lyp/wb97x-d3: full DFT (~10-30min)"
          default: "xtb-gfn2"
          enum:
            - "xtb-gfn2"
            - "g-xtb"
            - "r2scan-3c"
            - "b3lyp"
            - "wb97x-d3"
        basisSet:
          type: string
          description: "Basis set size controls accuracy vs. speed. Use -d (diffuse) variants for anions. Larger basis = more accurate but slower"
          default: "def2-svp"
          enum:
            - "def2-svp"
            - "def2-svpd"
            - "def2-tzvp"
            - "def2-tzvpd"
            - "def2-qzvp"
            - "6-31g*"
            - "cc-pvdz"
            - "cc-pvtz"
        charge:
          type: number
          description: "Net molecular charge (e.g. 0 for neutral, -1 for anion, +1 for cation)"
          default: 0
        multiplicity:
          type: number
          description: "Spin multiplicity (2S+1). Use 1 for closed-shell singlet, 2 for doublet radical, 3 for triplet"
          default: 1
        solvent:
          type: string
          description: "Implicit solvation environment. 'none' computes gas-phase energy"
          default: "none"
          enum:
            - "none"
            - "water"
            - "acetonitrile"
            - "dmso"
            - "methanol"
            - "ethanol"
            - "chloroform"
            - "toluene"
            - "thf"
            - "dichloromethane"
        preOptimize:
          type: boolean
          description: "Run a fast xTB geometry optimization before the single point calculation. Recommended for SMILES input"
          default: True

    # Smina Settings
    SminaSettings:
      type: object
      required:
        - proteinFile
        - ligandFile
        - boxX
        - boxY
        - boxZ
        - width
        - height
        - depth
      properties:
        proteinFile:
          type: string
          example: "1iep.pdb"
          format: binary
        ligandFile:
          type: string
          description: "sdf structure file for your ligand (one ligand per file) File with extensions [sdf]"
          example: "Conformer3D_COMPOUND_CID_5291.sdf"
          format: binary
        boxX:
          type: number
          description: "X coordinate of bounding box center"
          example: "15.190"
          default: 35
        boxY:
          type: number
          description: "Y coordinate of bounding box center"
          example: "53.903"
          default: 27
        boxZ:
          type: number
          description: "Z coordinate of bounding box center"
          example: "16.917"
          default: 35
        width:
          type: number
          description: "Width of bounding box"
          example: "20"
          default: 20
        height:
          type: number
          description: "Height of bounding box"
          example: "20"
          default: 20
        depth:
          type: number
          description: "Depth of bounding box"
          example: "20"
          default: 20

    # Space2 Settings
    Space2Settings:
      type: object
      required:
        - proteinFiles
      properties:
        proteinFiles:
          type: string
          description: "IMGT numbered pdb file with 'H' for heavy chain ID and 'L' for light chain ID File with extensions [pdb]"
          format: binary
        cutoff:
          type: number
          description: "Clustering cutoff (A)"
          default: 1.24
        clusteringAlgorithm:
          type: string
          description: "Clustering method - agglomerative is bottom-up, greedy makes best choi"
          default: "Agglomerative clustering"
          enum:
            - "Agglomerative clustering"
            - "Greedy clustering"
        CDRs:
          type: string
          description: "CDRs to use in clustering"
          example: ["CDRH3", "CDRL3"]
          enum:
            - "CDRH1"
            - "CDRH2"
            - "CDRH3"
            - "CDRL1"
            - "CDRL2"
            - "CDRL3"
        fw:
          type: string
          description: "Framework regions to use in clustering"
          example: ["fwH"]
          enum:
            - "fwH"
            - "fwL"
        heavyChain:
          type: string
          description: "Heavy chain ID to use in clustering"
          default: "H"
        lightChain:
          type: string
          description: "Light chain ID to use in clustering"
          default: "L"

    # Spatial-Ppi Settings
    SpatialPpiSettings:
      type: object
      required:
        - inputFormat
        - proteinA
        - proteinB
        - sequenceA
        - sequenceB
      properties:
        inputFormat:
          type: string
          default: "pdb"
          enum:
            - "pdb"
            - "sequence"
        proteinA:
          type: string
          description: "pdb structure file for first protein File with extensions [pdb] [Only available when inputFormat is one of pdb]"
          format: binary
        proteinAChain:
          type: string
          description: "Chain in protein A, if empty - first chain is used [Only available when inputFormat is one of pdb]"
          example: "A"
        proteinB:
          type: string
          description: "pdb structure file for your ligand File with extensions [pdb] [Only available when inputFormat is one of pdb]"
          format: binary
        proteinBChain:
          type: string
          description: "Chain in protein B, if empty - first chain is used [Only available when inputFormat is one of pdb]"
          example: "A"
        sequenceA:
          type: string
          example: "TRPNHTIYINNLNEKIKKDELKKSLHAIFSRFGQILDILVSRSLK:MRGQAFVIFKEVSSATNALRSMQGFPFYDKPMRIQYAKTDSDIIAKM"
        sequenceB:
          type: string
          example: "TRPNHTIYINNLNEKIKKDELKKSLHAIFSRFGQILDILVSRSLK:MRGQAFVIFKEVSSATNALRSMQGFPFYDKPMRIQYAKTDSDIIAKM"

    # Spin-State-Energies Settings
    SpinStateEnergiesSettings:
      type: object
      required:
        - inputType
        - smiles
        - sdfFile
      properties:
        inputType:
          type: string
          description: "Type of input to use File with extensions [sdf]"
          default: "smiles"
          enum:
            - "smiles"
            - "sdf"
        smiles:
          type: string
          example: "CC(=O)c1ccc(O)cc1"
        sdfFile:
          type: string
          example: "c1cc(O)ccc1C(=O)C (Neutral Structure).sdf"
          format: binary

    # Stabddg Settings
    StabddgSettings:
      type: object
      required:
        - pdbFile
        - binder1Chains
        - binder2Chains
        - mutations
      properties:
        pdbFile:
          type: string
          description: "Wild-type complex PDB file File with extensions [pdb]"
          example: "1AO7.pdb"
          format: binary
        binder1Chains:
          type: array
          items:
            type: string
          description: "Chain IDs making up the first binder of the interface"
          example: ["A", "B", "C"]
        binder2Chains:
          type: array
          items:
            type: string
          description: "Chain IDs making up the second binder of the interface"
          example: ["D", "E"]
        mutations:
          type: string
          description: "Mutations to evaluate, in the format wildtype+chain+position+mutant (e.g., EA63Q = E to Q at position 63 of chain A). Use the residue numbering from your submitted PDB — StaB-ddG requires each chain to start at residue 1, so the PDB and mutation positions are automatically renumbered before inference (the renumbered mutation string is reported alongside the result). One entry per line; for multi-point mutants on a single entry, separate individual mutations with commas (e.g., \"EA63Q,QD30V,KA66A\")."
          example: ["EA63Q,QD30V,KA66A"]
        mcSamples:
          type: number
          description: "Number of Monte Carlo samples to average over for variance reduction (default 20)."
          default: 20
        seed:
          type: number
          description: "Seed for reproducibility. Leave blank to use a random seed."

    # Structural-Evolution Settings
    StructuralEvolutionSettings:
      type: object
      required:
        - pdbFile
        - chain
      properties:
        pdbFile:
          type: string
          description: "Pdb structure file of the protein or protein complex (must be numbered 1..n) File with extensions [pdb]"
          format: binary
        chain:
          type: string
          description: "Target chain you wish to evolve"
          example: "A"
        upperLimit:
          type: number
          description: "Number of residues to consider for mutation, e.g. mutations will be recommended in the residue indices in the range 1 to selected upper limit."
          example: 10

    # Superwater Settings
    SuperwaterSettings:
      type: object
      required:
        - pdbFile
      properties:
        pdbFile:
          type: string
          description: "Protein structure in pdb format to add waters to File with extensions [pdb]"
          example: "1iep.pdb"
          format: binary
        waterRatio:
          type: number
          description: "Number of water molecules predicted by the diffusion model"
          minimum: 1
          maximum: 20
          default: 15
        cap:
          type: number
          description: "Probability cutoff for water molecule sampling (higher values increase precision but reduce coverage)"
          minimum: 0.02
          maximum: 0.5
          default: 0.1

    # Surfdock Settings
    SurfdockSettings:
      type: object
      required:
        - proteinFile
        - ligandFormat
        - ligandFile
        - ligandSmiles
      properties:
        proteinFile:
          type: string
          description: "pdb structure file for your receptor File with extensions [pdb]"
          example: "6w70.pdb"
          format: binary
        ligandFormat:
          type: string
          description: "Choose the format of your ligand input"
          default: "sdf file"
          enum:
            - "sdf file"
            - "SMILES"
        ligandFile:
          type: string
          description: "sdf structure file for your ligand File with extensions [sdf]"
          example: "6w70_ligand.sdf"
          format: binary
        ligandSmiles:
          type: string
          description: "SMILES string for your ligand"
        numSamples:
          type: number
          description: "Number of docked poses to generate"
          default: 40

    # Syn-Codon-Lm Settings
    SynCodonLmSettings:
      type: object
      required:
        - task
        - sequence
        - species
      properties:
        task:
          type: string
          default: "embeddings"
          enum:
            - "embeddings"
            - "optimize"
        sequence:
          type: string
          example: {'embeddings': 'ATGTCCACCGGGCGGTGA', 'optimize': 'MSKGEELFTGVVPILVELDGDVNGHKFSVSGEGEGDATYGKLTLKFICTTGKLPVPWPTLVTTFGYGL'}
        species:
          type: string
          default: "E. coli"
          enum:
            - "E. coli"
            - "S. cerevisiae"
            - "M. musculus"
            - "H. sapiens"
        customSpecies:
          type: number
          description: "If your desired organism is not found above, select your species code from this list: https://github.com/Boehringer-Ingelheim/SynCodonLM/blob/master/SynCodonLM/species_token_type.py. If specified, species will be ignored. "
          minimum: 0
          maximum: 499

    # Tap Settings
    TapSettings:
      type: object
      required:
        - heavySequence
        - lightSequence
      properties:
        heavySequence:
          type: string
          description: "Heavy sequence of your antibody"
          example: "QVQLQQSGAELARPGASVKMSCKASGYTFTRYTMHWVKQRPGQGLEWIGYINPSRGYTNYNQKFKDKATLTTDKSSSTAYMQLSSLTSEDSAVYYCARYYDDHYCLDYWGQGTTLTVSS"
        lightSequence:
          type: string
          description: "Light sequence of your antibody"
          example: "QIVLTQSPAIMSASPGEKVTMTCSASSSVSYMNWYQQKSGTSPKRWIYDTSKLASGVPAHFRGSGSGTSYSLTISGMEAEDAATYYCQQWSSNPFTFGSGTKLEIN"

    # Tautomer Settings
    TautomerSettings:
      type: object
      required:
        - inputType
        - smiles
        - sdfFile
      properties:
        inputType:
          type: string
          description: "Type of input to use File with extensions [sdf]"
          default: "smiles"
          enum:
            - "smiles"
            - "sdf"
        smiles:
          type: string
          example: "CC(=O)c1ccc(O)cc1"
        sdfFile:
          type: string
          example: "c1cc(O)ccc1C(=O)C (Neutral Structure).sdf"
          format: binary

    # Tcrmodel2 Settings
    Tcrmodel2Settings:
      type: object
      required:
        - type
        - A
        - B
        - peptide
        - MHCA
        - MHCB
      properties:
        type:
          type: string
          default: "class1"
          enum:
            - "class1"
            - "class2"
            - "unbound"
        A:
          type: string
          example: {'class2': 'LAKTTQPISMDSYEGQEVNITCSHNNIATNDYITWYQQFPSQGPRFIIQGYKTKVTNEVASLFIPADRKSSTLSLPRVSLSDTAVYYCLVGDTGFQKLVFGTGTRLLVSP', 'class1': 'AQEVTQIPAALSVPEGENLVLNCSFTDSAIYNLQWFRQDPGKGLTSLLLIQSSQREQTSGRLNASLDKSSGRSTLYIAASQPGDSATYLCAVTNQAGTALIFGKGTTLSVSS', 'unbound': 'AQEVTQIPAALSVPEGENLVLNCSFTDSAIYNLQWFRQDPGKGLTSLLLIQSSQREQTSGRLNASLDKSSGRSTLYIAASQPGDSATYLCAVTNQAGTALIFGKGTTLSVSS'}
        B:
          type: string
          example: {'class2': 'GAVVSQHPSWVICKSGTSVKIECRSLDFQATTMFWYRQFPKQSLMLMATSNEGSKATYEQGVEKDKFLINHASLTLSTLTVTSAHPEDSSFYICSARDPGGGGSSYEQYFGPGTRLTVT', 'class1': 'NAGVTQTPKFQVLKTGQSMTLQCSQDMNHEYMSWYRQDPGMGLRLIHYSVGAGITDQGEVPNGYNVSRSTTEDFPLRLLSAAPSQTSVYFCASSYSIRGSRGEQFFGPGTRLTVL', 'unbound': 'NAGVTQTPKFQVLKTGQSMTLQCSQDMNHEYMSWYRQDPGMGLRLIHYSVGAGITDQGEVPNGYNVSRSTTEDFPLRLLSAAPSQTSVYFCASSYSIRGSRGEQFFGPGTRLTVL'}
        peptide:
          type: string
          example: {'class2': 'LAWEWWRTV', 'class1': 'RLPAKAPLL'}
        MHCA:
          type: string
          example: {'class2': 'IKADHVSTYAAFVQTHRPTGEFMFEFDEDEMFYVDLDKKETVWHLEEFGQAFSFEAQGGLANIAILNNNLNTLIQRSNHTQAT', 'class1': 'SHSLKYFHTSVSRPGRGEPRFISVGYVDDTQFVRFDNDAASPRMVPRAPWMEQEGSEYWDRETRSARDTAQIFRVNLRTLRGYYNQSEAGSHTLQWMHGCELGPDGRFLRGYEQFAYDGKDYLTLNEDLRSWTAVDTAAQISEQKSNDASEAEHQRAYLEDTCVEWLHKYLEKGKETLLH'}
        MHCB:
          type: string
          example: "PENYLFQGRQECYAFNGTQRFLERYIYNREEFARFDSDVGEFRAVTELGRPAAEYWNSQKDILEEKRAVPDRMCRHNYELGGPMTLQR"

    # Td-Dft Settings
    TdDftSettings:
      type: object
      required:
        - inputType
        - smiles
        - sdfFile
        - xyzFile
      properties:
        inputType:
          type: string
          description: "How to provide your molecule"
          default: "smiles"
          enum:
            - "smiles"
            - "sdf"
            - "xyz"
        smiles:
          type: string
          description: "SMILES string of the molecule (e.g. naphthalene) [Only available when inputType is one of smiles]"
          example: "c1ccc2ccccc2c1"
        sdfFile:
          type: string
          description: "SDF/MOL file with 3D coordinates File with extensions [sdf] [Only available when inputType is one of sdf]"
          format: binary
        xyzFile:
          type: string
          description: "Pre-optimized XYZ coordinate file File with extensions [xyz] [Only available when inputType is one of xyz]"
          format: binary
        method:
          type: string
          description: "b3lyp: standard. cam-b3lyp: better for charge-transfer excitations. wb97x-d3: general purpose. pbe0: fast"
          default: "b3lyp"
          enum:
            - "b3lyp"
            - "cam-b3lyp"
            - "wb97x-d3"
            - "pbe0"
        basisSet:
          type: string
          description: "Basis set for the excited-state calculation. Diffuse functions (+, -d) improve Rydberg/CT states"
          default: "def2-svp"
          enum:
            - "def2-svp"
            - "def2-svpd"
            - "def2-tzvp"
            - "def2-tzvpd"
            - "6-31+g*"
        charge:
          type: number
          description: "Net molecular charge"
          default: 0
        multiplicity:
          type: number
          description: "Spin multiplicity (2S+1)"
          default: 1
        solvent:
          type: string
          description: "Implicit solvation shifts absorption wavelengths (solvatochromism)"
          default: "none"
          enum:
            - "none"
            - "water"
            - "acetonitrile"
            - "dmso"
            - "methanol"
            - "ethanol"
            - "chloroform"
            - "toluene"
            - "thf"
            - "dichloromethane"
        numStates:
          type: number
          description: "How many excited states to compute. More states = broader spectral coverage but slower"
          default: 10
        tda:
          type: boolean
          description: "TDA is ~2x faster with minimal accuracy loss for most absorption spectra"
          default: False
        preOptimize:
          type: boolean
          description: "Optimize geometry with xTB before the TD-DFT calculation"
          default: True

    # Tempro Settings
    TemproSettings:
      type: object
      required:
        - sequence
      properties:
        sequence:
          type: string
          description: "Nanobody melting temperature"
          example: "QVQLQQSGAELARPGASVKMSCKASGYTFTRYTMHWVKQRPGQGLEWIGYINPSRGYTNYNQKFKDKATLTTDKSSSTAYMQLSSLTSEDSAVYYCARYYDDHYCLDYWGQGTTLTVSS"

    # Temstapro Settings
    TemstaproSettings:
      type: object
      required:
        - sequence
      properties:
        sequence:
          type: string
          description: "Protein sequence to assess thermostability"
          example: "AKLAGQKVRIGGWVKTGRQQGKGTFAFLEVNDGSCPANLQVMVDSSLYDLSRLVATGTCVTVDGVLKIPPEGKGLKQSIELSVETVIAVGTVDP"

    # Thermompnn Settings
    ThermompnnSettings:
      type: object
      required:
        - pdbFile
        - chains
      properties:
        pdbFile:
          type: string
          description: "Protein structure file to be designed File with extensions [pdb]"
          example: "3HTN.pdb"
          format: binary
        allChains:
          type: boolean
          default: False
        chains:
          type: array
          items:
            type: string
          description: "Chain IDs to be designed"
          example: ["A"]
        verify:
          type: boolean
          description: "Automatically perform structure prediction on generated sequences for verification"
          default: False
        topK:
          type: number
          description: "Maximum number of sequences to output (sorted by ddG)"
          default: "10"

    # Thermompnn-D Settings
    ThermompnnDSettings:
      type: object
      required:
        - pdbFile
        - chains
        - model
      properties:
        pdbFile:
          type: string
          description: "Protein structure file to be designed File with extensions [pdb]"
          example: "3HTN.pdb"
          format: binary
        chains:
          type: array
          items:
            type: string
          description: "Chains to use (default is all chains)"
          example: ["A"]
        model:
          type: string
          description: "Epistatic: This model attempts to capture epistatic interactions between double mutations, which requires running inference on every individual mutation | Additive: This sums the individual contributions from each single mutation without attempting to quantify epistatic coupling terms."
          default: "epistatic"
          enum:
            - "epistatic"
            - "additive"
            - "single"
        threshold:
          type: number
          description: "Threshold for SSM sweep. By default, ThermoMPNN only saves mutations below this threshold (-0.5 kcal/mol). To save all mutations, set this really high (e.g., 100)"
          default: -0.5
        distance:
          type: number
          description: "Filter for double mutant predictions using pairwise Ca distance cutoff (default is 5 A)"
          default: 5
        batchSize:
          type: number
          description: "Batch size for stability prediction module"
          default: 256
        ssPenalty:
          type: boolean
          description: "Add explicit disulfide breakage penalty"
          default: False

    # Tlimmuno Settings
    TlimmunoSettings:
      type: object
      required:
        - sequence
        - hlas
      properties:
        sequence:
          type: string
          description: "Sequence to predict immunogenicity - if your sequence is longer than Peptide length (15 by default), we will predict immunogenicity for each sliding window peptide."
          example: "GLLFRRLTSREVLLL"
        hlas:
          type: string
          description: "HLA alleles to predict immunogenicity for"
          example: ["DRB1_0803"]
          default: ['DRB1_0803', 'DRB1_1501', 'DRB1_1101', 'DRB1_0401', 'DRB1_0301', 'DRB1_1103', 'DRB1_1303', 'DRB1_0101', 'HLA-DPA10103-DPB10301', 'DRB1_0405', 'HLA-DQA10102-DQB10502', 'DRB3_0101', 'DRB1_1301', 'DRB1_0103', 'DRB1_0402', 'DRB1_0404', 'DRB1_0901', 'DRB3_0202', 'HLA-DQA10102-DQB10602', 'DRB5_0101', 'DRB5_0202', 'DRB1_0801', 'DRB4_0103', 'DRB1_0701', 'DRB1_1001', 'DRB1_0102', 'DRB1_0818', 'DRB1_1302', 'DRB1_0406', 'DRB1_0302', 'DRB1_1102', 'HLA-DPA10103-DPB10201', 'DRB1_1502', 'DRB1_1202', 'DRB4_0101', 'HLA-DQA10301-DQB10302', 'HLA-DPA10103-DPB10401', 'HLA-DQA10501-DQB10201', 'DRB1_0403', 'DRB1_0802', 'DRB1_1404', 'DRB1_1506', 'HLA-DQA10103-DQB10603', 'DRB1_1104', 'DRB3_0301', 'DRB1_0407', 'DRB1_1406', 'DRB1_1402', 'DRB1_1201', 'DRB1_1304', 'HLA-DPA10103-DPB10402', 'HLA-DQA10401-DQB10402', 'DRB1_1602', 'DRB1_1503', 'HLA-DQA10501-DQB10301', 'HLA-DQA10101-DQB10501', 'DRB1_0411', 'DRB1_1454', 'DRB5_0102', 'HLA-DPA10201-DPB11401', 'HLA-DQA10505-DQB10301', 'HLA-DQA10201-DQB10202', 'HLA-DPA10103-DPB10601', 'HLA-DQA10201-DQB10303', 'HLA-DPA10201-DPB10101', 'DRB1_0303']
          enum:
            - "DRB1_0803"
            - "DRB1_1501"
            - "DRB1_1101"
            - "DRB1_0401"
            - "DRB1_0301"
            - "DRB1_1103"
            - "DRB1_1303"
            - "DRB1_0101"
            - "HLA-DPA10103-DPB10301"
            - "DRB1_0405"
            - "HLA-DQA10102-DQB10502"
            - "DRB3_0101"
            - "DRB1_1301"
            - "DRB1_0103"
            - "DRB1_0402"
            - "DRB1_0404"
            - "DRB1_0901"
            - "DRB3_0202"
            - "HLA-DQA10102-DQB10602"
            - "DRB5_0101"
            - "DRB5_0202"
            - "DRB1_0801"
            - "DRB4_0103"
            - "DRB1_0701"
            - "DRB1_1001"
            - "DRB1_0102"
            - "DRB1_0818"
            - "DRB1_1302"
            - "DRB1_0406"
            - "DRB1_0302"
            - "DRB1_1102"
            - "HLA-DPA10103-DPB10201"
            - "DRB1_1502"
            - "DRB1_1202"
            - "DRB4_0101"
            - "HLA-DQA10301-DQB10302"
            - "HLA-DPA10103-DPB10401"
            - "HLA-DQA10501-DQB10201"
            - "DRB1_0403"
            - "DRB1_0802"
            - "DRB1_1404"
            - "DRB1_1506"
            - "HLA-DQA10103-DQB10603"
            - "DRB1_1104"
            - "DRB3_0301"
            - "DRB1_0407"
            - "DRB1_1406"
            - "DRB1_1402"
            - "DRB1_1201"
            - "DRB1_1304"
            - "HLA-DPA10103-DPB10402"
            - "HLA-DQA10401-DQB10402"
            - "DRB1_1602"
            - "DRB1_1503"
            - "HLA-DQA10501-DQB10301"
            - "HLA-DQA10101-DQB10501"
            - "DRB1_0411"
            - "DRB1_1454"
            - "DRB5_0102"
            - "HLA-DPA10201-DPB11401"
            - "HLA-DQA10505-DQB10301"
            - "HLA-DQA10201-DQB10202"
            - "HLA-DPA10103-DPB10601"
            - "HLA-DQA10201-DQB10303"
            - "HLA-DPA10201-DPB10101"
            - "DRB1_0303"
        peptideLength:
          type: number
          description: "Length of peptide (all peptides of this length will be predicted, with max immunogenicity as final score)"
          default: 15

    # Tmd Settings
    TmdSettings:
      type: object
      required:
        - proteinPDB
        - graphMode
        - ligandsSDF
        - nEqSteps
        - nFrames
        - stepsPerFrame
        - mpsWorkers
      properties:
        proteinPDB:
          type: string
          description: "Protein structure in PDB format File with extensions [pdb]"
          example: "1iep.pdb"
          format: binary
        graphMode:
          type: string
          description: "How ligands are connected in the perturbation network"
          default: "greedy"
          enum:
            - "greedy"
            - "star_map"
            - "custom"
        ligandsSDF:
          type: string
          description: "Ligands in SDF format (multiple molecules) File with extensions [sdf]"
          example: "tmd_example_ligands.sdf"
          format: binary
        alchemicalNetwork:
          type: string
          description: "Interactive preview and editor for the ligand perturbation network"
        networkEdges:
          type: string
        nEqSteps:
          type: number
          description: "Number of equilibration steps"
          minimum: 0
          maximum: 1000000
          default: 200000
        nFrames:
          type: number
          description: "Number of production frames to generate"
          minimum: 10
          maximum: 20000
          default: 2000
        stepsPerFrame:
          type: number
          description: "Number of MD steps per frame"
          minimum: 100
          maximum: 5000
          default: 400
        mpsWorkers:
          type: number
          description: "Number of MPS processes per GPU for parallel edge execution"
          minimum: 1
          maximum: 12
          default: 1

    # Tnp Settings
    TnpSettings:
      type: object
      required:
        - sequence
      properties:
        sequence:
          type: string
          description: "Sequence of your nanobody"
          example: "QVKLQESGAELARPGASVKLSCKASGYTFTNYWMQWVKQRPGQGLDWIGAIYPGDGNTRYTHKFKGKATLTADKSSSTAYMQLSSLASEDSGVYYCARGEGNYAWFAYWGQGTTVTVSS"

    # Unimol2 Settings
    Unimol2Settings:
      type: object
      required:
        - proteinFile
        - ligandFile
        - boxX
        - boxY
        - boxZ
        - width
        - height
        - depth
      properties:
        proteinFile:
          type: string
          example: "1iep.pdb"
          format: binary
        ligandFile:
          type: string
          description: "sdf structure file for your ligand (one ligand per file) File with extensions [sdf]"
          example: "Conformer3D_COMPOUND_CID_5291.sdf"
          format: binary
        boxX:
          type: number
          description: "X coordinate of bounding box center"
          example: "15.190"
          default: 35
        boxY:
          type: number
          description: "Y coordinate of bounding box center"
          example: "53.903"
          default: 27
        boxZ:
          type: number
          description: "Z coordinate of bounding box center"
          example: "16.917"
          default: 35
        width:
          type: number
          description: "Width of bounding box"
          example: "20"
          default: 20
        height:
          type: number
          description: "Height of bounding box"
          example: "20"
          default: 20
        depth:
          type: number
          description: "Depth of bounding box"
          example: "20"
          default: 20

    # Us-Align Settings
    UsAlignSettings:
      type: object
      required:
        - pdbFile1
        - pdbFile2
      properties:
        pdbFile1:
          type: string
          description: "Protein structure 1 in pdb format File with extensions [pdb]"
          example: "PDB1.pdb"
          format: binary
        pdbFile2:
          type: string
          description: "Protein structure 2 in pdb format File with extensions [pdb]"
          example: "PDB2.pdb"
          format: binary
        mm_opt:
          type: string
          default: "0: Two monomeric structures"
          enum:
            - "0: Two monomeric structures"
            - "1: Two multi-chain oligomeric structures"
            - "3: Circularly permuted structures"
            - "5: fNS alignment"
            - "6: sNS alignment"

    # Virtual-Screening Settings
    VirtualScreeningSettings:
      type: object
      required:
        - receptorFile
        - datasetId
        - dockingTool
        - boxX
        - boxY
        - boxZ
        - width
        - height
        - depth
        - exhaustiveness
      properties:
        receptorFile:
          type: string
          example: "1iep.pdb"
          format: binary
        datasetId:
          type: string
          description: "Select a ligand dataset to screen. Upload datasets at /ligands"
          example: "zinc-example"
        dockingTool:
          type: string
          example: "qvina02"
          default: "qvina02"
          enum:
            - "qvina02"
        boxX:
          type: number
          description: "X coordinate of bounding box center"
          example: "15.190"
          default: 0
        boxY:
          type: number
          description: "Y coordinate of bounding box center"
          example: "53.903"
          default: 0
        boxZ:
          type: number
          description: "Z coordinate of bounding box center"
          example: "16.917"
          default: 0
        width:
          type: number
          description: "Width of bounding box"
          example: "20"
          default: 10
        height:
          type: number
          description: "Height of bounding box"
          example: "20"
          default: 10
        depth:
          type: number
          description: "Depth of bounding box"
          example: "20"
          default: 10
        exhaustiveness:
          type: number
          description: "Adjusts the amount of computational effort used during a docking experiment - increasing this to 32 will give a more consistent docking result"
          example: "8"
          default: 8

    # Zymctrl Settings
    ZymctrlSettings:
      type: object
      required:
        - fastaFile
        - ecNumber
      properties:
        fastaFile:
          type: string
          format: binary
        ecNumber:
          type: string
          description: "EC numbers describing your reaction of interest - find yours here: https://www.brenda-enzymes.org/ecexplorer.php?browser=1"
          example: "1.1.1.1"
        numSequences:
          type: number
          description: "Number of sequences to generate"
          default: 100



    JobSubmission:
      type: object
      required:
        - jobName
        - type
        - settings
      properties:
        jobName:
          type: string
          description: Unique name for the job
          minLength: 1
          maxLength: 100
          pattern: '^[a-zA-Z0-9_-]+$'
          example: "my-protein-analysis"
        type:
          type: string
          description: Tool to use for the job
          example: "alphafold"
          # Tool enum ref
          enum: [abb4, abgpt, ablang, ablang-mpnn, abmap, abmpnn, abnativ, abodybuilder, adapt, admet, aev-plig, af-multistate, af-traj, af-unmasked, af2bind, af2rave, afcluster, afcycdesign, afsample, aggrescan3d, alde, align-pdbs, allmetal3d, alphabind-finetune, alphacutter, alphaflow, alphafold, amplify, anarci, ancestral-reconstruction, antiberty, antibody-annotation, antibody-diffusion-properties, antibody-evolution, antidif, antifold, apm, aqueous-solubility, atomsurf, autodock-vina, balm-finetune, balm-inference, balm-paired, bbmerge, bde, bindcraft, binding-ddg, bioemu, biophi, blast, boltz, boltz-finetune, boltzdesign, boltzgen, caliby, catpred, chai, charge-dipole, chembl, cluster-pdbs, colabdock, conformer-generation, contact-ms, cryfold, cryodrgn, custom-msa, dayhoff, deep-viscosity, deepfri, deepimmuno, deeprank-ab, deepsp, deepstabp, dfmdock, diffdock, diffsbdd, disco, dlkcat, dnaworks, dockq, drugflow, dsmbind, electronic-properties, electrostatic-potential, emboss, enumeration, enzygen2, enzygen2-finetune, enzygen2-inference, equidock, esm-embeddings, esm-if1, esm-scan, esm2, esmfold, evcouplings, evo2, evonb, evopro, evoprotgrad, fampnn, fastsolv, file-converter, fixbb, flowdock, foldmason, foldseek, fpocket, frameflow, frequency-analysis, fukui, g-mmpbsa, gbsa, gems, geometry-optimization, germinal, gnina, gromacs, gromacs-custom, hbond-strength, highfold, hmmalign, humatch, hypermpnn, idr, igblast, igdesign, iggm, immunebuilder, intercaat, intfold, ipc, ipsae, its-flexible, legolas, libinvent, lichen, ligandmpnn, logp, mage, masif, mavenets-finetune, mavenets-inference, mber, md-openmm, mdgen, membrane-gromacs, mhc-fine, microscopic-pka, min-distance-selected-residues, modelangelo, molecular-descriptors, molprobity, mosaic-hallucinate, mrnabert, msa, msa-analysis, msa-cluster, multi-evolve, n-linked-glycosylation, nampnn, nbforge, netmhcpan, netsolp, nos, nos-inference, oas, odesign-antibody, omegafold, openfe, openfold, openmm, openmm-metadynamics, openmm-relax, openmm-temperature-replica, orb-models, orb-models3, orthrus, paragraph, parasurf, pdbsum, pdockq, pepfunn, pepmlm, peppatch, peptiverse, pka, plabdab, placer, plm-finetune, plm-inference, pocketgen, ppap, ppiscreenml, process-atac, prodigy, profam, profluent-e1, progen2-finetune, progen2-inference, propka, prot-t5-embeddings, protein-design, protein-hunter, protein-metrics, protein-properties, protein-scoring, protein-sol, protein-solubilization, proteina-complexa, proteinmpnn, proteinmpnn-ddg, proteinmpnn-ddg-binder, proteinmpnn-score, protenix, proteus, protonation-state, psiblast, pubchem, pulchra, pxdesign, pykvfinder, pysca, qupkake, rbfe, reaction-energy, redox, reinvent-finetune, rf3, rfantibody, rfdiffusion, rfdiffusion-all-atom, rfdiffusion2, rfdiffusion3, rfpeptides, rhodesign, ribodiffusion, riffdiff, rmsd-calculator, rna-fm, rog, rosetta-ddg-prediction, rosetta-dock, rosetta-fixbb, rosetta-ppi, rosetta-relax, rosetta-relax-ligand, rosetta-score, roshambo, rso, saprot, saprot-finetune, search-conformations, single-point-energy, smina, space2, spatial-ppi, spin-state-energies, stabddg, structural-evolution, superwater, surfdock, syn-codon-lm, tap, tautomer, tcrmodel2, td-dft, tempro, temstapro, thermompnn, thermompnn-d, tlimmuno, tmd, tnp, unimol2, us-align, virtual-screening, zymctrl]
        settings:
          anyOf:
            # Tool settings ref
           - $ref: '#/components/schemas/Abb4Settings'
           - $ref: '#/components/schemas/AbgptSettings'
           - $ref: '#/components/schemas/AblangSettings'
           - $ref: '#/components/schemas/AblangMpnnSettings'
           - $ref: '#/components/schemas/AbmapSettings'
           - $ref: '#/components/schemas/AbmpnnSettings'
           - $ref: '#/components/schemas/AbnativSettings'
           - $ref: '#/components/schemas/AbodybuilderSettings'
           - $ref: '#/components/schemas/AdaptSettings'
           - $ref: '#/components/schemas/AdmetSettings'
           - $ref: '#/components/schemas/AevPligSettings'
           - $ref: '#/components/schemas/AfMultistateSettings'
           - $ref: '#/components/schemas/AfTrajSettings'
           - $ref: '#/components/schemas/AfUnmaskedSettings'
           - $ref: '#/components/schemas/Af2bindSettings'
           - $ref: '#/components/schemas/Af2raveSettings'
           - $ref: '#/components/schemas/AfclusterSettings'
           - $ref: '#/components/schemas/AfcycdesignSettings'
           - $ref: '#/components/schemas/AfsampleSettings'
           - $ref: '#/components/schemas/Aggrescan3dSettings'
           - $ref: '#/components/schemas/AldeSettings'
           - $ref: '#/components/schemas/AlignPdbsSettings'
           - $ref: '#/components/schemas/Allmetal3dSettings'
           - $ref: '#/components/schemas/AlphabindFinetuneSettings'
           - $ref: '#/components/schemas/AlphacutterSettings'
           - $ref: '#/components/schemas/AlphaflowSettings'
           - $ref: '#/components/schemas/AlphafoldSettings'
           - $ref: '#/components/schemas/AmplifySettings'
           - $ref: '#/components/schemas/AnarciSettings'
           - $ref: '#/components/schemas/AncestralReconstructionSettings'
           - $ref: '#/components/schemas/AntibertySettings'
           - $ref: '#/components/schemas/AntibodyAnnotationSettings'
           - $ref: '#/components/schemas/AntibodyDiffusionPropertiesSettings'
           - $ref: '#/components/schemas/AntibodyEvolutionSettings'
           - $ref: '#/components/schemas/AntidifSettings'
           - $ref: '#/components/schemas/AntifoldSettings'
           - $ref: '#/components/schemas/ApmSettings'
           - $ref: '#/components/schemas/AqueousSolubilitySettings'
           - $ref: '#/components/schemas/AtomsurfSettings'
           - $ref: '#/components/schemas/AutodockVinaSettings'
           - $ref: '#/components/schemas/BalmFinetuneSettings'
           - $ref: '#/components/schemas/BalmInferenceSettings'
           - $ref: '#/components/schemas/BalmPairedSettings'
           - $ref: '#/components/schemas/BbmergeSettings'
           - $ref: '#/components/schemas/BdeSettings'
           - $ref: '#/components/schemas/BindcraftSettings'
           - $ref: '#/components/schemas/BindingDdgSettings'
           - $ref: '#/components/schemas/BioemuSettings'
           - $ref: '#/components/schemas/BiophiSettings'
           - $ref: '#/components/schemas/BlastSettings'
           - $ref: '#/components/schemas/BoltzSettings'
           - $ref: '#/components/schemas/BoltzFinetuneSettings'
           - $ref: '#/components/schemas/BoltzdesignSettings'
           - $ref: '#/components/schemas/BoltzgenSettings'
           - $ref: '#/components/schemas/CalibySettings'
           - $ref: '#/components/schemas/CatpredSettings'
           - $ref: '#/components/schemas/ChaiSettings'
           - $ref: '#/components/schemas/ChargeDipoleSettings'
           - $ref: '#/components/schemas/ChemblSettings'
           - $ref: '#/components/schemas/ClusterPdbsSettings'
           - $ref: '#/components/schemas/ColabdockSettings'
           - $ref: '#/components/schemas/ConformerGenerationSettings'
           - $ref: '#/components/schemas/ContactMsSettings'
           - $ref: '#/components/schemas/CryfoldSettings'
           - $ref: '#/components/schemas/CryodrgnSettings'
           - $ref: '#/components/schemas/CustomMsaSettings'
           - $ref: '#/components/schemas/DayhoffSettings'
           - $ref: '#/components/schemas/DeepViscositySettings'
           - $ref: '#/components/schemas/DeepfriSettings'
           - $ref: '#/components/schemas/DeepimmunoSettings'
           - $ref: '#/components/schemas/DeeprankAbSettings'
           - $ref: '#/components/schemas/DeepspSettings'
           - $ref: '#/components/schemas/DeepstabpSettings'
           - $ref: '#/components/schemas/DfmdockSettings'
           - $ref: '#/components/schemas/DiffdockSettings'
           - $ref: '#/components/schemas/DiffsbddSettings'
           - $ref: '#/components/schemas/DiscoSettings'
           - $ref: '#/components/schemas/DlkcatSettings'
           - $ref: '#/components/schemas/DnaworksSettings'
           - $ref: '#/components/schemas/DockqSettings'
           - $ref: '#/components/schemas/DrugflowSettings'
           - $ref: '#/components/schemas/DsmbindSettings'
           - $ref: '#/components/schemas/ElectronicPropertiesSettings'
           - $ref: '#/components/schemas/ElectrostaticPotentialSettings'
           - $ref: '#/components/schemas/EmbossSettings'
           - $ref: '#/components/schemas/EnumerationSettings'
           - $ref: '#/components/schemas/Enzygen2Settings'
           - $ref: '#/components/schemas/Enzygen2FinetuneSettings'
           - $ref: '#/components/schemas/Enzygen2InferenceSettings'
           - $ref: '#/components/schemas/EquidockSettings'
           - $ref: '#/components/schemas/EsmEmbeddingsSettings'
           - $ref: '#/components/schemas/EsmIf1Settings'
           - $ref: '#/components/schemas/EsmScanSettings'
           - $ref: '#/components/schemas/Esm2Settings'
           - $ref: '#/components/schemas/EsmfoldSettings'
           - $ref: '#/components/schemas/EvcouplingsSettings'
           - $ref: '#/components/schemas/Evo2Settings'
           - $ref: '#/components/schemas/EvonbSettings'
           - $ref: '#/components/schemas/EvoproSettings'
           - $ref: '#/components/schemas/EvoprotgradSettings'
           - $ref: '#/components/schemas/FampnnSettings'
           - $ref: '#/components/schemas/FastsolvSettings'
           - $ref: '#/components/schemas/FileConverterSettings'
           - $ref: '#/components/schemas/FixbbSettings'
           - $ref: '#/components/schemas/FlowdockSettings'
           - $ref: '#/components/schemas/FoldmasonSettings'
           - $ref: '#/components/schemas/FoldseekSettings'
           - $ref: '#/components/schemas/FpocketSettings'
           - $ref: '#/components/schemas/FrameflowSettings'
           - $ref: '#/components/schemas/FrequencyAnalysisSettings'
           - $ref: '#/components/schemas/FukuiSettings'
           - $ref: '#/components/schemas/GMmpbsaSettings'
           - $ref: '#/components/schemas/GbsaSettings'
           - $ref: '#/components/schemas/GemsSettings'
           - $ref: '#/components/schemas/GeometryOptimizationSettings'
           - $ref: '#/components/schemas/GerminalSettings'
           - $ref: '#/components/schemas/GninaSettings'
           - $ref: '#/components/schemas/GromacsSettings'
           - $ref: '#/components/schemas/GromacsCustomSettings'
           - $ref: '#/components/schemas/HbondStrengthSettings'
           - $ref: '#/components/schemas/HighfoldSettings'
           - $ref: '#/components/schemas/HmmalignSettings'
           - $ref: '#/components/schemas/HumatchSettings'
           - $ref: '#/components/schemas/HypermpnnSettings'
           - $ref: '#/components/schemas/IdrSettings'
           - $ref: '#/components/schemas/IgblastSettings'
           - $ref: '#/components/schemas/IgdesignSettings'
           - $ref: '#/components/schemas/IggmSettings'
           - $ref: '#/components/schemas/ImmunebuilderSettings'
           - $ref: '#/components/schemas/IntercaatSettings'
           - $ref: '#/components/schemas/IntfoldSettings'
           - $ref: '#/components/schemas/IpcSettings'
           - $ref: '#/components/schemas/IpsaeSettings'
           - $ref: '#/components/schemas/ItsFlexibleSettings'
           - $ref: '#/components/schemas/LegolasSettings'
           - $ref: '#/components/schemas/LibinventSettings'
           - $ref: '#/components/schemas/LichenSettings'
           - $ref: '#/components/schemas/LigandmpnnSettings'
           - $ref: '#/components/schemas/LogpSettings'
           - $ref: '#/components/schemas/MageSettings'
           - $ref: '#/components/schemas/MasifSettings'
           - $ref: '#/components/schemas/MavenetsFinetuneSettings'
           - $ref: '#/components/schemas/MavenetsInferenceSettings'
           - $ref: '#/components/schemas/MberSettings'
           - $ref: '#/components/schemas/MdOpenmmSettings'
           - $ref: '#/components/schemas/MdgenSettings'
           - $ref: '#/components/schemas/MembraneGromacsSettings'
           - $ref: '#/components/schemas/MhcFineSettings'
           - $ref: '#/components/schemas/MicroscopicPkaSettings'
           - $ref: '#/components/schemas/MinDistanceSelectedResiduesSettings'
           - $ref: '#/components/schemas/ModelangeloSettings'
           - $ref: '#/components/schemas/MolecularDescriptorsSettings'
           - $ref: '#/components/schemas/MolprobitySettings'
           - $ref: '#/components/schemas/MosaicHallucinateSettings'
           - $ref: '#/components/schemas/MrnabertSettings'
           - $ref: '#/components/schemas/MsaSettings'
           - $ref: '#/components/schemas/MsaAnalysisSettings'
           - $ref: '#/components/schemas/MsaClusterSettings'
           - $ref: '#/components/schemas/MultiEvolveSettings'
           - $ref: '#/components/schemas/NLinkedGlycosylationSettings'
           - $ref: '#/components/schemas/NampnnSettings'
           - $ref: '#/components/schemas/NbforgeSettings'
           - $ref: '#/components/schemas/NetmhcpanSettings'
           - $ref: '#/components/schemas/NetsolpSettings'
           - $ref: '#/components/schemas/NosSettings'
           - $ref: '#/components/schemas/NosInferenceSettings'
           - $ref: '#/components/schemas/OasSettings'
           - $ref: '#/components/schemas/OdesignAntibodySettings'
           - $ref: '#/components/schemas/OmegafoldSettings'
           - $ref: '#/components/schemas/OpenfeSettings'
           - $ref: '#/components/schemas/OpenfoldSettings'
           - $ref: '#/components/schemas/OpenmmSettings'
           - $ref: '#/components/schemas/OpenmmMetadynamicsSettings'
           - $ref: '#/components/schemas/OpenmmRelaxSettings'
           - $ref: '#/components/schemas/OpenmmTemperatureReplicaSettings'
           - $ref: '#/components/schemas/OrbModelsSettings'
           - $ref: '#/components/schemas/OrbModels3Settings'
           - $ref: '#/components/schemas/OrthrusSettings'
           - $ref: '#/components/schemas/ParagraphSettings'
           - $ref: '#/components/schemas/ParasurfSettings'
           - $ref: '#/components/schemas/PdbsumSettings'
           - $ref: '#/components/schemas/PdockqSettings'
           - $ref: '#/components/schemas/PepfunnSettings'
           - $ref: '#/components/schemas/PepmlmSettings'
           - $ref: '#/components/schemas/PeppatchSettings'
           - $ref: '#/components/schemas/PeptiverseSettings'
           - $ref: '#/components/schemas/PkaSettings'
           - $ref: '#/components/schemas/PlabdabSettings'
           - $ref: '#/components/schemas/PlacerSettings'
           - $ref: '#/components/schemas/PlmFinetuneSettings'
           - $ref: '#/components/schemas/PlmInferenceSettings'
           - $ref: '#/components/schemas/PocketgenSettings'
           - $ref: '#/components/schemas/PpapSettings'
           - $ref: '#/components/schemas/PpiscreenmlSettings'
           - $ref: '#/components/schemas/ProcessAtacSettings'
           - $ref: '#/components/schemas/ProdigySettings'
           - $ref: '#/components/schemas/ProfamSettings'
           - $ref: '#/components/schemas/ProfluentE1Settings'
           - $ref: '#/components/schemas/Progen2FinetuneSettings'
           - $ref: '#/components/schemas/Progen2InferenceSettings'
           - $ref: '#/components/schemas/PropkaSettings'
           - $ref: '#/components/schemas/ProtT5EmbeddingsSettings'
           - $ref: '#/components/schemas/ProteinDesignSettings'
           - $ref: '#/components/schemas/ProteinHunterSettings'
           - $ref: '#/components/schemas/ProteinMetricsSettings'
           - $ref: '#/components/schemas/ProteinPropertiesSettings'
           - $ref: '#/components/schemas/ProteinScoringSettings'
           - $ref: '#/components/schemas/ProteinSolSettings'
           - $ref: '#/components/schemas/ProteinSolubilizationSettings'
           - $ref: '#/components/schemas/ProteinaComplexaSettings'
           - $ref: '#/components/schemas/ProteinmpnnSettings'
           - $ref: '#/components/schemas/ProteinmpnnDdgSettings'
           - $ref: '#/components/schemas/ProteinmpnnDdgBinderSettings'
           - $ref: '#/components/schemas/ProteinmpnnScoreSettings'
           - $ref: '#/components/schemas/ProtenixSettings'
           - $ref: '#/components/schemas/ProteusSettings'
           - $ref: '#/components/schemas/ProtonationStateSettings'
           - $ref: '#/components/schemas/PsiblastSettings'
           - $ref: '#/components/schemas/PubchemSettings'
           - $ref: '#/components/schemas/PulchraSettings'
           - $ref: '#/components/schemas/PxdesignSettings'
           - $ref: '#/components/schemas/PykvfinderSettings'
           - $ref: '#/components/schemas/PyscaSettings'
           - $ref: '#/components/schemas/QupkakeSettings'
           - $ref: '#/components/schemas/RbfeSettings'
           - $ref: '#/components/schemas/ReactionEnergySettings'
           - $ref: '#/components/schemas/RedoxSettings'
           - $ref: '#/components/schemas/ReinventFinetuneSettings'
           - $ref: '#/components/schemas/Rf3Settings'
           - $ref: '#/components/schemas/RfantibodySettings'
           - $ref: '#/components/schemas/RfdiffusionSettings'
           - $ref: '#/components/schemas/RfdiffusionAllAtomSettings'
           - $ref: '#/components/schemas/Rfdiffusion2Settings'
           - $ref: '#/components/schemas/Rfdiffusion3Settings'
           - $ref: '#/components/schemas/RfpeptidesSettings'
           - $ref: '#/components/schemas/RhodesignSettings'
           - $ref: '#/components/schemas/RibodiffusionSettings'
           - $ref: '#/components/schemas/RiffdiffSettings'
           - $ref: '#/components/schemas/RmsdCalculatorSettings'
           - $ref: '#/components/schemas/RnaFmSettings'
           - $ref: '#/components/schemas/RogSettings'
           - $ref: '#/components/schemas/RosettaDdgPredictionSettings'
           - $ref: '#/components/schemas/RosettaDockSettings'
           - $ref: '#/components/schemas/RosettaFixbbSettings'
           - $ref: '#/components/schemas/RosettaPpiSettings'
           - $ref: '#/components/schemas/RosettaRelaxSettings'
           - $ref: '#/components/schemas/RosettaRelaxLigandSettings'
           - $ref: '#/components/schemas/RosettaScoreSettings'
           - $ref: '#/components/schemas/RoshamboSettings'
           - $ref: '#/components/schemas/RsoSettings'
           - $ref: '#/components/schemas/SaprotSettings'
           - $ref: '#/components/schemas/SaprotFinetuneSettings'
           - $ref: '#/components/schemas/SearchConformationsSettings'
           - $ref: '#/components/schemas/SinglePointEnergySettings'
           - $ref: '#/components/schemas/SminaSettings'
           - $ref: '#/components/schemas/Space2Settings'
           - $ref: '#/components/schemas/SpatialPpiSettings'
           - $ref: '#/components/schemas/SpinStateEnergiesSettings'
           - $ref: '#/components/schemas/StabddgSettings'
           - $ref: '#/components/schemas/StructuralEvolutionSettings'
           - $ref: '#/components/schemas/SuperwaterSettings'
           - $ref: '#/components/schemas/SurfdockSettings'
           - $ref: '#/components/schemas/SynCodonLmSettings'
           - $ref: '#/components/schemas/TapSettings'
           - $ref: '#/components/schemas/TautomerSettings'
           - $ref: '#/components/schemas/Tcrmodel2Settings'
           - $ref: '#/components/schemas/TdDftSettings'
           - $ref: '#/components/schemas/TemproSettings'
           - $ref: '#/components/schemas/TemstaproSettings'
           - $ref: '#/components/schemas/ThermompnnSettings'
           - $ref: '#/components/schemas/ThermompnnDSettings'
           - $ref: '#/components/schemas/TlimmunoSettings'
           - $ref: '#/components/schemas/TmdSettings'
           - $ref: '#/components/schemas/TnpSettings'
           - $ref: '#/components/schemas/Unimol2Settings'
           - $ref: '#/components/schemas/UsAlignSettings'
           - $ref: '#/components/schemas/VirtualScreeningSettings'
           - $ref: '#/components/schemas/ZymctrlSettings'
          description: Tool-specific settings
          additionalProperties: true

    BatchSubmission:
      type: object
      required:
        - batchName
        - type
        - settings
        - jobNames
      properties:
        batchName:
          type: string
          description: Unique name for the batch
          minLength: 1
          maxLength: 100
          pattern: '^[a-zA-Z0-9_-]+$'
          example: "my-batch-analysis"
        type:
          type: string
          description: Tool to use for the batch
          example: "alphafold"
          # Tool enum ref
          enum: [abb4, abgpt, ablang, ablang-mpnn, abmap, abmpnn, abnativ, abodybuilder, adapt, admet, aev-plig, af-multistate, af-traj, af-unmasked, af2bind, af2rave, afcluster, afcycdesign, afsample, aggrescan3d, alde, align-pdbs, allmetal3d, alphabind-finetune, alphacutter, alphaflow, alphafold, amplify, anarci, ancestral-reconstruction, antiberty, antibody-annotation, antibody-diffusion-properties, antibody-evolution, antidif, antifold, apm, aqueous-solubility, atomsurf, autodock-vina, balm-finetune, balm-inference, balm-paired, bbmerge, bde, bindcraft, binding-ddg, bioemu, biophi, blast, boltz, boltz-finetune, boltzdesign, boltzgen, caliby, catpred, chai, charge-dipole, chembl, cluster-pdbs, colabdock, conformer-generation, contact-ms, cryfold, cryodrgn, custom-msa, dayhoff, deep-viscosity, deepfri, deepimmuno, deeprank-ab, deepsp, deepstabp, dfmdock, diffdock, diffsbdd, disco, dlkcat, dnaworks, dockq, drugflow, dsmbind, electronic-properties, electrostatic-potential, emboss, enumeration, enzygen2, enzygen2-finetune, enzygen2-inference, equidock, esm-embeddings, esm-if1, esm-scan, esm2, esmfold, evcouplings, evo2, evonb, evopro, evoprotgrad, fampnn, fastsolv, file-converter, fixbb, flowdock, foldmason, foldseek, fpocket, frameflow, frequency-analysis, fukui, g-mmpbsa, gbsa, gems, geometry-optimization, germinal, gnina, gromacs, gromacs-custom, hbond-strength, highfold, hmmalign, humatch, hypermpnn, idr, igblast, igdesign, iggm, immunebuilder, intercaat, intfold, ipc, ipsae, its-flexible, legolas, libinvent, lichen, ligandmpnn, logp, mage, masif, mavenets-finetune, mavenets-inference, mber, md-openmm, mdgen, membrane-gromacs, mhc-fine, microscopic-pka, min-distance-selected-residues, modelangelo, molecular-descriptors, molprobity, mosaic-hallucinate, mrnabert, msa, msa-analysis, msa-cluster, multi-evolve, n-linked-glycosylation, nampnn, nbforge, netmhcpan, netsolp, nos, nos-inference, oas, odesign-antibody, omegafold, openfe, openfold, openmm, openmm-metadynamics, openmm-relax, openmm-temperature-replica, orb-models, orb-models3, orthrus, paragraph, parasurf, pdbsum, pdockq, pepfunn, pepmlm, peppatch, peptiverse, pka, plabdab, placer, plm-finetune, plm-inference, pocketgen, ppap, ppiscreenml, process-atac, prodigy, profam, profluent-e1, progen2-finetune, progen2-inference, propka, prot-t5-embeddings, protein-design, protein-hunter, protein-metrics, protein-properties, protein-scoring, protein-sol, protein-solubilization, proteina-complexa, proteinmpnn, proteinmpnn-ddg, proteinmpnn-ddg-binder, proteinmpnn-score, protenix, proteus, protonation-state, psiblast, pubchem, pulchra, pxdesign, pykvfinder, pysca, qupkake, rbfe, reaction-energy, redox, reinvent-finetune, rf3, rfantibody, rfdiffusion, rfdiffusion-all-atom, rfdiffusion2, rfdiffusion3, rfpeptides, rhodesign, ribodiffusion, riffdiff, rmsd-calculator, rna-fm, rog, rosetta-ddg-prediction, rosetta-dock, rosetta-fixbb, rosetta-ppi, rosetta-relax, rosetta-relax-ligand, rosetta-score, roshambo, rso, saprot, saprot-finetune, search-conformations, single-point-energy, smina, space2, spatial-ppi, spin-state-energies, stabddg, structural-evolution, superwater, surfdock, syn-codon-lm, tap, tautomer, tcrmodel2, td-dft, tempro, temstapro, thermompnn, thermompnn-d, tlimmuno, tmd, tnp, unimol2, us-align, virtual-screening, zymctrl]
        settings:
          type: array
          description: List of job settings to submit
          minItems: 1
          maxItems: 100
          items:
            $ref: '#/components/schemas/JobSubmission/properties/settings'
        jobNames:
          type: array
          description: List of job names to submit corresponding to the job settings
          minItems: 1
          maxItems: 100
          items:
            $ref: '#/components/schemas/JobSubmission/properties/jobName'

    JobResponse:
      type: object
      properties:
        message:
          type: string
          description: Response message
          example: "Job submitted successfully"

    BatchResponse:
      type: object
      properties:
        batchName:
          type: string
          description: Name of the submitted batch
        jobs:
          type: array
          items:
            $ref: '#/components/schemas/JobResponse'
        totalJobs:
          type: integer
          description: Total number of jobs in the batch

    JobInfo:
      type: object
      properties:
        JobName:
          type: string
          description: Name of the job
        Type:
          type: string
          description: Tool used for the job
        JobStatus:
          type: string
          enum: ["Complete", "In Queue", "Running", "Stopped", "Deleted"]
          description: Current status of the job
        Created:
          type: string
          format: date-time
          description: When the job was created
        Started:
          type: string
          format: date-time
          description: When the job started (if applicable)
        Completed:
          type: string
          format: date-time
          description: When the job completed (if applicable)
        Settings:
          type: object
          description: Job settings and parameters (stored as JSON string)
          additionalProperties: true
        Score:
          type: number
          description: Job score (if applicable)
        Batch:
          type: boolean
          description: Whether this is a batch job
        User:
          type: string
          description: User who created the job (only present in organization queries)

    JobResult:
      type: object
      properties:
        jobName:
          type: string
          description: Name of the job
        status:
          type: string
          enum: [pending, running, completed, failed, cancelled]
          description: Current status of the job
        results:
          type: object
          description: Job results (structure varies by tool)
          additionalProperties: true
        error:
          type: string
          description: Error message if job failed
        outputFiles:
          type: array
          description: List of output files
          items:
            type: object
            properties:
              fileName:
                type: string
                description: Name of the output file
              fileUrl:
                type: string
                description: URL to download the file
              fileType:
                type: string
                description: Type of the file (PDB, JSON, etc.)

    ErrorResponse:
      type: object
      properties:
        error:
          type: string
          description: Error message
        code:
          type: string
          description: Error code
        details:
          type: object
          description: Additional error details

tags:
  - name: Jobs
    description: Job submission and management
  - name: Files
    description: File upload and management
  - name: Results
    description: Job results retrieval
