{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/benchling/main/json-schema/benchling-dna-template-alignment-create-schema.json",
  "title": "DnaTemplateAlignmentCreate",
  "x-generated": "2026-10-12",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/benchling-dna-alignments-api-openapi.yml#/components/schemas/DnaTemplateAlignmentCreate",
  "additionalProperties": false,
  "allOf": [
    {
      "$ref": "#/$defs/DnaAlignmentBase"
    },
    {
      "properties": {
        "shouldDisableCircularSequenceRotation": {
          "default": false,
          "description": "Whether to disable circular sequence rotation.",
          "type": "boolean"
        },
        "templateSequenceId": {
          "type": "string"
        }
      },
      "required": [
        "templateSequenceId"
      ],
      "type": "object"
    }
  ],
  "$defs": {
    "ClustaloOptions": {
      "description": "Options to pass to the ClustalO algorithm, only applicable for ClustalO.",
      "properties": {
        "maxGuidetreeIterations": {
          "default": -1,
          "description": "Max guide tree iterations within combined iterations. Use -1 for no max (all iterations will include guide tree iterations).",
          "maximum": 5,
          "minimum": -1,
          "type": "integer"
        },
        "maxHmmIterations": {
          "default": -1,
          "description": "Max HMM iterations within combined iterations. Use -1 for no max (all iterations will include HMM iterations).",
          "maximum": 5,
          "minimum": -1,
          "type": "integer"
        },
        "mbedGuideTree": {
          "default": true,
          "description": "Whether mBed-like clustering guide tree should be used (faster to use it).",
          "type": "boolean"
        },
        "mbedIteration": {
          "default": true,
          "description": "Whether mBed-like clustering iteration should be used (faster to use it).",
          "type": "boolean"
        },
        "numCombinedIterations": {
          "default": 0,
          "description": "Number of (combined guide-tree/HMM) iterations.",
          "maximum": 5,
          "minimum": 0,
          "type": "integer"
        }
      },
      "type": "object"
    },
    "DnaAlignmentBase": {
      "properties": {
        "algorithm": {
          "enum": [
            "mafft",
            "clustalo"
          ],
          "type": "string"
        },
        "clustaloOptions": {
          "$ref": "#/$defs/ClustaloOptions"
        },
        "files": {
          "items": {
            "oneOf": [
              {
                "properties": {
                  "sequenceId": {
                    "type": "string"
                  }
                },
                "type": "object"
              },
              {
                "$ref": "#/$defs/DnaTemplateAlignmentFile"
              }
            ]
          },
          "type": "array"
        },
        "mafftOptions": {
          "$ref": "#/$defs/MafftOptions"
        },
        "name": {
          "type": "string"
        }
      },
      "required": [
        "algorithm",
        "files"
      ],
      "type": "object"
    },
    "DnaTemplateAlignmentFile": {
      "properties": {
        "data": {
          "format": "byte",
          "type": "string"
        },
        "name": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "MafftOptions": {
      "description": "Options to pass to the MAFFT algorithm, only applicable for MAFFT.",
      "properties": {
        "adjustDirection": {
          "default": "fast",
          "description": "Adjust direction:\n  * `fast`: Enabled, quickly.\n  * `accurate`: Enabled, accurately (slow).\n  * `disabled`: Disabled, fastest.\n",
          "enum": [
            "fast",
            "accurate",
            "disabled"
          ],
          "type": "string"
        },
        "gapExtensionPenalty": {
          "default": 0.0,
          "description": "Gap extension penalty.",
          "type": "number"
        },
        "gapOpenPenalty": {
          "default": 1.53,
          "description": "Gap open penalty.",
          "type": "number"
        },
        "maxIterations": {
          "default": 0,
          "description": "Max refinement iterations. Not applicable for auto strategy, as it will be selected automatically.",
          "type": "integer"
        },
        "retree": {
          "default": 2,
          "description": "Tree rebuilding. Only used for 6-mer strategy.",
          "type": "integer"
        },
        "strategy": {
          "default": "auto",
          "description": "MAFFT Strategy:\n  * `auto`: Pick a strategy automatically based on the count and size of inputs.\n  * `sixmer`: Use 6-mer distance for constructing the guide tree.\n  * `localpair`: Compute local pairwise alignments using Smith-Waterman for constructing the guide tree and iterative refinement.\n  * `globalpair`: Compute global pairwise alignments using Needleman-Wunsch for constructing the guide tree and iterative refinement.\n",
          "enum": [
            "auto",
            "sixmer",
            "localpair",
            "globalpair"
          ],
          "type": "string"
        }
      },
      "type": "object"
    }
  }
}