{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/api-evangelist/benchling/main/json-schema/benchling-entities-bulk-upsert-request-schema.json", "title": "EntitiesBulkUpsertRequest", "x-generated": "2026-10-12", "x-method": "derived", "x-generator": "derive-json-schema.py", "x-source": "openapi/benchling-entities-api-openapi.yml#/components/schemas/EntitiesBulkUpsertRequest", "additionalProperties": false, "properties": { "aaSequences": { "items": { "$ref": "#/$defs/AaSequenceBulkUpsertRequest" }, "type": "array" }, "customEntities": { "items": { "$ref": "#/$defs/CustomEntityBulkUpsertRequest" }, "type": "array" }, "dnaOligos": { "items": { "$ref": "#/$defs/OligoBulkUpsertRequest" }, "type": "array" }, "dnaSequences": { "items": { "$ref": "#/$defs/DnaSequenceBulkUpsertRequest" }, "type": "array" }, "molecules": { "items": { "$ref": "#/$defs/MoleculeBulkUpsertRequest" }, "type": "array" }, "rnaOligos": { "items": { "$ref": "#/$defs/OligoBulkUpsertRequest" }, "type": "array" } }, "type": "object", "$defs": { "AaAnnotation": { "properties": { "color": { "type": "string" }, "end": { "description": "0-based exclusive end index. The end of the AA sequence is always represented as 0.", "type": "integer" }, "id": { "type": "string" }, "name": { "maxLength": 255, "type": "string" }, "notes": { "maxLength": 10000, "type": "string" }, "start": { "description": "0-based inclusive start index.", "type": "integer" }, "type": { "maxLength": 255, "type": "string" } }, "type": "object" }, "AaSequenceBaseRequest": { "properties": { "aliases": { "description": "Aliases to add to the AA sequence", "items": { "type": "string" }, "type": "array" }, "aminoAcids": { "description": "Amino acids for the AA sequence.\n", "type": "string" }, "annotations": { "description": "Annotations to create on the AA sequence.\n", "items": { "$ref": "#/$defs/AaAnnotation" }, "type": "array" }, "authorIds": { "description": "IDs of users to set as the AA sequence's authors.", "items": { "type": "string" }, "type": "array" }, "customFields": { "allOf": [ { "$ref": "#/$defs/CustomFields" } ], "description": "Custom fields to add to the AA sequence. Every field should have its name as a key, mapping to an object with information about the value of the field.\n" }, "fields": { "allOf": [ { "$ref": "#/$defs/Fields" } ], "description": "Fields to set on the AA sequence. Must correspond with the schema's field definitions. Every field should have its name as a key, mapping to an object with information about the value of the field.\n" }, "folderId": { "description": "ID of the folder containing the AA sequence.\n", "type": "string" }, "name": { "description": "Name of the AA sequence.\n", "type": "string" }, "schemaId": { "description": "ID of the AA sequence's schema.\n", "type": "string" } }, "type": "object" }, "AaSequenceBaseRequestForCreate": { "allOf": [ { "$ref": "#/$defs/AaSequenceBaseRequest" }, { "required": [ "aminoAcids", "name" ] } ] }, "AaSequenceBulkUpsertRequest": { "allOf": [ { "$ref": "#/$defs/EntityBulkUpsertBaseRequest" }, { "$ref": "#/$defs/AaSequenceBaseRequestForCreate" }, { "required": [ "annotations" ] } ] }, "ArchiveRecordSet": { "additionalProperties": false, "description": "Currently, we only support setting a null value for archiveRecord, which unarchives the item", "type": [ "object", "null" ] }, "CustomEntityBaseRequest": { "properties": { "aliases": { "description": "Aliases to add to the custom entity", "items": { "type": "string" }, "type": "array" }, "authorIds": { "description": "IDs of users to set as the custom entity's authors.", "items": { "type": "string" }, "type": "array" }, "customFields": { "allOf": [ { "$ref": "#/$defs/CustomFields" } ], "description": "Custom fields to add to the custom entity. Every field should have its name as a key, mapping to an object with information about the value of the field.\n" }, "fields": { "allOf": [ { "$ref": "#/$defs/Fields" } ], "description": "Schema fields to set on the custom entity. Must correspond with the schema's field definitions. Every field should have its name as a key, mapping to an object with information about the value of the field.\n" }, "folderId": { "description": "ID of the folder that the entity is moved into", "type": "string" }, "name": { "type": "string" }, "schemaId": { "type": "string" } }, "type": "object" }, "CustomEntityBaseRequestForCreate": { "allOf": [ { "$ref": "#/$defs/CustomEntityBaseRequest" }, { "required": [ "name", "schemaId" ] } ] }, "CustomEntityBulkUpsertRequest": { "allOf": [ { "$ref": "#/$defs/EntityBulkUpsertBaseRequest" }, { "$ref": "#/$defs/CustomEntityBaseRequestForCreate" } ] }, "CustomField": { "properties": { "value": { "type": "string" } }, "type": "object" }, "CustomFields": { "additionalProperties": { "$ref": "#/$defs/CustomField" }, "type": "object" }, "DnaAnnotation": { "allOf": [ { "$ref": "#/$defs/SequenceFeatureBase" }, { "properties": { "end": { "description": "0-based exclusive end index. The end of the sequence is always represented as 0.", "type": "integer" }, "start": { "description": "0-based inclusive start index.", "type": "integer" }, "strand": { "maximum": 1, "minimum": -1, "type": "integer" }, "type": { "type": "string" } }, "type": "object" } ] }, "DnaSequenceBaseRequest": { "properties": { "aliases": { "description": "Aliases to add to the DNA sequence", "items": { "type": "string" }, "type": "array" }, "annotations": { "description": "Annotations to create on the DNA sequence.\n", "items": { "$ref": "#/$defs/DnaAnnotation" }, "type": "array" }, "authorIds": { "description": "IDs of users to set as the DNA sequence's authors.", "items": { "type": "string" }, "type": "array" }, "bases": { "description": "Base pairs for the DNA sequence.\n", "type": "string" }, "customFields": { "allOf": [ { "$ref": "#/$defs/CustomFields" } ], "description": "Custom fields to add to the DNA sequence. Every field should have its name as a key, mapping to an object with information about the value of the field.\n" }, "fields": { "allOf": [ { "$ref": "#/$defs/Fields" } ], "description": "Fields to set on the DNA sequence. Must correspond with the schema's field definitions. Every field should have its name as a key, mapping to an object with information about the value of the field.\n" }, "folderId": { "description": "ID of the folder containing the DNA sequence.\n", "type": "string" }, "isCircular": { "description": "Whether the DNA sequence is circular or linear.\n", "type": "boolean" }, "name": { "description": "Name of the DNA sequence.\n", "type": "string" }, "parts": { "items": { "$ref": "#/$defs/DnaSequencePart" }, "type": "array" }, "primers": { "items": { "$ref": "#/$defs/Primer" }, "type": "array" }, "schemaId": { "description": "ID of the DNA sequence's schema.\n", "type": "string" }, "translations": { "description": "Translations to create on the DNA sequence. Translations are specified by either a combination of 'start' and 'end' fields, or a list of regions. Both cannot be provided.\n", "items": { "$ref": "#/$defs/Translation" }, "type": "array" } }, "type": "object" }, "DnaSequenceBaseRequestForCreate": { "additionalProperties": false, "allOf": [ { "$ref": "#/$defs/DnaSequenceBaseRequest" }, { "required": [ "bases", "isCircular", "name" ] } ] }, "DnaSequenceBulkUpsertRequest": { "allOf": [ { "$ref": "#/$defs/EntityBulkUpsertBaseRequest" }, { "$ref": "#/$defs/DnaSequenceBaseRequestForCreate" }, { "required": [ "annotations", "primers" ] } ] }, "DnaSequencePart": { "allOf": [ { "$ref": "#/$defs/NucleotideSequencePart" }, { "properties": { "strand": { "maximum": 1, "minimum": -1, "type": "integer" } }, "type": "object" } ] }, "EntityBulkUpsertBaseRequest": { "allOf": [ { "$ref": "#/$defs/EntityUpsertBaseRequest" }, { "properties": { "entityRegistryId": { "description": "Registry ID of the entity in Benchling.", "type": "string" } } }, { "required": [ "entityRegistryId" ] } ] }, "EntityUpsertBaseRequest": { "properties": { "archiveRecord": { "$ref": "#/$defs/ArchiveRecordSet" }, "fields": { "$ref": "#/$defs/FieldsWithResolution" }, "name": { "type": "string" }, "registryId": { "type": "string" }, "schemaId": { "type": "string" } }, "required": [ "registryId", "name", "schemaId" ], "type": "object" }, "Field": { "properties": { "displayValue": { "readOnly": true, "type": [ "string", "null" ] }, "isMulti": { "readOnly": true, "type": "boolean" }, "textValue": { "readOnly": true, "type": [ "string", "null" ] }, "type": { "allOf": [ { "$ref": "#/$defs/FieldType" } ], "readOnly": true }, "value": { "description": "For single link fields, use the id of the item you want to link (eg. \"seq_jdf8BV24\").\nFor multi-link fields, use an array of ids of the items you want to link (eg. [\"seq_jdf8BV24\"])\n", "oneOf": [ { "type": "string" }, { "type": "boolean" }, { "type": "number" }, { "type": "object" }, { "items": { "type": "string" }, "type": "array" } ] } }, "required": [ "value" ], "type": "object" }, "FieldType": { "enum": [ "dna_sequence_link", "aa_sequence_link", "custom_entity_link", "entity_link", "mixture_link", "molecule_link", "dropdown", "part_link", "translation_link", "aa_part_link", "base_molecule_link", "blob_link", "text", "long_text", "batch_link", "storage_link", "entry_link", "assay_request_link", "assay_result_link", "assay_run_link", "boolean", "float", "integer", "datetime", "date", "json" ], "type": "string" }, "FieldValueWithResolution": { "oneOf": [ { "type": "string" }, { "type": "boolean" }, { "type": "number" }, { "items": { "type": "string" }, "type": "array" }, { "additionalProperties": false, "description": "Look up an entity by its entity registry ID", "properties": { "entityRegistryId": { "type": "string" } }, "required": [ "entityRegistryId" ], "type": "object" } ] }, "FieldWithResolution": { "allOf": [ { "$ref": "#/$defs/Field" }, { "properties": { "value": { "allOf": [ { "$ref": "#/$defs/FieldValueWithResolution" } ] } }, "type": "object" } ] }, "Fields": { "additionalProperties": { "$ref": "#/$defs/Field" }, "type": "object" }, "FieldsWithResolution": { "additionalProperties": { "$ref": "#/$defs/FieldWithResolution" }, "type": "object" }, "MoleculeBaseRequest": { "additionalProperties": false, "properties": { "aliases": { "description": "Aliases to add to the Molecule.", "items": { "type": "string" }, "type": "array" }, "authorIds": { "description": "IDs of users to set as the Molecule's authors.", "items": { "type": "string" }, "type": "array" }, "chemicalStructure": { "allOf": [ { "$ref": "#/$defs/MoleculeStructure" } ], "description": "Chemical structure of the Molecule.\n" }, "customFields": { "allOf": [ { "$ref": "#/$defs/CustomFields" } ], "description": "Custom fields to add to the Molecule. Every field should have its name as a key, mapping to an object with information about the value of the field.\n" }, "fields": { "allOf": [ { "$ref": "#/$defs/Fields" } ], "description": "Fields to set on the Molecule. Must correspond with the schema's field definitions. Every field should have its name as a key, mapping to an object with information about the value of the field.\n" }, "folderId": { "description": "ID of the folder containing the Molecule.\n", "type": "string" }, "name": { "description": "Name of the Molecule.\n", "type": "string" }, "schemaId": { "description": "ID of the Molecule's schema.\n", "type": "string" } }, "type": "object" }, "MoleculeBaseRequestForCreate": { "allOf": [ { "$ref": "#/$defs/MoleculeBaseRequest" }, { "required": [ "name", "chemicalStructure" ] } ] }, "MoleculeBulkUpsertRequest": { "allOf": [ { "$ref": "#/$defs/EntityBulkUpsertBaseRequest" }, { "$ref": "#/$defs/MoleculeBaseRequestForCreate" } ] }, "MoleculeStructure": { "additionalProperties": false, "properties": { "structureFormat": { "description": "Format of the chemical structure.\n- smiles\n- molfile\n", "enum": [ "smiles", "molfile" ], "type": "string" }, "value": { "description": "Chemical structure in SMILES or molfile format.", "type": "string" } }, "type": "object" }, "NucleotideSequencePart": { "properties": { "end": { "description": "0-based exclusive end index. The end of the sequence is always represented as 0.", "type": "integer" }, "sequenceId": { "type": "string" }, "start": { "description": "0-based inclusive start index.", "type": "integer" } }, "type": "object" }, "OligoBaseRequest": { "properties": { "aliases": { "description": "Aliases to add to the Oligo", "items": { "type": "string" }, "type": "array" }, "authorIds": { "description": "IDs of users to set as the Oligo's authors.", "items": { "type": "string" }, "type": "array" }, "bases": { "description": "Base pairs of the oligo.\n", "type": "string" }, "customFields": { "allOf": [ { "$ref": "#/$defs/CustomFields" } ], "description": "Custom fields to add to the Oligo. Every field should have its name as a key, mapping to an object with information about the value of the field.\n" }, "fields": { "allOf": [ { "$ref": "#/$defs/Fields" } ], "description": "Fields to set on the Oligo. Must correspond with the schema's field definitions. Every field should have its name as a key, mapping to an object with information about the value of the field.\n" }, "folderId": { "description": "ID of the folder containing the Oligo.\n", "type": "string" }, "name": { "description": "Name of the Oligo.\n", "type": "string" }, "schemaId": { "description": "ID of the oligo's schema.\n", "type": "string" } }, "type": "object" }, "OligoBaseRequestForCreate": { "allOf": [ { "$ref": "#/$defs/OligoBaseRequest" }, { "required": [ "name" ] } ] }, "OligoBulkUpsertRequest": { "allOf": [ { "$ref": "#/$defs/EntityBulkUpsertBaseRequest" }, { "$ref": "#/$defs/OligoBaseRequestForCreate" } ] }, "Primer": { "properties": { "bases": { "readOnly": true, "type": "string" }, "bindPosition": { "readOnly": true, "type": "integer" }, "color": { "readOnly": true, "type": "string" }, "end": { "description": "0-based exclusive end index. The end of the sequence is always represented as 0.", "type": "integer" }, "name": { "readOnly": true, "type": "string" }, "oligoId": { "type": "string" }, "overhangLength": { "readOnly": true, "type": "integer" }, "start": { "description": "0-based inclusive start index.", "type": "integer" }, "strand": { "type": "integer" } }, "type": "object" }, "SequenceFeatureBase": { "properties": { "color": { "description": "Hex color code used when displaying this feature in the UI.", "type": "string" }, "customFields": { "items": { "$ref": "#/$defs/SequenceFeatureCustomField" }, "maxItems": 100, "type": "array" }, "name": { "maxLength": 2048, "type": "string" }, "notes": { "maxLength": 10000, "type": "string" } }, "type": "object" }, "SequenceFeatureCustomField": { "description": "A name and value pair associated with a sequence feature (annotation or translation). For genbank imports, these are the qualifiers associated with each feature.", "properties": { "name": { "description": "Name of the custom field", "type": "string" }, "value": { "description": "Value of the custom field", "type": "string" } }, "type": "object" }, "Translation": { "allOf": [ { "$ref": "#/$defs/SequenceFeatureBase" }, { "properties": { "aminoAcids": { "readOnly": true, "type": "string" }, "coerceStartCodonToMethionine": { "default": false, "description": "Whether to override the translation of the start codon to Methionine. Has no effect when the start codon already translates to Methionine.", "type": "boolean" }, "end": { "description": "0-based exclusive end index. The end of the sequence is always represented as 0.", "type": "integer" }, "geneticCode": { "default": "STANDARD", "description": "The genetic code to use when translating the nucleotide sequence into amino acids.", "enum": [ "STANDARD", "VERTEBRATE_MITOCHONDRIAL", "YEAST_MITOCHONDRIAL", "MOLD_PROTOZOAN_COELENTERATE_MITOCHONDRIAL_MYCOPLASMA_SPIROPLASMA", "INVERTEBRATE_MITOCHONDRIAL", "CILIATE_DASYCLADACEAN_HEXAMITA_NUCLEAR", "ECHINODERM_FLATWORM_MITOCHONDRIAL", "EUPLOTID_NUCLEAR", "BACTERIAL_ARCHAEAL_PLANT_PLASTID", "ALTERNATIVE_YEAST_NUCLEAR", "ASCIDIAN_MITOCHONDRIAL", "ALTERNATIVE_FLATWORM_MITOCHONDRIAL", "CHLOROPHYCEAN_MITOCHONDRIAL", "TREMATODE_MITOCHONDRIAL", "SCENEDESMUS_OBLIQUUS_MITOCHONDRIAL", "THRAUSTOCHYTRIUM_MITOCHONDRIAL", "RHABDOPLEURIDAE_MITOCHONDRIAL", "CANDIDATE_DIVISION_SR1_GRACILIBACTERIA", "PACHYSOLEN_TANNOPHILUS_NUCLEAR", "MESODINIUM_NUCLEAR", "PERITRICH_NUCLEAR", "CEPHALODISCIDAE_MITOCHONDRIAL_UAA_TYR" ], "type": "string" }, "regions": { "items": { "properties": { "end": { "description": "0-based exclusive end index. The end of the sequence is always represented as 0.", "type": "integer" }, "start": { "description": "0-based inclusive start index.", "type": "integer" } }, "type": "object" }, "type": "array" }, "start": { "description": "0-based inclusive start index.", "type": "integer" }, "strand": { "type": "integer" } }, "type": "object" } ] } } }