{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://api-evangelist.github.io/benchling/json-schema/OptimizeCodons.json",
  "title": "OptimizeCodons",
  "additionalProperties": false,
  "properties": {
    "avoidedCutsiteEnzymeIds": {
      "description": "List of enzyme IDs whose recognition sites will be avoided when creating the optimized sequence.\n",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "codonUsageTableId": {
      "description": "ID of the codon usage table representing the target organism.",
      "type": "string"
    },
    "dnaSequenceIds": {
      "description": "IDs of DNA sequences to codon-optimize.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "folderId": {
      "description": "ID of the folder in which the optimized sequences will be saved.\n",
      "type": "string"
    },
    "gcContent": {
      "default": "ANY",
      "description": "The amount of GC content in the optimized sequence. LOW is defined as below 0.33, MEDIUM as 0.33-0.66, and HIGH as above 0.66. If neither gcContent nor gcContentRange is specified, the optimization will default to ANY (0-1). Cannot be specified together with gcContentRange.\n",
      "enum": [
        "ANY",
        "LOW",
        "MEDIUM",
        "HIGH"
      ],
      "type": "string"
    },
    "gcContentRange": {
      "additionalProperties": false,
      "description": "Custom GC content range for the optimized sequence, specified as decimal values between 0 and 1. The maximum must be greater than the minimum. Cannot be specified together with gcContent.\n",
      "properties": {
        "max": {
          "description": "Maximum GC content ratio (e.g., 0.6 for 60%)",
          "maximum": 1,
          "minimum": 0,
          "type": "number"
        },
        "min": {
          "description": "Minimum GC content ratio (e.g., 0.4 for 40%)",
          "maximum": 1,
          "minimum": 0,
          "type": "number"
        }
      },
      "type": "object"
    },
    "hairpinParameters": {
      "additionalProperties": false,
      "description": "These parameters are applied in the AvoidHairpins specification in DNAChisel. If hairpinParameters is not specified, hairpins will not be avoided.\n",
      "properties": {
        "stem": {
          "default": 20,
          "type": "integer"
        },
        "window": {
          "default": 200,
          "type": "integer"
        }
      },
      "type": "object"
    },
    "method": {
      "default": "MATCH_CODON_USAGE",
      "description": "The codon optimization algorithm to use. Requires codonUsageTableId to be specified. MATCH_CODON_USAGE selects codons probabilistically based on the organism's codon usage frequencies. USE_BEST_CODON always selects the most frequently used codon for each amino acid.\n",
      "enum": [
        "MATCH_CODON_USAGE",
        "USE_BEST_CODON"
      ],
      "type": "string"
    },
    "reducedPatterns": {
      "description": "List of patterns to avoid when creating the optimized sequence, on the coding strand only.\n",
      "items": {
        "$ref": "#/components/schemas/ReducedPattern"
      },
      "type": "array"
    },
    "schemaId": {
      "description": "ID of the optimized DNA sequences' schemas",
      "type": "string"
    },
    "shouldDepleteUridine": {
      "default": false,
      "description": "If not specified, the optimization will default to false, and mRNA uridine depletion will not be performed.\n",
      "type": "boolean"
    }
  },
  "required": [
    "dnaSequenceIds",
    "folderId"
  ],
  "type": "object"
}