Skip to content

Tasks

albert.resources.tasks

Attributes:

Name Type Description
TaskUnion
TaskAdapter

TaskUnion

TaskUnion = Annotated[
    PropertyTask | BatchTask | GeneralTask,
    Field(..., discriminator="category"),
]

TaskAdapter

TaskAdapter = TypeAdapter(TaskUnion)

TaskCategory

Bases: str, Enum

The kind of lab work a task represents.

The category determines which concrete task class is used and is set automatically by that subclass; you normally do not set it by hand.

Attributes:

Name Type Description
PROPERTY str

Testing and documenting the properties of products, formulas, or raw materials. Corresponds to PropertyTask.

BATCH str

Manufacturing a batch of a formulation inside Albert. Corresponds to BatchTask.

GENERAL str

Any lab work that is not a batch or property task (for example equipment calibration). Corresponds to GeneralTask.

BATCH_WITH_QC str

A batch task that also carries quality-control data. A variant of BatchTask.

PROPERTY

PROPERTY = 'Property'

BATCH

BATCH = 'Batch'

GENERAL

GENERAL = 'General'

BATCH_WITH_QC

BATCH_WITH_QC = 'BatchWithQC'

BatchSizeUnit

Bases: str, Enum

Unit of measure for the size of a batch made in a BatchTask.

The enum values are the exact wire strings the platform expects; note the non-SI capitalization "Kg" (lowercase "kg" is rejected). The SDK performs no unit conversion: batch_size and batch-data amounts are stored as sent. For mass-tracked inventory, the batch-data grid is denominated in kilograms regardless of this unit, so scale amounts accordingly when writing used amounts.

Attributes:

Name Type Description
GRAMS str

Grams ("g").

KILOGRAMS str

Kilograms ("Kg").

POUNDS str

Pounds ("lbs").

GRAMS

GRAMS = 'g'

KILOGRAMS

KILOGRAMS = 'Kg'

POUNDS

POUNDS = 'lbs'

TaskSourceType

Bases: str, Enum

What kind of thing a task was created from.

Attributes:

Name Type Description
TASK str

The task was created from another existing task ("task").

TEMPLATE str

The task was created from a task template ("template").

TASK

TASK = 'task'

TEMPLATE

TEMPLATE = 'template'

TaskSource

Bases: BaseAlbertModel

A reference to the task or template a task was created from.

Recorded in sources to trace where a task originated.

Show JSON schema:
{
  "$defs": {
    "TaskSourceType": {
      "description": "What kind of thing a task was created from.\n\nAttributes\n----------\nTASK : str\n    The task was created from another existing task (``\"task\"``).\nTEMPLATE : str\n    The task was created from a task template (``\"template\"``).",
      "enum": [
        "task",
        "template"
      ],
      "title": "TaskSourceType",
      "type": "string"
    }
  },
  "description": "A reference to the task or template a task was created from.\n\nRecorded in [`sources`][albert.resources.tasks.BaseTask.sources] to trace where a task originated.",
  "properties": {
    "id": {
      "description": "The ID of the originating task or template.",
      "title": "Id",
      "type": "string"
    },
    "type": {
      "$ref": "#/$defs/TaskSourceType",
      "description": "Whether ``id`` points to a task or a template."
    }
  },
  "required": [
    "id",
    "type"
  ],
  "title": "TaskSource",
  "type": "object"
}

Fields:

id

id: str

The ID of the originating task or template.

type

Whether id points to a task or a template.

TaskPriority

Bases: str, Enum

How urgent a task is, used for triage and sorting work queues.

Attributes:

Name Type Description
HIGH str

Highest urgency ("High").

MEDIUM str

Normal urgency ("Medium").

LOW str

Lowest urgency ("Low").

HIGH

HIGH = 'High'

MEDIUM

MEDIUM = 'Medium'

LOW

LOW = 'Low'

HistoryEntity

Bases: str, Enum

The kind of entity a task-history query is scoped to.

Used when requesting the change history of a task (see get_history).

Attributes:

Name Type Description
WORKFLOW str

Limit history to workflow-related changes ("workflow").

WORKFLOW

WORKFLOW = 'workflow'

IntervalId

Bases: BaseAlbertModel

Show JSON schema:
{
  "properties": {
    "id": {
      "title": "Id",
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "title": "IntervalId",
  "type": "object"
}

Fields:

id

id: str

BlockLevelInventoryInformation

Bases: BaseAlbertModel

Show JSON schema:
{
  "properties": {
    "id": {
      "title": "Id",
      "type": "string"
    },
    "lotId": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Lotid"
    },
    "invLotUniqueId": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Invlotuniqueid"
    }
  },
  "required": [
    "id"
  ],
  "title": "BlockLevelInventoryInformation",
  "type": "object"
}

Fields:

id

id: str

lot_id

lot_id: str | None = None

inv_lot_unique_id

inv_lot_unique_id: str | None = None

BlockState

Bases: BaseAlbertModel

Show JSON schema:
{
  "$defs": {
    "BlockLevelInventoryInformation": {
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "lotId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Lotid"
        },
        "invLotUniqueId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Invlotuniqueid"
        }
      },
      "required": [
        "id"
      ],
      "title": "BlockLevelInventoryInformation",
      "type": "object"
    },
    "IntervalId": {
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        }
      },
      "required": [
        "id"
      ],
      "title": "IntervalId",
      "type": "object"
    }
  },
  "properties": {
    "id": {
      "description": "The ID of the block.",
      "title": "Id",
      "type": "string"
    },
    "expand": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Expand"
    },
    "Interval": {
      "anyOf": [
        {
          "items": {
            "$ref": "#/$defs/IntervalId"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The IDs of the interval (e.g., id: ROW2XROW4)",
      "title": "Interval"
    },
    "Inventory": {
      "anyOf": [
        {
          "items": {
            "$ref": "#/$defs/BlockLevelInventoryInformation"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Inventory"
    }
  },
  "required": [
    "id"
  ],
  "title": "BlockState",
  "type": "object"
}

Fields:

id

id: str

The ID of the block.

expanded

expanded: bool | None = None

intervals

intervals: list[IntervalId] | None = None

The IDs of the interval (e.g., id: ROW2XROW4)

inventory

inventory: list[BlockLevelInventoryInformation] | None = (
    None
)

PageState

Bases: BaseAlbertModel

Show JSON schema:
{
  "$defs": {
    "BlockLevelInventoryInformation": {
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "lotId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Lotid"
        },
        "invLotUniqueId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Invlotuniqueid"
        }
      },
      "required": [
        "id"
      ],
      "title": "BlockLevelInventoryInformation",
      "type": "object"
    },
    "BlockState": {
      "properties": {
        "id": {
          "description": "The ID of the block.",
          "title": "Id",
          "type": "string"
        },
        "expand": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Expand"
        },
        "Interval": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/IntervalId"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The IDs of the interval (e.g., id: ROW2XROW4)",
          "title": "Interval"
        },
        "Inventory": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/BlockLevelInventoryInformation"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Inventory"
        }
      },
      "required": [
        "id"
      ],
      "title": "BlockState",
      "type": "object"
    },
    "IntervalId": {
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        }
      },
      "required": [
        "id"
      ],
      "title": "IntervalId",
      "type": "object"
    }
  },
  "properties": {
    "leftPanelExpand": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Leftpanelexpand"
    },
    "Block": {
      "anyOf": [
        {
          "items": {
            "$ref": "#/$defs/BlockState"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Block"
    }
  },
  "title": "PageState",
  "type": "object"
}

Fields:

left_panel_expanded

left_panel_expanded: bool | None = None

blocks

blocks: list[BlockState] | None = None

Target

Bases: BaseAlbertModel

Show JSON schema:
{
  "properties": {
    "dataColumnUniqueId": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Datacolumnuniqueid"
    },
    "value": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Value"
    }
  },
  "title": "Target",
  "type": "object"
}

Fields:

data_column_unique_id

data_column_unique_id: str | None = None

value

value: str | None = None

DataTemplateAndTargets

Bases: BaseAlbertModel

Show JSON schema:
{
  "$defs": {
    "Target": {
      "properties": {
        "dataColumnUniqueId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Datacolumnuniqueid"
        },
        "value": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Value"
        }
      },
      "title": "Target",
      "type": "object"
    }
  },
  "properties": {
    "id": {
      "title": "Id",
      "type": "string"
    },
    "targets": {
      "items": {
        "$ref": "#/$defs/Target"
      },
      "title": "Targets",
      "type": "array"
    }
  },
  "required": [
    "id",
    "targets"
  ],
  "title": "DataTemplateAndTargets",
  "type": "object"
}

Fields:

id

id: str

targets

targets: list[Target]

Standard

Bases: BaseAlbertModel

Show JSON schema:
{
  "properties": {
    "id": {
      "title": "Id",
      "type": "string"
    },
    "standardId": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Standardid"
    },
    "name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Name"
    },
    "standardOrganization": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Standardorganization"
    },
    "standardOrganizationId": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Standardorganizationid"
    }
  },
  "required": [
    "id"
  ],
  "title": "Standard",
  "type": "object"
}

Fields:

id

id: str

standard_id

standard_id: str | None = None

name

name: str | None = None

standard_organization

standard_organization: str | None = None

standard_organization_id

standard_organization_id: int | None = None

BlockDataTemplateInfo

Bases: BaseAlbertModel

Show JSON schema:
{
  "$defs": {
    "Standard": {
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "standardId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Standardid"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "standardOrganization": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Standardorganization"
        },
        "standardOrganizationId": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Standardorganizationid"
        }
      },
      "required": [
        "id"
      ],
      "title": "Standard",
      "type": "object"
    },
    "Target": {
      "properties": {
        "dataColumnUniqueId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Datacolumnuniqueid"
        },
        "value": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Value"
        }
      },
      "title": "Target",
      "type": "object"
    }
  },
  "properties": {
    "id": {
      "title": "Id",
      "type": "string"
    },
    "name": {
      "title": "Name",
      "type": "string"
    },
    "fullName": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Fullname"
    },
    "Standards": {
      "anyOf": [
        {
          "$ref": "#/$defs/Standard"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "Targets": {
      "anyOf": [
        {
          "items": {
            "$ref": "#/$defs/Target"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Targets"
    }
  },
  "required": [
    "id",
    "name"
  ],
  "title": "BlockDataTemplateInfo",
  "type": "object"
}

Fields:

id

id: str

name

name: str

full_name

full_name: str | None = None

standards

standards: Standard | None = None

targets

targets: list[Target] | None = None

TaskState

Bases: str, Enum

Where a task is in its lifecycle, from creation through completion.

The state generally advances as work progresses: an unclaimed task is picked up, started, finished, and eventually closed (or cancelled).

Attributes:

Name Type Description
UNCLAIMED str

Created but not yet assigned to or claimed by anyone.

NOT_STARTED str

Claimed or assigned, but work has not begun.

IN_PROGRESS str

Work is actively underway.

COMPLETED str

The work has been finished.

CLOSED str

Finalized and no longer active.

CANCELLED str

Abandoned before completion.

UNCLAIMED

UNCLAIMED = 'Unclaimed'

NOT_STARTED

NOT_STARTED = 'Not Started'

IN_PROGRESS

IN_PROGRESS = 'In Progress'

COMPLETED

COMPLETED = 'Completed'

CLOSED

CLOSED = 'Closed'

CANCELLED

CANCELLED = 'Cancelled'

TaskInventoryInformation

Bases: BaseAlbertModel

Which inventory item (and optionally which lot) a task acts on.

Every task references one or more inventory items through this model, stored on inventory_information. What is required depends on the task type:

  • BatchTask: inventory_id and batch_size are required (you are making a quantity of that item).
  • PropertyTask and GeneralTask: inventory_id is required and lot_id is recommended (the specific physical lot tested).
Show JSON schema:
{
  "description": "Which inventory item (and optionally which lot) a task acts on.\n\nEvery task references one or more inventory items through this model, stored\non [`inventory_information`][albert.resources.tasks.BaseTask.inventory_information]. What is required depends on the\ntask type:\n\n- [`BatchTask`][albert.resources.tasks.BatchTask]: ``inventory_id`` and ``batch_size`` are required\n  (you are making a quantity of that item).\n- [`PropertyTask`][albert.resources.tasks.PropertyTask] and [`GeneralTask`][albert.resources.tasks.GeneralTask]: ``inventory_id`` is\n  required and ``lot_id`` is recommended (the specific physical lot tested).",
  "properties": {
    "id": {
      "description": "The ID of the inventory item used in the task (serialized as ``id``).",
      "title": "Id",
      "type": "string"
    },
    "lotId": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The ID of the specific lot used. Recommended for property and general tasks so results attach to the right physical material.",
      "title": "Lotid"
    },
    "lotNumber": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The human-readable lot number of the item.",
      "title": "Lotnumber"
    },
    "invLotUniqueId": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "A combined inventory-and-lot identifier used internally.",
      "title": "Invlotuniqueid"
    },
    "batchSize": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The quantity to make of the related inventory item. Required for [`BatchTask`][albert.resources.tasks.BatchTask]; the unit is given by [`batch_size_unit`][albert.resources.tasks.BatchTask.batch_size_unit].",
      "title": "Batchsize"
    },
    "selectedLot": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Read-only. Whether this lot is the one selected for the task.",
      "title": "Selectedlot"
    },
    "barcodeId": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The barcode identifier of the physical item, if scanned.",
      "title": "Barcodeid"
    },
    "quantityUsed": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The amount of the item consumed by the task.",
      "title": "Quantityused"
    }
  },
  "required": [
    "id"
  ],
  "title": "TaskInventoryInformation",
  "type": "object"
}

Fields:

inventory_id

inventory_id: InventoryId

The ID of the inventory item used in the task (serialized as id).

lot_id

lot_id: LotId | None = None

The ID of the specific lot used. Recommended for property and general tasks so results attach to the right physical material.

lot_number

lot_number: str | None = None

The human-readable lot number of the item.

inv_lot_unique_id

inv_lot_unique_id: str | None = None

A combined inventory-and-lot identifier used internally.

batch_size

batch_size: float | None = None

The quantity to make of the related inventory item. Required for BatchTask; the unit is given by batch_size_unit.

barcode_id

barcode_id: str | None = None

The barcode identifier of the physical item, if scanned.

quantity_used

quantity_used: float | None = None

The amount of the item consumed by the task.

selected_lot

selected_lot: bool | None = None

Read-only. Whether this lot is the one selected for the task.

Block

Bases: BaseAlbertModel

A single unit of testing within a property or batch task.

A block pairs a DataTemplate (the results/data columns to capture) with a Workflow (the parameter conditions under which the data is collected). A PropertyTask or BatchTask can hold multiple blocks. Block IDs look like "BLK...".

Blocks are normally created and modified through the task collection rather than constructed directly; see add_block, update_block_workflow, and remove_block. Measured results for a block are recorded through PropertyDataCollection.

Show JSON schema:
{
  "$defs": {
    "ACL": {
      "description": "A single access rule for a user.",
      "properties": {
        "id": {
          "description": "The id of the user for which this ACL applies",
          "title": "Id",
          "type": "string"
        },
        "fgc": {
          "anyOf": [
            {
              "$ref": "#/$defs/AccessControlLevel"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Fine-Grain Control Level"
        }
      },
      "required": [
        "id"
      ],
      "title": "ACL",
      "type": "object"
    },
    "AccessControlLevel": {
      "description": "Access control levels you can grant users.",
      "enum": [
        "ProjectOwner",
        "ProjectEditor",
        "ProjectViewer",
        "ProjectAllTask",
        "ProjectStrictViewer",
        "ProjectPropertyTask",
        "InventoryOwner",
        "InventoryViewer",
        "CustomTemplateOwner",
        "CustomTemplateViewer",
        "CASFullAccess"
      ],
      "title": "AccessControlLevel",
      "type": "string"
    },
    "AuditFields": {
      "description": "The audit fields for a resource",
      "properties": {
        "by": {
          "default": null,
          "title": "By",
          "type": "string"
        },
        "byName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Byname"
        },
        "at": {
          "anyOf": [
            {
              "format": "date-time",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "At"
        }
      },
      "title": "AuditFields",
      "type": "object"
    },
    "Axis": {
      "enum": [
        "X",
        "Y"
      ],
      "title": "Axis",
      "type": "string"
    },
    "BlockDataTemplateInfo": {
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "name": {
          "title": "Name",
          "type": "string"
        },
        "fullName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Fullname"
        },
        "Standards": {
          "anyOf": [
            {
              "$ref": "#/$defs/Standard"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "Targets": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/Target"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Targets"
        }
      },
      "required": [
        "id",
        "name"
      ],
      "title": "BlockDataTemplateInfo",
      "type": "object"
    },
    "CSVMapping": {
      "description": "A mapping between CSV column headers and data column IDs.",
      "properties": {
        "mapId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A compact mapping string (e.g. ``\"Header1:DAC2900#Header2:DAC4707\"``).",
          "examples": "Header1:DAC2900#Header2:DAC4707",
          "title": "Mapid"
        },
        "mapData": {
          "anyOf": [
            {
              "additionalProperties": {
                "type": "string"
              },
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A dictionary mapping CSV header names to data column IDs.",
          "examples": {
            "Header1": "DAC2900",
            "Header2": "DAC4707"
          },
          "title": "Mapdata"
        }
      },
      "title": "CSVMapping",
      "type": "object"
    },
    "Cas": {
      "description": "A CAS entry: a chemical substance identified by its CAS Registry Number.\n\nA ``Cas`` is Albert's dictionary record for a substance. Raw-material Inventory\nItems reference these entries to declare what they are made of, pairing each\n``Cas`` with an amount (see [`CasAmount`][albert.resources.inventory.CasAmount]).\nManage entries through\n[`CasCollection`][albert.collections.cas.CasCollection] (``client.cas``): most fields\nare populated by Albert, so you typically only build a ``Cas`` from a registry\n``number`` when creating a new entry.\n\n!!! example\n    ```python\n    from albert.resources.cas import Cas\n    # Build a CAS entry to register a new substance\n    cas = Cas(number=\"7727-37-9\")\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "number": {
          "description": "The CAS number.",
          "title": "Number",
          "type": "string"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Name of the CAS.",
          "title": "Name"
        },
        "description": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The description or name of the CAS.",
          "title": "Description"
        },
        "notes": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Notes related to the CAS.",
          "title": "Notes"
        },
        "category": {
          "anyOf": [
            {
              "$ref": "#/$defs/CasCategory"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The category of the CAS."
        },
        "casSmiles": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "CAS SMILES notation.",
          "title": "Cassmiles"
        },
        "inchiKey": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "InChIKey of the CAS.",
          "title": "Inchikey"
        },
        "iUpacName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "IUPAC name of the CAS.",
          "title": "Iupacname"
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The AlbertID of the CAS.",
          "title": "Albertid"
        },
        "hazards": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/Hazard"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Hazards associated with the CAS.",
          "title": "Hazards"
        },
        "wgk": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "German Water Hazard Class (WGK) number.",
          "title": "Wgk"
        },
        "ecListNo": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "European Community (EC) number.",
          "title": "Eclistno"
        },
        "type": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Internal classification_type reference.",
          "title": "Type"
        },
        "classificationType": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Classification type of the CAS.",
          "title": "Classificationtype"
        },
        "order": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "CAS order.",
          "title": "Order"
        },
        "Metadata": {
          "additionalProperties": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "integer"
              },
              {
                "type": "string"
              },
              {
                "$ref": "#/$defs/EntityLinkWithName"
              },
              {
                "$ref": "#/$defs/EntityLink"
              },
              {
                "items": {
                  "anyOf": [
                    {
                      "$ref": "#/$defs/EntityLinkWithName"
                    },
                    {
                      "$ref": "#/$defs/EntityLink"
                    }
                  ]
                },
                "type": "array"
              }
            ]
          },
          "description": "Custom metadata keyed by field. Updatable.",
          "title": "Metadata",
          "type": "object"
        }
      },
      "required": [
        "number"
      ],
      "title": "Cas",
      "type": "object"
    },
    "CasAmount": {
      "description": "A single CAS constituent and its concentration within an [`InventoryItem`][albert.resources.inventory.InventoryItem].\n\nA ``CasAmount`` links one CAS number (a chemical substance identifier) to the\namount of that substance present in an inventory item, expressed as a range\n(``min`` to ``max``) with an optional ``target``. A list of these on an\n[`InventoryItem`][albert.resources.inventory.InventoryItem] gives the item's compositional breakdown.\n\nIdentify the CAS in one of two ways: pass a full [`Cas`][albert.resources.cas.Cas]\nobject as ``cas`` (its ``id``, ``number``, and ``cas_smiles`` are then copied onto\nthis amount), or pass just the CAS resource ``id`` string. Do not pass both.\n\n!!! example\n    ```python\n    from albert.resources.inventory import CasAmount\n\n    # Reference an existing CAS resource by its Albert ID, 10-30% concentration\n    amount = CasAmount(min=10.0, max=30.0, id=\"CAS1\")\n    ```",
      "properties": {
        "min": {
          "description": "The minimum amount (concentration) of the CAS in the item.",
          "title": "Min",
          "type": "number"
        },
        "max": {
          "description": "The maximum amount (concentration) of the CAS in the item.",
          "title": "Max",
          "type": "number"
        },
        "inventoryValue": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The target amount of the CAS in the item. Serialized as ``inventoryValue``.",
          "title": "Inventoryvalue"
        },
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert ID of the CAS resource this amount represents. Provide either a ``cas`` object or an ``id``; when ``cas`` is given, this is set from it.",
          "title": "Id"
        },
        "casCategory": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Whether the CAS is a trade secret.",
          "title": "Cascategory"
        },
        "inventoryFunction": {
          "anyOf": [
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/$defs/ListItem"
                  },
                  {
                    "$ref": "#/$defs/EntityLink"
                  },
                  {
                    "type": "string"
                  }
                ]
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Business-controlled functions associated with the CAS in this inventory context (e.g. what role the substance plays). Values come from a managed list.",
          "title": "Inventoryfunction"
        },
        "type": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The CAS type. Can be retrieved from the CAS collection before construction.",
          "title": "Type"
        },
        "classificationType": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The EU classification source for the CAS: harmonized, notified, or REACH.",
          "title": "Classificationtype"
        },
        "substanceId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The substance ID linked to this CAS entry.",
          "title": "Substanceid"
        },
        "cas": {
          "anyOf": [
            {
              "$ref": "#/$defs/Cas"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The full CAS object associated with this amount. Read-only after init; excluded from serialization. Provide either a ``cas`` or an ``id``."
        },
        "casSmiles": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The SMILES string of the CAS resource. Read-only; set from the ``cas`` object.",
          "title": "Cassmiles"
        },
        "number": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The CAS number (e.g. ``\"7440-32-6\"``). Read-only; set from the ``cas`` object.",
          "title": "Number"
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit metadata for creation. Read-only."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/CasAuditFieldsWithEmail"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit metadata for the last update. Read-only. See Also --------"
        }
      },
      "required": [
        "min",
        "max"
      ],
      "title": "CasAmount",
      "type": "object"
    },
    "CasAuditFieldsWithEmail": {
      "description": "The audit fields for a CAS resource with email",
      "properties": {
        "by": {
          "default": null,
          "title": "By",
          "type": "string"
        },
        "byName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Byname"
        },
        "at": {
          "anyOf": [
            {
              "format": "date-time",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "At"
        },
        "email": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Email"
        }
      },
      "title": "CasAuditFieldsWithEmail",
      "type": "object"
    },
    "CasCategory": {
      "enum": [
        "User",
        "Verisk",
        "TSCA - Public",
        "TSCA - Private",
        "not TSCA",
        "CAS linked to External Database",
        "Unknown (Trade Secret)",
        "CL_Inventory Upload"
      ],
      "title": "CasCategory",
      "type": "string"
    },
    "Company": {
      "description": "A manufacturing company or supplier tracked in Albert.\n\nA Company is the organization that makes or supplies a material. It is the\n``company`` linked on raw-material inventory items: each raw material points\nback to the Company that manufactures it (see\n[`InventoryItem`][albert.resources.inventory.InventoryItem]). Companies are managed\nthrough [`CompanyCollection`][albert.collections.companies.CompanyCollection], accessed as\n``client.companies``.\n\nCompanies are identified by a Company ID (format ``COM...``). A Company is\ntypically minimal: a name plus its assigned ID. You construct one directly\n(``Company(name=\"Acme Chemicals\")``) to create it or to attach it to an\ninventory item.\n\n!!! example\n    ```python\n    from albert.resources.companies import Company\n\n    # Build a company to create or attach to an inventory item\n    company = Company(name=\"Acme Chemicals\")\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "name": {
          "description": "The company's name. This is the primary identifier used when searching for or creating a company.",
          "title": "Name",
          "type": "string"
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert Company ID (format ``COM...``). ``None`` until the company is created in or retrieved from Albert.",
          "title": "Albertid"
        },
        "distance": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Search-relevance score returned when the company comes back as a search result. Read-only; not set on companies you build yourself.",
          "title": "Distance"
        }
      },
      "required": [
        "name"
      ],
      "title": "Company",
      "type": "object"
    },
    "CurveDBMetadata": {
      "description": "Database metadata for a curve data column result.",
      "properties": {
        "tableName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Athena/database table name storing the curve data.",
          "title": "Tablename"
        },
        "partitionKey": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The partition key for the curve data table.",
          "title": "Partitionkey"
        }
      },
      "title": "CurveDBMetadata",
      "type": "object"
    },
    "CurveDataEntityLink": {
      "description": "A link to a data column that provides one axis of a curve dataset.",
      "properties": {
        "id": {
          "description": "The data column ID.",
          "title": "Id",
          "type": "string"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "category": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Category"
        },
        "axis": {
          "anyOf": [
            {
              "$ref": "#/$defs/Axis"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Which axis this column represents (X or Y)."
        },
        "Unit": {
          "anyOf": [
            {
              "$ref": "#/$defs/Unit"
            },
            {
              "$ref": "#/$defs/EntityLink"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The unit of measure for this axis.",
          "title": "Unit"
        }
      },
      "required": [
        "id"
      ],
      "title": "CurveDataEntityLink",
      "type": "object"
    },
    "DataColumn": {
      "description": "The definition of a single measured result variable in Albert.\n\nA Data Column (DAC) defines one direct output variable that a task can\nmeasure, such as ``Viscosity`` or ``APHA Color``. Data columns are the\nreusable building blocks of a Data Template's results: a\n[`DataTemplate`][albert.resources.data_templates.DataTemplate] references data columns\nthrough its ``data_column_values``, and the values recorded against a data\ncolumn during experiments are stored as Property Data.\n\nData columns are identified by a Data Column ID (format ``DAC...``, e.g.\n``\"DAC9999999\"``) and are managed through\n[`DataColumnCollection`][albert.collections.data_columns.DataColumnCollection], accessed as\n``client.data_columns``.\n\n!!! example\n    ```python\n    from albert import Albert\n    from albert.resources.data_columns import DataColumn\n    client = Albert()\n    column = DataColumn(name=\"Viscosity\")\n    created = client.data_columns.create(data_column=column)\n    created.id\n    # 'DAC9999999'\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "name": {
          "description": "The name of the data column (e.g. ``\"Viscosity\"``).",
          "title": "Name",
          "type": "string"
        },
        "defalt": {
          "default": false,
          "title": "Defalt",
          "type": "boolean"
        },
        "Metadata": {
          "anyOf": [
            {
              "additionalProperties": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "integer"
                  },
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/$defs/EntityLinkWithName"
                  },
                  {
                    "$ref": "#/$defs/EntityLink"
                  },
                  {
                    "items": {
                      "anyOf": [
                        {
                          "$ref": "#/$defs/EntityLinkWithName"
                        },
                        {
                          "$ref": "#/$defs/EntityLink"
                        }
                      ]
                    },
                    "type": "array"
                  }
                ]
              },
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Custom metadata keyed by field name. Values may be strings, numbers, or entity links.",
          "title": "Metadata"
        },
        "albertId": {
          "default": null,
          "description": "The Data Column ID assigned by Albert (format ``DAC...``). Populated by the server on creation; leave unset when building a column to create.",
          "title": "Albertid",
          "type": "string"
        }
      },
      "required": [
        "name"
      ],
      "title": "DataColumn",
      "type": "object"
    },
    "DataColumnValue": {
      "description": "A result data column on a Data Template.\n\nA ``DataColumnValue`` binds a [`DataColumn`][albert.resources.data_columns.DataColumn] to\na Data Template as one of the results the test captures (a \"direct variable\"). Data\ncolumns can be typed numeric, text, dropdown/enum, image, curve, date, or timestamp.\nOn a Data Template the ``value`` typically holds an example value shown on the\ndetails page rather than measured data; actual measurements are stored as Property\nData. When constructing one, provide either ``data_column`` or ``data_column_id``.\n\n!!! example\n    ```python\n    from albert.resources.data_templates import DataColumnValue\n\n    column = DataColumnValue(data_column_id=\"DAC9999999\", value=\"42\")\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "data_column": {
          "anyOf": [
            {
              "$ref": "#/$defs/DataColumn"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The full DataColumn resource this value binds to. Provide this or ``data_column_id``. Not serialized."
        },
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The ID of the bound DataColumn (format ``DAC...``). Serialized as ``id``. Provide this or ``data_column``.",
          "title": "Id"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The display name of the column.",
          "title": "Name"
        },
        "originalName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The original column name as stored in Albert. Read-only.",
          "title": "Originalname"
        },
        "value": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The column's example/default value shown on the Data Template details page.",
          "title": "Value"
        },
        "hidden": {
          "default": false,
          "description": "Whether the column is hidden. Defaults to False.",
          "title": "Hidden",
          "type": "boolean"
        },
        "Unit": {
          "anyOf": [
            {
              "$ref": "#/$defs/Unit"
            },
            {
              "$ref": "#/$defs/EntityLink"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The unit of measure for the column.",
          "title": "Unit"
        },
        "calculation": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A calculation expression for a computed column.",
          "title": "Calculation"
        },
        "sequence": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The column's position within the template. Assigned by Albert.",
          "title": "Sequence"
        },
        "script": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Script"
        },
        "athena": {
          "anyOf": [
            {
              "$ref": "#/$defs/CurveDBMetadata"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "s3Key": {
          "anyOf": [
            {
              "$ref": "#/$defs/StorageKeyReference"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "job": {
          "anyOf": [
            {
              "$ref": "#/$defs/JobSummary"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "csvMapping": {
          "anyOf": [
            {
              "additionalProperties": {
                "type": "string"
              },
              "type": "object"
            },
            {
              "$ref": "#/$defs/CSVMapping"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Csvmapping"
        },
        "validation": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/ValueValidation"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "description": "Validation rules applied to the column value (e.g. enum options, numeric range).",
          "title": "Validation"
        },
        "CurveData": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/CurveDataEntityLink"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "For curve columns, the linked X/Y curve result columns.",
          "title": "Curvedata"
        }
      },
      "title": "DataColumnValue",
      "type": "object"
    },
    "DataTemplate": {
      "description": "A definition of what a test captures (a DAT).\n\nA ``DataTemplate`` (Data Template, ID format ``DAT...``) describes a test in two\nparts: its ``data_column_values`` are the measured RESULTS (the data columns, or\n\"direct variables\"), and its ``parameter_values`` are the CONDITIONS under which\nthe test is run (the \"indirect variables\"). A Data Template does not itself store\nmeasured values; those are recorded as Property Data. When the template is paired\nwith a Workflow inside a Block, only its parameters (not its result columns) flow\ninto the Workflow's setpoints.\n\nTemplates are managed through\n[`DataTemplateCollection`][albert.collections.data_templates.DataTemplateCollection]\n(``client.data_templates``).\n\n!!! example\n    ```python\n    from albert.resources.data_templates import DataTemplate, DataColumnValue\n\n    template = DataTemplate(\n        name=\"Tensile Strength Test\",\n        data_column_values=[DataColumnValue(data_column_id=\"DAC9999999\")],\n    )\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "Tags": {
          "anyOf": [
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/$defs/Tag"
                  },
                  {
                    "$ref": "#/$defs/EntityLink"
                  }
                ]
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A list of Tag objects or strings representing tags.",
          "title": "Tags"
        },
        "name": {
          "description": "The name of the data template. Required.",
          "title": "Name",
          "type": "string"
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert Data Template ID (format ``DAT...``). Set when the template is retrieved from or created in Albert. Serialized as ``albertId``.",
          "title": "Albertid"
        },
        "description": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A free-text description of the template.",
          "title": "Description"
        },
        "class": {
          "anyOf": [
            {
              "$ref": "#/$defs/SecurityClass"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The access/security class of the template. Serialized as ``class``."
        },
        "verified": {
          "default": false,
          "description": "The approval/governance state of the template. Defaults to False.",
          "title": "Verified",
          "type": "boolean"
        },
        "ACL": {
          "anyOf": [
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/$defs/User"
                  },
                  {
                    "$ref": "#/$defs/EntityLink"
                  }
                ]
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The access-control list of users who can access the template. Serialized as ``ACL``.",
          "title": "Acl"
        },
        "DataColumns": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/DataColumnValue"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The measured results the test captures (its data columns / direct variables). See [`DataColumnValue`][albert.resources.data_templates.DataColumnValue].",
          "title": "Datacolumns"
        },
        "Parameters": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/ParameterValue"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The conditions under which the test is run (its indirect variables). See [`ParameterValue`][albert.resources.parameter_groups.ParameterValue].",
          "title": "Parameters"
        },
        "DeletedParameters": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/ParameterValue"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Deletedparameters"
        },
        "Metadata": {
          "anyOf": [
            {
              "additionalProperties": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "integer"
                  },
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/$defs/EntityLinkWithName"
                  },
                  {
                    "$ref": "#/$defs/EntityLink"
                  },
                  {
                    "items": {
                      "anyOf": [
                        {
                          "$ref": "#/$defs/EntityLinkWithName"
                        },
                        {
                          "$ref": "#/$defs/EntityLink"
                        }
                      ]
                    },
                    "type": "array"
                  }
                ]
              },
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Custom metadata fields. Allowed keys are defined by the workspace's CustomFields configuration.",
          "title": "Metadata"
        },
        "Documents": {
          "items": {
            "$ref": "#/$defs/EntityLink"
          },
          "title": "Documents",
          "type": "array"
        },
        "originalName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The original template name as stored in Albert. Read-only.",
          "title": "Originalname"
        },
        "fullName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The fully qualified template name. Read-only. See Also --------",
          "title": "Fullname"
        }
      },
      "required": [
        "name"
      ],
      "title": "DataTemplate",
      "type": "object"
    },
    "DataTemplateAndTargets": {
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "targets": {
          "items": {
            "$ref": "#/$defs/Target"
          },
          "title": "Targets",
          "type": "array"
        }
      },
      "required": [
        "id",
        "targets"
      ],
      "title": "DataTemplateAndTargets",
      "type": "object"
    },
    "DataType": {
      "description": "The data type of a parameter value, driving how it is validated.\n\nUsed by [`ValueValidation`][albert.resources.parameter_groups.ValueValidation] to declare what kind of value a parameter\naccepts.\n\nAttributes\n----------\nNUMBER : str\n    A numeric value.\nSTRING : str\n    A free-text string value.\nENUM : str\n    A value restricted to a fixed set of options (see\n    [`EnumValidationValue`][albert.resources.parameter_groups.EnumValidationValue]).\nIMAGE : str\n    An image value.\nCURVE : str\n    A curve (series) value.\nDATE : str\n    A calendar date value stored as ``YYYY-MM-DD``.\nTIMESTAMP : str\n    A date-and-time value in ISO 8601 format with a UTC offset\n    (e.g. ``2026-05-21T14:32:00+02:00``).",
      "enum": [
        "number",
        "string",
        "enum",
        "image",
        "curve",
        "date",
        "timestamp"
      ],
      "title": "DataType",
      "type": "string"
    },
    "EntityLink": {
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "category": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Category"
        }
      },
      "required": [
        "id"
      ],
      "title": "EntityLink",
      "type": "object"
    },
    "EntityLinkWithName": {
      "description": "EntityLink that includes the name field in serialization.",
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "category": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Category"
        }
      },
      "required": [
        "id"
      ],
      "title": "EntityLinkWithName",
      "type": "object"
    },
    "EnumValidationValue": {
      "description": "Represents a value for an enum type validation.",
      "properties": {
        "text": {
          "description": "The text of the enum value.",
          "title": "Text",
          "type": "string"
        },
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The ID of the enum value. If not provided, the ID will be generated upon creation.",
          "title": "Id"
        },
        "originalText": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Originaltext"
        }
      },
      "required": [
        "text"
      ],
      "title": "EnumValidationValue",
      "type": "object"
    },
    "Hazard": {
      "description": "A single GHS hazard classification associated with a CAS substance.\n\nHazards are read from the CAS record; a [`Cas`][albert.resources.cas.Cas] may carry a list of them.",
      "properties": {
        "subCategory": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Hazard subcategory",
          "title": "Subcategory"
        },
        "hCode": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Hazard code",
          "title": "Hcode"
        },
        "category": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Hazard category",
          "title": "Category"
        },
        "class": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Hazard classification",
          "title": "Class"
        },
        "hCodeText": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Hazard code text",
          "title": "Hcodetext"
        }
      },
      "title": "Hazard",
      "type": "object"
    },
    "Interval": {
      "description": "One value that an intervalized parameter is varied across.\n\nWhen a parameter is \"intervalized\" (tested at several values rather than a single\nsetpoint), each of those values is represented by an [`Interval`][albert.resources.workflows.Interval]. A list of\nthem is placed on the parameter's [`ParameterSetpoint`][albert.resources.workflows.ParameterSetpoint] via its ``intervals``\nfield. The workflow then carries the resulting [`IntervalCombination`][albert.resources.workflows.IntervalCombination] entries,\none per interval (or per cartesian product of two intervalized parameters).\n\n!!! example\n    ```python\n    from albert.resources.workflows import Interval\n\n    # A Normal parameter varied across two temperatures.\n    low = Interval(value=\"25\", unit={\"id\": \"UNI9999999\"})\n    high = Interval(value=\"60\", unit={\"id\": \"UNI9999999\"})\n    ```",
      "properties": {
        "value": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The value of this interval. For Special parameters (Equipment, Consumables, Templates) this is the entity ID (e.g. ``\"INVC191778\"``). For Normal parameters this is a plain scalar string (e.g. ``\"23\"``). Required.",
          "title": "Value"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The display name of the interval value. Populated for Special parameters (e.g. ``\"Pipette 0.01 -0.1 ml (10 - 100 \u03bcl)\"``). ``None`` for Normal parameters.",
          "title": "Name"
        },
        "Unit": {
          "anyOf": [
            {
              "$ref": "#/$defs/Unit"
            },
            {
              "$ref": "#/$defs/EntityLink"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The unit of ``value``, where applicable. If given, the unit must have an ``id``. See Also --------",
          "title": "Unit"
        },
        "rowId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Rowid"
        }
      },
      "title": "Interval",
      "type": "object"
    },
    "IntervalCombination": {
      "description": "One realized condition (interval combination) carried by a workflow.\n\nReturned by the workflow endpoint when at least one parameter in the workflow has\nbeen intervalized. A combination is either a single intervalized parameter (interval\nID ``ROW#``) or the cartesian product of two intervalized parameters (interval ID\n``ROW#XROW#``). Its ``interval_id`` is what you pass to the property_data endpoints\nto read or write results for that specific condition.",
      "properties": {
        "interval": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The interval ID this combination is associated with. It has the form ``ROW#`` for a single interval or ``ROW#XROW#`` for a product of two intervals. This is the same value [`get_interval_id`][albert.resources.workflows.Workflow.get_interval_id] returns.",
          "title": "Interval"
        },
        "intervalParams": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The parameters participating in the interval.",
          "title": "Intervalparams"
        },
        "intervalString": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A human-readable representation of the combination, of the form ``\"[Parameter Name]: [Parameter Value] [Parameter Unit]\"`` for each parameter.",
          "title": "Intervalstring"
        },
        "intervalDetails": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/IntervalDetail"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Per-parameter breakdown of the combination. Each entry has ``name`` (parameter name) and ``value`` (display string, e.g. ``\"C191778 || Pipette ...\"``). See Also --------",
          "title": "Intervaldetails"
        }
      },
      "title": "IntervalCombination",
      "type": "object"
    },
    "IntervalDetail": {
      "description": "A single parameter's contribution to an interval combination.\n\nThis appears inside [`IntervalCombination`][albert.resources.workflows.IntervalCombination] (as its ``interval_details``) to\nbreak a combination down into the individual parameters that make it up. It is\nread from the workflow endpoint; you do not construct it directly.",
      "properties": {
        "name": {
          "description": "The parameter name (e.g. ``\"Equipment\"``).",
          "title": "Name",
          "type": "string"
        },
        "value": {
          "description": "The display value for this interval (e.g. ``\"C191778 || Pipette 0.01 -0.1 ml\"``). See Also --------",
          "title": "Value",
          "type": "string"
        }
      },
      "required": [
        "name",
        "value"
      ],
      "title": "IntervalDetail",
      "type": "object"
    },
    "InventoryCategory": {
      "description": "The kind of material an [`InventoryItem`][albert.resources.inventory.InventoryItem] represents.\n\nEvery inventory item belongs to exactly one category, which determines how it\nis used across the platform and which fields are relevant to it.\n\nAttributes\n----------\nRAW_MATERIALS : str\n    A purchased substance used as an ingredient (e.g. a solvent or pigment).\n    Typically linked to a manufacturing ``company`` and one or more CAS numbers.\nCONSUMABLES : str\n    Lab supplies consumed during work (e.g. gloves, vials, filters).\nEQUIPMENT : str\n    Instruments and apparatus (e.g. a balance or spectrometer).\nFORMULAS : str\n    A mixture designed in Albert through a Worksheet. Formulas are not created\n    through the inventory collection; they are produced by the Worksheet\n    collection ([`WorksheetCollection`][albert.collections.worksheets.WorksheetCollection]).",
      "enum": [
        "RawMaterials",
        "Consumables",
        "Equipment",
        "Formulas"
      ],
      "title": "InventoryCategory",
      "type": "string"
    },
    "InventoryItem": {
      "description": "A catalog entry for a material tracked in Albert.\n\nAn ``InventoryItem`` is the canonical record for a raw material, consumable,\npiece of equipment, or formula. Its [`InventoryCategory`][albert.resources.inventory.InventoryCategory] determines how it\nis used across the platform, and once saved it is referenced everywhere by its\nInventory ID (format ``INV...``, e.g. ``\"INVA9999999\"``). Raw materials are typically\nlinked to a manufacturing ``company`` and a compositional breakdown of CAS\namounts. Formula items are designed in Worksheets rather than created here (the\n[`create`][albert.collections.inventory.InventoryCollection.create] method rejects\nFormula items), and a Formula requires a ``project_id``.\n\nItems are managed through\n[`InventoryCollection`][albert.collections.inventory.InventoryCollection] (``client.inventory``).\n\n!!! example\n    ```python\n    from albert.resources.inventory import InventoryItem, InventoryCategory\n\n    item = InventoryItem(\n        name=\"Titanium Dioxide\",\n        category=InventoryCategory.RAW_MATERIALS,\n        company=\"Acme Chemicals\",\n    )\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "Tags": {
          "anyOf": [
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/$defs/Tag"
                  },
                  {
                    "$ref": "#/$defs/EntityLink"
                  }
                ]
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A list of Tag objects or strings representing tags.",
          "title": "Tags"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The name of the item.",
          "title": "Name"
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert Inventory ID (format ``INV...``). Set when the item is retrieved from or created in Albert. Serialized as ``albertId``.",
          "title": "Albertid"
        },
        "description": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A free-text description of the item.",
          "title": "Description"
        },
        "category": {
          "$ref": "#/$defs/InventoryCategory",
          "description": "The kind of material this item represents. Required. One of ``RawMaterials``, ``Consumables``, ``Equipment``, or ``Formulas``."
        },
        "unitCategory": {
          "anyOf": [
            {
              "$ref": "#/$defs/InventoryUnitCategory"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The dimension the item is measured in (mass, volume, length, pressure, or units). If not supplied, it defaults from ``category``: mass for raw materials and formulas, units for equipment and consumables."
        },
        "class": {
          "anyOf": [
            {
              "$ref": "#/$defs/SecurityClass"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The access/security class of the item (e.g. confidential, shared, restricted)."
        },
        "Company": {
          "anyOf": [
            {
              "$ref": "#/$defs/Company"
            },
            {
              "$ref": "#/$defs/EntityLink"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The manufacturing Company associated with the item (links to the Company collection). Accepts a [`Company`][albert.resources.companies.Company] or a name string; a string is turned into a Company that is first-or-created on save.",
          "title": "Company"
        },
        "minimum": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/InventoryMinimum"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Per-Location reorder thresholds for the item. See [`InventoryMinimum`][albert.resources.inventory.InventoryMinimum].",
          "title": "Minimum"
        },
        "alias": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "An alternate name for the item.",
          "title": "Alias"
        },
        "Cas": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/CasAmount"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The item's compositional breakdown as CAS amounts. See [`CasAmount`][albert.resources.inventory.CasAmount].",
          "title": "Cas"
        },
        "isFormulaOverride": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Whether the substance/CAS-level breakdown for this formula has been overridden from the auto-calculated value; commonly set to indicate the formula is not a non-reactive homogeneous mixture.",
          "title": "Isformulaoverride"
        },
        "Metadata": {
          "anyOf": [
            {
              "additionalProperties": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "integer"
                  },
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/$defs/EntityLinkWithName"
                  },
                  {
                    "$ref": "#/$defs/EntityLink"
                  },
                  {
                    "items": {
                      "anyOf": [
                        {
                          "$ref": "#/$defs/EntityLinkWithName"
                        },
                        {
                          "$ref": "#/$defs/EntityLink"
                        }
                      ]
                    },
                    "type": "array"
                  }
                ]
              },
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Custom metadata fields. Allowed keys are defined by the workspace's CustomFields configuration.",
          "title": "Metadata"
        },
        "parentId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The parent Project ID. Required for Formulas. Serialized as ``parentId``.",
          "title": "Parentid"
        },
        "ACL": {
          "description": "Access-control entries governing who can act on the item.",
          "items": {
            "$ref": "#/$defs/ACL"
          },
          "title": "Acl",
          "type": "array"
        },
        "onHand": {
          "default": 0.0,
          "description": "Total amount currently on hand across all lots. Read-only.",
          "title": "Onhand",
          "type": "number"
        },
        "TaskConfig": {
          "anyOf": [
            {
              "items": {
                "additionalProperties": true,
                "type": "object"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Task configuration associated with the item. Read-only.",
          "title": "Taskconfig"
        },
        "formulaId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The formula ID for a formula item. Read-only.",
          "title": "Formulaid"
        },
        "Symbols": {
          "anyOf": [
            {
              "items": {
                "additionalProperties": true,
                "type": "object"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Hazard/pictogram symbols associated with the item. Read-only.",
          "title": "Symbols"
        },
        "unNumber": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The UN hazardous-material number, when applicable. Read-only.",
          "title": "Unnumber"
        },
        "recentAttachmentId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The ID of the most recent attachment on the item. Read-only. See Also --------",
          "title": "Recentattachmentid"
        }
      },
      "required": [
        "category"
      ],
      "title": "InventoryItem",
      "type": "object"
    },
    "InventoryMinimum": {
      "description": "A reorder threshold: the minimum stock of an [`InventoryItem`][albert.resources.inventory.InventoryItem] to keep at a Location.\n\nEach entry pairs one Location with the minimum quantity of an item that must be\nkept on hand there. An [`InventoryItem`][albert.resources.inventory.InventoryItem] may carry several of these, one per\nLocation. Identify the Location either by passing a full\n[`Location`][albert.resources.locations.Location] object as ``location`` (its ``id`` is\nthen copied onto ``id``), or by passing the location ``id`` string directly. Provide\none or the other, not both.\n\n!!! example\n    ```python\n    from albert.resources.inventory import InventoryMinimum\n\n    minimum = InventoryMinimum(id=\"LOC9999999\", minimum=500)\n    ```",
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert ID of the Location this minimum applies to. Provide either a ``location`` or an ``id``; when ``location`` is given, this is set from it.",
          "title": "Id"
        },
        "location": {
          "anyOf": [
            {
              "$ref": "#/$defs/Location"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Location object this minimum applies to. Excluded from serialization. Provide either a ``location`` or an ``id``."
        },
        "minimum": {
          "description": "The minimum amount of the item that must be kept in stock at the Location. Must be between 0 and 1e15. See Also --------",
          "maximum": 1000000000000000,
          "minimum": 0,
          "title": "Minimum",
          "type": "number"
        }
      },
      "required": [
        "minimum"
      ],
      "title": "InventoryMinimum",
      "type": "object"
    },
    "InventoryUnitCategory": {
      "description": "The dimension of the unit an [`InventoryItem`][albert.resources.inventory.InventoryItem] is measured and stocked in.\n\nDetermines how quantities on hand and in formulas are interpreted. When not\nsupplied, the category defaults based on [`InventoryCategory`][albert.resources.inventory.InventoryCategory]: ``MASS``\nfor raw materials and formulas, ``UNITS`` for equipment and consumables.\n\nAttributes\n----------\nMASS : str\n    Measured by mass (e.g. grams, kilograms).\nVOLUME : str\n    Measured by volume (e.g. milliliters, liters).\nLENGTH : str\n    Measured by length (e.g. meters).\nPRESSURE : str\n    Measured by pressure.\nUNITS : str\n    Counted as discrete units (e.g. each item).",
      "enum": [
        "mass",
        "volume",
        "length",
        "pressure",
        "units"
      ],
      "title": "InventoryUnitCategory",
      "type": "string"
    },
    "JobSummary": {
      "description": "A brief summary of a background processing job.",
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The job identifier.",
          "title": "Id"
        },
        "state": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The current state of the job.",
          "title": "State"
        }
      },
      "title": "JobSummary",
      "type": "object"
    },
    "ListItem": {
      "description": "A single allowed value in a configurable list of options.\n\nList items back the choices offered by ``list``-type custom fields (e.g.\ndropdown options) and other fixed option sets in Albert. A\n[`CustomField`][albert.resources.custom_fields.CustomField] with\n[`LIST`][albert.resources.custom_fields.FieldType.LIST] defines a list (keyed\nby ``list_type``, typically the field's name); its selectable options are\n``ListItem`` records with a matching ``list_type``. Managed through\n[`ListsCollection`][albert.collections.lists.ListsCollection] (``client.lists``).\n\n!!! example\n    ```python\n    from albert.resources.lists import ListItem, ListItemCategory\n    item = ListItem(name=\"In Progress\", category=ListItemCategory.USER_DEFINED)\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "name": {
          "description": "The display name of the list item (the option value).",
          "title": "Name",
          "type": "string"
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert ID of the list item. Set when the item is retrieved from or created in Albert.",
          "title": "Albertid"
        },
        "category": {
          "anyOf": [
            {
              "$ref": "#/$defs/ListItemCategory"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The category of the list item. Allowed values are ``businessDefined``, ``userDefined``, ``projects``, ``extensions``, and ``inventory``."
        },
        "listType": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The list this item belongs to. For a list-type custom field this is typically the field's name (see [`CustomField`][albert.resources.custom_fields.CustomField]). For built-in categories the allowed values are ``projectState`` for ``projects``, ``extensions`` for ``extensions``, and ``casCategory`` or ``inventoryFunction`` for ``inventory``.",
          "title": "Listtype"
        }
      },
      "required": [
        "name"
      ],
      "title": "ListItem",
      "type": "object"
    },
    "ListItemCategory": {
      "description": "The category a list item belongs to, which governs its allowed list types.\n\nAttributes\n----------\nBUSINESS_DEFINED : str\n    Predefined values managed at the business/organization level.\nUSER_DEFINED : str\n    Custom values defined by users.\nPROJECTS : str\n    Values used by projects (e.g. project states).\nEXTENSIONS : str\n    Values used by extensions.\nINVENTORY : str\n    Values used by inventory (e.g. CAS categories or inventory functions).",
      "enum": [
        "businessDefined",
        "userDefined",
        "projects",
        "extensions",
        "inventory"
      ],
      "title": "ListItemCategory",
      "type": "string"
    },
    "Location": {
      "description": "A physical lab or site location in Albert.\n\nLocations are referenced by Tasks and Inventory Items to record where an\nactivity is performed or where a material lives, and each Location can hold\none or more Storage Locations\n([`StorageLocation`][albert.resources.storage_locations.StorageLocation]). Managed\nthrough [`LocationCollection`][albert.collections.locations.LocationCollection].\n\n!!! example\n    ```python\n    from albert.resources.locations import Location\n    location = Location(\n        name=\"Boston Lab\",\n        latitude=42.3601,\n        longitude=-71.0589,\n        address=\"1 Main St\",\n        country=\"US\",\n    )\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "name": {
          "description": "The human-readable name of the location.",
          "title": "Name",
          "type": "string"
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert ID of the location. Assigned by Albert and populated once the location has been created or retrieved.",
          "title": "Albertid"
        },
        "latitude": {
          "description": "The latitude of the location, in decimal degrees.",
          "title": "Latitude",
          "type": "number"
        },
        "longitude": {
          "description": "The longitude of the location, in decimal degrees.",
          "title": "Longitude",
          "type": "number"
        },
        "address": {
          "description": "The street address of the location.",
          "title": "Address",
          "type": "string"
        },
        "country": {
          "anyOf": [
            {
              "maxLength": 2,
              "minLength": 2,
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The two-letter country code of the location (for example, ``\"US\"``).",
          "title": "Country"
        }
      },
      "required": [
        "name",
        "latitude",
        "longitude",
        "address"
      ],
      "title": "Location",
      "type": "object"
    },
    "Operator": {
      "description": "A comparison operator constraining a numeric parameter value.\n\nUsed by [`ValueValidation`][albert.resources.parameter_groups.ValueValidation] to bound acceptable values (e.g. ``gte`` with\na ``min`` requires the value to be at least ``min``).\n\nAttributes\n----------\nBETWEEN : str\n    Value must fall between ``min`` and ``max`` (inclusive).\nLESS_THAN : str\n    Value must be less than ``max``.\nLESS_THAN_OR_EQUAL : str\n    Value must be less than or equal to ``max``.\nGREATER_THAN_OR_EQUAL : str\n    Value must be greater than or equal to ``min``.\nGREATER_THAN : str\n    Value must be greater than ``min``.\nEQUALS : str\n    Value must equal the specified value.",
      "enum": [
        "between",
        "lt",
        "lte",
        "gte",
        "gt",
        "eq",
        "neq"
      ],
      "title": "Operator",
      "type": "string"
    },
    "PGType": {
      "description": "The kind of task a [`ParameterGroup`][albert.resources.parameter_groups.ParameterGroup] relates to.\n\nA Parameter Group is about making a sample and/or prepping it for measurement,\nand its type records which sort of task it is used in.\n\nAttributes\n----------\nGENERAL : str\n    A group used in a general lab task (anything that is not a batch or\n    property task).\nBATCH : str\n    A group used in a Batch Task ([`BatchTask`][albert.resources.tasks.BatchTask]),\n    e.g. a mixing step when manufacturing a batch.\nPROPERTY : str\n    A group used in a property (measurement) task to prep a sample for testing.",
      "enum": [
        "general",
        "batch",
        "property"
      ],
      "title": "PGType",
      "type": "string"
    },
    "Parameter": {
      "description": "The definition of a single experimental condition or input variable.\n\nA Parameter (ID format ``PRM...``) names an \"indirect variable\" such as\nTemperature, Spin Speed, or Instrument. The Parameter itself only defines the\nvariable; its actual value and unit are fixed to a setpoint later, inside a\n[`Workflow`][albert.resources.workflows.Workflow]. Parameters are the building\nblocks of Parameter Groups\n([`ParameterGroup`][albert.resources.parameter_groups.ParameterGroup]) and form the\nparameter side of Data Templates\n([`DataTemplate`][albert.resources.data_templates.DataTemplate]).\n\nManage parameters through\n[`ParameterCollection`][albert.collections.parameters.ParameterCollection]\n(``client.parameters``).\n\n!!! example\n    ```python\n    from albert import Albert\n    from albert.resources.parameters import Parameter\n    client = Albert()\n    param = client.parameters.create(parameter=Parameter(name=\"Temperature\"))\n    param.id\n    # 'PRM9999999'\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "name": {
          "description": "The name of the parameter. Names must be unique.",
          "title": "Name",
          "type": "string"
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert ID of the parameter (format ``PRM...``). Set when the parameter is retrieved from or created in Albert.",
          "title": "Albertid"
        },
        "Metadata": {
          "anyOf": [
            {
              "additionalProperties": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "integer"
                  },
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/$defs/EntityLinkWithName"
                  },
                  {
                    "$ref": "#/$defs/EntityLink"
                  },
                  {
                    "items": {
                      "anyOf": [
                        {
                          "$ref": "#/$defs/EntityLinkWithName"
                        },
                        {
                          "$ref": "#/$defs/EntityLink"
                        }
                      ]
                    },
                    "type": "array"
                  }
                ]
              },
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional user-defined metadata keyed by field name.",
          "title": "Metadata"
        },
        "category": {
          "anyOf": [
            {
              "$ref": "#/$defs/ParameterCategory"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Whether the parameter is ``Normal`` (scalar value) or ``Special`` (entity reference). Set by the platform and read-only."
        },
        "rank": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The rank of the returned parameter. Read-only.",
          "title": "Rank"
        },
        "required": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Whether this parameter must be filled in within a Parameter Group.",
          "title": "Required"
        }
      },
      "required": [
        "name"
      ],
      "title": "Parameter",
      "type": "object"
    },
    "ParameterCategory": {
      "description": "Whether a [`Parameter`][albert.resources.parameters.Parameter]'s value is a plain scalar or an entity reference.\n\nSet by the platform and read-only. It determines how a parameter's value is\ninterpreted when a setpoint is assigned to it inside a\n[`Workflow`][albert.resources.workflows.Workflow].\n\nAttributes\n----------\nNORMAL : str\n    A \"normal\" parameter whose value is a plain scalar (e.g. a number or text),\n    such as Temperature or Spin Speed.\nSPECIAL : str\n    A \"special\" parameter whose value references another entity (e.g. Equipment,\n    a Consumable, or a Template). The setpoint value is that entity's ID rather\n    than a plain scalar.",
      "enum": [
        "Normal",
        "Special"
      ],
      "title": "ParameterCategory",
      "type": "string"
    },
    "ParameterGroup": {
      "description": "A reusable set of parameters (PRG) for making or prepping a sample.\n\nA Parameter Group bundles [`Parameter`][albert.resources.parameters.Parameter]\nentities, along with their values, units, and validation rules, into a reusable\nunit. Whereas a Data Template's parameters relate to a given measurement, a\nParameter Group is about *making* the sample and/or *prepping* it for\nmeasurement (e.g. a mixing step or a cure schedule). Some groups drive Batch\nTasks ([`BatchTask`][albert.resources.tasks.BatchTask]); others are stacked within a\ntask. A group's parameters, together with a Data Template's parameters, are\nfixed to setpoints inside a [`Workflow`][albert.resources.workflows.Workflow].\n\nOnce saved, a group is referenced by its Parameter Group ID (format ``PRG...``,\ne.g. ``\"PRG9999999\"``). Store test standards (e.g. ASTM or ISO) under the\n``\"Standards\"`` key of ``metadata``.\n\nGroups are managed through\n[`ParameterGroupCollection`][albert.collections.parameter_groups.ParameterGroupCollection]\n(``client.parameter_groups``).\n\n!!! example\n    ```python\n    from albert.resources.parameter_groups import (\n        ParameterGroup,\n        ParameterValue,\n        PGType,\n    )\n\n    pg = ParameterGroup(\n        name=\"Mixing Step\",\n        type=PGType.BATCH,\n        parameters=[ParameterValue(id=\"PRM9999999\", value=\"500\")],\n    )\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "Tags": {
          "anyOf": [
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/$defs/Tag"
                  },
                  {
                    "$ref": "#/$defs/EntityLink"
                  }
                ]
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A list of Tag objects or strings representing tags.",
          "title": "Tags"
        },
        "name": {
          "description": "The name of the parameter group. Required.",
          "title": "Name",
          "type": "string"
        },
        "type": {
          "anyOf": [
            {
              "$ref": "#/$defs/PGType"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The kind of task the group relates to (``general``, ``batch``, or ``property``)."
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert Parameter Group ID (format ``PRG...``). Set when the group is retrieved from or created in Albert. Serialized as ``albertId``.",
          "title": "Albertid"
        },
        "description": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A free-text description of the group.",
          "title": "Description"
        },
        "class": {
          "$ref": "#/$defs/SecurityClass",
          "default": "restricted",
          "description": "The access/security class of the group. Defaults to ``RESTRICTED``. Serialized as ``class``."
        },
        "ACL": {
          "anyOf": [
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/$defs/User"
                  },
                  {
                    "$ref": "#/$defs/EntityLink"
                  }
                ]
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Access-control entries governing who can act on the group. Serialized as ``ACL``.",
          "title": "Acl"
        },
        "Metadata": {
          "additionalProperties": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "integer"
              },
              {
                "type": "string"
              },
              {
                "$ref": "#/$defs/EntityLinkWithName"
              },
              {
                "$ref": "#/$defs/EntityLink"
              },
              {
                "items": {
                  "anyOf": [
                    {
                      "$ref": "#/$defs/EntityLinkWithName"
                    },
                    {
                      "$ref": "#/$defs/EntityLink"
                    }
                  ]
                },
                "type": "array"
              }
            ]
          },
          "description": "Custom metadata fields. Test standards are stored under the ``\"Standards\"`` key. Serialized as ``Metadata``.",
          "title": "Metadata",
          "type": "object"
        },
        "Parameters": {
          "description": "The parameters in the group, each with its value, unit, and validation. See [`ParameterValue`][albert.resources.parameter_groups.ParameterValue]. Serialized as ``Parameters``.",
          "items": {
            "$ref": "#/$defs/ParameterValue"
          },
          "title": "Parameters",
          "type": "array"
        },
        "verified": {
          "default": false,
          "description": "Whether the group has been verified (an approval/governance state). Read-only.",
          "title": "Verified",
          "type": "boolean"
        },
        "documents": {
          "description": "Documents (e.g. SOPs) associated with the Parameter Group. See Also --------",
          "items": {
            "$ref": "#/$defs/EntityLink"
          },
          "title": "Documents",
          "type": "array"
        }
      },
      "required": [
        "name"
      ],
      "title": "ParameterGroup",
      "type": "object"
    },
    "ParameterGroupSetpoints": {
      "description": "All parameter setpoints belonging to one Data Template or Parameter Group.\n\nA workflow is organized by group: each [`ParameterGroupSetpoints`][albert.resources.workflows.ParameterGroupSetpoints] names one\nData Template or Parameter Group (by ``id`` or by a full ``parameter_group`` object)\nand carries the [`ParameterSetpoint`][albert.resources.workflows.ParameterSetpoint] list for the parameters in it. A\n[`Workflow`][albert.resources.workflows.Workflow] holds one of these per group. Both the order of setpoints within a\ngroup and the order of groups within the workflow are part of what makes a workflow\nunique, so preserve the order you intend.\n\n!!! example\n    ```python\n    from albert.resources.workflows import (\n        ParameterGroupSetpoints,\n        ParameterSetpoint,\n    )\n\n    group = ParameterGroupSetpoints(\n        id=\"PRG9999999\",\n        parameter_setpoints=[\n            ParameterSetpoint(parameter_id=\"PRM9999999\", value=\"25\", short_name=\"Temp\"),\n        ],\n    )\n    ```",
      "properties": {
        "parameter_group": {
          "anyOf": [
            {
              "$ref": "#/$defs/ParameterGroup"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The parameter group to set setpoints on. Provide either ``parameter_group`` or ``id``. If both are given they must refer to the same group."
        },
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The ID of the parameter group (``PRG...``) or Data Template (``DAT...``). Provide either ``id`` or ``parameter_group``. Auto-filled from ``parameter_group`` when one is provided.",
          "title": "Id"
        },
        "name": {
          "default": "Pre-linked Parameters",
          "description": "Read-only display name of the group (defaults to ``\"Pre-linked Parameters\"``).",
          "title": "Name",
          "type": "string"
        },
        "Parameters": {
          "description": "The setpoints to apply to this group's parameters.",
          "items": {
            "$ref": "#/$defs/ParameterSetpoint"
          },
          "title": "Parameters",
          "type": "array"
        },
        "rowId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Read-only. The group's interval row ID.",
          "title": "Rowid"
        },
        "prgSequence": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Ordering key; needed because a Parameter Group can be repeated within a workflow. Not required when writing (PUT). See Also --------",
          "title": "Prgsequence"
        }
      },
      "title": "ParameterGroupSetpoints",
      "type": "object"
    },
    "ParameterSetpoint": {
      "description": "The fixed value (or set of interval values) for one parameter within a workflow.\n\nA setpoint pins a single parameter to a condition. Provide either a single ``value``\n(plus ``unit`` where applicable) for a fixed setpoint, or a list of ``intervals`` to\nintervalize the parameter across several values. You must identify the parameter by\npassing either a full ``parameter`` object or its ``parameter_id``. Setpoints are\ngrouped under a [`ParameterGroupSetpoints`][albert.resources.workflows.ParameterGroupSetpoints], which is in turn placed on a\n[`Workflow`][albert.resources.workflows.Workflow].\n\nNormal parameters take exactly one of ``value`` or ``intervals``. Special parameters\n(Equipment, Consumables, Templates) take an entity ID as their value.\n\n!!! example\n    ```python\n    from albert.resources.workflows import ParameterSetpoint, Interval\n\n    # A single fixed setpoint identified by parameter ID.\n    temp = ParameterSetpoint(parameter_id=\"PRM9999999\", value=\"25\", short_name=\"Temp\")\n\n    # The same parameter intervalized across two values.\n    temp_varied = ParameterSetpoint(\n        parameter_id=\"PRM9999999\",\n        short_name=\"Temp\",\n        intervals=[\n            Interval(value=\"25\", unit={\"id\": \"UNI9999999\"}),\n            Interval(value=\"60\", unit={\"id\": \"UNI9999999\"}),\n        ],\n    )\n    ```",
      "properties": {
        "parameter": {
          "anyOf": [
            {
              "$ref": "#/$defs/Parameter"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The parameter to set. Provide either ``parameter`` or ``parameter_id``. If both are given they must refer to the same parameter."
        },
        "value": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "$ref": "#/$defs/EntityLink"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The value of the setpoint. For a Special parameter (an inventory item), provide the item's [`EntityLink`][albert.core.shared.models.base.EntityLink] (or a mapping with an ``id``). Mutually exclusive with ``intervals`` for Normal parameters.",
          "title": "Value"
        },
        "Unit": {
          "anyOf": [
            {
              "$ref": "#/$defs/Unit"
            },
            {
              "$ref": "#/$defs/EntityLink"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The unit of ``value``, where applicable.",
          "title": "Unit"
        },
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The ID of the parameter (e.g. ``\"PRM9999999\"``). Provide either ``parameter`` or ``parameter_id``.",
          "title": "Id"
        },
        "Intervals": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/Interval"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The interval values when the parameter is intervalized. Provide either ``intervals`` or ``value`` (plus ``unit``), not both.",
          "title": "Intervals"
        },
        "category": {
          "anyOf": [
            {
              "$ref": "#/$defs/ParameterCategory"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The category of the parameter: ``SPECIAL`` for an inventory item (Equipment, Consumable, Template), ``NORMAL`` for everything else."
        },
        "shortName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The short / display name of the parameter. Required if ``value`` is a mapping.",
          "title": "Shortname"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The parameter name. Auto-filled from ``parameter`` when one is provided.",
          "title": "Name"
        },
        "rowId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Read-only. The row ID of this parameter with respect to its interval row.",
          "title": "Rowid"
        },
        "prgPrmRowId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Ordering key; needed because a Parameter Group can be repeated within a workflow. Not required when writing (PUT). See Also --------",
          "title": "Prgprmrowid"
        }
      },
      "title": "ParameterSetpoint",
      "type": "object"
    },
    "ParameterValue": {
      "description": "A single [`Parameter`][albert.resources.parameters.Parameter] and its value within a [`ParameterGroup`][albert.resources.parameter_groups.ParameterGroup].\n\nA ``ParameterValue`` binds one Parameter to the value, unit, and validation\nrules it takes inside a group. Each entry must reference an existing Parameter,\nso provide exactly one of ``id`` (the Parameter's Albert ID) or ``parameter``\n(the [`Parameter`][albert.resources.parameters.Parameter] object itself); when a\n``parameter`` is given, the ``id``, ``category``, and ``name`` are populated\nfrom it. Values are later fixed to setpoints inside a\n[`Workflow`][albert.resources.workflows.Workflow].\n\n!!! example\n    ```python\n    from albert.resources.parameter_groups import ParameterValue\n\n    # Reference the parameter by its Albert ID\n    value = ParameterValue(id=\"PRM9999999\", value=\"500\")\n    ```",
      "properties": {
        "parameter": {
          "anyOf": [
            {
              "$ref": "#/$defs/Parameter"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Parameter this value is associated with. Provide either ``id`` or ``parameter``. Excluded from serialization."
        },
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert ID of the associated Parameter. Provide either ``id`` or ``parameter``.",
          "title": "Id"
        },
        "category": {
          "anyOf": [
            {
              "$ref": "#/$defs/ParameterCategory"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The category of the parameter (``Normal`` or ``Special``). Populated from ``parameter`` when one is provided. When only ``id`` is given, the parameter-group create API rejects the payload (``400 \"Category mismatch ... Category undefined expected\"``), so set ``category`` explicitly (``ParameterCategory.NORMAL`` for ordinary parameters) or pass the full ``parameter`` object."
        },
        "shortName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A short name for the parameter value. Serialized as ``shortName``.",
          "title": "Shortname"
        },
        "value": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/$defs/InventoryItem"
            },
            {
              "$ref": "#/$defs/EntityLink"
            },
            {
              "$ref": "#/$defs/User"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The value of the parameter. Can be a plain string, an [`InventoryItem`][albert.resources.inventory.InventoryItem] (e.g. when the parameter represents an instrument choice), or a [`User`][albert.resources.users.User] (e.g. a user reference such as \"Performed By\").",
          "title": "Value"
        },
        "Unit": {
          "anyOf": [
            {
              "$ref": "#/$defs/Unit"
            },
            {
              "$ref": "#/$defs/EntityLink"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The unit of measure for the value. Serialized as ``Unit``.",
          "title": "Unit"
        },
        "Added": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "required": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Whether this parameter is required. Defaults to False.",
          "title": "Required"
        },
        "validation": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/ValueValidation"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "description": "Validation rules applied to the value. See [`ValueValidation`][albert.resources.parameter_groups.ValueValidation].",
          "title": "Validation"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The name of the parameter. Read-only.",
          "title": "Name"
        },
        "sequence": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The sequence of the parameter within the group. Read-only.",
          "title": "Sequence"
        },
        "originalShortName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Originalshortname"
        },
        "originalName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Originalname"
        }
      },
      "title": "ParameterValue",
      "type": "object"
    },
    "Role": {
      "description": "A named set of access permissions within a tenant.\n\nA role bundles policies that determine what a holder is allowed to do. Roles\nare assigned to users ([`User`][albert.resources.users.User]) and referenced\nby entity ACLs. Roles are typically read from Albert rather than built by\nhand.",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert ID of the role. Role IDs may contain ``#`` characters. Set once the role is retrieved from Albert.",
          "title": "Albertid"
        },
        "name": {
          "description": "The display name of the role.",
          "title": "Name",
          "type": "string"
        },
        "Policies": {
          "anyOf": [
            {
              "items": {},
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The policies (permission rules) associated with the role.",
          "title": "Policies"
        },
        "tenant": {
          "description": "The ID of the tenant the role belongs to.",
          "title": "Tenant",
          "type": "string"
        },
        "visibility": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Whether the role is visible in the platform's role listings.",
          "title": "Visibility"
        }
      },
      "required": [
        "name",
        "tenant"
      ],
      "title": "Role",
      "type": "object"
    },
    "SecurityClass": {
      "description": "The security (access control) class of a resource.\n\nAttributes\n----------\nSHARED : str\n    Accessible to all members of the tenant.\nRESTRICTED : str\n    Access is restricted to specific teams or users.\nCONFIDENTIAL : str\n    Access is limited to designated users only.\nPRIVATE : str\n    Visible only to the owner. Used by Projects.",
      "enum": [
        "shared",
        "restricted",
        "confidential",
        "private"
      ],
      "title": "SecurityClass",
      "type": "string"
    },
    "Standard": {
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "standardId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Standardid"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "standardOrganization": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Standardorganization"
        },
        "standardOrganizationId": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Standardorganizationid"
        }
      },
      "required": [
        "id"
      ],
      "title": "Standard",
      "type": "object"
    },
    "Status": {
      "description": "The status of a resource.\n\nAttributes\n----------\nACTIVE : str\n    The resource is fully operational and visible in normal operations.\nINACTIVE : str\n    The resource is hidden from normal operations and disabled from use.",
      "enum": [
        "active",
        "inactive"
      ],
      "title": "Status",
      "type": "string"
    },
    "StorageKeyReference": {
      "description": "S3 storage key references for a data column file result.",
      "properties": {
        "rawfile": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The raw file storage key.",
          "title": "Rawfile"
        },
        "s3Input": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The S3 key for the input file.",
          "title": "S3Input"
        },
        "s3Output": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The S3 key for the processed output file.",
          "title": "S3Output"
        },
        "preview": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The S3 key for a preview image.",
          "title": "Preview"
        },
        "thumb": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The S3 key for a thumbnail image.",
          "title": "Thumb"
        },
        "original": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The S3 key for the original file.",
          "title": "Original"
        }
      },
      "title": "StorageKeyReference",
      "type": "object"
    },
    "Tag": {
      "description": "A freeform text label used to categorize and connect entities.\n\nTags are shared by name across the platform and can be applied to inventory\nitems, companies, tasks, and other records to group and filter them. Managed\nthrough [`TagCollection`][albert.collections.tags.TagCollection] (``client.tags``);\nthe usual entry point is [`get_or_create`][albert.collections.tags.TagCollection.get_or_create].\n\n!!! example\n    ```python\n    from albert.resources.tags import Tag\n    tag = Tag(tag=\"high-priority\")\n    ```\nMethods\n-------\nfrom_string(tag) -> Tag\n    Build a Tag from its name string.",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "name": {
          "description": "The name of the tag (its text label).",
          "title": "Name",
          "type": "string"
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert ID of the tag (format ``TAG...``). Set when the tag is retrieved from or created in Albert. Methods ------- from_string(tag) -> Tag Build a Tag from its name string.",
          "title": "Albertid"
        }
      },
      "required": [
        "name"
      ],
      "title": "Tag",
      "type": "object"
    },
    "Target": {
      "properties": {
        "dataColumnUniqueId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Datacolumnuniqueid"
        },
        "value": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Value"
        }
      },
      "title": "Target",
      "type": "object"
    },
    "Unit": {
      "description": "A unit of measure (e.g. ``g``, ``mL``, ``\u00b0C``).\n\nUnits qualify quantities throughout the platform: inventory amounts,\nparameter values, and property results. Managed through\n[`UnitCollection`][albert.collections.units.UnitCollection] (``client.units``).\n\n!!! example\n    ```python\n    from albert.resources.units import Unit, UnitCategory\n    unit = Unit(name=\"milliliter\", symbol=\"mL\", category=UnitCategory.LIQUID_VOLUME)\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert ID of the unit (format ``UNI...``). Set when the unit is retrieved from or created in Albert.",
          "title": "Albertid"
        },
        "name": {
          "description": "Currently this is the only field that is displayed in Albert, so use this for display purposes. Therefore, users often use the symbol for the unit here as that's the preferred display.",
          "title": "Name",
          "type": "string"
        },
        "symbol": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The display symbol for the unit (e.g. ``\"g\"``).",
          "title": "Symbol"
        },
        "Synonyms": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "description": "Alternate names or spellings that also refer to this unit.",
          "title": "Synonyms"
        },
        "category": {
          "anyOf": [
            {
              "$ref": "#/$defs/UnitCategory"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The physical quantity the unit measures (e.g. ``Mass``, ``Volume``)."
        },
        "verified": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": false,
          "description": "Whether the unit has been verified in Albert. Read-only.",
          "title": "Verified"
        }
      },
      "required": [
        "name"
      ],
      "title": "Unit",
      "type": "object"
    },
    "UnitCategory": {
      "description": "The physical quantity a unit measures.\n\nAttributes\n----------\nLENGTH : str\n    Length units (e.g. m, cm).\nVOLUME : str\n    Volume units (e.g. m\u00b3).\nLIQUID_VOLUME : str\n    Liquid volume units (e.g. L, mL).\nANGLES : str\n    Angle units (e.g. degrees, radians).\nTIME : str\n    Time units (e.g. s, h).\nFREQUENCY : str\n    Frequency units (e.g. Hz).\nMASS : str\n    Mass units (e.g. g, kg).\nCURRENT : str\n    Electric current units (e.g. A).\nTEMPERATURE : str\n    Temperature units (e.g. \u00b0C, K).\nAMOUNT : str\n    Amount of substance units (e.g. mol).\nLUMINOSITY : str\n    Luminous intensity units (e.g. cd).\nFORCE : str\n    Force units (e.g. N).\nENERGY : str\n    Energy units (e.g. J).\nPOWER : str\n    Power units (e.g. W).\nPRESSURE : str\n    Pressure units (e.g. Pa, bar).\nELECTRICITY_AND_MAGNETISM : str\n    Electricity and magnetism units.\nOTHER : str\n    Units that do not fit another category.\nWEIGHT : str\n    Weight units.\nAREA : str\n    Area units (e.g. m\u00b2).\nSURFACE_AREA : str\n    Surface area units.\nBINARY : str\n    Binary/digital-information units (e.g. bytes).\nCAPACITANCE : str\n    Capacitance units (e.g. F).\nSPEED : str\n    Speed units (e.g. m/s).\nELECTRICAL_CONDUCTIVITY : str\n    Electrical conductivity units.\nELECTRICAL_PERMITTIVITY : str\n    Electrical permittivity units.\nDENSITY : str\n    Density units (e.g. g/mL).\nRESISTANCE : str\n    Electrical resistance units (e.g. \u03a9).",
      "enum": [
        "Length",
        "Volume",
        "Liquid volume",
        "Angles",
        "Time",
        "Frequency",
        "Mass",
        "Electric current",
        "Temperature",
        "Amount of substance",
        "Luminous intensity",
        "Force",
        "Energy",
        "Power",
        "Pressure",
        "Electricity and magnetism",
        "Other",
        "Weight",
        "Area",
        "Surface Area",
        "Binary",
        "Capacitance",
        "Speed",
        "Electrical conductivity",
        "Electrical permitivitty",
        "Density",
        "Resistance"
      ],
      "title": "UnitCategory",
      "type": "string"
    },
    "User": {
      "description": "An Albert user account: a person who can log in and act in the platform.\n\nA user has a name and email, an optional home\n[`Location`][albert.resources.locations.Location], and a set of\n[`Role`][albert.resources.roles.Role] objects that govern what they can do.\nThe ``user_class`` sets a broad permission tier\n([`UserClass`][albert.resources.users.UserClass]). Users are grouped into teams\n([`Team`][albert.resources.teams.Team]), and are referenced across the\nplatform, for example as the assignee of a Task or in an entity's ACL.\n\n!!! example\n    ```python\n    from albert.resources.users import User, UserClass\n    user = User(\n        name=\"Ada Lovelace\",\n        email=\"ada@example.com\",\n        user_class=UserClass.STANDARD,\n    )\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "name": {
          "description": "The display name of the user.",
          "title": "Name",
          "type": "string"
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert User ID (format ``USR...``). Set once the user is registered in or retrieved from Albert.",
          "title": "Albertid"
        },
        "Location": {
          "anyOf": [
            {
              "$ref": "#/$defs/Location"
            },
            {
              "$ref": "#/$defs/EntityLink"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The user's home location.",
          "title": "Location"
        },
        "email": {
          "default": null,
          "description": "The user's email address.",
          "format": "email",
          "title": "Email",
          "type": "string"
        },
        "Roles": {
          "description": "The roles the user holds, which determine their permissions.",
          "items": {
            "anyOf": [
              {
                "$ref": "#/$defs/Role"
              },
              {
                "$ref": "#/$defs/EntityLink"
              }
            ]
          },
          "maxItems": 1,
          "title": "Roles",
          "type": "array"
        },
        "userClass": {
          "$ref": "#/$defs/UserClass",
          "default": "standard",
          "description": "The ACL class level of the user (broad permission tier)."
        },
        "witnesser": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Whether the user can act as a witness on tasks (only relevant when witnessing is enabled for the tenant).",
          "title": "Witnesser"
        },
        "Metadata": {
          "anyOf": [
            {
              "additionalProperties": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "integer"
                  },
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/$defs/EntityLinkWithName"
                  },
                  {
                    "$ref": "#/$defs/EntityLink"
                  },
                  {
                    "items": {
                      "anyOf": [
                        {
                          "$ref": "#/$defs/EntityLinkWithName"
                        },
                        {
                          "$ref": "#/$defs/EntityLink"
                        }
                      ]
                    },
                    "type": "array"
                  }
                ]
              },
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Custom metadata attached to the user.",
          "title": "Metadata"
        }
      },
      "required": [
        "name"
      ],
      "title": "User",
      "type": "object"
    },
    "UserClass": {
      "description": "The ACL class level of a user, setting a broad permission tier.\n\nAttributes\n----------\nGUEST : str\n    Most limited access; typically external or temporary users.\nSTANDARD : str\n    Default access level for regular users.\nTRUSTED : str\n    Elevated access above standard users.\nPRIVILEGED : str\n    High access level below full administrators.\nADMIN : str\n    Full administrative access to the tenant.",
      "enum": [
        "guest",
        "standard",
        "trusted",
        "privileged",
        "admin"
      ],
      "title": "UserClass",
      "type": "string"
    },
    "ValueValidation": {
      "description": "A validation rule constraining a [`ParameterValue`][albert.resources.parameter_groups.ParameterValue].\n\nDeclares the expected [`DataType`][albert.resources.parameter_groups.DataType] for a parameter value and, optionally,\nthe bounds or allowed options it must satisfy. Attach one or more of these to a\n[`ParameterValue`][albert.resources.parameter_groups.ParameterValue] via its ``validation`` field.\n\nWhen ``datatype`` is ``date`` or ``timestamp``, ``value``, ``min``, and ``max`` are\nstrings in the wire format documented on [`DataType`][albert.resources.parameter_groups.DataType].\n\n!!! example\n    ```python\n    from albert.resources.parameter_groups import (\n        DataType,\n        Operator,\n        ValueValidation,\n    )\n\n    rule = ValueValidation(\n        datatype=DataType.NUMBER,\n        operator=Operator.BETWEEN,\n        min=\"0\",\n        max=\"100\",\n    )\n    ```",
      "properties": {
        "datatype": {
          "$ref": "#/$defs/DataType",
          "description": "The data type the value must conform to. Required."
        },
        "value": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "$ref": "#/$defs/EnumValidationValue"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "For ``ENUM`` types, the list of allowed options (see [`EnumValidationValue`][albert.resources.parameter_groups.EnumValidationValue]); otherwise an optional expected value. For ``date`` and ``timestamp`` types, a string in the wire format documented on [`DataType`][albert.resources.parameter_groups.DataType].",
          "title": "Value"
        },
        "min": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The lower bound, used with ``operator``. For numeric types, a numeric string; for ``date`` and ``timestamp`` types, a string in the wire format documented on [`DataType`][albert.resources.parameter_groups.DataType].",
          "title": "Min"
        },
        "max": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The upper bound, used with ``operator``. For numeric types, a numeric string; for ``date`` and ``timestamp`` types, a string in the wire format documented on [`DataType`][albert.resources.parameter_groups.DataType].",
          "title": "Max"
        },
        "operator": {
          "anyOf": [
            {
              "$ref": "#/$defs/Operator"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The comparison operator applied against ``min`` and/or ``max``."
        }
      },
      "required": [
        "datatype"
      ],
      "title": "ValueValidation",
      "type": "object"
    },
    "Workflow": {
      "description": "A specific set of parameter setpoints: the independent variables of a test.\n\nA workflow (WFL) captures only the *independent variables* of a test, the parameters and\nthe setpoints (a value, plus a unit where applicable) they are fixed to. It is built from\none or more groupings of parameters, where each grouping is either a Data Template that\nhas pre-linked parameters or a Parameter Group. A single workflow can combine several\ngroupings, for example one Data Template's pre-linked parameters together with a couple of\nParameter Groups, each contributing its own parameter setpoints. Because a Data Template\ncan carry pre-linked parameters, it is used here exactly like a Parameter Group: purely to\ndescribe a set of parameters and their setpoints.\n\nA workflow does NOT include a Data Template's Data Columns (also called Results). Those are\nthe *dependent variables*, and they are recorded only in Property Data\n([`TaskPropertyData`][albert.resources.property_data.TaskPropertyData]). In short: the Workflow holds\nthe independent variables; Property Data holds the dependent variables (the measured\nresults).\n\nA workflow is uniquely identified by its full setpoint configuration: the value and\nunit of every setpoint, the order of parameters within each Data Template / Parameter\nGroup, and the order of those groups within the workflow. For this reason workflows are\n*found-or-created* rather than blindly created: build the object you want and pass it to\n[`create`][albert.collections.workflows.WorkflowCollection.create], which returns the\nexisting match or makes a new one. IDs look like ``WFL...``.\n\nEvery tenant includes a built-in workflow ``WFL1`` (\"No Parameter Group\") with no\nparameter groups or setpoints. Use it when a task or block does not involve parameter\ngroups; it does not need to be created via\n[`create`][albert.collections.workflows.WorkflowCollection.create].\n\nWhen one or two parameters are intervalized, the workflow acts as a *parent* that carries\nthe resulting [`IntervalCombination`][albert.resources.workflows.IntervalCombination] entries. Each combination has an interval ID of\nthe form ``ROW1`` (one intervalized parameter) or ``ROW1XROW2`` (product of two). Use\n[`get_interval_id`][albert.resources.workflows.Workflow.get_interval_id] to build the interval ID for a condition, then use it with the\nproperty_data endpoints to read or write that condition's results.\n\n!!! example\n    ```python\n    from albert import Albert\n    from albert.resources.workflows import (\n        Workflow,\n        ParameterGroupSetpoints,\n        ParameterSetpoint,\n    )\n\n    client = Albert()\n    # One workflow combining a Data Template's pre-linked parameters with two\n    # Parameter Groups. Each grouping is keyed by its DAT... or PRG... id.\n    workflow = Workflow(\n        name=\"Tensile test at 23C, 50% RH\",\n        parameter_group_setpoints=[\n            # Pre-linked parameters on a Data Template (used just like a PRG here)\n            ParameterGroupSetpoints(\n                id=\"DAT9999999\",\n                parameter_setpoints=[\n                    ParameterSetpoint(parameter_id=\"PRM9999999\", value=\"23\", short_name=\"Temperature\"),\n                    ParameterSetpoint(parameter_id=\"PRM2\", value=\"50\", short_name=\"Humidity\"),\n                ],\n            ),\n            # A Parameter Group describing sample prep\n            ParameterGroupSetpoints(\n                id=\"PRG9999999\",\n                parameter_setpoints=[\n                    ParameterSetpoint(parameter_id=\"PRM3\", value=\"24\", short_name=\"Cure Time\"),\n                ],\n            ),\n            # A second Parameter Group (e.g. the mixing step)\n            ParameterGroupSetpoints(\n                id=\"PRG2\",\n                parameter_setpoints=[\n                    ParameterSetpoint(parameter_id=\"PRM4\", value=\"2000\", short_name=\"Mix Speed\"),\n                ],\n            ),\n        ],\n    )\n    created = client.workflows.create(workflows=[workflow])\n    created[0].id\n    # 'WFL1'\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "name": {
          "description": "The name of the workflow.",
          "title": "Name",
          "type": "string"
        },
        "ParameterGroups": {
          "description": "The setpoints to apply, organized one entry per Data Template / Parameter Group. The order of these entries is part of the workflow's identity.",
          "items": {
            "$ref": "#/$defs/ParameterGroupSetpoints"
          },
          "title": "Parametergroups",
          "type": "array"
        },
        "IntervalCombinations": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/IntervalCombination"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The realized conditions when parameters are intervalized. Populated by the platform; present when the workflow is retrieved, not something you set when building one.",
          "title": "Intervalcombinations"
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert ID of the workflow (``WFL...``). Set when a workflow is created or retrieved from the platform.",
          "title": "Albertid"
        },
        "blockMapping": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Read-only / informational. When a Workflow is returned in the context of a block, this is hydrated for convenience. See Also --------",
          "title": "Blockmapping"
        },
        "category": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Category"
        }
      },
      "required": [
        "name"
      ],
      "title": "Workflow",
      "type": "object"
    }
  },
  "description": "A single unit of testing within a property or batch task.\n\nA block pairs a [`DataTemplate`][albert.resources.data_templates.DataTemplate]\n(the results/data columns to capture) with a\n[`Workflow`][albert.resources.workflows.Workflow] (the parameter conditions\nunder which the data is collected). A [`PropertyTask`][albert.resources.tasks.PropertyTask] or\n[`BatchTask`][albert.resources.tasks.BatchTask] can hold multiple blocks. Block IDs look like\n``\"BLK...\"``.\n\nBlocks are normally created and modified through the task collection rather\nthan constructed directly; see\n[`add_block`][albert.collections.tasks.TaskCollection.add_block],\n[`update_block_workflow`][albert.collections.tasks.TaskCollection.update_block_workflow], and\n[`remove_block`][albert.collections.tasks.TaskCollection.remove_block]. Measured\nresults for a block are recorded through\n[`PropertyDataCollection`][albert.collections.property_data.PropertyDataCollection].",
  "properties": {
    "id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The block's ID (``\"BLK...\"``). Assigned by Albert; ``None`` before the block is created.",
      "title": "Id"
    },
    "Workflow": {
      "description": "The workflow(s) defining the parameter conditions for the block.\n\nAt least one is required. When no parameter groups apply, use ``WFL1``, the\nplatform default workflow with no parameter groups (\"No Parameter Group\").\nIt is pre-provisioned and does not need to be created via\n[`create`][albert.collections.workflows.WorkflowCollection.create].\nFor custom setpoints, register a workflow via\n[`create`][albert.collections.workflows.WorkflowCollection.create] and link by ID.",
      "items": {
        "anyOf": [
          {
            "$ref": "#/$defs/Workflow"
          },
          {
            "$ref": "#/$defs/EntityLink"
          }
        ]
      },
      "minItems": 1,
      "title": "Workflow",
      "type": "array"
    },
    "Datatemplate": {
      "anyOf": [
        {
          "items": {
            "$ref": "#/$defs/BlockDataTemplateInfo"
          },
          "type": "array"
        },
        {
          "$ref": "#/$defs/DataTemplateAndTargets"
        },
        {
          "items": {
            "anyOf": [
              {
                "$ref": "#/$defs/DataTemplate"
              },
              {
                "$ref": "#/$defs/EntityLink"
              }
            ]
          },
          "type": "array"
        }
      ],
      "description": "The single data template describing the data columns to capture, and any associated targets.",
      "maxLength": 1,
      "minLength": 1,
      "title": "Datatemplate"
    },
    "parameterQuantityUsed": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Read-only internal mapping of parameter quantities consumed by the block.",
      "title": "Parameterquantityused"
    }
  },
  "required": [
    "Workflow",
    "Datatemplate"
  ],
  "title": "Block",
  "type": "object"
}

Fields:

id

id: str | None = None

The block's ID ("BLK..."). Assigned by Albert; None before the block is created.

workflow

workflow: list[SerializeAsEntityLink[Workflow]]

The workflow(s) defining the parameter conditions for the block.

At least one is required. When no parameter groups apply, use WFL1, the platform default workflow with no parameter groups ("No Parameter Group"). It is pre-provisioned and does not need to be created via create. For custom setpoints, register a workflow via create and link by ID.

data_template

data_template: (
    list[BlockDataTemplateInfo]
    | DataTemplateAndTargets
    | list[SerializeAsEntityLink[DataTemplate]]
)

The single data template describing the data columns to capture, and any associated targets.

parameter_quantity_used

parameter_quantity_used: dict | None = None

Read-only internal mapping of parameter quantities consumed by the block.

model_dump

model_dump(*args, **kwargs)
Source code in src/albert/resources/tasks.py
def model_dump(self, *args, **kwargs):
    # Use default serialization with customized field output.
    # Workflow and DataTemplate are both lists of length one, which is annoying to
    data = super().model_dump(*args, **kwargs)
    data["Workflow"] = [data["Workflow"]] if "Workflow" in data else None
    data["Datatemplate"] = [data["Datatemplate"]] if "Datatemplate" in data else None
    return data

QCTarget

Bases: BaseAlbertModel

Show JSON schema:
{
  "properties": {
    "formulaId": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Formulaid"
    },
    "target": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Target"
    }
  },
  "title": "QCTarget",
  "type": "object"
}

Fields:

formula_id

formula_id: str | None = None

target

target: str | None = None

QCWorkflowTargets

Bases: BaseAlbertModel

Show JSON schema:
{
  "$defs": {
    "QCTarget": {
      "properties": {
        "formulaId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Formulaid"
        },
        "target": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Target"
        }
      },
      "title": "QCTarget",
      "type": "object"
    }
  },
  "properties": {
    "id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Id"
    },
    "taskName": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Taskname"
    },
    "Targets": {
      "anyOf": [
        {
          "items": {
            "$ref": "#/$defs/QCTarget"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Targets"
    }
  },
  "title": "QCWorkflowTargets",
  "type": "object"
}

Fields:

workflow_id

workflow_id: str | None = None

task_name

task_name: str | None = None

targets

targets: list[QCTarget] | None = None

QCTaskData

Bases: BaseAlbertModel

Show JSON schema:
{
  "$defs": {
    "QCTarget": {
      "properties": {
        "formulaId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Formulaid"
        },
        "target": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Target"
        }
      },
      "title": "QCTarget",
      "type": "object"
    },
    "QCWorkflowTargets": {
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "taskName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Taskname"
        },
        "Targets": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/QCTarget"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Targets"
        }
      },
      "title": "QCWorkflowTargets",
      "type": "object"
    }
  },
  "properties": {
    "datatemplateId": {
      "title": "Datatemplateid",
      "type": "string"
    },
    "Workflows": {
      "anyOf": [
        {
          "items": {
            "$ref": "#/$defs/QCWorkflowTargets"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Workflows"
    }
  },
  "required": [
    "datatemplateId"
  ],
  "title": "QCTaskData",
  "type": "object"
}

Fields:

data_template_id

data_template_id: str

workflows

workflows: list[QCWorkflowTargets] | None = None

TaskEntityType

Bases: BaseAlbertModel

Show JSON schema:
{
  "properties": {
    "id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Id"
    },
    "customCategory": {
      "default": null,
      "title": "Customcategory",
      "type": "string"
    }
  },
  "title": "TaskEntityType",
  "type": "object"
}

Fields:

id

id: str | None = None

custom_category

custom_category: str = None

BaseTask

Bases: BaseTaggedResource

Shared fields and behavior for every kind of task.

A task is a unit of lab work. This base class is not used directly; instead pick the concrete type that matches the work:

  • PropertyTask: test and document properties of products, formulas, or raw materials. Holds Block objects and captures measured property data.
  • BatchTask: manufacture a batch of a formulation inside Albert.
  • GeneralTask: any other lab work (for example equipment calibration) that is neither a batch nor a property task.

Tasks are managed through TaskCollection (client.tasks). The category field distinguishes the subclasses and is set automatically by each one. Task IDs look like "TAS...".

Show JSON schema:
{
  "$defs": {
    "ACL": {
      "description": "A single access rule for a user.",
      "properties": {
        "id": {
          "description": "The id of the user for which this ACL applies",
          "title": "Id",
          "type": "string"
        },
        "fgc": {
          "anyOf": [
            {
              "$ref": "#/$defs/AccessControlLevel"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Fine-Grain Control Level"
        }
      },
      "required": [
        "id"
      ],
      "title": "ACL",
      "type": "object"
    },
    "AccessControlLevel": {
      "description": "Access control levels you can grant users.",
      "enum": [
        "ProjectOwner",
        "ProjectEditor",
        "ProjectViewer",
        "ProjectAllTask",
        "ProjectStrictViewer",
        "ProjectPropertyTask",
        "InventoryOwner",
        "InventoryViewer",
        "CustomTemplateOwner",
        "CustomTemplateViewer",
        "CASFullAccess"
      ],
      "title": "AccessControlLevel",
      "type": "string"
    },
    "AuditFields": {
      "description": "The audit fields for a resource",
      "properties": {
        "by": {
          "default": null,
          "title": "By",
          "type": "string"
        },
        "byName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Byname"
        },
        "at": {
          "anyOf": [
            {
              "format": "date-time",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "At"
        }
      },
      "title": "AuditFields",
      "type": "object"
    },
    "BlockLevelInventoryInformation": {
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "lotId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Lotid"
        },
        "invLotUniqueId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Invlotuniqueid"
        }
      },
      "required": [
        "id"
      ],
      "title": "BlockLevelInventoryInformation",
      "type": "object"
    },
    "BlockState": {
      "properties": {
        "id": {
          "description": "The ID of the block.",
          "title": "Id",
          "type": "string"
        },
        "expand": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Expand"
        },
        "Interval": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/IntervalId"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The IDs of the interval (e.g., id: ROW2XROW4)",
          "title": "Interval"
        },
        "Inventory": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/BlockLevelInventoryInformation"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Inventory"
        }
      },
      "required": [
        "id"
      ],
      "title": "BlockState",
      "type": "object"
    },
    "EntityLink": {
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "category": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Category"
        }
      },
      "required": [
        "id"
      ],
      "title": "EntityLink",
      "type": "object"
    },
    "EntityLinkWithName": {
      "description": "EntityLink that includes the name field in serialization.",
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "category": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Category"
        }
      },
      "required": [
        "id"
      ],
      "title": "EntityLinkWithName",
      "type": "object"
    },
    "GridDefault": {
      "description": "The default grid view shown for a project.\n\n- ``PD``: the Property Data grid.\n- ``WKS``: the Worksheet grid.",
      "enum": [
        "PD",
        "WKS"
      ],
      "title": "GridDefault",
      "type": "string"
    },
    "IntervalId": {
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        }
      },
      "required": [
        "id"
      ],
      "title": "IntervalId",
      "type": "object"
    },
    "Location": {
      "description": "A physical lab or site location in Albert.\n\nLocations are referenced by Tasks and Inventory Items to record where an\nactivity is performed or where a material lives, and each Location can hold\none or more Storage Locations\n([`StorageLocation`][albert.resources.storage_locations.StorageLocation]). Managed\nthrough [`LocationCollection`][albert.collections.locations.LocationCollection].\n\n!!! example\n    ```python\n    from albert.resources.locations import Location\n    location = Location(\n        name=\"Boston Lab\",\n        latitude=42.3601,\n        longitude=-71.0589,\n        address=\"1 Main St\",\n        country=\"US\",\n    )\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "name": {
          "description": "The human-readable name of the location.",
          "title": "Name",
          "type": "string"
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert ID of the location. Assigned by Albert and populated once the location has been created or retrieved.",
          "title": "Albertid"
        },
        "latitude": {
          "description": "The latitude of the location, in decimal degrees.",
          "title": "Latitude",
          "type": "number"
        },
        "longitude": {
          "description": "The longitude of the location, in decimal degrees.",
          "title": "Longitude",
          "type": "number"
        },
        "address": {
          "description": "The street address of the location.",
          "title": "Address",
          "type": "string"
        },
        "country": {
          "anyOf": [
            {
              "maxLength": 2,
              "minLength": 2,
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The two-letter country code of the location (for example, ``\"US\"``).",
          "title": "Country"
        }
      },
      "required": [
        "name",
        "latitude",
        "longitude",
        "address"
      ],
      "title": "Location",
      "type": "object"
    },
    "PageState": {
      "properties": {
        "leftPanelExpand": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Leftpanelexpand"
        },
        "Block": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/BlockState"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Block"
        }
      },
      "title": "PageState",
      "type": "object"
    },
    "Project": {
      "description": "A project in Albert: the top-level container for a piece of R&D work.\n\nA project groups the formulations designed for the work, its Worksheet (1:1\nwith the project), the Tasks run against it, and the inventory it references.\nCreate and manage projects through the\n[`ProjectCollection`][albert.collections.projects.ProjectCollection] (``client.projects``).\n\nOnly ``description`` is required to build one; it doubles as the project's\ndisplay name. The ``id`` and ``state`` are assigned by Albert and are read\nonly from the client's perspective.\n\n!!! example\n    ```python\n    from albert import Albert\n    from albert.resources.projects import Project, ProjectClass\n    client = Albert()\n    project = client.projects.create(\n        project=Project(\n            description=\"Weatherproof Coatings 2026\",\n            project_class=ProjectClass.SHARED,\n        )\n    )\n    project.id\n    # 'PRO123'\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Read-only status string returned by Albert.",
          "title": "Status"
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "description": {
          "description": "Human-readable project name/description (1-2000 characters). Also serves as the project's display name.",
          "maxLength": 2000,
          "minLength": 1,
          "title": "Description",
          "type": "string"
        },
        "Locations": {
          "anyOf": [
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/$defs/Location"
                  },
                  {
                    "$ref": "#/$defs/EntityLink"
                  }
                ]
              },
              "maxItems": 20,
              "minItems": 1,
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The locations the project is associated with. Optional.",
          "title": "Locations"
        },
        "class": {
          "anyOf": [
            {
              "$ref": "#/$defs/ProjectClass"
            },
            {
              "type": "null"
            }
          ],
          "default": "private",
          "description": "Access-control class (private, shared, or confidential). Defaults to private."
        },
        "prefix": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional prefix used when naming entities within the project.",
          "title": "Prefix"
        },
        "appEngg": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Inventory Ids to be added as application engineering",
          "title": "Appengg"
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert Project ID (format ``PRO...``). Assigned by Albert and present once the project has been created or retrieved.",
          "title": "Albertid"
        },
        "ACL": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/ACL"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "description": "Access-control entries controlling who can access the project. Optional.",
          "title": "Acl"
        },
        "old_api_params": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Read-only. Do not use.",
          "title": "Old Api Params"
        },
        "task_config": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/TaskConfig"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "description": "Default task settings applied to tasks created within the project.",
          "title": "Task Config"
        },
        "grid": {
          "anyOf": [
            {
              "$ref": "#/$defs/GridDefault"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The default grid view (Property Data or Worksheet) shown for the project."
        },
        "Metadata": {
          "anyOf": [
            {
              "additionalProperties": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "integer"
                  },
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/$defs/EntityLinkWithName"
                  },
                  {
                    "$ref": "#/$defs/EntityLink"
                  },
                  {
                    "items": {
                      "anyOf": [
                        {
                          "$ref": "#/$defs/EntityLinkWithName"
                        },
                        {
                          "$ref": "#/$defs/EntityLink"
                        }
                      ]
                    },
                    "type": "array"
                  }
                ]
              },
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Custom field values. Allowed keys and values are defined via the Custom Fields API. Optional.",
          "title": "Metadata"
        },
        "state": {
          "anyOf": [
            {
              "$ref": "#/$defs/State"
            },
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The project's lifecycle state. Read only on create; can be changed via [`update`][albert.collections.projects.ProjectCollection.update]. Tenant-customized states outside [`State`][albert.resources.projects.State] parse as plain strings.",
          "title": "State"
        }
      },
      "required": [
        "description"
      ],
      "title": "Project",
      "type": "object"
    },
    "ProjectClass": {
      "description": "The access-control class of a project, governing who can see it.\n\n- ``PRIVATE``: visible only to the project's ACL members (the default).\n- ``SHARED``: visible more broadly across the organization.\n- ``CONFIDENTIAL``: restricted, most tightly controlled access.",
      "enum": [
        "shared",
        "confidential",
        "private"
      ],
      "title": "ProjectClass",
      "type": "string"
    },
    "Role": {
      "description": "A named set of access permissions within a tenant.\n\nA role bundles policies that determine what a holder is allowed to do. Roles\nare assigned to users ([`User`][albert.resources.users.User]) and referenced\nby entity ACLs. Roles are typically read from Albert rather than built by\nhand.",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert ID of the role. Role IDs may contain ``#`` characters. Set once the role is retrieved from Albert.",
          "title": "Albertid"
        },
        "name": {
          "description": "The display name of the role.",
          "title": "Name",
          "type": "string"
        },
        "Policies": {
          "anyOf": [
            {
              "items": {},
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The policies (permission rules) associated with the role.",
          "title": "Policies"
        },
        "tenant": {
          "description": "The ID of the tenant the role belongs to.",
          "title": "Tenant",
          "type": "string"
        },
        "visibility": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Whether the role is visible in the platform's role listings.",
          "title": "Visibility"
        }
      },
      "required": [
        "name",
        "tenant"
      ],
      "title": "Role",
      "type": "object"
    },
    "SecurityClass": {
      "description": "The security (access control) class of a resource.\n\nAttributes\n----------\nSHARED : str\n    Accessible to all members of the tenant.\nRESTRICTED : str\n    Access is restricted to specific teams or users.\nCONFIDENTIAL : str\n    Access is limited to designated users only.\nPRIVATE : str\n    Visible only to the owner. Used by Projects.",
      "enum": [
        "shared",
        "restricted",
        "confidential",
        "private"
      ],
      "title": "SecurityClass",
      "type": "string"
    },
    "State": {
      "description": "The lifecycle state of a project.\n\nThe set of allowed states is customizable per tenant via the entity-status\nAPI; these are the platform defaults. Unknown tenant-specific values are\ntolerated as plain strings on [`Project.state`][albert.resources.projects.Project.state].",
      "enum": [
        "Not Started",
        "Active",
        "Closed - Success",
        "Closed - Archived",
        "Just Started",
        "In Progress"
      ],
      "title": "State",
      "type": "string"
    },
    "Status": {
      "description": "The status of a resource.\n\nAttributes\n----------\nACTIVE : str\n    The resource is fully operational and visible in normal operations.\nINACTIVE : str\n    The resource is hidden from normal operations and disabled from use.",
      "enum": [
        "active",
        "inactive"
      ],
      "title": "Status",
      "type": "string"
    },
    "Tag": {
      "description": "A freeform text label used to categorize and connect entities.\n\nTags are shared by name across the platform and can be applied to inventory\nitems, companies, tasks, and other records to group and filter them. Managed\nthrough [`TagCollection`][albert.collections.tags.TagCollection] (``client.tags``);\nthe usual entry point is [`get_or_create`][albert.collections.tags.TagCollection.get_or_create].\n\n!!! example\n    ```python\n    from albert.resources.tags import Tag\n    tag = Tag(tag=\"high-priority\")\n    ```\nMethods\n-------\nfrom_string(tag) -> Tag\n    Build a Tag from its name string.",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "name": {
          "description": "The name of the tag (its text label).",
          "title": "Name",
          "type": "string"
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert ID of the tag (format ``TAG...``). Set when the tag is retrieved from or created in Albert. Methods ------- from_string(tag) -> Tag Build a Tag from its name string.",
          "title": "Albertid"
        }
      },
      "required": [
        "name"
      ],
      "title": "Tag",
      "type": "object"
    },
    "TaskCategory": {
      "description": "The kind of lab work a task represents.\n\nThe category determines which concrete task class is used and is set\nautomatically by that subclass; you normally do not set it by hand.\n\nAttributes\n----------\nPROPERTY : str\n    Testing and documenting the properties of products, formulas, or raw\n    materials. Corresponds to [`PropertyTask`][albert.resources.tasks.PropertyTask].\nBATCH : str\n    Manufacturing a batch of a formulation inside Albert. Corresponds to\n    [`BatchTask`][albert.resources.tasks.BatchTask].\nGENERAL : str\n    Any lab work that is not a batch or property task (for example\n    equipment calibration). Corresponds to [`GeneralTask`][albert.resources.tasks.GeneralTask].\nBATCH_WITH_QC : str\n    A batch task that also carries quality-control data. A variant of\n    [`BatchTask`][albert.resources.tasks.BatchTask].",
      "enum": [
        "Property",
        "Batch",
        "General",
        "BatchWithQC"
      ],
      "title": "TaskCategory",
      "type": "string"
    },
    "TaskConfig": {
      "description": "Default task settings applied when tasks are created within a project.",
      "properties": {
        "datatemplateId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "ID of the data template tasks default to.",
          "title": "Datatemplateid"
        },
        "workflowId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "ID of the workflow tasks default to.",
          "title": "Workflowid"
        },
        "defaultTaskName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Default name applied to new tasks.",
          "title": "Defaulttaskname"
        },
        "target": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Default target for the configured tasks.",
          "title": "Target"
        },
        "hidden": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": false,
          "description": "Whether this configuration is hidden in the UI.",
          "title": "Hidden"
        }
      },
      "title": "TaskConfig",
      "type": "object"
    },
    "TaskEntityType": {
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "customCategory": {
          "default": null,
          "title": "Customcategory",
          "type": "string"
        }
      },
      "title": "TaskEntityType",
      "type": "object"
    },
    "TaskInventoryInformation": {
      "description": "Which inventory item (and optionally which lot) a task acts on.\n\nEvery task references one or more inventory items through this model, stored\non [`inventory_information`][albert.resources.tasks.BaseTask.inventory_information]. What is required depends on the\ntask type:\n\n- [`BatchTask`][albert.resources.tasks.BatchTask]: ``inventory_id`` and ``batch_size`` are required\n  (you are making a quantity of that item).\n- [`PropertyTask`][albert.resources.tasks.PropertyTask] and [`GeneralTask`][albert.resources.tasks.GeneralTask]: ``inventory_id`` is\n  required and ``lot_id`` is recommended (the specific physical lot tested).",
      "properties": {
        "id": {
          "description": "The ID of the inventory item used in the task (serialized as ``id``).",
          "title": "Id",
          "type": "string"
        },
        "lotId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The ID of the specific lot used. Recommended for property and general tasks so results attach to the right physical material.",
          "title": "Lotid"
        },
        "lotNumber": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The human-readable lot number of the item.",
          "title": "Lotnumber"
        },
        "invLotUniqueId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A combined inventory-and-lot identifier used internally.",
          "title": "Invlotuniqueid"
        },
        "batchSize": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The quantity to make of the related inventory item. Required for [`BatchTask`][albert.resources.tasks.BatchTask]; the unit is given by [`batch_size_unit`][albert.resources.tasks.BatchTask.batch_size_unit].",
          "title": "Batchsize"
        },
        "selectedLot": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Read-only. Whether this lot is the one selected for the task.",
          "title": "Selectedlot"
        },
        "barcodeId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The barcode identifier of the physical item, if scanned.",
          "title": "Barcodeid"
        },
        "quantityUsed": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The amount of the item consumed by the task.",
          "title": "Quantityused"
        }
      },
      "required": [
        "id"
      ],
      "title": "TaskInventoryInformation",
      "type": "object"
    },
    "TaskPriority": {
      "description": "How urgent a task is, used for triage and sorting work queues.\n\nAttributes\n----------\nHIGH : str\n    Highest urgency (``\"High\"``).\nMEDIUM : str\n    Normal urgency (``\"Medium\"``).\nLOW : str\n    Lowest urgency (``\"Low\"``).",
      "enum": [
        "High",
        "Medium",
        "Low"
      ],
      "title": "TaskPriority",
      "type": "string"
    },
    "TaskSource": {
      "description": "A reference to the task or template a task was created from.\n\nRecorded in [`sources`][albert.resources.tasks.BaseTask.sources] to trace where a task originated.",
      "properties": {
        "id": {
          "description": "The ID of the originating task or template.",
          "title": "Id",
          "type": "string"
        },
        "type": {
          "$ref": "#/$defs/TaskSourceType",
          "description": "Whether ``id`` points to a task or a template."
        }
      },
      "required": [
        "id",
        "type"
      ],
      "title": "TaskSource",
      "type": "object"
    },
    "TaskSourceType": {
      "description": "What kind of thing a task was created from.\n\nAttributes\n----------\nTASK : str\n    The task was created from another existing task (``\"task\"``).\nTEMPLATE : str\n    The task was created from a task template (``\"template\"``).",
      "enum": [
        "task",
        "template"
      ],
      "title": "TaskSourceType",
      "type": "string"
    },
    "TaskState": {
      "description": "Where a task is in its lifecycle, from creation through completion.\n\nThe state generally advances as work progresses: an unclaimed task is\npicked up, started, finished, and eventually closed (or cancelled).\n\nAttributes\n----------\nUNCLAIMED : str\n    Created but not yet assigned to or claimed by anyone.\nNOT_STARTED : str\n    Claimed or assigned, but work has not begun.\nIN_PROGRESS : str\n    Work is actively underway.\nCOMPLETED : str\n    The work has been finished.\nCLOSED : str\n    Finalized and no longer active.\nCANCELLED : str\n    Abandoned before completion.",
      "enum": [
        "Unclaimed",
        "Not Started",
        "In Progress",
        "Completed",
        "Closed",
        "Cancelled"
      ],
      "title": "TaskState",
      "type": "string"
    },
    "Team": {
      "description": "A named group of users on the Albert platform.\n\nTeams share access: entity ACLs and Task assignments can reference a whole\nteam rather than individual users. Each member is a\n[`TeamMember`][albert.resources.teams.TeamMember] pairing a\n[`User`][albert.resources.users.User] with a team role.\n\n!!! example\n    ```python\n    from albert.resources.teams import Team, TeamMember\n    team = Team(\n        name=\"Coatings R&D\",\n        members=[TeamMember(id=\"USR12\", role=\"TeamOwner\")],\n    )\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert Team ID (format ``TEM...``). Set once the team is registered in or retrieved from Albert.",
          "title": "Albertid"
        },
        "name": {
          "description": "The display name of the team.",
          "minLength": 1,
          "title": "Name",
          "type": "string"
        },
        "Users": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/TeamMember"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The members of the team, each with their name and team role.",
          "title": "Users"
        }
      },
      "required": [
        "name"
      ],
      "title": "Team",
      "type": "object"
    },
    "TeamMember": {
      "description": "A user's membership in a team, pairing a user with their team role.\n\n!!! example\n    ```python\n    from albert.resources.teams import TeamMember\n    member = TeamMember(id=\"USR12\", role=\"TeamOwner\")\n    ```",
      "properties": {
        "id": {
          "description": "The Albert User ID (format ``USR...``) of the member.",
          "title": "Id",
          "type": "string"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The display name of the user.",
          "title": "Name"
        },
        "fgc": {
          "anyOf": [
            {
              "enum": [
                "TeamOwner",
                "TeamViewer"
              ],
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The member's role within the team: ``\"TeamOwner\"`` (can manage the team) or ``\"TeamViewer\"`` (read access). Defaults to ``\"TeamViewer\"`` when unset.",
          "title": "Fgc"
        }
      },
      "required": [
        "id"
      ],
      "title": "TeamMember",
      "type": "object"
    },
    "User": {
      "description": "An Albert user account: a person who can log in and act in the platform.\n\nA user has a name and email, an optional home\n[`Location`][albert.resources.locations.Location], and a set of\n[`Role`][albert.resources.roles.Role] objects that govern what they can do.\nThe ``user_class`` sets a broad permission tier\n([`UserClass`][albert.resources.users.UserClass]). Users are grouped into teams\n([`Team`][albert.resources.teams.Team]), and are referenced across the\nplatform, for example as the assignee of a Task or in an entity's ACL.\n\n!!! example\n    ```python\n    from albert.resources.users import User, UserClass\n    user = User(\n        name=\"Ada Lovelace\",\n        email=\"ada@example.com\",\n        user_class=UserClass.STANDARD,\n    )\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "name": {
          "description": "The display name of the user.",
          "title": "Name",
          "type": "string"
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert User ID (format ``USR...``). Set once the user is registered in or retrieved from Albert.",
          "title": "Albertid"
        },
        "Location": {
          "anyOf": [
            {
              "$ref": "#/$defs/Location"
            },
            {
              "$ref": "#/$defs/EntityLink"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The user's home location.",
          "title": "Location"
        },
        "email": {
          "default": null,
          "description": "The user's email address.",
          "format": "email",
          "title": "Email",
          "type": "string"
        },
        "Roles": {
          "description": "The roles the user holds, which determine their permissions.",
          "items": {
            "anyOf": [
              {
                "$ref": "#/$defs/Role"
              },
              {
                "$ref": "#/$defs/EntityLink"
              }
            ]
          },
          "maxItems": 1,
          "title": "Roles",
          "type": "array"
        },
        "userClass": {
          "$ref": "#/$defs/UserClass",
          "default": "standard",
          "description": "The ACL class level of the user (broad permission tier)."
        },
        "witnesser": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Whether the user can act as a witness on tasks (only relevant when witnessing is enabled for the tenant).",
          "title": "Witnesser"
        },
        "Metadata": {
          "anyOf": [
            {
              "additionalProperties": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "integer"
                  },
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/$defs/EntityLinkWithName"
                  },
                  {
                    "$ref": "#/$defs/EntityLink"
                  },
                  {
                    "items": {
                      "anyOf": [
                        {
                          "$ref": "#/$defs/EntityLinkWithName"
                        },
                        {
                          "$ref": "#/$defs/EntityLink"
                        }
                      ]
                    },
                    "type": "array"
                  }
                ]
              },
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Custom metadata attached to the user.",
          "title": "Metadata"
        }
      },
      "required": [
        "name"
      ],
      "title": "User",
      "type": "object"
    },
    "UserClass": {
      "description": "The ACL class level of a user, setting a broad permission tier.\n\nAttributes\n----------\nGUEST : str\n    Most limited access; typically external or temporary users.\nSTANDARD : str\n    Default access level for regular users.\nTRUSTED : str\n    Elevated access above standard users.\nPRIVILEGED : str\n    High access level below full administrators.\nADMIN : str\n    Full administrative access to the tenant.",
      "enum": [
        "guest",
        "standard",
        "trusted",
        "privileged",
        "admin"
      ],
      "title": "UserClass",
      "type": "string"
    }
  },
  "description": "Shared fields and behavior for every kind of task.\n\nA task is a unit of lab work. This base class is not used directly; instead\npick the concrete type that matches the work:\n\n- [`PropertyTask`][albert.resources.tasks.PropertyTask]: test and document properties of products,\n  formulas, or raw materials. Holds [`Block`][albert.resources.tasks.Block] objects and captures\n  measured property data.\n- [`BatchTask`][albert.resources.tasks.BatchTask]: manufacture a batch of a formulation inside Albert.\n- [`GeneralTask`][albert.resources.tasks.GeneralTask]: any other lab work (for example equipment\n  calibration) that is neither a batch nor a property task.\n\nTasks are managed through\n[`TaskCollection`][albert.collections.tasks.TaskCollection] (``client.tasks``). The\n[`category`][albert.resources.tasks.BaseTask.category] field distinguishes the subclasses and is set\nautomatically by each one. Task IDs look like ``\"TAS...\"``.",
  "properties": {
    "status": {
      "anyOf": [
        {
          "$ref": "#/$defs/Status"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The status of the resource, optional."
    },
    "Created": {
      "anyOf": [
        {
          "$ref": "#/$defs/AuditFields"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Audit fields for the creation of the resource, optional."
    },
    "Updated": {
      "anyOf": [
        {
          "$ref": "#/$defs/AuditFields"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Audit fields for the update of the resource, optional."
    },
    "Tags": {
      "anyOf": [
        {
          "items": {
            "anyOf": [
              {
                "$ref": "#/$defs/Tag"
              },
              {
                "$ref": "#/$defs/EntityLink"
              }
            ]
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "A list of Tag objects or strings representing tags.",
      "title": "Tags"
    },
    "albertId": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The task's ID (``\"TAS...\"``, serialized as ``albertId``). Assigned by Albert; ``None`` before the task is created.",
      "title": "Albertid"
    },
    "name": {
      "description": "Human-readable name of the task. Required.",
      "title": "Name",
      "type": "string"
    },
    "category": {
      "$ref": "#/$defs/TaskCategory",
      "description": "The task type. Set automatically by the concrete subclass."
    },
    "parentId": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The ID of the parent project this task belongs to.",
      "title": "Parentid"
    },
    "Metadata": {
      "additionalProperties": {
        "anyOf": [
          {
            "type": "number"
          },
          {
            "type": "integer"
          },
          {
            "type": "string"
          },
          {
            "$ref": "#/$defs/EntityLinkWithName"
          },
          {
            "$ref": "#/$defs/EntityLink"
          },
          {
            "items": {
              "anyOf": [
                {
                  "$ref": "#/$defs/EntityLinkWithName"
                },
                {
                  "$ref": "#/$defs/EntityLink"
                }
              ]
            },
            "type": "array"
          }
        ]
      },
      "description": "Custom metadata fields keyed by name.",
      "title": "Metadata",
      "type": "object"
    },
    "Sources": {
      "anyOf": [
        {
          "items": {
            "$ref": "#/$defs/TaskSource"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "description": "The task(s) or template(s) this task was created from.",
      "title": "Sources"
    },
    "Inventories": {
      "default": null,
      "description": "The inventory item(s) (and optionally lot(s)) the task acts on.",
      "items": {
        "$ref": "#/$defs/TaskInventoryInformation"
      },
      "title": "Inventories",
      "type": "array"
    },
    "Location": {
      "anyOf": [
        {
          "$ref": "#/$defs/Location"
        },
        {
          "$ref": "#/$defs/EntityLink"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Where the task is performed.",
      "title": "Location"
    },
    "priority": {
      "anyOf": [
        {
          "$ref": "#/$defs/TaskPriority"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The task's urgency."
    },
    "class": {
      "anyOf": [
        {
          "$ref": "#/$defs/SecurityClass"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Access-control classification (serialized as ``class``)."
    },
    "passOrFail": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Whether the task is evaluated as pass/fail.",
      "title": "Passorfail"
    },
    "notes": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Free-text notes.",
      "title": "Notes"
    },
    "startDate": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Read-only. Date work started (``YYYY-MM-DD``).",
      "title": "Startdate"
    },
    "dueDate": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Target completion date (``YYYY-MM-DD``).",
      "title": "Duedate"
    },
    "claimedDate": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Read-only. Date the task was claimed.",
      "title": "Claimeddate"
    },
    "completedDate": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Read-only. Date the task was completed.",
      "title": "Completeddate"
    },
    "closedDate": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Read-only. Date the task was closed.",
      "title": "Closeddate"
    },
    "result": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Overall result summary for the task.",
      "title": "Result"
    },
    "state": {
      "anyOf": [
        {
          "$ref": "#/$defs/TaskState"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Current lifecycle state of the task."
    },
    "Project": {
      "anyOf": [
        {
          "$ref": "#/$defs/Project"
        },
        {
          "$ref": "#/$defs/EntityLink"
        },
        {
          "items": {
            "anyOf": [
              {
                "$ref": "#/$defs/Project"
              },
              {
                "$ref": "#/$defs/EntityLink"
              }
            ]
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The project(s) the task is associated with.",
      "title": "Project"
    },
    "AssignedTo": {
      "anyOf": [
        {
          "$ref": "#/$defs/User"
        },
        {
          "$ref": "#/$defs/EntityLinkWithName"
        },
        {
          "$ref": "#/$defs/Team"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The user or team responsible for the task.",
      "title": "Assignedto"
    },
    "PageState": {
      "anyOf": [
        {
          "$ref": "#/$defs/PageState"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Internal UI layout state for the task page."
    },
    "EntityType": {
      "anyOf": [
        {
          "$ref": "#/$defs/TaskEntityType"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Internal entity-type classification. See Also --------"
    }
  },
  "required": [
    "name",
    "category"
  ],
  "title": "BaseTask",
  "type": "object"
}

Fields:

id

id: str | None = None

The task's ID ("TAS...", serialized as albertId). Assigned by Albert; None before the task is created.

name

name: str

Human-readable name of the task. Required.

category

category: TaskCategory

The task type. Set automatically by the concrete subclass.

parent_id

parent_id: str | None = None

The ID of the parent project this task belongs to.

metadata

metadata: dict[str, MetadataItem]

Custom metadata fields keyed by name.

sources

sources: list[TaskSource] | None

The task(s) or template(s) this task was created from.

inventory_information

inventory_information: list[TaskInventoryInformation] = None

The inventory item(s) (and optionally lot(s)) the task acts on.

location

location: SerializeAsEntityLink[Location] | None = None

Where the task is performed.

priority

priority: TaskPriority | None = None

The task's urgency.

security_class

security_class: SecurityClass | None = None

Access-control classification (serialized as class).

pass_fail

pass_fail: bool | None = None

Whether the task is evaluated as pass/fail.

notes

notes: str | None = None

Free-text notes.

start_date

start_date: str | None = None

Read-only. Date work started (YYYY-MM-DD).

due_date

due_date: str | None = None

Target completion date (YYYY-MM-DD).

claimed_date

claimed_date: str | None = None

Read-only. Date the task was claimed.

completed_date

completed_date: str | None = None

Read-only. Date the task was completed.

closed_date

closed_date: str | None = None

Read-only. Date the task was closed.

result

result: str | None = None

Overall result summary for the task.

state

state: TaskState | None = None

Current lifecycle state of the task.

project

project: (
    SerializeAsEntityLink[Project]
    | list[SerializeAsEntityLink[Project]]
    | None
) = None

The project(s) the task is associated with.

assigned_to

assigned_to: (
    SerializeAsEntityLinkWithName[User]
    | SerializeAsEntityLinkWithName[Team]
    | None
) = None

The user or team responsible for the task.

page_state

page_state: PageState | None = None

Internal UI layout state for the task page.

entity_type

entity_type: TaskEntityType | None = None

Internal entity-type classification. See Also --------

PropertyTask

Bases: BaseTask

A task that tests and documents the properties of a material.

Use a property task to measure and record properties of products, formulas, or raw materials. A property task holds one or more Block objects, each pairing a data template (what to capture) with a workflow (the conditions). Measured results are recorded per block, interval, and trial through PropertyDataCollection (client.property_data) and roll up to the associated inventory item's properties.

Inherits all shared fields from BaseTask. Its category is always PROPERTY. Create and manage property tasks with TaskCollection (client.tasks); add blocks with add_block.

Example

from albert.resources.tasks import PropertyTask

task = PropertyTask(name="Viscosity screen", parent_id="PROA9999999")
Notes

All other fields (location, priority, due_date, state, assigned_to, dates, and so on) are inherited from BaseTask.

Show JSON schema:
{
  "$defs": {
    "ACL": {
      "description": "A single access rule for a user.",
      "properties": {
        "id": {
          "description": "The id of the user for which this ACL applies",
          "title": "Id",
          "type": "string"
        },
        "fgc": {
          "anyOf": [
            {
              "$ref": "#/$defs/AccessControlLevel"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Fine-Grain Control Level"
        }
      },
      "required": [
        "id"
      ],
      "title": "ACL",
      "type": "object"
    },
    "AccessControlLevel": {
      "description": "Access control levels you can grant users.",
      "enum": [
        "ProjectOwner",
        "ProjectEditor",
        "ProjectViewer",
        "ProjectAllTask",
        "ProjectStrictViewer",
        "ProjectPropertyTask",
        "InventoryOwner",
        "InventoryViewer",
        "CustomTemplateOwner",
        "CustomTemplateViewer",
        "CASFullAccess"
      ],
      "title": "AccessControlLevel",
      "type": "string"
    },
    "AuditFields": {
      "description": "The audit fields for a resource",
      "properties": {
        "by": {
          "default": null,
          "title": "By",
          "type": "string"
        },
        "byName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Byname"
        },
        "at": {
          "anyOf": [
            {
              "format": "date-time",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "At"
        }
      },
      "title": "AuditFields",
      "type": "object"
    },
    "Axis": {
      "enum": [
        "X",
        "Y"
      ],
      "title": "Axis",
      "type": "string"
    },
    "Block": {
      "description": "A single unit of testing within a property or batch task.\n\nA block pairs a [`DataTemplate`][albert.resources.data_templates.DataTemplate]\n(the results/data columns to capture) with a\n[`Workflow`][albert.resources.workflows.Workflow] (the parameter conditions\nunder which the data is collected). A [`PropertyTask`][albert.resources.tasks.PropertyTask] or\n[`BatchTask`][albert.resources.tasks.BatchTask] can hold multiple blocks. Block IDs look like\n``\"BLK...\"``.\n\nBlocks are normally created and modified through the task collection rather\nthan constructed directly; see\n[`add_block`][albert.collections.tasks.TaskCollection.add_block],\n[`update_block_workflow`][albert.collections.tasks.TaskCollection.update_block_workflow], and\n[`remove_block`][albert.collections.tasks.TaskCollection.remove_block]. Measured\nresults for a block are recorded through\n[`PropertyDataCollection`][albert.collections.property_data.PropertyDataCollection].",
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The block's ID (``\"BLK...\"``). Assigned by Albert; ``None`` before the block is created.",
          "title": "Id"
        },
        "Workflow": {
          "description": "The workflow(s) defining the parameter conditions for the block.\n\nAt least one is required. When no parameter groups apply, use ``WFL1``, the\nplatform default workflow with no parameter groups (\"No Parameter Group\").\nIt is pre-provisioned and does not need to be created via\n[`create`][albert.collections.workflows.WorkflowCollection.create].\nFor custom setpoints, register a workflow via\n[`create`][albert.collections.workflows.WorkflowCollection.create] and link by ID.",
          "items": {
            "anyOf": [
              {
                "$ref": "#/$defs/Workflow"
              },
              {
                "$ref": "#/$defs/EntityLink"
              }
            ]
          },
          "minItems": 1,
          "title": "Workflow",
          "type": "array"
        },
        "Datatemplate": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/BlockDataTemplateInfo"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/DataTemplateAndTargets"
            },
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/$defs/DataTemplate"
                  },
                  {
                    "$ref": "#/$defs/EntityLink"
                  }
                ]
              },
              "type": "array"
            }
          ],
          "description": "The single data template describing the data columns to capture, and any associated targets.",
          "maxLength": 1,
          "minLength": 1,
          "title": "Datatemplate"
        },
        "parameterQuantityUsed": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Read-only internal mapping of parameter quantities consumed by the block.",
          "title": "Parameterquantityused"
        }
      },
      "required": [
        "Workflow",
        "Datatemplate"
      ],
      "title": "Block",
      "type": "object"
    },
    "BlockDataTemplateInfo": {
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "name": {
          "title": "Name",
          "type": "string"
        },
        "fullName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Fullname"
        },
        "Standards": {
          "anyOf": [
            {
              "$ref": "#/$defs/Standard"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "Targets": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/Target"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Targets"
        }
      },
      "required": [
        "id",
        "name"
      ],
      "title": "BlockDataTemplateInfo",
      "type": "object"
    },
    "BlockLevelInventoryInformation": {
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "lotId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Lotid"
        },
        "invLotUniqueId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Invlotuniqueid"
        }
      },
      "required": [
        "id"
      ],
      "title": "BlockLevelInventoryInformation",
      "type": "object"
    },
    "BlockState": {
      "properties": {
        "id": {
          "description": "The ID of the block.",
          "title": "Id",
          "type": "string"
        },
        "expand": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Expand"
        },
        "Interval": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/IntervalId"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The IDs of the interval (e.g., id: ROW2XROW4)",
          "title": "Interval"
        },
        "Inventory": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/BlockLevelInventoryInformation"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Inventory"
        }
      },
      "required": [
        "id"
      ],
      "title": "BlockState",
      "type": "object"
    },
    "CSVMapping": {
      "description": "A mapping between CSV column headers and data column IDs.",
      "properties": {
        "mapId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A compact mapping string (e.g. ``\"Header1:DAC2900#Header2:DAC4707\"``).",
          "examples": "Header1:DAC2900#Header2:DAC4707",
          "title": "Mapid"
        },
        "mapData": {
          "anyOf": [
            {
              "additionalProperties": {
                "type": "string"
              },
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A dictionary mapping CSV header names to data column IDs.",
          "examples": {
            "Header1": "DAC2900",
            "Header2": "DAC4707"
          },
          "title": "Mapdata"
        }
      },
      "title": "CSVMapping",
      "type": "object"
    },
    "Cas": {
      "description": "A CAS entry: a chemical substance identified by its CAS Registry Number.\n\nA ``Cas`` is Albert's dictionary record for a substance. Raw-material Inventory\nItems reference these entries to declare what they are made of, pairing each\n``Cas`` with an amount (see [`CasAmount`][albert.resources.inventory.CasAmount]).\nManage entries through\n[`CasCollection`][albert.collections.cas.CasCollection] (``client.cas``): most fields\nare populated by Albert, so you typically only build a ``Cas`` from a registry\n``number`` when creating a new entry.\n\n!!! example\n    ```python\n    from albert.resources.cas import Cas\n    # Build a CAS entry to register a new substance\n    cas = Cas(number=\"7727-37-9\")\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "number": {
          "description": "The CAS number.",
          "title": "Number",
          "type": "string"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Name of the CAS.",
          "title": "Name"
        },
        "description": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The description or name of the CAS.",
          "title": "Description"
        },
        "notes": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Notes related to the CAS.",
          "title": "Notes"
        },
        "category": {
          "anyOf": [
            {
              "$ref": "#/$defs/CasCategory"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The category of the CAS."
        },
        "casSmiles": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "CAS SMILES notation.",
          "title": "Cassmiles"
        },
        "inchiKey": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "InChIKey of the CAS.",
          "title": "Inchikey"
        },
        "iUpacName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "IUPAC name of the CAS.",
          "title": "Iupacname"
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The AlbertID of the CAS.",
          "title": "Albertid"
        },
        "hazards": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/Hazard"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Hazards associated with the CAS.",
          "title": "Hazards"
        },
        "wgk": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "German Water Hazard Class (WGK) number.",
          "title": "Wgk"
        },
        "ecListNo": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "European Community (EC) number.",
          "title": "Eclistno"
        },
        "type": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Internal classification_type reference.",
          "title": "Type"
        },
        "classificationType": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Classification type of the CAS.",
          "title": "Classificationtype"
        },
        "order": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "CAS order.",
          "title": "Order"
        },
        "Metadata": {
          "additionalProperties": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "integer"
              },
              {
                "type": "string"
              },
              {
                "$ref": "#/$defs/EntityLinkWithName"
              },
              {
                "$ref": "#/$defs/EntityLink"
              },
              {
                "items": {
                  "anyOf": [
                    {
                      "$ref": "#/$defs/EntityLinkWithName"
                    },
                    {
                      "$ref": "#/$defs/EntityLink"
                    }
                  ]
                },
                "type": "array"
              }
            ]
          },
          "description": "Custom metadata keyed by field. Updatable.",
          "title": "Metadata",
          "type": "object"
        }
      },
      "required": [
        "number"
      ],
      "title": "Cas",
      "type": "object"
    },
    "CasAmount": {
      "description": "A single CAS constituent and its concentration within an [`InventoryItem`][albert.resources.inventory.InventoryItem].\n\nA ``CasAmount`` links one CAS number (a chemical substance identifier) to the\namount of that substance present in an inventory item, expressed as a range\n(``min`` to ``max``) with an optional ``target``. A list of these on an\n[`InventoryItem`][albert.resources.inventory.InventoryItem] gives the item's compositional breakdown.\n\nIdentify the CAS in one of two ways: pass a full [`Cas`][albert.resources.cas.Cas]\nobject as ``cas`` (its ``id``, ``number``, and ``cas_smiles`` are then copied onto\nthis amount), or pass just the CAS resource ``id`` string. Do not pass both.\n\n!!! example\n    ```python\n    from albert.resources.inventory import CasAmount\n\n    # Reference an existing CAS resource by its Albert ID, 10-30% concentration\n    amount = CasAmount(min=10.0, max=30.0, id=\"CAS1\")\n    ```",
      "properties": {
        "min": {
          "description": "The minimum amount (concentration) of the CAS in the item.",
          "title": "Min",
          "type": "number"
        },
        "max": {
          "description": "The maximum amount (concentration) of the CAS in the item.",
          "title": "Max",
          "type": "number"
        },
        "inventoryValue": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The target amount of the CAS in the item. Serialized as ``inventoryValue``.",
          "title": "Inventoryvalue"
        },
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert ID of the CAS resource this amount represents. Provide either a ``cas`` object or an ``id``; when ``cas`` is given, this is set from it.",
          "title": "Id"
        },
        "casCategory": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Whether the CAS is a trade secret.",
          "title": "Cascategory"
        },
        "inventoryFunction": {
          "anyOf": [
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/$defs/ListItem"
                  },
                  {
                    "$ref": "#/$defs/EntityLink"
                  },
                  {
                    "type": "string"
                  }
                ]
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Business-controlled functions associated with the CAS in this inventory context (e.g. what role the substance plays). Values come from a managed list.",
          "title": "Inventoryfunction"
        },
        "type": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The CAS type. Can be retrieved from the CAS collection before construction.",
          "title": "Type"
        },
        "classificationType": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The EU classification source for the CAS: harmonized, notified, or REACH.",
          "title": "Classificationtype"
        },
        "substanceId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The substance ID linked to this CAS entry.",
          "title": "Substanceid"
        },
        "cas": {
          "anyOf": [
            {
              "$ref": "#/$defs/Cas"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The full CAS object associated with this amount. Read-only after init; excluded from serialization. Provide either a ``cas`` or an ``id``."
        },
        "casSmiles": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The SMILES string of the CAS resource. Read-only; set from the ``cas`` object.",
          "title": "Cassmiles"
        },
        "number": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The CAS number (e.g. ``\"7440-32-6\"``). Read-only; set from the ``cas`` object.",
          "title": "Number"
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit metadata for creation. Read-only."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/CasAuditFieldsWithEmail"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit metadata for the last update. Read-only. See Also --------"
        }
      },
      "required": [
        "min",
        "max"
      ],
      "title": "CasAmount",
      "type": "object"
    },
    "CasAuditFieldsWithEmail": {
      "description": "The audit fields for a CAS resource with email",
      "properties": {
        "by": {
          "default": null,
          "title": "By",
          "type": "string"
        },
        "byName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Byname"
        },
        "at": {
          "anyOf": [
            {
              "format": "date-time",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "At"
        },
        "email": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Email"
        }
      },
      "title": "CasAuditFieldsWithEmail",
      "type": "object"
    },
    "CasCategory": {
      "enum": [
        "User",
        "Verisk",
        "TSCA - Public",
        "TSCA - Private",
        "not TSCA",
        "CAS linked to External Database",
        "Unknown (Trade Secret)",
        "CL_Inventory Upload"
      ],
      "title": "CasCategory",
      "type": "string"
    },
    "Company": {
      "description": "A manufacturing company or supplier tracked in Albert.\n\nA Company is the organization that makes or supplies a material. It is the\n``company`` linked on raw-material inventory items: each raw material points\nback to the Company that manufactures it (see\n[`InventoryItem`][albert.resources.inventory.InventoryItem]). Companies are managed\nthrough [`CompanyCollection`][albert.collections.companies.CompanyCollection], accessed as\n``client.companies``.\n\nCompanies are identified by a Company ID (format ``COM...``). A Company is\ntypically minimal: a name plus its assigned ID. You construct one directly\n(``Company(name=\"Acme Chemicals\")``) to create it or to attach it to an\ninventory item.\n\n!!! example\n    ```python\n    from albert.resources.companies import Company\n\n    # Build a company to create or attach to an inventory item\n    company = Company(name=\"Acme Chemicals\")\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "name": {
          "description": "The company's name. This is the primary identifier used when searching for or creating a company.",
          "title": "Name",
          "type": "string"
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert Company ID (format ``COM...``). ``None`` until the company is created in or retrieved from Albert.",
          "title": "Albertid"
        },
        "distance": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Search-relevance score returned when the company comes back as a search result. Read-only; not set on companies you build yourself.",
          "title": "Distance"
        }
      },
      "required": [
        "name"
      ],
      "title": "Company",
      "type": "object"
    },
    "CurveDBMetadata": {
      "description": "Database metadata for a curve data column result.",
      "properties": {
        "tableName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Athena/database table name storing the curve data.",
          "title": "Tablename"
        },
        "partitionKey": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The partition key for the curve data table.",
          "title": "Partitionkey"
        }
      },
      "title": "CurveDBMetadata",
      "type": "object"
    },
    "CurveDataEntityLink": {
      "description": "A link to a data column that provides one axis of a curve dataset.",
      "properties": {
        "id": {
          "description": "The data column ID.",
          "title": "Id",
          "type": "string"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "category": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Category"
        },
        "axis": {
          "anyOf": [
            {
              "$ref": "#/$defs/Axis"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Which axis this column represents (X or Y)."
        },
        "Unit": {
          "anyOf": [
            {
              "$ref": "#/$defs/Unit"
            },
            {
              "$ref": "#/$defs/EntityLink"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The unit of measure for this axis.",
          "title": "Unit"
        }
      },
      "required": [
        "id"
      ],
      "title": "CurveDataEntityLink",
      "type": "object"
    },
    "DataColumn": {
      "description": "The definition of a single measured result variable in Albert.\n\nA Data Column (DAC) defines one direct output variable that a task can\nmeasure, such as ``Viscosity`` or ``APHA Color``. Data columns are the\nreusable building blocks of a Data Template's results: a\n[`DataTemplate`][albert.resources.data_templates.DataTemplate] references data columns\nthrough its ``data_column_values``, and the values recorded against a data\ncolumn during experiments are stored as Property Data.\n\nData columns are identified by a Data Column ID (format ``DAC...``, e.g.\n``\"DAC9999999\"``) and are managed through\n[`DataColumnCollection`][albert.collections.data_columns.DataColumnCollection], accessed as\n``client.data_columns``.\n\n!!! example\n    ```python\n    from albert import Albert\n    from albert.resources.data_columns import DataColumn\n    client = Albert()\n    column = DataColumn(name=\"Viscosity\")\n    created = client.data_columns.create(data_column=column)\n    created.id\n    # 'DAC9999999'\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "name": {
          "description": "The name of the data column (e.g. ``\"Viscosity\"``).",
          "title": "Name",
          "type": "string"
        },
        "defalt": {
          "default": false,
          "title": "Defalt",
          "type": "boolean"
        },
        "Metadata": {
          "anyOf": [
            {
              "additionalProperties": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "integer"
                  },
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/$defs/EntityLinkWithName"
                  },
                  {
                    "$ref": "#/$defs/EntityLink"
                  },
                  {
                    "items": {
                      "anyOf": [
                        {
                          "$ref": "#/$defs/EntityLinkWithName"
                        },
                        {
                          "$ref": "#/$defs/EntityLink"
                        }
                      ]
                    },
                    "type": "array"
                  }
                ]
              },
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Custom metadata keyed by field name. Values may be strings, numbers, or entity links.",
          "title": "Metadata"
        },
        "albertId": {
          "default": null,
          "description": "The Data Column ID assigned by Albert (format ``DAC...``). Populated by the server on creation; leave unset when building a column to create.",
          "title": "Albertid",
          "type": "string"
        }
      },
      "required": [
        "name"
      ],
      "title": "DataColumn",
      "type": "object"
    },
    "DataColumnValue": {
      "description": "A result data column on a Data Template.\n\nA ``DataColumnValue`` binds a [`DataColumn`][albert.resources.data_columns.DataColumn] to\na Data Template as one of the results the test captures (a \"direct variable\"). Data\ncolumns can be typed numeric, text, dropdown/enum, image, curve, date, or timestamp.\nOn a Data Template the ``value`` typically holds an example value shown on the\ndetails page rather than measured data; actual measurements are stored as Property\nData. When constructing one, provide either ``data_column`` or ``data_column_id``.\n\n!!! example\n    ```python\n    from albert.resources.data_templates import DataColumnValue\n\n    column = DataColumnValue(data_column_id=\"DAC9999999\", value=\"42\")\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "data_column": {
          "anyOf": [
            {
              "$ref": "#/$defs/DataColumn"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The full DataColumn resource this value binds to. Provide this or ``data_column_id``. Not serialized."
        },
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The ID of the bound DataColumn (format ``DAC...``). Serialized as ``id``. Provide this or ``data_column``.",
          "title": "Id"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The display name of the column.",
          "title": "Name"
        },
        "originalName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The original column name as stored in Albert. Read-only.",
          "title": "Originalname"
        },
        "value": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The column's example/default value shown on the Data Template details page.",
          "title": "Value"
        },
        "hidden": {
          "default": false,
          "description": "Whether the column is hidden. Defaults to False.",
          "title": "Hidden",
          "type": "boolean"
        },
        "Unit": {
          "anyOf": [
            {
              "$ref": "#/$defs/Unit"
            },
            {
              "$ref": "#/$defs/EntityLink"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The unit of measure for the column.",
          "title": "Unit"
        },
        "calculation": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A calculation expression for a computed column.",
          "title": "Calculation"
        },
        "sequence": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The column's position within the template. Assigned by Albert.",
          "title": "Sequence"
        },
        "script": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Script"
        },
        "athena": {
          "anyOf": [
            {
              "$ref": "#/$defs/CurveDBMetadata"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "s3Key": {
          "anyOf": [
            {
              "$ref": "#/$defs/StorageKeyReference"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "job": {
          "anyOf": [
            {
              "$ref": "#/$defs/JobSummary"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "csvMapping": {
          "anyOf": [
            {
              "additionalProperties": {
                "type": "string"
              },
              "type": "object"
            },
            {
              "$ref": "#/$defs/CSVMapping"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Csvmapping"
        },
        "validation": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/ValueValidation"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "description": "Validation rules applied to the column value (e.g. enum options, numeric range).",
          "title": "Validation"
        },
        "CurveData": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/CurveDataEntityLink"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "For curve columns, the linked X/Y curve result columns.",
          "title": "Curvedata"
        }
      },
      "title": "DataColumnValue",
      "type": "object"
    },
    "DataTemplate": {
      "description": "A definition of what a test captures (a DAT).\n\nA ``DataTemplate`` (Data Template, ID format ``DAT...``) describes a test in two\nparts: its ``data_column_values`` are the measured RESULTS (the data columns, or\n\"direct variables\"), and its ``parameter_values`` are the CONDITIONS under which\nthe test is run (the \"indirect variables\"). A Data Template does not itself store\nmeasured values; those are recorded as Property Data. When the template is paired\nwith a Workflow inside a Block, only its parameters (not its result columns) flow\ninto the Workflow's setpoints.\n\nTemplates are managed through\n[`DataTemplateCollection`][albert.collections.data_templates.DataTemplateCollection]\n(``client.data_templates``).\n\n!!! example\n    ```python\n    from albert.resources.data_templates import DataTemplate, DataColumnValue\n\n    template = DataTemplate(\n        name=\"Tensile Strength Test\",\n        data_column_values=[DataColumnValue(data_column_id=\"DAC9999999\")],\n    )\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "Tags": {
          "anyOf": [
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/$defs/Tag"
                  },
                  {
                    "$ref": "#/$defs/EntityLink"
                  }
                ]
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A list of Tag objects or strings representing tags.",
          "title": "Tags"
        },
        "name": {
          "description": "The name of the data template. Required.",
          "title": "Name",
          "type": "string"
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert Data Template ID (format ``DAT...``). Set when the template is retrieved from or created in Albert. Serialized as ``albertId``.",
          "title": "Albertid"
        },
        "description": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A free-text description of the template.",
          "title": "Description"
        },
        "class": {
          "anyOf": [
            {
              "$ref": "#/$defs/SecurityClass"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The access/security class of the template. Serialized as ``class``."
        },
        "verified": {
          "default": false,
          "description": "The approval/governance state of the template. Defaults to False.",
          "title": "Verified",
          "type": "boolean"
        },
        "ACL": {
          "anyOf": [
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/$defs/User"
                  },
                  {
                    "$ref": "#/$defs/EntityLink"
                  }
                ]
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The access-control list of users who can access the template. Serialized as ``ACL``.",
          "title": "Acl"
        },
        "DataColumns": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/DataColumnValue"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The measured results the test captures (its data columns / direct variables). See [`DataColumnValue`][albert.resources.data_templates.DataColumnValue].",
          "title": "Datacolumns"
        },
        "Parameters": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/ParameterValue"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The conditions under which the test is run (its indirect variables). See [`ParameterValue`][albert.resources.parameter_groups.ParameterValue].",
          "title": "Parameters"
        },
        "DeletedParameters": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/ParameterValue"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Deletedparameters"
        },
        "Metadata": {
          "anyOf": [
            {
              "additionalProperties": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "integer"
                  },
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/$defs/EntityLinkWithName"
                  },
                  {
                    "$ref": "#/$defs/EntityLink"
                  },
                  {
                    "items": {
                      "anyOf": [
                        {
                          "$ref": "#/$defs/EntityLinkWithName"
                        },
                        {
                          "$ref": "#/$defs/EntityLink"
                        }
                      ]
                    },
                    "type": "array"
                  }
                ]
              },
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Custom metadata fields. Allowed keys are defined by the workspace's CustomFields configuration.",
          "title": "Metadata"
        },
        "Documents": {
          "items": {
            "$ref": "#/$defs/EntityLink"
          },
          "title": "Documents",
          "type": "array"
        },
        "originalName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The original template name as stored in Albert. Read-only.",
          "title": "Originalname"
        },
        "fullName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The fully qualified template name. Read-only. See Also --------",
          "title": "Fullname"
        }
      },
      "required": [
        "name"
      ],
      "title": "DataTemplate",
      "type": "object"
    },
    "DataTemplateAndTargets": {
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "targets": {
          "items": {
            "$ref": "#/$defs/Target"
          },
          "title": "Targets",
          "type": "array"
        }
      },
      "required": [
        "id",
        "targets"
      ],
      "title": "DataTemplateAndTargets",
      "type": "object"
    },
    "DataType": {
      "description": "The data type of a parameter value, driving how it is validated.\n\nUsed by [`ValueValidation`][albert.resources.parameter_groups.ValueValidation] to declare what kind of value a parameter\naccepts.\n\nAttributes\n----------\nNUMBER : str\n    A numeric value.\nSTRING : str\n    A free-text string value.\nENUM : str\n    A value restricted to a fixed set of options (see\n    [`EnumValidationValue`][albert.resources.parameter_groups.EnumValidationValue]).\nIMAGE : str\n    An image value.\nCURVE : str\n    A curve (series) value.\nDATE : str\n    A calendar date value stored as ``YYYY-MM-DD``.\nTIMESTAMP : str\n    A date-and-time value in ISO 8601 format with a UTC offset\n    (e.g. ``2026-05-21T14:32:00+02:00``).",
      "enum": [
        "number",
        "string",
        "enum",
        "image",
        "curve",
        "date",
        "timestamp"
      ],
      "title": "DataType",
      "type": "string"
    },
    "EntityLink": {
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "category": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Category"
        }
      },
      "required": [
        "id"
      ],
      "title": "EntityLink",
      "type": "object"
    },
    "EntityLinkWithName": {
      "description": "EntityLink that includes the name field in serialization.",
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "category": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Category"
        }
      },
      "required": [
        "id"
      ],
      "title": "EntityLinkWithName",
      "type": "object"
    },
    "EnumValidationValue": {
      "description": "Represents a value for an enum type validation.",
      "properties": {
        "text": {
          "description": "The text of the enum value.",
          "title": "Text",
          "type": "string"
        },
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The ID of the enum value. If not provided, the ID will be generated upon creation.",
          "title": "Id"
        },
        "originalText": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Originaltext"
        }
      },
      "required": [
        "text"
      ],
      "title": "EnumValidationValue",
      "type": "object"
    },
    "GridDefault": {
      "description": "The default grid view shown for a project.\n\n- ``PD``: the Property Data grid.\n- ``WKS``: the Worksheet grid.",
      "enum": [
        "PD",
        "WKS"
      ],
      "title": "GridDefault",
      "type": "string"
    },
    "Hazard": {
      "description": "A single GHS hazard classification associated with a CAS substance.\n\nHazards are read from the CAS record; a [`Cas`][albert.resources.cas.Cas] may carry a list of them.",
      "properties": {
        "subCategory": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Hazard subcategory",
          "title": "Subcategory"
        },
        "hCode": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Hazard code",
          "title": "Hcode"
        },
        "category": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Hazard category",
          "title": "Category"
        },
        "class": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Hazard classification",
          "title": "Class"
        },
        "hCodeText": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Hazard code text",
          "title": "Hcodetext"
        }
      },
      "title": "Hazard",
      "type": "object"
    },
    "Interval": {
      "description": "One value that an intervalized parameter is varied across.\n\nWhen a parameter is \"intervalized\" (tested at several values rather than a single\nsetpoint), each of those values is represented by an [`Interval`][albert.resources.workflows.Interval]. A list of\nthem is placed on the parameter's [`ParameterSetpoint`][albert.resources.workflows.ParameterSetpoint] via its ``intervals``\nfield. The workflow then carries the resulting [`IntervalCombination`][albert.resources.workflows.IntervalCombination] entries,\none per interval (or per cartesian product of two intervalized parameters).\n\n!!! example\n    ```python\n    from albert.resources.workflows import Interval\n\n    # A Normal parameter varied across two temperatures.\n    low = Interval(value=\"25\", unit={\"id\": \"UNI9999999\"})\n    high = Interval(value=\"60\", unit={\"id\": \"UNI9999999\"})\n    ```",
      "properties": {
        "value": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The value of this interval. For Special parameters (Equipment, Consumables, Templates) this is the entity ID (e.g. ``\"INVC191778\"``). For Normal parameters this is a plain scalar string (e.g. ``\"23\"``). Required.",
          "title": "Value"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The display name of the interval value. Populated for Special parameters (e.g. ``\"Pipette 0.01 -0.1 ml (10 - 100 \u03bcl)\"``). ``None`` for Normal parameters.",
          "title": "Name"
        },
        "Unit": {
          "anyOf": [
            {
              "$ref": "#/$defs/Unit"
            },
            {
              "$ref": "#/$defs/EntityLink"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The unit of ``value``, where applicable. If given, the unit must have an ``id``. See Also --------",
          "title": "Unit"
        },
        "rowId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Rowid"
        }
      },
      "title": "Interval",
      "type": "object"
    },
    "IntervalCombination": {
      "description": "One realized condition (interval combination) carried by a workflow.\n\nReturned by the workflow endpoint when at least one parameter in the workflow has\nbeen intervalized. A combination is either a single intervalized parameter (interval\nID ``ROW#``) or the cartesian product of two intervalized parameters (interval ID\n``ROW#XROW#``). Its ``interval_id`` is what you pass to the property_data endpoints\nto read or write results for that specific condition.",
      "properties": {
        "interval": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The interval ID this combination is associated with. It has the form ``ROW#`` for a single interval or ``ROW#XROW#`` for a product of two intervals. This is the same value [`get_interval_id`][albert.resources.workflows.Workflow.get_interval_id] returns.",
          "title": "Interval"
        },
        "intervalParams": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The parameters participating in the interval.",
          "title": "Intervalparams"
        },
        "intervalString": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A human-readable representation of the combination, of the form ``\"[Parameter Name]: [Parameter Value] [Parameter Unit]\"`` for each parameter.",
          "title": "Intervalstring"
        },
        "intervalDetails": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/IntervalDetail"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Per-parameter breakdown of the combination. Each entry has ``name`` (parameter name) and ``value`` (display string, e.g. ``\"C191778 || Pipette ...\"``). See Also --------",
          "title": "Intervaldetails"
        }
      },
      "title": "IntervalCombination",
      "type": "object"
    },
    "IntervalDetail": {
      "description": "A single parameter's contribution to an interval combination.\n\nThis appears inside [`IntervalCombination`][albert.resources.workflows.IntervalCombination] (as its ``interval_details``) to\nbreak a combination down into the individual parameters that make it up. It is\nread from the workflow endpoint; you do not construct it directly.",
      "properties": {
        "name": {
          "description": "The parameter name (e.g. ``\"Equipment\"``).",
          "title": "Name",
          "type": "string"
        },
        "value": {
          "description": "The display value for this interval (e.g. ``\"C191778 || Pipette 0.01 -0.1 ml\"``). See Also --------",
          "title": "Value",
          "type": "string"
        }
      },
      "required": [
        "name",
        "value"
      ],
      "title": "IntervalDetail",
      "type": "object"
    },
    "IntervalId": {
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        }
      },
      "required": [
        "id"
      ],
      "title": "IntervalId",
      "type": "object"
    },
    "InventoryCategory": {
      "description": "The kind of material an [`InventoryItem`][albert.resources.inventory.InventoryItem] represents.\n\nEvery inventory item belongs to exactly one category, which determines how it\nis used across the platform and which fields are relevant to it.\n\nAttributes\n----------\nRAW_MATERIALS : str\n    A purchased substance used as an ingredient (e.g. a solvent or pigment).\n    Typically linked to a manufacturing ``company`` and one or more CAS numbers.\nCONSUMABLES : str\n    Lab supplies consumed during work (e.g. gloves, vials, filters).\nEQUIPMENT : str\n    Instruments and apparatus (e.g. a balance or spectrometer).\nFORMULAS : str\n    A mixture designed in Albert through a Worksheet. Formulas are not created\n    through the inventory collection; they are produced by the Worksheet\n    collection ([`WorksheetCollection`][albert.collections.worksheets.WorksheetCollection]).",
      "enum": [
        "RawMaterials",
        "Consumables",
        "Equipment",
        "Formulas"
      ],
      "title": "InventoryCategory",
      "type": "string"
    },
    "InventoryItem": {
      "description": "A catalog entry for a material tracked in Albert.\n\nAn ``InventoryItem`` is the canonical record for a raw material, consumable,\npiece of equipment, or formula. Its [`InventoryCategory`][albert.resources.inventory.InventoryCategory] determines how it\nis used across the platform, and once saved it is referenced everywhere by its\nInventory ID (format ``INV...``, e.g. ``\"INVA9999999\"``). Raw materials are typically\nlinked to a manufacturing ``company`` and a compositional breakdown of CAS\namounts. Formula items are designed in Worksheets rather than created here (the\n[`create`][albert.collections.inventory.InventoryCollection.create] method rejects\nFormula items), and a Formula requires a ``project_id``.\n\nItems are managed through\n[`InventoryCollection`][albert.collections.inventory.InventoryCollection] (``client.inventory``).\n\n!!! example\n    ```python\n    from albert.resources.inventory import InventoryItem, InventoryCategory\n\n    item = InventoryItem(\n        name=\"Titanium Dioxide\",\n        category=InventoryCategory.RAW_MATERIALS,\n        company=\"Acme Chemicals\",\n    )\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "Tags": {
          "anyOf": [
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/$defs/Tag"
                  },
                  {
                    "$ref": "#/$defs/EntityLink"
                  }
                ]
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A list of Tag objects or strings representing tags.",
          "title": "Tags"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The name of the item.",
          "title": "Name"
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert Inventory ID (format ``INV...``). Set when the item is retrieved from or created in Albert. Serialized as ``albertId``.",
          "title": "Albertid"
        },
        "description": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A free-text description of the item.",
          "title": "Description"
        },
        "category": {
          "$ref": "#/$defs/InventoryCategory",
          "description": "The kind of material this item represents. Required. One of ``RawMaterials``, ``Consumables``, ``Equipment``, or ``Formulas``."
        },
        "unitCategory": {
          "anyOf": [
            {
              "$ref": "#/$defs/InventoryUnitCategory"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The dimension the item is measured in (mass, volume, length, pressure, or units). If not supplied, it defaults from ``category``: mass for raw materials and formulas, units for equipment and consumables."
        },
        "class": {
          "anyOf": [
            {
              "$ref": "#/$defs/SecurityClass"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The access/security class of the item (e.g. confidential, shared, restricted)."
        },
        "Company": {
          "anyOf": [
            {
              "$ref": "#/$defs/Company"
            },
            {
              "$ref": "#/$defs/EntityLink"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The manufacturing Company associated with the item (links to the Company collection). Accepts a [`Company`][albert.resources.companies.Company] or a name string; a string is turned into a Company that is first-or-created on save.",
          "title": "Company"
        },
        "minimum": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/InventoryMinimum"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Per-Location reorder thresholds for the item. See [`InventoryMinimum`][albert.resources.inventory.InventoryMinimum].",
          "title": "Minimum"
        },
        "alias": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "An alternate name for the item.",
          "title": "Alias"
        },
        "Cas": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/CasAmount"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The item's compositional breakdown as CAS amounts. See [`CasAmount`][albert.resources.inventory.CasAmount].",
          "title": "Cas"
        },
        "isFormulaOverride": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Whether the substance/CAS-level breakdown for this formula has been overridden from the auto-calculated value; commonly set to indicate the formula is not a non-reactive homogeneous mixture.",
          "title": "Isformulaoverride"
        },
        "Metadata": {
          "anyOf": [
            {
              "additionalProperties": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "integer"
                  },
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/$defs/EntityLinkWithName"
                  },
                  {
                    "$ref": "#/$defs/EntityLink"
                  },
                  {
                    "items": {
                      "anyOf": [
                        {
                          "$ref": "#/$defs/EntityLinkWithName"
                        },
                        {
                          "$ref": "#/$defs/EntityLink"
                        }
                      ]
                    },
                    "type": "array"
                  }
                ]
              },
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Custom metadata fields. Allowed keys are defined by the workspace's CustomFields configuration.",
          "title": "Metadata"
        },
        "parentId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The parent Project ID. Required for Formulas. Serialized as ``parentId``.",
          "title": "Parentid"
        },
        "ACL": {
          "description": "Access-control entries governing who can act on the item.",
          "items": {
            "$ref": "#/$defs/ACL"
          },
          "title": "Acl",
          "type": "array"
        },
        "onHand": {
          "default": 0.0,
          "description": "Total amount currently on hand across all lots. Read-only.",
          "title": "Onhand",
          "type": "number"
        },
        "TaskConfig": {
          "anyOf": [
            {
              "items": {
                "additionalProperties": true,
                "type": "object"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Task configuration associated with the item. Read-only.",
          "title": "Taskconfig"
        },
        "formulaId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The formula ID for a formula item. Read-only.",
          "title": "Formulaid"
        },
        "Symbols": {
          "anyOf": [
            {
              "items": {
                "additionalProperties": true,
                "type": "object"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Hazard/pictogram symbols associated with the item. Read-only.",
          "title": "Symbols"
        },
        "unNumber": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The UN hazardous-material number, when applicable. Read-only.",
          "title": "Unnumber"
        },
        "recentAttachmentId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The ID of the most recent attachment on the item. Read-only. See Also --------",
          "title": "Recentattachmentid"
        }
      },
      "required": [
        "category"
      ],
      "title": "InventoryItem",
      "type": "object"
    },
    "InventoryMinimum": {
      "description": "A reorder threshold: the minimum stock of an [`InventoryItem`][albert.resources.inventory.InventoryItem] to keep at a Location.\n\nEach entry pairs one Location with the minimum quantity of an item that must be\nkept on hand there. An [`InventoryItem`][albert.resources.inventory.InventoryItem] may carry several of these, one per\nLocation. Identify the Location either by passing a full\n[`Location`][albert.resources.locations.Location] object as ``location`` (its ``id`` is\nthen copied onto ``id``), or by passing the location ``id`` string directly. Provide\none or the other, not both.\n\n!!! example\n    ```python\n    from albert.resources.inventory import InventoryMinimum\n\n    minimum = InventoryMinimum(id=\"LOC9999999\", minimum=500)\n    ```",
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert ID of the Location this minimum applies to. Provide either a ``location`` or an ``id``; when ``location`` is given, this is set from it.",
          "title": "Id"
        },
        "location": {
          "anyOf": [
            {
              "$ref": "#/$defs/Location"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Location object this minimum applies to. Excluded from serialization. Provide either a ``location`` or an ``id``."
        },
        "minimum": {
          "description": "The minimum amount of the item that must be kept in stock at the Location. Must be between 0 and 1e15. See Also --------",
          "maximum": 1000000000000000,
          "minimum": 0,
          "title": "Minimum",
          "type": "number"
        }
      },
      "required": [
        "minimum"
      ],
      "title": "InventoryMinimum",
      "type": "object"
    },
    "InventoryUnitCategory": {
      "description": "The dimension of the unit an [`InventoryItem`][albert.resources.inventory.InventoryItem] is measured and stocked in.\n\nDetermines how quantities on hand and in formulas are interpreted. When not\nsupplied, the category defaults based on [`InventoryCategory`][albert.resources.inventory.InventoryCategory]: ``MASS``\nfor raw materials and formulas, ``UNITS`` for equipment and consumables.\n\nAttributes\n----------\nMASS : str\n    Measured by mass (e.g. grams, kilograms).\nVOLUME : str\n    Measured by volume (e.g. milliliters, liters).\nLENGTH : str\n    Measured by length (e.g. meters).\nPRESSURE : str\n    Measured by pressure.\nUNITS : str\n    Counted as discrete units (e.g. each item).",
      "enum": [
        "mass",
        "volume",
        "length",
        "pressure",
        "units"
      ],
      "title": "InventoryUnitCategory",
      "type": "string"
    },
    "JobSummary": {
      "description": "A brief summary of a background processing job.",
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The job identifier.",
          "title": "Id"
        },
        "state": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The current state of the job.",
          "title": "State"
        }
      },
      "title": "JobSummary",
      "type": "object"
    },
    "ListItem": {
      "description": "A single allowed value in a configurable list of options.\n\nList items back the choices offered by ``list``-type custom fields (e.g.\ndropdown options) and other fixed option sets in Albert. A\n[`CustomField`][albert.resources.custom_fields.CustomField] with\n[`LIST`][albert.resources.custom_fields.FieldType.LIST] defines a list (keyed\nby ``list_type``, typically the field's name); its selectable options are\n``ListItem`` records with a matching ``list_type``. Managed through\n[`ListsCollection`][albert.collections.lists.ListsCollection] (``client.lists``).\n\n!!! example\n    ```python\n    from albert.resources.lists import ListItem, ListItemCategory\n    item = ListItem(name=\"In Progress\", category=ListItemCategory.USER_DEFINED)\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "name": {
          "description": "The display name of the list item (the option value).",
          "title": "Name",
          "type": "string"
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert ID of the list item. Set when the item is retrieved from or created in Albert.",
          "title": "Albertid"
        },
        "category": {
          "anyOf": [
            {
              "$ref": "#/$defs/ListItemCategory"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The category of the list item. Allowed values are ``businessDefined``, ``userDefined``, ``projects``, ``extensions``, and ``inventory``."
        },
        "listType": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The list this item belongs to. For a list-type custom field this is typically the field's name (see [`CustomField`][albert.resources.custom_fields.CustomField]). For built-in categories the allowed values are ``projectState`` for ``projects``, ``extensions`` for ``extensions``, and ``casCategory`` or ``inventoryFunction`` for ``inventory``.",
          "title": "Listtype"
        }
      },
      "required": [
        "name"
      ],
      "title": "ListItem",
      "type": "object"
    },
    "ListItemCategory": {
      "description": "The category a list item belongs to, which governs its allowed list types.\n\nAttributes\n----------\nBUSINESS_DEFINED : str\n    Predefined values managed at the business/organization level.\nUSER_DEFINED : str\n    Custom values defined by users.\nPROJECTS : str\n    Values used by projects (e.g. project states).\nEXTENSIONS : str\n    Values used by extensions.\nINVENTORY : str\n    Values used by inventory (e.g. CAS categories or inventory functions).",
      "enum": [
        "businessDefined",
        "userDefined",
        "projects",
        "extensions",
        "inventory"
      ],
      "title": "ListItemCategory",
      "type": "string"
    },
    "Location": {
      "description": "A physical lab or site location in Albert.\n\nLocations are referenced by Tasks and Inventory Items to record where an\nactivity is performed or where a material lives, and each Location can hold\none or more Storage Locations\n([`StorageLocation`][albert.resources.storage_locations.StorageLocation]). Managed\nthrough [`LocationCollection`][albert.collections.locations.LocationCollection].\n\n!!! example\n    ```python\n    from albert.resources.locations import Location\n    location = Location(\n        name=\"Boston Lab\",\n        latitude=42.3601,\n        longitude=-71.0589,\n        address=\"1 Main St\",\n        country=\"US\",\n    )\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "name": {
          "description": "The human-readable name of the location.",
          "title": "Name",
          "type": "string"
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert ID of the location. Assigned by Albert and populated once the location has been created or retrieved.",
          "title": "Albertid"
        },
        "latitude": {
          "description": "The latitude of the location, in decimal degrees.",
          "title": "Latitude",
          "type": "number"
        },
        "longitude": {
          "description": "The longitude of the location, in decimal degrees.",
          "title": "Longitude",
          "type": "number"
        },
        "address": {
          "description": "The street address of the location.",
          "title": "Address",
          "type": "string"
        },
        "country": {
          "anyOf": [
            {
              "maxLength": 2,
              "minLength": 2,
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The two-letter country code of the location (for example, ``\"US\"``).",
          "title": "Country"
        }
      },
      "required": [
        "name",
        "latitude",
        "longitude",
        "address"
      ],
      "title": "Location",
      "type": "object"
    },
    "Operator": {
      "description": "A comparison operator constraining a numeric parameter value.\n\nUsed by [`ValueValidation`][albert.resources.parameter_groups.ValueValidation] to bound acceptable values (e.g. ``gte`` with\na ``min`` requires the value to be at least ``min``).\n\nAttributes\n----------\nBETWEEN : str\n    Value must fall between ``min`` and ``max`` (inclusive).\nLESS_THAN : str\n    Value must be less than ``max``.\nLESS_THAN_OR_EQUAL : str\n    Value must be less than or equal to ``max``.\nGREATER_THAN_OR_EQUAL : str\n    Value must be greater than or equal to ``min``.\nGREATER_THAN : str\n    Value must be greater than ``min``.\nEQUALS : str\n    Value must equal the specified value.",
      "enum": [
        "between",
        "lt",
        "lte",
        "gte",
        "gt",
        "eq",
        "neq"
      ],
      "title": "Operator",
      "type": "string"
    },
    "PGType": {
      "description": "The kind of task a [`ParameterGroup`][albert.resources.parameter_groups.ParameterGroup] relates to.\n\nA Parameter Group is about making a sample and/or prepping it for measurement,\nand its type records which sort of task it is used in.\n\nAttributes\n----------\nGENERAL : str\n    A group used in a general lab task (anything that is not a batch or\n    property task).\nBATCH : str\n    A group used in a Batch Task ([`BatchTask`][albert.resources.tasks.BatchTask]),\n    e.g. a mixing step when manufacturing a batch.\nPROPERTY : str\n    A group used in a property (measurement) task to prep a sample for testing.",
      "enum": [
        "general",
        "batch",
        "property"
      ],
      "title": "PGType",
      "type": "string"
    },
    "PageState": {
      "properties": {
        "leftPanelExpand": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Leftpanelexpand"
        },
        "Block": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/BlockState"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Block"
        }
      },
      "title": "PageState",
      "type": "object"
    },
    "Parameter": {
      "description": "The definition of a single experimental condition or input variable.\n\nA Parameter (ID format ``PRM...``) names an \"indirect variable\" such as\nTemperature, Spin Speed, or Instrument. The Parameter itself only defines the\nvariable; its actual value and unit are fixed to a setpoint later, inside a\n[`Workflow`][albert.resources.workflows.Workflow]. Parameters are the building\nblocks of Parameter Groups\n([`ParameterGroup`][albert.resources.parameter_groups.ParameterGroup]) and form the\nparameter side of Data Templates\n([`DataTemplate`][albert.resources.data_templates.DataTemplate]).\n\nManage parameters through\n[`ParameterCollection`][albert.collections.parameters.ParameterCollection]\n(``client.parameters``).\n\n!!! example\n    ```python\n    from albert import Albert\n    from albert.resources.parameters import Parameter\n    client = Albert()\n    param = client.parameters.create(parameter=Parameter(name=\"Temperature\"))\n    param.id\n    # 'PRM9999999'\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "name": {
          "description": "The name of the parameter. Names must be unique.",
          "title": "Name",
          "type": "string"
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert ID of the parameter (format ``PRM...``). Set when the parameter is retrieved from or created in Albert.",
          "title": "Albertid"
        },
        "Metadata": {
          "anyOf": [
            {
              "additionalProperties": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "integer"
                  },
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/$defs/EntityLinkWithName"
                  },
                  {
                    "$ref": "#/$defs/EntityLink"
                  },
                  {
                    "items": {
                      "anyOf": [
                        {
                          "$ref": "#/$defs/EntityLinkWithName"
                        },
                        {
                          "$ref": "#/$defs/EntityLink"
                        }
                      ]
                    },
                    "type": "array"
                  }
                ]
              },
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional user-defined metadata keyed by field name.",
          "title": "Metadata"
        },
        "category": {
          "anyOf": [
            {
              "$ref": "#/$defs/ParameterCategory"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Whether the parameter is ``Normal`` (scalar value) or ``Special`` (entity reference). Set by the platform and read-only."
        },
        "rank": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The rank of the returned parameter. Read-only.",
          "title": "Rank"
        },
        "required": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Whether this parameter must be filled in within a Parameter Group.",
          "title": "Required"
        }
      },
      "required": [
        "name"
      ],
      "title": "Parameter",
      "type": "object"
    },
    "ParameterCategory": {
      "description": "Whether a [`Parameter`][albert.resources.parameters.Parameter]'s value is a plain scalar or an entity reference.\n\nSet by the platform and read-only. It determines how a parameter's value is\ninterpreted when a setpoint is assigned to it inside a\n[`Workflow`][albert.resources.workflows.Workflow].\n\nAttributes\n----------\nNORMAL : str\n    A \"normal\" parameter whose value is a plain scalar (e.g. a number or text),\n    such as Temperature or Spin Speed.\nSPECIAL : str\n    A \"special\" parameter whose value references another entity (e.g. Equipment,\n    a Consumable, or a Template). The setpoint value is that entity's ID rather\n    than a plain scalar.",
      "enum": [
        "Normal",
        "Special"
      ],
      "title": "ParameterCategory",
      "type": "string"
    },
    "ParameterGroup": {
      "description": "A reusable set of parameters (PRG) for making or prepping a sample.\n\nA Parameter Group bundles [`Parameter`][albert.resources.parameters.Parameter]\nentities, along with their values, units, and validation rules, into a reusable\nunit. Whereas a Data Template's parameters relate to a given measurement, a\nParameter Group is about *making* the sample and/or *prepping* it for\nmeasurement (e.g. a mixing step or a cure schedule). Some groups drive Batch\nTasks ([`BatchTask`][albert.resources.tasks.BatchTask]); others are stacked within a\ntask. A group's parameters, together with a Data Template's parameters, are\nfixed to setpoints inside a [`Workflow`][albert.resources.workflows.Workflow].\n\nOnce saved, a group is referenced by its Parameter Group ID (format ``PRG...``,\ne.g. ``\"PRG9999999\"``). Store test standards (e.g. ASTM or ISO) under the\n``\"Standards\"`` key of ``metadata``.\n\nGroups are managed through\n[`ParameterGroupCollection`][albert.collections.parameter_groups.ParameterGroupCollection]\n(``client.parameter_groups``).\n\n!!! example\n    ```python\n    from albert.resources.parameter_groups import (\n        ParameterGroup,\n        ParameterValue,\n        PGType,\n    )\n\n    pg = ParameterGroup(\n        name=\"Mixing Step\",\n        type=PGType.BATCH,\n        parameters=[ParameterValue(id=\"PRM9999999\", value=\"500\")],\n    )\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "Tags": {
          "anyOf": [
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/$defs/Tag"
                  },
                  {
                    "$ref": "#/$defs/EntityLink"
                  }
                ]
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A list of Tag objects or strings representing tags.",
          "title": "Tags"
        },
        "name": {
          "description": "The name of the parameter group. Required.",
          "title": "Name",
          "type": "string"
        },
        "type": {
          "anyOf": [
            {
              "$ref": "#/$defs/PGType"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The kind of task the group relates to (``general``, ``batch``, or ``property``)."
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert Parameter Group ID (format ``PRG...``). Set when the group is retrieved from or created in Albert. Serialized as ``albertId``.",
          "title": "Albertid"
        },
        "description": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A free-text description of the group.",
          "title": "Description"
        },
        "class": {
          "$ref": "#/$defs/SecurityClass",
          "default": "restricted",
          "description": "The access/security class of the group. Defaults to ``RESTRICTED``. Serialized as ``class``."
        },
        "ACL": {
          "anyOf": [
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/$defs/User"
                  },
                  {
                    "$ref": "#/$defs/EntityLink"
                  }
                ]
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Access-control entries governing who can act on the group. Serialized as ``ACL``.",
          "title": "Acl"
        },
        "Metadata": {
          "additionalProperties": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "integer"
              },
              {
                "type": "string"
              },
              {
                "$ref": "#/$defs/EntityLinkWithName"
              },
              {
                "$ref": "#/$defs/EntityLink"
              },
              {
                "items": {
                  "anyOf": [
                    {
                      "$ref": "#/$defs/EntityLinkWithName"
                    },
                    {
                      "$ref": "#/$defs/EntityLink"
                    }
                  ]
                },
                "type": "array"
              }
            ]
          },
          "description": "Custom metadata fields. Test standards are stored under the ``\"Standards\"`` key. Serialized as ``Metadata``.",
          "title": "Metadata",
          "type": "object"
        },
        "Parameters": {
          "description": "The parameters in the group, each with its value, unit, and validation. See [`ParameterValue`][albert.resources.parameter_groups.ParameterValue]. Serialized as ``Parameters``.",
          "items": {
            "$ref": "#/$defs/ParameterValue"
          },
          "title": "Parameters",
          "type": "array"
        },
        "verified": {
          "default": false,
          "description": "Whether the group has been verified (an approval/governance state). Read-only.",
          "title": "Verified",
          "type": "boolean"
        },
        "documents": {
          "description": "Documents (e.g. SOPs) associated with the Parameter Group. See Also --------",
          "items": {
            "$ref": "#/$defs/EntityLink"
          },
          "title": "Documents",
          "type": "array"
        }
      },
      "required": [
        "name"
      ],
      "title": "ParameterGroup",
      "type": "object"
    },
    "ParameterGroupSetpoints": {
      "description": "All parameter setpoints belonging to one Data Template or Parameter Group.\n\nA workflow is organized by group: each [`ParameterGroupSetpoints`][albert.resources.workflows.ParameterGroupSetpoints] names one\nData Template or Parameter Group (by ``id`` or by a full ``parameter_group`` object)\nand carries the [`ParameterSetpoint`][albert.resources.workflows.ParameterSetpoint] list for the parameters in it. A\n[`Workflow`][albert.resources.workflows.Workflow] holds one of these per group. Both the order of setpoints within a\ngroup and the order of groups within the workflow are part of what makes a workflow\nunique, so preserve the order you intend.\n\n!!! example\n    ```python\n    from albert.resources.workflows import (\n        ParameterGroupSetpoints,\n        ParameterSetpoint,\n    )\n\n    group = ParameterGroupSetpoints(\n        id=\"PRG9999999\",\n        parameter_setpoints=[\n            ParameterSetpoint(parameter_id=\"PRM9999999\", value=\"25\", short_name=\"Temp\"),\n        ],\n    )\n    ```",
      "properties": {
        "parameter_group": {
          "anyOf": [
            {
              "$ref": "#/$defs/ParameterGroup"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The parameter group to set setpoints on. Provide either ``parameter_group`` or ``id``. If both are given they must refer to the same group."
        },
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The ID of the parameter group (``PRG...``) or Data Template (``DAT...``). Provide either ``id`` or ``parameter_group``. Auto-filled from ``parameter_group`` when one is provided.",
          "title": "Id"
        },
        "name": {
          "default": "Pre-linked Parameters",
          "description": "Read-only display name of the group (defaults to ``\"Pre-linked Parameters\"``).",
          "title": "Name",
          "type": "string"
        },
        "Parameters": {
          "description": "The setpoints to apply to this group's parameters.",
          "items": {
            "$ref": "#/$defs/ParameterSetpoint"
          },
          "title": "Parameters",
          "type": "array"
        },
        "rowId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Read-only. The group's interval row ID.",
          "title": "Rowid"
        },
        "prgSequence": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Ordering key; needed because a Parameter Group can be repeated within a workflow. Not required when writing (PUT). See Also --------",
          "title": "Prgsequence"
        }
      },
      "title": "ParameterGroupSetpoints",
      "type": "object"
    },
    "ParameterSetpoint": {
      "description": "The fixed value (or set of interval values) for one parameter within a workflow.\n\nA setpoint pins a single parameter to a condition. Provide either a single ``value``\n(plus ``unit`` where applicable) for a fixed setpoint, or a list of ``intervals`` to\nintervalize the parameter across several values. You must identify the parameter by\npassing either a full ``parameter`` object or its ``parameter_id``. Setpoints are\ngrouped under a [`ParameterGroupSetpoints`][albert.resources.workflows.ParameterGroupSetpoints], which is in turn placed on a\n[`Workflow`][albert.resources.workflows.Workflow].\n\nNormal parameters take exactly one of ``value`` or ``intervals``. Special parameters\n(Equipment, Consumables, Templates) take an entity ID as their value.\n\n!!! example\n    ```python\n    from albert.resources.workflows import ParameterSetpoint, Interval\n\n    # A single fixed setpoint identified by parameter ID.\n    temp = ParameterSetpoint(parameter_id=\"PRM9999999\", value=\"25\", short_name=\"Temp\")\n\n    # The same parameter intervalized across two values.\n    temp_varied = ParameterSetpoint(\n        parameter_id=\"PRM9999999\",\n        short_name=\"Temp\",\n        intervals=[\n            Interval(value=\"25\", unit={\"id\": \"UNI9999999\"}),\n            Interval(value=\"60\", unit={\"id\": \"UNI9999999\"}),\n        ],\n    )\n    ```",
      "properties": {
        "parameter": {
          "anyOf": [
            {
              "$ref": "#/$defs/Parameter"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The parameter to set. Provide either ``parameter`` or ``parameter_id``. If both are given they must refer to the same parameter."
        },
        "value": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "$ref": "#/$defs/EntityLink"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The value of the setpoint. For a Special parameter (an inventory item), provide the item's [`EntityLink`][albert.core.shared.models.base.EntityLink] (or a mapping with an ``id``). Mutually exclusive with ``intervals`` for Normal parameters.",
          "title": "Value"
        },
        "Unit": {
          "anyOf": [
            {
              "$ref": "#/$defs/Unit"
            },
            {
              "$ref": "#/$defs/EntityLink"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The unit of ``value``, where applicable.",
          "title": "Unit"
        },
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The ID of the parameter (e.g. ``\"PRM9999999\"``). Provide either ``parameter`` or ``parameter_id``.",
          "title": "Id"
        },
        "Intervals": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/Interval"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The interval values when the parameter is intervalized. Provide either ``intervals`` or ``value`` (plus ``unit``), not both.",
          "title": "Intervals"
        },
        "category": {
          "anyOf": [
            {
              "$ref": "#/$defs/ParameterCategory"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The category of the parameter: ``SPECIAL`` for an inventory item (Equipment, Consumable, Template), ``NORMAL`` for everything else."
        },
        "shortName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The short / display name of the parameter. Required if ``value`` is a mapping.",
          "title": "Shortname"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The parameter name. Auto-filled from ``parameter`` when one is provided.",
          "title": "Name"
        },
        "rowId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Read-only. The row ID of this parameter with respect to its interval row.",
          "title": "Rowid"
        },
        "prgPrmRowId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Ordering key; needed because a Parameter Group can be repeated within a workflow. Not required when writing (PUT). See Also --------",
          "title": "Prgprmrowid"
        }
      },
      "title": "ParameterSetpoint",
      "type": "object"
    },
    "ParameterValue": {
      "description": "A single [`Parameter`][albert.resources.parameters.Parameter] and its value within a [`ParameterGroup`][albert.resources.parameter_groups.ParameterGroup].\n\nA ``ParameterValue`` binds one Parameter to the value, unit, and validation\nrules it takes inside a group. Each entry must reference an existing Parameter,\nso provide exactly one of ``id`` (the Parameter's Albert ID) or ``parameter``\n(the [`Parameter`][albert.resources.parameters.Parameter] object itself); when a\n``parameter`` is given, the ``id``, ``category``, and ``name`` are populated\nfrom it. Values are later fixed to setpoints inside a\n[`Workflow`][albert.resources.workflows.Workflow].\n\n!!! example\n    ```python\n    from albert.resources.parameter_groups import ParameterValue\n\n    # Reference the parameter by its Albert ID\n    value = ParameterValue(id=\"PRM9999999\", value=\"500\")\n    ```",
      "properties": {
        "parameter": {
          "anyOf": [
            {
              "$ref": "#/$defs/Parameter"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Parameter this value is associated with. Provide either ``id`` or ``parameter``. Excluded from serialization."
        },
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert ID of the associated Parameter. Provide either ``id`` or ``parameter``.",
          "title": "Id"
        },
        "category": {
          "anyOf": [
            {
              "$ref": "#/$defs/ParameterCategory"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The category of the parameter (``Normal`` or ``Special``). Populated from ``parameter`` when one is provided. When only ``id`` is given, the parameter-group create API rejects the payload (``400 \"Category mismatch ... Category undefined expected\"``), so set ``category`` explicitly (``ParameterCategory.NORMAL`` for ordinary parameters) or pass the full ``parameter`` object."
        },
        "shortName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A short name for the parameter value. Serialized as ``shortName``.",
          "title": "Shortname"
        },
        "value": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/$defs/InventoryItem"
            },
            {
              "$ref": "#/$defs/EntityLink"
            },
            {
              "$ref": "#/$defs/User"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The value of the parameter. Can be a plain string, an [`InventoryItem`][albert.resources.inventory.InventoryItem] (e.g. when the parameter represents an instrument choice), or a [`User`][albert.resources.users.User] (e.g. a user reference such as \"Performed By\").",
          "title": "Value"
        },
        "Unit": {
          "anyOf": [
            {
              "$ref": "#/$defs/Unit"
            },
            {
              "$ref": "#/$defs/EntityLink"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The unit of measure for the value. Serialized as ``Unit``.",
          "title": "Unit"
        },
        "Added": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "required": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Whether this parameter is required. Defaults to False.",
          "title": "Required"
        },
        "validation": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/ValueValidation"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "description": "Validation rules applied to the value. See [`ValueValidation`][albert.resources.parameter_groups.ValueValidation].",
          "title": "Validation"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The name of the parameter. Read-only.",
          "title": "Name"
        },
        "sequence": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The sequence of the parameter within the group. Read-only.",
          "title": "Sequence"
        },
        "originalShortName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Originalshortname"
        },
        "originalName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Originalname"
        }
      },
      "title": "ParameterValue",
      "type": "object"
    },
    "Project": {
      "description": "A project in Albert: the top-level container for a piece of R&D work.\n\nA project groups the formulations designed for the work, its Worksheet (1:1\nwith the project), the Tasks run against it, and the inventory it references.\nCreate and manage projects through the\n[`ProjectCollection`][albert.collections.projects.ProjectCollection] (``client.projects``).\n\nOnly ``description`` is required to build one; it doubles as the project's\ndisplay name. The ``id`` and ``state`` are assigned by Albert and are read\nonly from the client's perspective.\n\n!!! example\n    ```python\n    from albert import Albert\n    from albert.resources.projects import Project, ProjectClass\n    client = Albert()\n    project = client.projects.create(\n        project=Project(\n            description=\"Weatherproof Coatings 2026\",\n            project_class=ProjectClass.SHARED,\n        )\n    )\n    project.id\n    # 'PRO123'\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Read-only status string returned by Albert.",
          "title": "Status"
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "description": {
          "description": "Human-readable project name/description (1-2000 characters). Also serves as the project's display name.",
          "maxLength": 2000,
          "minLength": 1,
          "title": "Description",
          "type": "string"
        },
        "Locations": {
          "anyOf": [
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/$defs/Location"
                  },
                  {
                    "$ref": "#/$defs/EntityLink"
                  }
                ]
              },
              "maxItems": 20,
              "minItems": 1,
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The locations the project is associated with. Optional.",
          "title": "Locations"
        },
        "class": {
          "anyOf": [
            {
              "$ref": "#/$defs/ProjectClass"
            },
            {
              "type": "null"
            }
          ],
          "default": "private",
          "description": "Access-control class (private, shared, or confidential). Defaults to private."
        },
        "prefix": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional prefix used when naming entities within the project.",
          "title": "Prefix"
        },
        "appEngg": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Inventory Ids to be added as application engineering",
          "title": "Appengg"
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert Project ID (format ``PRO...``). Assigned by Albert and present once the project has been created or retrieved.",
          "title": "Albertid"
        },
        "ACL": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/ACL"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "description": "Access-control entries controlling who can access the project. Optional.",
          "title": "Acl"
        },
        "old_api_params": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Read-only. Do not use.",
          "title": "Old Api Params"
        },
        "task_config": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/TaskConfig"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "description": "Default task settings applied to tasks created within the project.",
          "title": "Task Config"
        },
        "grid": {
          "anyOf": [
            {
              "$ref": "#/$defs/GridDefault"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The default grid view (Property Data or Worksheet) shown for the project."
        },
        "Metadata": {
          "anyOf": [
            {
              "additionalProperties": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "integer"
                  },
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/$defs/EntityLinkWithName"
                  },
                  {
                    "$ref": "#/$defs/EntityLink"
                  },
                  {
                    "items": {
                      "anyOf": [
                        {
                          "$ref": "#/$defs/EntityLinkWithName"
                        },
                        {
                          "$ref": "#/$defs/EntityLink"
                        }
                      ]
                    },
                    "type": "array"
                  }
                ]
              },
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Custom field values. Allowed keys and values are defined via the Custom Fields API. Optional.",
          "title": "Metadata"
        },
        "state": {
          "anyOf": [
            {
              "$ref": "#/$defs/State"
            },
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The project's lifecycle state. Read only on create; can be changed via [`update`][albert.collections.projects.ProjectCollection.update]. Tenant-customized states outside [`State`][albert.resources.projects.State] parse as plain strings.",
          "title": "State"
        }
      },
      "required": [
        "description"
      ],
      "title": "Project",
      "type": "object"
    },
    "ProjectClass": {
      "description": "The access-control class of a project, governing who can see it.\n\n- ``PRIVATE``: visible only to the project's ACL members (the default).\n- ``SHARED``: visible more broadly across the organization.\n- ``CONFIDENTIAL``: restricted, most tightly controlled access.",
      "enum": [
        "shared",
        "confidential",
        "private"
      ],
      "title": "ProjectClass",
      "type": "string"
    },
    "Role": {
      "description": "A named set of access permissions within a tenant.\n\nA role bundles policies that determine what a holder is allowed to do. Roles\nare assigned to users ([`User`][albert.resources.users.User]) and referenced\nby entity ACLs. Roles are typically read from Albert rather than built by\nhand.",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert ID of the role. Role IDs may contain ``#`` characters. Set once the role is retrieved from Albert.",
          "title": "Albertid"
        },
        "name": {
          "description": "The display name of the role.",
          "title": "Name",
          "type": "string"
        },
        "Policies": {
          "anyOf": [
            {
              "items": {},
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The policies (permission rules) associated with the role.",
          "title": "Policies"
        },
        "tenant": {
          "description": "The ID of the tenant the role belongs to.",
          "title": "Tenant",
          "type": "string"
        },
        "visibility": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Whether the role is visible in the platform's role listings.",
          "title": "Visibility"
        }
      },
      "required": [
        "name",
        "tenant"
      ],
      "title": "Role",
      "type": "object"
    },
    "SecurityClass": {
      "description": "The security (access control) class of a resource.\n\nAttributes\n----------\nSHARED : str\n    Accessible to all members of the tenant.\nRESTRICTED : str\n    Access is restricted to specific teams or users.\nCONFIDENTIAL : str\n    Access is limited to designated users only.\nPRIVATE : str\n    Visible only to the owner. Used by Projects.",
      "enum": [
        "shared",
        "restricted",
        "confidential",
        "private"
      ],
      "title": "SecurityClass",
      "type": "string"
    },
    "Standard": {
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "standardId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Standardid"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "standardOrganization": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Standardorganization"
        },
        "standardOrganizationId": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Standardorganizationid"
        }
      },
      "required": [
        "id"
      ],
      "title": "Standard",
      "type": "object"
    },
    "State": {
      "description": "The lifecycle state of a project.\n\nThe set of allowed states is customizable per tenant via the entity-status\nAPI; these are the platform defaults. Unknown tenant-specific values are\ntolerated as plain strings on [`Project.state`][albert.resources.projects.Project.state].",
      "enum": [
        "Not Started",
        "Active",
        "Closed - Success",
        "Closed - Archived",
        "Just Started",
        "In Progress"
      ],
      "title": "State",
      "type": "string"
    },
    "Status": {
      "description": "The status of a resource.\n\nAttributes\n----------\nACTIVE : str\n    The resource is fully operational and visible in normal operations.\nINACTIVE : str\n    The resource is hidden from normal operations and disabled from use.",
      "enum": [
        "active",
        "inactive"
      ],
      "title": "Status",
      "type": "string"
    },
    "StorageKeyReference": {
      "description": "S3 storage key references for a data column file result.",
      "properties": {
        "rawfile": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The raw file storage key.",
          "title": "Rawfile"
        },
        "s3Input": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The S3 key for the input file.",
          "title": "S3Input"
        },
        "s3Output": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The S3 key for the processed output file.",
          "title": "S3Output"
        },
        "preview": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The S3 key for a preview image.",
          "title": "Preview"
        },
        "thumb": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The S3 key for a thumbnail image.",
          "title": "Thumb"
        },
        "original": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The S3 key for the original file.",
          "title": "Original"
        }
      },
      "title": "StorageKeyReference",
      "type": "object"
    },
    "Tag": {
      "description": "A freeform text label used to categorize and connect entities.\n\nTags are shared by name across the platform and can be applied to inventory\nitems, companies, tasks, and other records to group and filter them. Managed\nthrough [`TagCollection`][albert.collections.tags.TagCollection] (``client.tags``);\nthe usual entry point is [`get_or_create`][albert.collections.tags.TagCollection.get_or_create].\n\n!!! example\n    ```python\n    from albert.resources.tags import Tag\n    tag = Tag(tag=\"high-priority\")\n    ```\nMethods\n-------\nfrom_string(tag) -> Tag\n    Build a Tag from its name string.",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "name": {
          "description": "The name of the tag (its text label).",
          "title": "Name",
          "type": "string"
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert ID of the tag (format ``TAG...``). Set when the tag is retrieved from or created in Albert. Methods ------- from_string(tag) -> Tag Build a Tag from its name string.",
          "title": "Albertid"
        }
      },
      "required": [
        "name"
      ],
      "title": "Tag",
      "type": "object"
    },
    "Target": {
      "properties": {
        "dataColumnUniqueId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Datacolumnuniqueid"
        },
        "value": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Value"
        }
      },
      "title": "Target",
      "type": "object"
    },
    "TaskConfig": {
      "description": "Default task settings applied when tasks are created within a project.",
      "properties": {
        "datatemplateId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "ID of the data template tasks default to.",
          "title": "Datatemplateid"
        },
        "workflowId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "ID of the workflow tasks default to.",
          "title": "Workflowid"
        },
        "defaultTaskName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Default name applied to new tasks.",
          "title": "Defaulttaskname"
        },
        "target": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Default target for the configured tasks.",
          "title": "Target"
        },
        "hidden": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": false,
          "description": "Whether this configuration is hidden in the UI.",
          "title": "Hidden"
        }
      },
      "title": "TaskConfig",
      "type": "object"
    },
    "TaskEntityType": {
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "customCategory": {
          "default": null,
          "title": "Customcategory",
          "type": "string"
        }
      },
      "title": "TaskEntityType",
      "type": "object"
    },
    "TaskInventoryInformation": {
      "description": "Which inventory item (and optionally which lot) a task acts on.\n\nEvery task references one or more inventory items through this model, stored\non [`inventory_information`][albert.resources.tasks.BaseTask.inventory_information]. What is required depends on the\ntask type:\n\n- [`BatchTask`][albert.resources.tasks.BatchTask]: ``inventory_id`` and ``batch_size`` are required\n  (you are making a quantity of that item).\n- [`PropertyTask`][albert.resources.tasks.PropertyTask] and [`GeneralTask`][albert.resources.tasks.GeneralTask]: ``inventory_id`` is\n  required and ``lot_id`` is recommended (the specific physical lot tested).",
      "properties": {
        "id": {
          "description": "The ID of the inventory item used in the task (serialized as ``id``).",
          "title": "Id",
          "type": "string"
        },
        "lotId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The ID of the specific lot used. Recommended for property and general tasks so results attach to the right physical material.",
          "title": "Lotid"
        },
        "lotNumber": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The human-readable lot number of the item.",
          "title": "Lotnumber"
        },
        "invLotUniqueId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A combined inventory-and-lot identifier used internally.",
          "title": "Invlotuniqueid"
        },
        "batchSize": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The quantity to make of the related inventory item. Required for [`BatchTask`][albert.resources.tasks.BatchTask]; the unit is given by [`batch_size_unit`][albert.resources.tasks.BatchTask.batch_size_unit].",
          "title": "Batchsize"
        },
        "selectedLot": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Read-only. Whether this lot is the one selected for the task.",
          "title": "Selectedlot"
        },
        "barcodeId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The barcode identifier of the physical item, if scanned.",
          "title": "Barcodeid"
        },
        "quantityUsed": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The amount of the item consumed by the task.",
          "title": "Quantityused"
        }
      },
      "required": [
        "id"
      ],
      "title": "TaskInventoryInformation",
      "type": "object"
    },
    "TaskPriority": {
      "description": "How urgent a task is, used for triage and sorting work queues.\n\nAttributes\n----------\nHIGH : str\n    Highest urgency (``\"High\"``).\nMEDIUM : str\n    Normal urgency (``\"Medium\"``).\nLOW : str\n    Lowest urgency (``\"Low\"``).",
      "enum": [
        "High",
        "Medium",
        "Low"
      ],
      "title": "TaskPriority",
      "type": "string"
    },
    "TaskSource": {
      "description": "A reference to the task or template a task was created from.\n\nRecorded in [`sources`][albert.resources.tasks.BaseTask.sources] to trace where a task originated.",
      "properties": {
        "id": {
          "description": "The ID of the originating task or template.",
          "title": "Id",
          "type": "string"
        },
        "type": {
          "$ref": "#/$defs/TaskSourceType",
          "description": "Whether ``id`` points to a task or a template."
        }
      },
      "required": [
        "id",
        "type"
      ],
      "title": "TaskSource",
      "type": "object"
    },
    "TaskSourceType": {
      "description": "What kind of thing a task was created from.\n\nAttributes\n----------\nTASK : str\n    The task was created from another existing task (``\"task\"``).\nTEMPLATE : str\n    The task was created from a task template (``\"template\"``).",
      "enum": [
        "task",
        "template"
      ],
      "title": "TaskSourceType",
      "type": "string"
    },
    "TaskState": {
      "description": "Where a task is in its lifecycle, from creation through completion.\n\nThe state generally advances as work progresses: an unclaimed task is\npicked up, started, finished, and eventually closed (or cancelled).\n\nAttributes\n----------\nUNCLAIMED : str\n    Created but not yet assigned to or claimed by anyone.\nNOT_STARTED : str\n    Claimed or assigned, but work has not begun.\nIN_PROGRESS : str\n    Work is actively underway.\nCOMPLETED : str\n    The work has been finished.\nCLOSED : str\n    Finalized and no longer active.\nCANCELLED : str\n    Abandoned before completion.",
      "enum": [
        "Unclaimed",
        "Not Started",
        "In Progress",
        "Completed",
        "Closed",
        "Cancelled"
      ],
      "title": "TaskState",
      "type": "string"
    },
    "Team": {
      "description": "A named group of users on the Albert platform.\n\nTeams share access: entity ACLs and Task assignments can reference a whole\nteam rather than individual users. Each member is a\n[`TeamMember`][albert.resources.teams.TeamMember] pairing a\n[`User`][albert.resources.users.User] with a team role.\n\n!!! example\n    ```python\n    from albert.resources.teams import Team, TeamMember\n    team = Team(\n        name=\"Coatings R&D\",\n        members=[TeamMember(id=\"USR12\", role=\"TeamOwner\")],\n    )\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert Team ID (format ``TEM...``). Set once the team is registered in or retrieved from Albert.",
          "title": "Albertid"
        },
        "name": {
          "description": "The display name of the team.",
          "minLength": 1,
          "title": "Name",
          "type": "string"
        },
        "Users": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/TeamMember"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The members of the team, each with their name and team role.",
          "title": "Users"
        }
      },
      "required": [
        "name"
      ],
      "title": "Team",
      "type": "object"
    },
    "TeamMember": {
      "description": "A user's membership in a team, pairing a user with their team role.\n\n!!! example\n    ```python\n    from albert.resources.teams import TeamMember\n    member = TeamMember(id=\"USR12\", role=\"TeamOwner\")\n    ```",
      "properties": {
        "id": {
          "description": "The Albert User ID (format ``USR...``) of the member.",
          "title": "Id",
          "type": "string"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The display name of the user.",
          "title": "Name"
        },
        "fgc": {
          "anyOf": [
            {
              "enum": [
                "TeamOwner",
                "TeamViewer"
              ],
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The member's role within the team: ``\"TeamOwner\"`` (can manage the team) or ``\"TeamViewer\"`` (read access). Defaults to ``\"TeamViewer\"`` when unset.",
          "title": "Fgc"
        }
      },
      "required": [
        "id"
      ],
      "title": "TeamMember",
      "type": "object"
    },
    "Unit": {
      "description": "A unit of measure (e.g. ``g``, ``mL``, ``\u00b0C``).\n\nUnits qualify quantities throughout the platform: inventory amounts,\nparameter values, and property results. Managed through\n[`UnitCollection`][albert.collections.units.UnitCollection] (``client.units``).\n\n!!! example\n    ```python\n    from albert.resources.units import Unit, UnitCategory\n    unit = Unit(name=\"milliliter\", symbol=\"mL\", category=UnitCategory.LIQUID_VOLUME)\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert ID of the unit (format ``UNI...``). Set when the unit is retrieved from or created in Albert.",
          "title": "Albertid"
        },
        "name": {
          "description": "Currently this is the only field that is displayed in Albert, so use this for display purposes. Therefore, users often use the symbol for the unit here as that's the preferred display.",
          "title": "Name",
          "type": "string"
        },
        "symbol": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The display symbol for the unit (e.g. ``\"g\"``).",
          "title": "Symbol"
        },
        "Synonyms": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "description": "Alternate names or spellings that also refer to this unit.",
          "title": "Synonyms"
        },
        "category": {
          "anyOf": [
            {
              "$ref": "#/$defs/UnitCategory"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The physical quantity the unit measures (e.g. ``Mass``, ``Volume``)."
        },
        "verified": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": false,
          "description": "Whether the unit has been verified in Albert. Read-only.",
          "title": "Verified"
        }
      },
      "required": [
        "name"
      ],
      "title": "Unit",
      "type": "object"
    },
    "UnitCategory": {
      "description": "The physical quantity a unit measures.\n\nAttributes\n----------\nLENGTH : str\n    Length units (e.g. m, cm).\nVOLUME : str\n    Volume units (e.g. m\u00b3).\nLIQUID_VOLUME : str\n    Liquid volume units (e.g. L, mL).\nANGLES : str\n    Angle units (e.g. degrees, radians).\nTIME : str\n    Time units (e.g. s, h).\nFREQUENCY : str\n    Frequency units (e.g. Hz).\nMASS : str\n    Mass units (e.g. g, kg).\nCURRENT : str\n    Electric current units (e.g. A).\nTEMPERATURE : str\n    Temperature units (e.g. \u00b0C, K).\nAMOUNT : str\n    Amount of substance units (e.g. mol).\nLUMINOSITY : str\n    Luminous intensity units (e.g. cd).\nFORCE : str\n    Force units (e.g. N).\nENERGY : str\n    Energy units (e.g. J).\nPOWER : str\n    Power units (e.g. W).\nPRESSURE : str\n    Pressure units (e.g. Pa, bar).\nELECTRICITY_AND_MAGNETISM : str\n    Electricity and magnetism units.\nOTHER : str\n    Units that do not fit another category.\nWEIGHT : str\n    Weight units.\nAREA : str\n    Area units (e.g. m\u00b2).\nSURFACE_AREA : str\n    Surface area units.\nBINARY : str\n    Binary/digital-information units (e.g. bytes).\nCAPACITANCE : str\n    Capacitance units (e.g. F).\nSPEED : str\n    Speed units (e.g. m/s).\nELECTRICAL_CONDUCTIVITY : str\n    Electrical conductivity units.\nELECTRICAL_PERMITTIVITY : str\n    Electrical permittivity units.\nDENSITY : str\n    Density units (e.g. g/mL).\nRESISTANCE : str\n    Electrical resistance units (e.g. \u03a9).",
      "enum": [
        "Length",
        "Volume",
        "Liquid volume",
        "Angles",
        "Time",
        "Frequency",
        "Mass",
        "Electric current",
        "Temperature",
        "Amount of substance",
        "Luminous intensity",
        "Force",
        "Energy",
        "Power",
        "Pressure",
        "Electricity and magnetism",
        "Other",
        "Weight",
        "Area",
        "Surface Area",
        "Binary",
        "Capacitance",
        "Speed",
        "Electrical conductivity",
        "Electrical permitivitty",
        "Density",
        "Resistance"
      ],
      "title": "UnitCategory",
      "type": "string"
    },
    "User": {
      "description": "An Albert user account: a person who can log in and act in the platform.\n\nA user has a name and email, an optional home\n[`Location`][albert.resources.locations.Location], and a set of\n[`Role`][albert.resources.roles.Role] objects that govern what they can do.\nThe ``user_class`` sets a broad permission tier\n([`UserClass`][albert.resources.users.UserClass]). Users are grouped into teams\n([`Team`][albert.resources.teams.Team]), and are referenced across the\nplatform, for example as the assignee of a Task or in an entity's ACL.\n\n!!! example\n    ```python\n    from albert.resources.users import User, UserClass\n    user = User(\n        name=\"Ada Lovelace\",\n        email=\"ada@example.com\",\n        user_class=UserClass.STANDARD,\n    )\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "name": {
          "description": "The display name of the user.",
          "title": "Name",
          "type": "string"
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert User ID (format ``USR...``). Set once the user is registered in or retrieved from Albert.",
          "title": "Albertid"
        },
        "Location": {
          "anyOf": [
            {
              "$ref": "#/$defs/Location"
            },
            {
              "$ref": "#/$defs/EntityLink"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The user's home location.",
          "title": "Location"
        },
        "email": {
          "default": null,
          "description": "The user's email address.",
          "format": "email",
          "title": "Email",
          "type": "string"
        },
        "Roles": {
          "description": "The roles the user holds, which determine their permissions.",
          "items": {
            "anyOf": [
              {
                "$ref": "#/$defs/Role"
              },
              {
                "$ref": "#/$defs/EntityLink"
              }
            ]
          },
          "maxItems": 1,
          "title": "Roles",
          "type": "array"
        },
        "userClass": {
          "$ref": "#/$defs/UserClass",
          "default": "standard",
          "description": "The ACL class level of the user (broad permission tier)."
        },
        "witnesser": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Whether the user can act as a witness on tasks (only relevant when witnessing is enabled for the tenant).",
          "title": "Witnesser"
        },
        "Metadata": {
          "anyOf": [
            {
              "additionalProperties": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "integer"
                  },
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/$defs/EntityLinkWithName"
                  },
                  {
                    "$ref": "#/$defs/EntityLink"
                  },
                  {
                    "items": {
                      "anyOf": [
                        {
                          "$ref": "#/$defs/EntityLinkWithName"
                        },
                        {
                          "$ref": "#/$defs/EntityLink"
                        }
                      ]
                    },
                    "type": "array"
                  }
                ]
              },
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Custom metadata attached to the user.",
          "title": "Metadata"
        }
      },
      "required": [
        "name"
      ],
      "title": "User",
      "type": "object"
    },
    "UserClass": {
      "description": "The ACL class level of a user, setting a broad permission tier.\n\nAttributes\n----------\nGUEST : str\n    Most limited access; typically external or temporary users.\nSTANDARD : str\n    Default access level for regular users.\nTRUSTED : str\n    Elevated access above standard users.\nPRIVILEGED : str\n    High access level below full administrators.\nADMIN : str\n    Full administrative access to the tenant.",
      "enum": [
        "guest",
        "standard",
        "trusted",
        "privileged",
        "admin"
      ],
      "title": "UserClass",
      "type": "string"
    },
    "ValueValidation": {
      "description": "A validation rule constraining a [`ParameterValue`][albert.resources.parameter_groups.ParameterValue].\n\nDeclares the expected [`DataType`][albert.resources.parameter_groups.DataType] for a parameter value and, optionally,\nthe bounds or allowed options it must satisfy. Attach one or more of these to a\n[`ParameterValue`][albert.resources.parameter_groups.ParameterValue] via its ``validation`` field.\n\nWhen ``datatype`` is ``date`` or ``timestamp``, ``value``, ``min``, and ``max`` are\nstrings in the wire format documented on [`DataType`][albert.resources.parameter_groups.DataType].\n\n!!! example\n    ```python\n    from albert.resources.parameter_groups import (\n        DataType,\n        Operator,\n        ValueValidation,\n    )\n\n    rule = ValueValidation(\n        datatype=DataType.NUMBER,\n        operator=Operator.BETWEEN,\n        min=\"0\",\n        max=\"100\",\n    )\n    ```",
      "properties": {
        "datatype": {
          "$ref": "#/$defs/DataType",
          "description": "The data type the value must conform to. Required."
        },
        "value": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "$ref": "#/$defs/EnumValidationValue"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "For ``ENUM`` types, the list of allowed options (see [`EnumValidationValue`][albert.resources.parameter_groups.EnumValidationValue]); otherwise an optional expected value. For ``date`` and ``timestamp`` types, a string in the wire format documented on [`DataType`][albert.resources.parameter_groups.DataType].",
          "title": "Value"
        },
        "min": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The lower bound, used with ``operator``. For numeric types, a numeric string; for ``date`` and ``timestamp`` types, a string in the wire format documented on [`DataType`][albert.resources.parameter_groups.DataType].",
          "title": "Min"
        },
        "max": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The upper bound, used with ``operator``. For numeric types, a numeric string; for ``date`` and ``timestamp`` types, a string in the wire format documented on [`DataType`][albert.resources.parameter_groups.DataType].",
          "title": "Max"
        },
        "operator": {
          "anyOf": [
            {
              "$ref": "#/$defs/Operator"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The comparison operator applied against ``min`` and/or ``max``."
        }
      },
      "required": [
        "datatype"
      ],
      "title": "ValueValidation",
      "type": "object"
    },
    "Workflow": {
      "description": "A specific set of parameter setpoints: the independent variables of a test.\n\nA workflow (WFL) captures only the *independent variables* of a test, the parameters and\nthe setpoints (a value, plus a unit where applicable) they are fixed to. It is built from\none or more groupings of parameters, where each grouping is either a Data Template that\nhas pre-linked parameters or a Parameter Group. A single workflow can combine several\ngroupings, for example one Data Template's pre-linked parameters together with a couple of\nParameter Groups, each contributing its own parameter setpoints. Because a Data Template\ncan carry pre-linked parameters, it is used here exactly like a Parameter Group: purely to\ndescribe a set of parameters and their setpoints.\n\nA workflow does NOT include a Data Template's Data Columns (also called Results). Those are\nthe *dependent variables*, and they are recorded only in Property Data\n([`TaskPropertyData`][albert.resources.property_data.TaskPropertyData]). In short: the Workflow holds\nthe independent variables; Property Data holds the dependent variables (the measured\nresults).\n\nA workflow is uniquely identified by its full setpoint configuration: the value and\nunit of every setpoint, the order of parameters within each Data Template / Parameter\nGroup, and the order of those groups within the workflow. For this reason workflows are\n*found-or-created* rather than blindly created: build the object you want and pass it to\n[`create`][albert.collections.workflows.WorkflowCollection.create], which returns the\nexisting match or makes a new one. IDs look like ``WFL...``.\n\nEvery tenant includes a built-in workflow ``WFL1`` (\"No Parameter Group\") with no\nparameter groups or setpoints. Use it when a task or block does not involve parameter\ngroups; it does not need to be created via\n[`create`][albert.collections.workflows.WorkflowCollection.create].\n\nWhen one or two parameters are intervalized, the workflow acts as a *parent* that carries\nthe resulting [`IntervalCombination`][albert.resources.workflows.IntervalCombination] entries. Each combination has an interval ID of\nthe form ``ROW1`` (one intervalized parameter) or ``ROW1XROW2`` (product of two). Use\n[`get_interval_id`][albert.resources.workflows.Workflow.get_interval_id] to build the interval ID for a condition, then use it with the\nproperty_data endpoints to read or write that condition's results.\n\n!!! example\n    ```python\n    from albert import Albert\n    from albert.resources.workflows import (\n        Workflow,\n        ParameterGroupSetpoints,\n        ParameterSetpoint,\n    )\n\n    client = Albert()\n    # One workflow combining a Data Template's pre-linked parameters with two\n    # Parameter Groups. Each grouping is keyed by its DAT... or PRG... id.\n    workflow = Workflow(\n        name=\"Tensile test at 23C, 50% RH\",\n        parameter_group_setpoints=[\n            # Pre-linked parameters on a Data Template (used just like a PRG here)\n            ParameterGroupSetpoints(\n                id=\"DAT9999999\",\n                parameter_setpoints=[\n                    ParameterSetpoint(parameter_id=\"PRM9999999\", value=\"23\", short_name=\"Temperature\"),\n                    ParameterSetpoint(parameter_id=\"PRM2\", value=\"50\", short_name=\"Humidity\"),\n                ],\n            ),\n            # A Parameter Group describing sample prep\n            ParameterGroupSetpoints(\n                id=\"PRG9999999\",\n                parameter_setpoints=[\n                    ParameterSetpoint(parameter_id=\"PRM3\", value=\"24\", short_name=\"Cure Time\"),\n                ],\n            ),\n            # A second Parameter Group (e.g. the mixing step)\n            ParameterGroupSetpoints(\n                id=\"PRG2\",\n                parameter_setpoints=[\n                    ParameterSetpoint(parameter_id=\"PRM4\", value=\"2000\", short_name=\"Mix Speed\"),\n                ],\n            ),\n        ],\n    )\n    created = client.workflows.create(workflows=[workflow])\n    created[0].id\n    # 'WFL1'\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "name": {
          "description": "The name of the workflow.",
          "title": "Name",
          "type": "string"
        },
        "ParameterGroups": {
          "description": "The setpoints to apply, organized one entry per Data Template / Parameter Group. The order of these entries is part of the workflow's identity.",
          "items": {
            "$ref": "#/$defs/ParameterGroupSetpoints"
          },
          "title": "Parametergroups",
          "type": "array"
        },
        "IntervalCombinations": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/IntervalCombination"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The realized conditions when parameters are intervalized. Populated by the platform; present when the workflow is retrieved, not something you set when building one.",
          "title": "Intervalcombinations"
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert ID of the workflow (``WFL...``). Set when a workflow is created or retrieved from the platform.",
          "title": "Albertid"
        },
        "blockMapping": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Read-only / informational. When a Workflow is returned in the context of a block, this is hydrated for convenience. See Also --------",
          "title": "Blockmapping"
        },
        "category": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Category"
        }
      },
      "required": [
        "name"
      ],
      "title": "Workflow",
      "type": "object"
    }
  },
  "description": "A task that tests and documents the properties of a material.\n\nUse a property task to measure and record properties of products, formulas,\nor raw materials. A property task holds one or more [`Block`][albert.resources.tasks.Block] objects,\neach pairing a data template (what to capture) with a workflow (the\nconditions). Measured results are recorded per block, interval, and trial\nthrough [`PropertyDataCollection`][albert.collections.property_data.PropertyDataCollection]\n(``client.property_data``) and roll up to the associated inventory item's\nproperties.\n\nInherits all shared fields from [`BaseTask`][albert.resources.tasks.BaseTask]. Its [`category`][albert.resources.tasks.PropertyTask.category] is\nalways [`PROPERTY`][albert.resources.tasks.TaskCategory.PROPERTY]. Create and manage property tasks with\n[`TaskCollection`][albert.collections.tasks.TaskCollection] (``client.tasks``); add\nblocks with [`add_block`][albert.collections.tasks.TaskCollection.add_block].\n\n!!! example\n    ```python\n    from albert.resources.tasks import PropertyTask\n\n    task = PropertyTask(name=\"Viscosity screen\", parent_id=\"PROA9999999\")\n    ```\nNotes\n-----\nAll other fields (``location``, ``priority``, ``due_date``, ``state``,\n``assigned_to``, dates, and so on) are inherited from [`BaseTask`][albert.resources.tasks.BaseTask].",
  "properties": {
    "status": {
      "anyOf": [
        {
          "$ref": "#/$defs/Status"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The status of the resource, optional."
    },
    "Created": {
      "anyOf": [
        {
          "$ref": "#/$defs/AuditFields"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Audit fields for the creation of the resource, optional."
    },
    "Updated": {
      "anyOf": [
        {
          "$ref": "#/$defs/AuditFields"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Audit fields for the update of the resource, optional."
    },
    "Tags": {
      "anyOf": [
        {
          "items": {
            "anyOf": [
              {
                "$ref": "#/$defs/Tag"
              },
              {
                "$ref": "#/$defs/EntityLink"
              }
            ]
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "A list of Tag objects or strings representing tags.",
      "title": "Tags"
    },
    "albertId": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The task's ID (``\"TAS...\"``, serialized as ``albertId``). Assigned by Albert; ``None`` before the task is created.",
      "title": "Albertid"
    },
    "name": {
      "description": "Human-readable name of the task. Required.",
      "title": "Name",
      "type": "string"
    },
    "category": {
      "const": "Property",
      "default": "Property",
      "title": "Category",
      "type": "string"
    },
    "parentId": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The ID of the parent project this task belongs to.",
      "title": "Parentid"
    },
    "Metadata": {
      "additionalProperties": {
        "anyOf": [
          {
            "type": "number"
          },
          {
            "type": "integer"
          },
          {
            "type": "string"
          },
          {
            "$ref": "#/$defs/EntityLinkWithName"
          },
          {
            "$ref": "#/$defs/EntityLink"
          },
          {
            "items": {
              "anyOf": [
                {
                  "$ref": "#/$defs/EntityLinkWithName"
                },
                {
                  "$ref": "#/$defs/EntityLink"
                }
              ]
            },
            "type": "array"
          }
        ]
      },
      "description": "Custom metadata fields keyed by name.",
      "title": "Metadata",
      "type": "object"
    },
    "Sources": {
      "anyOf": [
        {
          "items": {
            "$ref": "#/$defs/TaskSource"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "description": "The task(s) or template(s) this task was created from.",
      "title": "Sources"
    },
    "Inventories": {
      "default": null,
      "description": "The inventory item(s) (and optionally lot(s)) the task acts on.",
      "items": {
        "$ref": "#/$defs/TaskInventoryInformation"
      },
      "title": "Inventories",
      "type": "array"
    },
    "Location": {
      "anyOf": [
        {
          "$ref": "#/$defs/Location"
        },
        {
          "$ref": "#/$defs/EntityLink"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Where the task is performed.",
      "title": "Location"
    },
    "priority": {
      "anyOf": [
        {
          "$ref": "#/$defs/TaskPriority"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The task's urgency."
    },
    "class": {
      "anyOf": [
        {
          "$ref": "#/$defs/SecurityClass"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Access-control classification (serialized as ``class``)."
    },
    "passOrFail": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Whether the task is evaluated as pass/fail.",
      "title": "Passorfail"
    },
    "notes": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Free-text notes.",
      "title": "Notes"
    },
    "startDate": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Read-only. Date work started (``YYYY-MM-DD``).",
      "title": "Startdate"
    },
    "dueDate": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Target completion date (``YYYY-MM-DD``).",
      "title": "Duedate"
    },
    "claimedDate": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Read-only. Date the task was claimed.",
      "title": "Claimeddate"
    },
    "completedDate": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Read-only. Date the task was completed.",
      "title": "Completeddate"
    },
    "closedDate": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Read-only. Date the task was closed.",
      "title": "Closeddate"
    },
    "result": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Overall result summary for the task.",
      "title": "Result"
    },
    "state": {
      "anyOf": [
        {
          "$ref": "#/$defs/TaskState"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Current lifecycle state of the task."
    },
    "Project": {
      "anyOf": [
        {
          "$ref": "#/$defs/Project"
        },
        {
          "$ref": "#/$defs/EntityLink"
        },
        {
          "items": {
            "anyOf": [
              {
                "$ref": "#/$defs/Project"
              },
              {
                "$ref": "#/$defs/EntityLink"
              }
            ]
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The project(s) the task is associated with.",
      "title": "Project"
    },
    "AssignedTo": {
      "anyOf": [
        {
          "$ref": "#/$defs/User"
        },
        {
          "$ref": "#/$defs/EntityLinkWithName"
        },
        {
          "$ref": "#/$defs/Team"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The user or team responsible for the task.",
      "title": "Assignedto"
    },
    "PageState": {
      "anyOf": [
        {
          "$ref": "#/$defs/PageState"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Internal UI layout state for the task page."
    },
    "EntityType": {
      "anyOf": [
        {
          "$ref": "#/$defs/TaskEntityType"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Internal entity-type classification. See Also --------"
    },
    "Blocks": {
      "anyOf": [
        {
          "items": {
            "$ref": "#/$defs/Block"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The blocks (data template + workflow pairs) that define what data the task captures.",
      "title": "Blocks"
    },
    "qcTask": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Whether this property task is a quality-control task.",
      "title": "Qctask"
    },
    "batchTaskId": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The ID of a related batch task, if this task tests material made by one.",
      "title": "Batchtaskid"
    },
    "target": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "A target value or specification associated with the task. Notes ----- All other fields (``location``, ``priority``, ``due_date``, ``state``, ``assigned_to``, dates, and so on) are inherited from [`BaseTask`][albert.resources.tasks.BaseTask].",
      "title": "Target"
    }
  },
  "required": [
    "name"
  ],
  "title": "PropertyTask",
  "type": "object"
}

Fields:

category

blocks

blocks: list[Block] | None = None

The blocks (data template + workflow pairs) that define what data the task captures.

qc_task

qc_task: bool | None = None

Whether this property task is a quality-control task.

batch_task_id

batch_task_id: str | None = None

The ID of a related batch task, if this task tests material made by one.

target

target: str | None = None

A target value or specification associated with the task. Notes ----- All other fields (location, priority, due_date, state, assigned_to, dates, and so on) are inherited from BaseTask.

BatchTask

Bases: BaseTask

A task that manufactures a batch of a formulation inside Albert.

Use a batch task after creating a new formulation to make a physical quantity of it. The item to make and the amount are given through inventory_information (inventory_id and batch_size are required for batch tasks), with the unit set by batch_size_unit.

Inherits all shared fields from BaseTask. Its category is BATCH (or BATCH_WITH_QC when quality-control data is attached). Create and manage batch tasks with TaskCollection (client.tasks).

Example

from albert.resources.tasks import BatchTask
from albert.resources.tasks import TaskInventoryInformation

task = BatchTask(
    name="Make 500 g of Formula A",
    parent_id="PROA9999999",
    inventory_information=[
        TaskInventoryInformation(inventory_id="INVEXP9999999", batch_size=500)
    ],
)
Notes

All other fields (location, priority, due_date, state, assigned_to, dates, and so on) are inherited from BaseTask.

Show JSON schema:
{
  "$defs": {
    "ACL": {
      "description": "A single access rule for a user.",
      "properties": {
        "id": {
          "description": "The id of the user for which this ACL applies",
          "title": "Id",
          "type": "string"
        },
        "fgc": {
          "anyOf": [
            {
              "$ref": "#/$defs/AccessControlLevel"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Fine-Grain Control Level"
        }
      },
      "required": [
        "id"
      ],
      "title": "ACL",
      "type": "object"
    },
    "AccessControlLevel": {
      "description": "Access control levels you can grant users.",
      "enum": [
        "ProjectOwner",
        "ProjectEditor",
        "ProjectViewer",
        "ProjectAllTask",
        "ProjectStrictViewer",
        "ProjectPropertyTask",
        "InventoryOwner",
        "InventoryViewer",
        "CustomTemplateOwner",
        "CustomTemplateViewer",
        "CASFullAccess"
      ],
      "title": "AccessControlLevel",
      "type": "string"
    },
    "AuditFields": {
      "description": "The audit fields for a resource",
      "properties": {
        "by": {
          "default": null,
          "title": "By",
          "type": "string"
        },
        "byName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Byname"
        },
        "at": {
          "anyOf": [
            {
              "format": "date-time",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "At"
        }
      },
      "title": "AuditFields",
      "type": "object"
    },
    "Axis": {
      "enum": [
        "X",
        "Y"
      ],
      "title": "Axis",
      "type": "string"
    },
    "BatchSizeUnit": {
      "description": "Unit of measure for the size of a batch made in a [`BatchTask`][albert.resources.tasks.BatchTask].\n\nThe enum values are the exact wire strings the platform expects;\nnote the non-SI capitalization ``\"Kg\"`` (lowercase ``\"kg\"`` is rejected).\nThe SDK performs **no unit conversion**: ``batch_size`` and batch-data\namounts are stored as sent. For mass-tracked inventory, the batch-data\ngrid is denominated in kilograms regardless of this unit, so scale\namounts accordingly when writing used amounts.\n\nAttributes\n----------\nGRAMS : str\n    Grams (``\"g\"``).\nKILOGRAMS : str\n    Kilograms (``\"Kg\"``).\nPOUNDS : str\n    Pounds (``\"lbs\"``).",
      "enum": [
        "g",
        "Kg",
        "lbs"
      ],
      "title": "BatchSizeUnit",
      "type": "string"
    },
    "Block": {
      "description": "A single unit of testing within a property or batch task.\n\nA block pairs a [`DataTemplate`][albert.resources.data_templates.DataTemplate]\n(the results/data columns to capture) with a\n[`Workflow`][albert.resources.workflows.Workflow] (the parameter conditions\nunder which the data is collected). A [`PropertyTask`][albert.resources.tasks.PropertyTask] or\n[`BatchTask`][albert.resources.tasks.BatchTask] can hold multiple blocks. Block IDs look like\n``\"BLK...\"``.\n\nBlocks are normally created and modified through the task collection rather\nthan constructed directly; see\n[`add_block`][albert.collections.tasks.TaskCollection.add_block],\n[`update_block_workflow`][albert.collections.tasks.TaskCollection.update_block_workflow], and\n[`remove_block`][albert.collections.tasks.TaskCollection.remove_block]. Measured\nresults for a block are recorded through\n[`PropertyDataCollection`][albert.collections.property_data.PropertyDataCollection].",
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The block's ID (``\"BLK...\"``). Assigned by Albert; ``None`` before the block is created.",
          "title": "Id"
        },
        "Workflow": {
          "description": "The workflow(s) defining the parameter conditions for the block.\n\nAt least one is required. When no parameter groups apply, use ``WFL1``, the\nplatform default workflow with no parameter groups (\"No Parameter Group\").\nIt is pre-provisioned and does not need to be created via\n[`create`][albert.collections.workflows.WorkflowCollection.create].\nFor custom setpoints, register a workflow via\n[`create`][albert.collections.workflows.WorkflowCollection.create] and link by ID.",
          "items": {
            "anyOf": [
              {
                "$ref": "#/$defs/Workflow"
              },
              {
                "$ref": "#/$defs/EntityLink"
              }
            ]
          },
          "minItems": 1,
          "title": "Workflow",
          "type": "array"
        },
        "Datatemplate": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/BlockDataTemplateInfo"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/DataTemplateAndTargets"
            },
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/$defs/DataTemplate"
                  },
                  {
                    "$ref": "#/$defs/EntityLink"
                  }
                ]
              },
              "type": "array"
            }
          ],
          "description": "The single data template describing the data columns to capture, and any associated targets.",
          "maxLength": 1,
          "minLength": 1,
          "title": "Datatemplate"
        },
        "parameterQuantityUsed": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Read-only internal mapping of parameter quantities consumed by the block.",
          "title": "Parameterquantityused"
        }
      },
      "required": [
        "Workflow",
        "Datatemplate"
      ],
      "title": "Block",
      "type": "object"
    },
    "BlockDataTemplateInfo": {
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "name": {
          "title": "Name",
          "type": "string"
        },
        "fullName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Fullname"
        },
        "Standards": {
          "anyOf": [
            {
              "$ref": "#/$defs/Standard"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "Targets": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/Target"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Targets"
        }
      },
      "required": [
        "id",
        "name"
      ],
      "title": "BlockDataTemplateInfo",
      "type": "object"
    },
    "BlockLevelInventoryInformation": {
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "lotId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Lotid"
        },
        "invLotUniqueId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Invlotuniqueid"
        }
      },
      "required": [
        "id"
      ],
      "title": "BlockLevelInventoryInformation",
      "type": "object"
    },
    "BlockState": {
      "properties": {
        "id": {
          "description": "The ID of the block.",
          "title": "Id",
          "type": "string"
        },
        "expand": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Expand"
        },
        "Interval": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/IntervalId"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The IDs of the interval (e.g., id: ROW2XROW4)",
          "title": "Interval"
        },
        "Inventory": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/BlockLevelInventoryInformation"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Inventory"
        }
      },
      "required": [
        "id"
      ],
      "title": "BlockState",
      "type": "object"
    },
    "CSVMapping": {
      "description": "A mapping between CSV column headers and data column IDs.",
      "properties": {
        "mapId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A compact mapping string (e.g. ``\"Header1:DAC2900#Header2:DAC4707\"``).",
          "examples": "Header1:DAC2900#Header2:DAC4707",
          "title": "Mapid"
        },
        "mapData": {
          "anyOf": [
            {
              "additionalProperties": {
                "type": "string"
              },
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A dictionary mapping CSV header names to data column IDs.",
          "examples": {
            "Header1": "DAC2900",
            "Header2": "DAC4707"
          },
          "title": "Mapdata"
        }
      },
      "title": "CSVMapping",
      "type": "object"
    },
    "Cas": {
      "description": "A CAS entry: a chemical substance identified by its CAS Registry Number.\n\nA ``Cas`` is Albert's dictionary record for a substance. Raw-material Inventory\nItems reference these entries to declare what they are made of, pairing each\n``Cas`` with an amount (see [`CasAmount`][albert.resources.inventory.CasAmount]).\nManage entries through\n[`CasCollection`][albert.collections.cas.CasCollection] (``client.cas``): most fields\nare populated by Albert, so you typically only build a ``Cas`` from a registry\n``number`` when creating a new entry.\n\n!!! example\n    ```python\n    from albert.resources.cas import Cas\n    # Build a CAS entry to register a new substance\n    cas = Cas(number=\"7727-37-9\")\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "number": {
          "description": "The CAS number.",
          "title": "Number",
          "type": "string"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Name of the CAS.",
          "title": "Name"
        },
        "description": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The description or name of the CAS.",
          "title": "Description"
        },
        "notes": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Notes related to the CAS.",
          "title": "Notes"
        },
        "category": {
          "anyOf": [
            {
              "$ref": "#/$defs/CasCategory"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The category of the CAS."
        },
        "casSmiles": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "CAS SMILES notation.",
          "title": "Cassmiles"
        },
        "inchiKey": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "InChIKey of the CAS.",
          "title": "Inchikey"
        },
        "iUpacName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "IUPAC name of the CAS.",
          "title": "Iupacname"
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The AlbertID of the CAS.",
          "title": "Albertid"
        },
        "hazards": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/Hazard"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Hazards associated with the CAS.",
          "title": "Hazards"
        },
        "wgk": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "German Water Hazard Class (WGK) number.",
          "title": "Wgk"
        },
        "ecListNo": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "European Community (EC) number.",
          "title": "Eclistno"
        },
        "type": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Internal classification_type reference.",
          "title": "Type"
        },
        "classificationType": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Classification type of the CAS.",
          "title": "Classificationtype"
        },
        "order": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "CAS order.",
          "title": "Order"
        },
        "Metadata": {
          "additionalProperties": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "integer"
              },
              {
                "type": "string"
              },
              {
                "$ref": "#/$defs/EntityLinkWithName"
              },
              {
                "$ref": "#/$defs/EntityLink"
              },
              {
                "items": {
                  "anyOf": [
                    {
                      "$ref": "#/$defs/EntityLinkWithName"
                    },
                    {
                      "$ref": "#/$defs/EntityLink"
                    }
                  ]
                },
                "type": "array"
              }
            ]
          },
          "description": "Custom metadata keyed by field. Updatable.",
          "title": "Metadata",
          "type": "object"
        }
      },
      "required": [
        "number"
      ],
      "title": "Cas",
      "type": "object"
    },
    "CasAmount": {
      "description": "A single CAS constituent and its concentration within an [`InventoryItem`][albert.resources.inventory.InventoryItem].\n\nA ``CasAmount`` links one CAS number (a chemical substance identifier) to the\namount of that substance present in an inventory item, expressed as a range\n(``min`` to ``max``) with an optional ``target``. A list of these on an\n[`InventoryItem`][albert.resources.inventory.InventoryItem] gives the item's compositional breakdown.\n\nIdentify the CAS in one of two ways: pass a full [`Cas`][albert.resources.cas.Cas]\nobject as ``cas`` (its ``id``, ``number``, and ``cas_smiles`` are then copied onto\nthis amount), or pass just the CAS resource ``id`` string. Do not pass both.\n\n!!! example\n    ```python\n    from albert.resources.inventory import CasAmount\n\n    # Reference an existing CAS resource by its Albert ID, 10-30% concentration\n    amount = CasAmount(min=10.0, max=30.0, id=\"CAS1\")\n    ```",
      "properties": {
        "min": {
          "description": "The minimum amount (concentration) of the CAS in the item.",
          "title": "Min",
          "type": "number"
        },
        "max": {
          "description": "The maximum amount (concentration) of the CAS in the item.",
          "title": "Max",
          "type": "number"
        },
        "inventoryValue": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The target amount of the CAS in the item. Serialized as ``inventoryValue``.",
          "title": "Inventoryvalue"
        },
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert ID of the CAS resource this amount represents. Provide either a ``cas`` object or an ``id``; when ``cas`` is given, this is set from it.",
          "title": "Id"
        },
        "casCategory": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Whether the CAS is a trade secret.",
          "title": "Cascategory"
        },
        "inventoryFunction": {
          "anyOf": [
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/$defs/ListItem"
                  },
                  {
                    "$ref": "#/$defs/EntityLink"
                  },
                  {
                    "type": "string"
                  }
                ]
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Business-controlled functions associated with the CAS in this inventory context (e.g. what role the substance plays). Values come from a managed list.",
          "title": "Inventoryfunction"
        },
        "type": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The CAS type. Can be retrieved from the CAS collection before construction.",
          "title": "Type"
        },
        "classificationType": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The EU classification source for the CAS: harmonized, notified, or REACH.",
          "title": "Classificationtype"
        },
        "substanceId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The substance ID linked to this CAS entry.",
          "title": "Substanceid"
        },
        "cas": {
          "anyOf": [
            {
              "$ref": "#/$defs/Cas"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The full CAS object associated with this amount. Read-only after init; excluded from serialization. Provide either a ``cas`` or an ``id``."
        },
        "casSmiles": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The SMILES string of the CAS resource. Read-only; set from the ``cas`` object.",
          "title": "Cassmiles"
        },
        "number": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The CAS number (e.g. ``\"7440-32-6\"``). Read-only; set from the ``cas`` object.",
          "title": "Number"
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit metadata for creation. Read-only."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/CasAuditFieldsWithEmail"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit metadata for the last update. Read-only. See Also --------"
        }
      },
      "required": [
        "min",
        "max"
      ],
      "title": "CasAmount",
      "type": "object"
    },
    "CasAuditFieldsWithEmail": {
      "description": "The audit fields for a CAS resource with email",
      "properties": {
        "by": {
          "default": null,
          "title": "By",
          "type": "string"
        },
        "byName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Byname"
        },
        "at": {
          "anyOf": [
            {
              "format": "date-time",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "At"
        },
        "email": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Email"
        }
      },
      "title": "CasAuditFieldsWithEmail",
      "type": "object"
    },
    "CasCategory": {
      "enum": [
        "User",
        "Verisk",
        "TSCA - Public",
        "TSCA - Private",
        "not TSCA",
        "CAS linked to External Database",
        "Unknown (Trade Secret)",
        "CL_Inventory Upload"
      ],
      "title": "CasCategory",
      "type": "string"
    },
    "Company": {
      "description": "A manufacturing company or supplier tracked in Albert.\n\nA Company is the organization that makes or supplies a material. It is the\n``company`` linked on raw-material inventory items: each raw material points\nback to the Company that manufactures it (see\n[`InventoryItem`][albert.resources.inventory.InventoryItem]). Companies are managed\nthrough [`CompanyCollection`][albert.collections.companies.CompanyCollection], accessed as\n``client.companies``.\n\nCompanies are identified by a Company ID (format ``COM...``). A Company is\ntypically minimal: a name plus its assigned ID. You construct one directly\n(``Company(name=\"Acme Chemicals\")``) to create it or to attach it to an\ninventory item.\n\n!!! example\n    ```python\n    from albert.resources.companies import Company\n\n    # Build a company to create or attach to an inventory item\n    company = Company(name=\"Acme Chemicals\")\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "name": {
          "description": "The company's name. This is the primary identifier used when searching for or creating a company.",
          "title": "Name",
          "type": "string"
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert Company ID (format ``COM...``). ``None`` until the company is created in or retrieved from Albert.",
          "title": "Albertid"
        },
        "distance": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Search-relevance score returned when the company comes back as a search result. Read-only; not set on companies you build yourself.",
          "title": "Distance"
        }
      },
      "required": [
        "name"
      ],
      "title": "Company",
      "type": "object"
    },
    "CurveDBMetadata": {
      "description": "Database metadata for a curve data column result.",
      "properties": {
        "tableName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Athena/database table name storing the curve data.",
          "title": "Tablename"
        },
        "partitionKey": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The partition key for the curve data table.",
          "title": "Partitionkey"
        }
      },
      "title": "CurveDBMetadata",
      "type": "object"
    },
    "CurveDataEntityLink": {
      "description": "A link to a data column that provides one axis of a curve dataset.",
      "properties": {
        "id": {
          "description": "The data column ID.",
          "title": "Id",
          "type": "string"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "category": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Category"
        },
        "axis": {
          "anyOf": [
            {
              "$ref": "#/$defs/Axis"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Which axis this column represents (X or Y)."
        },
        "Unit": {
          "anyOf": [
            {
              "$ref": "#/$defs/Unit"
            },
            {
              "$ref": "#/$defs/EntityLink"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The unit of measure for this axis.",
          "title": "Unit"
        }
      },
      "required": [
        "id"
      ],
      "title": "CurveDataEntityLink",
      "type": "object"
    },
    "DataColumn": {
      "description": "The definition of a single measured result variable in Albert.\n\nA Data Column (DAC) defines one direct output variable that a task can\nmeasure, such as ``Viscosity`` or ``APHA Color``. Data columns are the\nreusable building blocks of a Data Template's results: a\n[`DataTemplate`][albert.resources.data_templates.DataTemplate] references data columns\nthrough its ``data_column_values``, and the values recorded against a data\ncolumn during experiments are stored as Property Data.\n\nData columns are identified by a Data Column ID (format ``DAC...``, e.g.\n``\"DAC9999999\"``) and are managed through\n[`DataColumnCollection`][albert.collections.data_columns.DataColumnCollection], accessed as\n``client.data_columns``.\n\n!!! example\n    ```python\n    from albert import Albert\n    from albert.resources.data_columns import DataColumn\n    client = Albert()\n    column = DataColumn(name=\"Viscosity\")\n    created = client.data_columns.create(data_column=column)\n    created.id\n    # 'DAC9999999'\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "name": {
          "description": "The name of the data column (e.g. ``\"Viscosity\"``).",
          "title": "Name",
          "type": "string"
        },
        "defalt": {
          "default": false,
          "title": "Defalt",
          "type": "boolean"
        },
        "Metadata": {
          "anyOf": [
            {
              "additionalProperties": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "integer"
                  },
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/$defs/EntityLinkWithName"
                  },
                  {
                    "$ref": "#/$defs/EntityLink"
                  },
                  {
                    "items": {
                      "anyOf": [
                        {
                          "$ref": "#/$defs/EntityLinkWithName"
                        },
                        {
                          "$ref": "#/$defs/EntityLink"
                        }
                      ]
                    },
                    "type": "array"
                  }
                ]
              },
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Custom metadata keyed by field name. Values may be strings, numbers, or entity links.",
          "title": "Metadata"
        },
        "albertId": {
          "default": null,
          "description": "The Data Column ID assigned by Albert (format ``DAC...``). Populated by the server on creation; leave unset when building a column to create.",
          "title": "Albertid",
          "type": "string"
        }
      },
      "required": [
        "name"
      ],
      "title": "DataColumn",
      "type": "object"
    },
    "DataColumnValue": {
      "description": "A result data column on a Data Template.\n\nA ``DataColumnValue`` binds a [`DataColumn`][albert.resources.data_columns.DataColumn] to\na Data Template as one of the results the test captures (a \"direct variable\"). Data\ncolumns can be typed numeric, text, dropdown/enum, image, curve, date, or timestamp.\nOn a Data Template the ``value`` typically holds an example value shown on the\ndetails page rather than measured data; actual measurements are stored as Property\nData. When constructing one, provide either ``data_column`` or ``data_column_id``.\n\n!!! example\n    ```python\n    from albert.resources.data_templates import DataColumnValue\n\n    column = DataColumnValue(data_column_id=\"DAC9999999\", value=\"42\")\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "data_column": {
          "anyOf": [
            {
              "$ref": "#/$defs/DataColumn"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The full DataColumn resource this value binds to. Provide this or ``data_column_id``. Not serialized."
        },
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The ID of the bound DataColumn (format ``DAC...``). Serialized as ``id``. Provide this or ``data_column``.",
          "title": "Id"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The display name of the column.",
          "title": "Name"
        },
        "originalName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The original column name as stored in Albert. Read-only.",
          "title": "Originalname"
        },
        "value": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The column's example/default value shown on the Data Template details page.",
          "title": "Value"
        },
        "hidden": {
          "default": false,
          "description": "Whether the column is hidden. Defaults to False.",
          "title": "Hidden",
          "type": "boolean"
        },
        "Unit": {
          "anyOf": [
            {
              "$ref": "#/$defs/Unit"
            },
            {
              "$ref": "#/$defs/EntityLink"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The unit of measure for the column.",
          "title": "Unit"
        },
        "calculation": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A calculation expression for a computed column.",
          "title": "Calculation"
        },
        "sequence": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The column's position within the template. Assigned by Albert.",
          "title": "Sequence"
        },
        "script": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Script"
        },
        "athena": {
          "anyOf": [
            {
              "$ref": "#/$defs/CurveDBMetadata"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "s3Key": {
          "anyOf": [
            {
              "$ref": "#/$defs/StorageKeyReference"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "job": {
          "anyOf": [
            {
              "$ref": "#/$defs/JobSummary"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "csvMapping": {
          "anyOf": [
            {
              "additionalProperties": {
                "type": "string"
              },
              "type": "object"
            },
            {
              "$ref": "#/$defs/CSVMapping"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Csvmapping"
        },
        "validation": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/ValueValidation"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "description": "Validation rules applied to the column value (e.g. enum options, numeric range).",
          "title": "Validation"
        },
        "CurveData": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/CurveDataEntityLink"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "For curve columns, the linked X/Y curve result columns.",
          "title": "Curvedata"
        }
      },
      "title": "DataColumnValue",
      "type": "object"
    },
    "DataTemplate": {
      "description": "A definition of what a test captures (a DAT).\n\nA ``DataTemplate`` (Data Template, ID format ``DAT...``) describes a test in two\nparts: its ``data_column_values`` are the measured RESULTS (the data columns, or\n\"direct variables\"), and its ``parameter_values`` are the CONDITIONS under which\nthe test is run (the \"indirect variables\"). A Data Template does not itself store\nmeasured values; those are recorded as Property Data. When the template is paired\nwith a Workflow inside a Block, only its parameters (not its result columns) flow\ninto the Workflow's setpoints.\n\nTemplates are managed through\n[`DataTemplateCollection`][albert.collections.data_templates.DataTemplateCollection]\n(``client.data_templates``).\n\n!!! example\n    ```python\n    from albert.resources.data_templates import DataTemplate, DataColumnValue\n\n    template = DataTemplate(\n        name=\"Tensile Strength Test\",\n        data_column_values=[DataColumnValue(data_column_id=\"DAC9999999\")],\n    )\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "Tags": {
          "anyOf": [
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/$defs/Tag"
                  },
                  {
                    "$ref": "#/$defs/EntityLink"
                  }
                ]
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A list of Tag objects or strings representing tags.",
          "title": "Tags"
        },
        "name": {
          "description": "The name of the data template. Required.",
          "title": "Name",
          "type": "string"
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert Data Template ID (format ``DAT...``). Set when the template is retrieved from or created in Albert. Serialized as ``albertId``.",
          "title": "Albertid"
        },
        "description": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A free-text description of the template.",
          "title": "Description"
        },
        "class": {
          "anyOf": [
            {
              "$ref": "#/$defs/SecurityClass"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The access/security class of the template. Serialized as ``class``."
        },
        "verified": {
          "default": false,
          "description": "The approval/governance state of the template. Defaults to False.",
          "title": "Verified",
          "type": "boolean"
        },
        "ACL": {
          "anyOf": [
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/$defs/User"
                  },
                  {
                    "$ref": "#/$defs/EntityLink"
                  }
                ]
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The access-control list of users who can access the template. Serialized as ``ACL``.",
          "title": "Acl"
        },
        "DataColumns": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/DataColumnValue"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The measured results the test captures (its data columns / direct variables). See [`DataColumnValue`][albert.resources.data_templates.DataColumnValue].",
          "title": "Datacolumns"
        },
        "Parameters": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/ParameterValue"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The conditions under which the test is run (its indirect variables). See [`ParameterValue`][albert.resources.parameter_groups.ParameterValue].",
          "title": "Parameters"
        },
        "DeletedParameters": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/ParameterValue"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Deletedparameters"
        },
        "Metadata": {
          "anyOf": [
            {
              "additionalProperties": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "integer"
                  },
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/$defs/EntityLinkWithName"
                  },
                  {
                    "$ref": "#/$defs/EntityLink"
                  },
                  {
                    "items": {
                      "anyOf": [
                        {
                          "$ref": "#/$defs/EntityLinkWithName"
                        },
                        {
                          "$ref": "#/$defs/EntityLink"
                        }
                      ]
                    },
                    "type": "array"
                  }
                ]
              },
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Custom metadata fields. Allowed keys are defined by the workspace's CustomFields configuration.",
          "title": "Metadata"
        },
        "Documents": {
          "items": {
            "$ref": "#/$defs/EntityLink"
          },
          "title": "Documents",
          "type": "array"
        },
        "originalName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The original template name as stored in Albert. Read-only.",
          "title": "Originalname"
        },
        "fullName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The fully qualified template name. Read-only. See Also --------",
          "title": "Fullname"
        }
      },
      "required": [
        "name"
      ],
      "title": "DataTemplate",
      "type": "object"
    },
    "DataTemplateAndTargets": {
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "targets": {
          "items": {
            "$ref": "#/$defs/Target"
          },
          "title": "Targets",
          "type": "array"
        }
      },
      "required": [
        "id",
        "targets"
      ],
      "title": "DataTemplateAndTargets",
      "type": "object"
    },
    "DataType": {
      "description": "The data type of a parameter value, driving how it is validated.\n\nUsed by [`ValueValidation`][albert.resources.parameter_groups.ValueValidation] to declare what kind of value a parameter\naccepts.\n\nAttributes\n----------\nNUMBER : str\n    A numeric value.\nSTRING : str\n    A free-text string value.\nENUM : str\n    A value restricted to a fixed set of options (see\n    [`EnumValidationValue`][albert.resources.parameter_groups.EnumValidationValue]).\nIMAGE : str\n    An image value.\nCURVE : str\n    A curve (series) value.\nDATE : str\n    A calendar date value stored as ``YYYY-MM-DD``.\nTIMESTAMP : str\n    A date-and-time value in ISO 8601 format with a UTC offset\n    (e.g. ``2026-05-21T14:32:00+02:00``).",
      "enum": [
        "number",
        "string",
        "enum",
        "image",
        "curve",
        "date",
        "timestamp"
      ],
      "title": "DataType",
      "type": "string"
    },
    "EntityLink": {
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "category": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Category"
        }
      },
      "required": [
        "id"
      ],
      "title": "EntityLink",
      "type": "object"
    },
    "EntityLinkWithName": {
      "description": "EntityLink that includes the name field in serialization.",
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "category": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Category"
        }
      },
      "required": [
        "id"
      ],
      "title": "EntityLinkWithName",
      "type": "object"
    },
    "EnumValidationValue": {
      "description": "Represents a value for an enum type validation.",
      "properties": {
        "text": {
          "description": "The text of the enum value.",
          "title": "Text",
          "type": "string"
        },
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The ID of the enum value. If not provided, the ID will be generated upon creation.",
          "title": "Id"
        },
        "originalText": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Originaltext"
        }
      },
      "required": [
        "text"
      ],
      "title": "EnumValidationValue",
      "type": "object"
    },
    "GridDefault": {
      "description": "The default grid view shown for a project.\n\n- ``PD``: the Property Data grid.\n- ``WKS``: the Worksheet grid.",
      "enum": [
        "PD",
        "WKS"
      ],
      "title": "GridDefault",
      "type": "string"
    },
    "Hazard": {
      "description": "A single GHS hazard classification associated with a CAS substance.\n\nHazards are read from the CAS record; a [`Cas`][albert.resources.cas.Cas] may carry a list of them.",
      "properties": {
        "subCategory": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Hazard subcategory",
          "title": "Subcategory"
        },
        "hCode": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Hazard code",
          "title": "Hcode"
        },
        "category": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Hazard category",
          "title": "Category"
        },
        "class": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Hazard classification",
          "title": "Class"
        },
        "hCodeText": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Hazard code text",
          "title": "Hcodetext"
        }
      },
      "title": "Hazard",
      "type": "object"
    },
    "Interval": {
      "description": "One value that an intervalized parameter is varied across.\n\nWhen a parameter is \"intervalized\" (tested at several values rather than a single\nsetpoint), each of those values is represented by an [`Interval`][albert.resources.workflows.Interval]. A list of\nthem is placed on the parameter's [`ParameterSetpoint`][albert.resources.workflows.ParameterSetpoint] via its ``intervals``\nfield. The workflow then carries the resulting [`IntervalCombination`][albert.resources.workflows.IntervalCombination] entries,\none per interval (or per cartesian product of two intervalized parameters).\n\n!!! example\n    ```python\n    from albert.resources.workflows import Interval\n\n    # A Normal parameter varied across two temperatures.\n    low = Interval(value=\"25\", unit={\"id\": \"UNI9999999\"})\n    high = Interval(value=\"60\", unit={\"id\": \"UNI9999999\"})\n    ```",
      "properties": {
        "value": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The value of this interval. For Special parameters (Equipment, Consumables, Templates) this is the entity ID (e.g. ``\"INVC191778\"``). For Normal parameters this is a plain scalar string (e.g. ``\"23\"``). Required.",
          "title": "Value"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The display name of the interval value. Populated for Special parameters (e.g. ``\"Pipette 0.01 -0.1 ml (10 - 100 \u03bcl)\"``). ``None`` for Normal parameters.",
          "title": "Name"
        },
        "Unit": {
          "anyOf": [
            {
              "$ref": "#/$defs/Unit"
            },
            {
              "$ref": "#/$defs/EntityLink"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The unit of ``value``, where applicable. If given, the unit must have an ``id``. See Also --------",
          "title": "Unit"
        },
        "rowId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Rowid"
        }
      },
      "title": "Interval",
      "type": "object"
    },
    "IntervalCombination": {
      "description": "One realized condition (interval combination) carried by a workflow.\n\nReturned by the workflow endpoint when at least one parameter in the workflow has\nbeen intervalized. A combination is either a single intervalized parameter (interval\nID ``ROW#``) or the cartesian product of two intervalized parameters (interval ID\n``ROW#XROW#``). Its ``interval_id`` is what you pass to the property_data endpoints\nto read or write results for that specific condition.",
      "properties": {
        "interval": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The interval ID this combination is associated with. It has the form ``ROW#`` for a single interval or ``ROW#XROW#`` for a product of two intervals. This is the same value [`get_interval_id`][albert.resources.workflows.Workflow.get_interval_id] returns.",
          "title": "Interval"
        },
        "intervalParams": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The parameters participating in the interval.",
          "title": "Intervalparams"
        },
        "intervalString": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A human-readable representation of the combination, of the form ``\"[Parameter Name]: [Parameter Value] [Parameter Unit]\"`` for each parameter.",
          "title": "Intervalstring"
        },
        "intervalDetails": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/IntervalDetail"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Per-parameter breakdown of the combination. Each entry has ``name`` (parameter name) and ``value`` (display string, e.g. ``\"C191778 || Pipette ...\"``). See Also --------",
          "title": "Intervaldetails"
        }
      },
      "title": "IntervalCombination",
      "type": "object"
    },
    "IntervalDetail": {
      "description": "A single parameter's contribution to an interval combination.\n\nThis appears inside [`IntervalCombination`][albert.resources.workflows.IntervalCombination] (as its ``interval_details``) to\nbreak a combination down into the individual parameters that make it up. It is\nread from the workflow endpoint; you do not construct it directly.",
      "properties": {
        "name": {
          "description": "The parameter name (e.g. ``\"Equipment\"``).",
          "title": "Name",
          "type": "string"
        },
        "value": {
          "description": "The display value for this interval (e.g. ``\"C191778 || Pipette 0.01 -0.1 ml\"``). See Also --------",
          "title": "Value",
          "type": "string"
        }
      },
      "required": [
        "name",
        "value"
      ],
      "title": "IntervalDetail",
      "type": "object"
    },
    "IntervalId": {
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        }
      },
      "required": [
        "id"
      ],
      "title": "IntervalId",
      "type": "object"
    },
    "InventoryCategory": {
      "description": "The kind of material an [`InventoryItem`][albert.resources.inventory.InventoryItem] represents.\n\nEvery inventory item belongs to exactly one category, which determines how it\nis used across the platform and which fields are relevant to it.\n\nAttributes\n----------\nRAW_MATERIALS : str\n    A purchased substance used as an ingredient (e.g. a solvent or pigment).\n    Typically linked to a manufacturing ``company`` and one or more CAS numbers.\nCONSUMABLES : str\n    Lab supplies consumed during work (e.g. gloves, vials, filters).\nEQUIPMENT : str\n    Instruments and apparatus (e.g. a balance or spectrometer).\nFORMULAS : str\n    A mixture designed in Albert through a Worksheet. Formulas are not created\n    through the inventory collection; they are produced by the Worksheet\n    collection ([`WorksheetCollection`][albert.collections.worksheets.WorksheetCollection]).",
      "enum": [
        "RawMaterials",
        "Consumables",
        "Equipment",
        "Formulas"
      ],
      "title": "InventoryCategory",
      "type": "string"
    },
    "InventoryItem": {
      "description": "A catalog entry for a material tracked in Albert.\n\nAn ``InventoryItem`` is the canonical record for a raw material, consumable,\npiece of equipment, or formula. Its [`InventoryCategory`][albert.resources.inventory.InventoryCategory] determines how it\nis used across the platform, and once saved it is referenced everywhere by its\nInventory ID (format ``INV...``, e.g. ``\"INVA9999999\"``). Raw materials are typically\nlinked to a manufacturing ``company`` and a compositional breakdown of CAS\namounts. Formula items are designed in Worksheets rather than created here (the\n[`create`][albert.collections.inventory.InventoryCollection.create] method rejects\nFormula items), and a Formula requires a ``project_id``.\n\nItems are managed through\n[`InventoryCollection`][albert.collections.inventory.InventoryCollection] (``client.inventory``).\n\n!!! example\n    ```python\n    from albert.resources.inventory import InventoryItem, InventoryCategory\n\n    item = InventoryItem(\n        name=\"Titanium Dioxide\",\n        category=InventoryCategory.RAW_MATERIALS,\n        company=\"Acme Chemicals\",\n    )\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "Tags": {
          "anyOf": [
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/$defs/Tag"
                  },
                  {
                    "$ref": "#/$defs/EntityLink"
                  }
                ]
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A list of Tag objects or strings representing tags.",
          "title": "Tags"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The name of the item.",
          "title": "Name"
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert Inventory ID (format ``INV...``). Set when the item is retrieved from or created in Albert. Serialized as ``albertId``.",
          "title": "Albertid"
        },
        "description": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A free-text description of the item.",
          "title": "Description"
        },
        "category": {
          "$ref": "#/$defs/InventoryCategory",
          "description": "The kind of material this item represents. Required. One of ``RawMaterials``, ``Consumables``, ``Equipment``, or ``Formulas``."
        },
        "unitCategory": {
          "anyOf": [
            {
              "$ref": "#/$defs/InventoryUnitCategory"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The dimension the item is measured in (mass, volume, length, pressure, or units). If not supplied, it defaults from ``category``: mass for raw materials and formulas, units for equipment and consumables."
        },
        "class": {
          "anyOf": [
            {
              "$ref": "#/$defs/SecurityClass"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The access/security class of the item (e.g. confidential, shared, restricted)."
        },
        "Company": {
          "anyOf": [
            {
              "$ref": "#/$defs/Company"
            },
            {
              "$ref": "#/$defs/EntityLink"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The manufacturing Company associated with the item (links to the Company collection). Accepts a [`Company`][albert.resources.companies.Company] or a name string; a string is turned into a Company that is first-or-created on save.",
          "title": "Company"
        },
        "minimum": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/InventoryMinimum"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Per-Location reorder thresholds for the item. See [`InventoryMinimum`][albert.resources.inventory.InventoryMinimum].",
          "title": "Minimum"
        },
        "alias": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "An alternate name for the item.",
          "title": "Alias"
        },
        "Cas": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/CasAmount"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The item's compositional breakdown as CAS amounts. See [`CasAmount`][albert.resources.inventory.CasAmount].",
          "title": "Cas"
        },
        "isFormulaOverride": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Whether the substance/CAS-level breakdown for this formula has been overridden from the auto-calculated value; commonly set to indicate the formula is not a non-reactive homogeneous mixture.",
          "title": "Isformulaoverride"
        },
        "Metadata": {
          "anyOf": [
            {
              "additionalProperties": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "integer"
                  },
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/$defs/EntityLinkWithName"
                  },
                  {
                    "$ref": "#/$defs/EntityLink"
                  },
                  {
                    "items": {
                      "anyOf": [
                        {
                          "$ref": "#/$defs/EntityLinkWithName"
                        },
                        {
                          "$ref": "#/$defs/EntityLink"
                        }
                      ]
                    },
                    "type": "array"
                  }
                ]
              },
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Custom metadata fields. Allowed keys are defined by the workspace's CustomFields configuration.",
          "title": "Metadata"
        },
        "parentId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The parent Project ID. Required for Formulas. Serialized as ``parentId``.",
          "title": "Parentid"
        },
        "ACL": {
          "description": "Access-control entries governing who can act on the item.",
          "items": {
            "$ref": "#/$defs/ACL"
          },
          "title": "Acl",
          "type": "array"
        },
        "onHand": {
          "default": 0.0,
          "description": "Total amount currently on hand across all lots. Read-only.",
          "title": "Onhand",
          "type": "number"
        },
        "TaskConfig": {
          "anyOf": [
            {
              "items": {
                "additionalProperties": true,
                "type": "object"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Task configuration associated with the item. Read-only.",
          "title": "Taskconfig"
        },
        "formulaId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The formula ID for a formula item. Read-only.",
          "title": "Formulaid"
        },
        "Symbols": {
          "anyOf": [
            {
              "items": {
                "additionalProperties": true,
                "type": "object"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Hazard/pictogram symbols associated with the item. Read-only.",
          "title": "Symbols"
        },
        "unNumber": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The UN hazardous-material number, when applicable. Read-only.",
          "title": "Unnumber"
        },
        "recentAttachmentId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The ID of the most recent attachment on the item. Read-only. See Also --------",
          "title": "Recentattachmentid"
        }
      },
      "required": [
        "category"
      ],
      "title": "InventoryItem",
      "type": "object"
    },
    "InventoryMinimum": {
      "description": "A reorder threshold: the minimum stock of an [`InventoryItem`][albert.resources.inventory.InventoryItem] to keep at a Location.\n\nEach entry pairs one Location with the minimum quantity of an item that must be\nkept on hand there. An [`InventoryItem`][albert.resources.inventory.InventoryItem] may carry several of these, one per\nLocation. Identify the Location either by passing a full\n[`Location`][albert.resources.locations.Location] object as ``location`` (its ``id`` is\nthen copied onto ``id``), or by passing the location ``id`` string directly. Provide\none or the other, not both.\n\n!!! example\n    ```python\n    from albert.resources.inventory import InventoryMinimum\n\n    minimum = InventoryMinimum(id=\"LOC9999999\", minimum=500)\n    ```",
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert ID of the Location this minimum applies to. Provide either a ``location`` or an ``id``; when ``location`` is given, this is set from it.",
          "title": "Id"
        },
        "location": {
          "anyOf": [
            {
              "$ref": "#/$defs/Location"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Location object this minimum applies to. Excluded from serialization. Provide either a ``location`` or an ``id``."
        },
        "minimum": {
          "description": "The minimum amount of the item that must be kept in stock at the Location. Must be between 0 and 1e15. See Also --------",
          "maximum": 1000000000000000,
          "minimum": 0,
          "title": "Minimum",
          "type": "number"
        }
      },
      "required": [
        "minimum"
      ],
      "title": "InventoryMinimum",
      "type": "object"
    },
    "InventoryUnitCategory": {
      "description": "The dimension of the unit an [`InventoryItem`][albert.resources.inventory.InventoryItem] is measured and stocked in.\n\nDetermines how quantities on hand and in formulas are interpreted. When not\nsupplied, the category defaults based on [`InventoryCategory`][albert.resources.inventory.InventoryCategory]: ``MASS``\nfor raw materials and formulas, ``UNITS`` for equipment and consumables.\n\nAttributes\n----------\nMASS : str\n    Measured by mass (e.g. grams, kilograms).\nVOLUME : str\n    Measured by volume (e.g. milliliters, liters).\nLENGTH : str\n    Measured by length (e.g. meters).\nPRESSURE : str\n    Measured by pressure.\nUNITS : str\n    Counted as discrete units (e.g. each item).",
      "enum": [
        "mass",
        "volume",
        "length",
        "pressure",
        "units"
      ],
      "title": "InventoryUnitCategory",
      "type": "string"
    },
    "JobSummary": {
      "description": "A brief summary of a background processing job.",
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The job identifier.",
          "title": "Id"
        },
        "state": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The current state of the job.",
          "title": "State"
        }
      },
      "title": "JobSummary",
      "type": "object"
    },
    "ListItem": {
      "description": "A single allowed value in a configurable list of options.\n\nList items back the choices offered by ``list``-type custom fields (e.g.\ndropdown options) and other fixed option sets in Albert. A\n[`CustomField`][albert.resources.custom_fields.CustomField] with\n[`LIST`][albert.resources.custom_fields.FieldType.LIST] defines a list (keyed\nby ``list_type``, typically the field's name); its selectable options are\n``ListItem`` records with a matching ``list_type``. Managed through\n[`ListsCollection`][albert.collections.lists.ListsCollection] (``client.lists``).\n\n!!! example\n    ```python\n    from albert.resources.lists import ListItem, ListItemCategory\n    item = ListItem(name=\"In Progress\", category=ListItemCategory.USER_DEFINED)\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "name": {
          "description": "The display name of the list item (the option value).",
          "title": "Name",
          "type": "string"
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert ID of the list item. Set when the item is retrieved from or created in Albert.",
          "title": "Albertid"
        },
        "category": {
          "anyOf": [
            {
              "$ref": "#/$defs/ListItemCategory"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The category of the list item. Allowed values are ``businessDefined``, ``userDefined``, ``projects``, ``extensions``, and ``inventory``."
        },
        "listType": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The list this item belongs to. For a list-type custom field this is typically the field's name (see [`CustomField`][albert.resources.custom_fields.CustomField]). For built-in categories the allowed values are ``projectState`` for ``projects``, ``extensions`` for ``extensions``, and ``casCategory`` or ``inventoryFunction`` for ``inventory``.",
          "title": "Listtype"
        }
      },
      "required": [
        "name"
      ],
      "title": "ListItem",
      "type": "object"
    },
    "ListItemCategory": {
      "description": "The category a list item belongs to, which governs its allowed list types.\n\nAttributes\n----------\nBUSINESS_DEFINED : str\n    Predefined values managed at the business/organization level.\nUSER_DEFINED : str\n    Custom values defined by users.\nPROJECTS : str\n    Values used by projects (e.g. project states).\nEXTENSIONS : str\n    Values used by extensions.\nINVENTORY : str\n    Values used by inventory (e.g. CAS categories or inventory functions).",
      "enum": [
        "businessDefined",
        "userDefined",
        "projects",
        "extensions",
        "inventory"
      ],
      "title": "ListItemCategory",
      "type": "string"
    },
    "Location": {
      "description": "A physical lab or site location in Albert.\n\nLocations are referenced by Tasks and Inventory Items to record where an\nactivity is performed or where a material lives, and each Location can hold\none or more Storage Locations\n([`StorageLocation`][albert.resources.storage_locations.StorageLocation]). Managed\nthrough [`LocationCollection`][albert.collections.locations.LocationCollection].\n\n!!! example\n    ```python\n    from albert.resources.locations import Location\n    location = Location(\n        name=\"Boston Lab\",\n        latitude=42.3601,\n        longitude=-71.0589,\n        address=\"1 Main St\",\n        country=\"US\",\n    )\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "name": {
          "description": "The human-readable name of the location.",
          "title": "Name",
          "type": "string"
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert ID of the location. Assigned by Albert and populated once the location has been created or retrieved.",
          "title": "Albertid"
        },
        "latitude": {
          "description": "The latitude of the location, in decimal degrees.",
          "title": "Latitude",
          "type": "number"
        },
        "longitude": {
          "description": "The longitude of the location, in decimal degrees.",
          "title": "Longitude",
          "type": "number"
        },
        "address": {
          "description": "The street address of the location.",
          "title": "Address",
          "type": "string"
        },
        "country": {
          "anyOf": [
            {
              "maxLength": 2,
              "minLength": 2,
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The two-letter country code of the location (for example, ``\"US\"``).",
          "title": "Country"
        }
      },
      "required": [
        "name",
        "latitude",
        "longitude",
        "address"
      ],
      "title": "Location",
      "type": "object"
    },
    "Operator": {
      "description": "A comparison operator constraining a numeric parameter value.\n\nUsed by [`ValueValidation`][albert.resources.parameter_groups.ValueValidation] to bound acceptable values (e.g. ``gte`` with\na ``min`` requires the value to be at least ``min``).\n\nAttributes\n----------\nBETWEEN : str\n    Value must fall between ``min`` and ``max`` (inclusive).\nLESS_THAN : str\n    Value must be less than ``max``.\nLESS_THAN_OR_EQUAL : str\n    Value must be less than or equal to ``max``.\nGREATER_THAN_OR_EQUAL : str\n    Value must be greater than or equal to ``min``.\nGREATER_THAN : str\n    Value must be greater than ``min``.\nEQUALS : str\n    Value must equal the specified value.",
      "enum": [
        "between",
        "lt",
        "lte",
        "gte",
        "gt",
        "eq",
        "neq"
      ],
      "title": "Operator",
      "type": "string"
    },
    "PGType": {
      "description": "The kind of task a [`ParameterGroup`][albert.resources.parameter_groups.ParameterGroup] relates to.\n\nA Parameter Group is about making a sample and/or prepping it for measurement,\nand its type records which sort of task it is used in.\n\nAttributes\n----------\nGENERAL : str\n    A group used in a general lab task (anything that is not a batch or\n    property task).\nBATCH : str\n    A group used in a Batch Task ([`BatchTask`][albert.resources.tasks.BatchTask]),\n    e.g. a mixing step when manufacturing a batch.\nPROPERTY : str\n    A group used in a property (measurement) task to prep a sample for testing.",
      "enum": [
        "general",
        "batch",
        "property"
      ],
      "title": "PGType",
      "type": "string"
    },
    "PageState": {
      "properties": {
        "leftPanelExpand": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Leftpanelexpand"
        },
        "Block": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/BlockState"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Block"
        }
      },
      "title": "PageState",
      "type": "object"
    },
    "Parameter": {
      "description": "The definition of a single experimental condition or input variable.\n\nA Parameter (ID format ``PRM...``) names an \"indirect variable\" such as\nTemperature, Spin Speed, or Instrument. The Parameter itself only defines the\nvariable; its actual value and unit are fixed to a setpoint later, inside a\n[`Workflow`][albert.resources.workflows.Workflow]. Parameters are the building\nblocks of Parameter Groups\n([`ParameterGroup`][albert.resources.parameter_groups.ParameterGroup]) and form the\nparameter side of Data Templates\n([`DataTemplate`][albert.resources.data_templates.DataTemplate]).\n\nManage parameters through\n[`ParameterCollection`][albert.collections.parameters.ParameterCollection]\n(``client.parameters``).\n\n!!! example\n    ```python\n    from albert import Albert\n    from albert.resources.parameters import Parameter\n    client = Albert()\n    param = client.parameters.create(parameter=Parameter(name=\"Temperature\"))\n    param.id\n    # 'PRM9999999'\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "name": {
          "description": "The name of the parameter. Names must be unique.",
          "title": "Name",
          "type": "string"
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert ID of the parameter (format ``PRM...``). Set when the parameter is retrieved from or created in Albert.",
          "title": "Albertid"
        },
        "Metadata": {
          "anyOf": [
            {
              "additionalProperties": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "integer"
                  },
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/$defs/EntityLinkWithName"
                  },
                  {
                    "$ref": "#/$defs/EntityLink"
                  },
                  {
                    "items": {
                      "anyOf": [
                        {
                          "$ref": "#/$defs/EntityLinkWithName"
                        },
                        {
                          "$ref": "#/$defs/EntityLink"
                        }
                      ]
                    },
                    "type": "array"
                  }
                ]
              },
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional user-defined metadata keyed by field name.",
          "title": "Metadata"
        },
        "category": {
          "anyOf": [
            {
              "$ref": "#/$defs/ParameterCategory"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Whether the parameter is ``Normal`` (scalar value) or ``Special`` (entity reference). Set by the platform and read-only."
        },
        "rank": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The rank of the returned parameter. Read-only.",
          "title": "Rank"
        },
        "required": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Whether this parameter must be filled in within a Parameter Group.",
          "title": "Required"
        }
      },
      "required": [
        "name"
      ],
      "title": "Parameter",
      "type": "object"
    },
    "ParameterCategory": {
      "description": "Whether a [`Parameter`][albert.resources.parameters.Parameter]'s value is a plain scalar or an entity reference.\n\nSet by the platform and read-only. It determines how a parameter's value is\ninterpreted when a setpoint is assigned to it inside a\n[`Workflow`][albert.resources.workflows.Workflow].\n\nAttributes\n----------\nNORMAL : str\n    A \"normal\" parameter whose value is a plain scalar (e.g. a number or text),\n    such as Temperature or Spin Speed.\nSPECIAL : str\n    A \"special\" parameter whose value references another entity (e.g. Equipment,\n    a Consumable, or a Template). The setpoint value is that entity's ID rather\n    than a plain scalar.",
      "enum": [
        "Normal",
        "Special"
      ],
      "title": "ParameterCategory",
      "type": "string"
    },
    "ParameterGroup": {
      "description": "A reusable set of parameters (PRG) for making or prepping a sample.\n\nA Parameter Group bundles [`Parameter`][albert.resources.parameters.Parameter]\nentities, along with their values, units, and validation rules, into a reusable\nunit. Whereas a Data Template's parameters relate to a given measurement, a\nParameter Group is about *making* the sample and/or *prepping* it for\nmeasurement (e.g. a mixing step or a cure schedule). Some groups drive Batch\nTasks ([`BatchTask`][albert.resources.tasks.BatchTask]); others are stacked within a\ntask. A group's parameters, together with a Data Template's parameters, are\nfixed to setpoints inside a [`Workflow`][albert.resources.workflows.Workflow].\n\nOnce saved, a group is referenced by its Parameter Group ID (format ``PRG...``,\ne.g. ``\"PRG9999999\"``). Store test standards (e.g. ASTM or ISO) under the\n``\"Standards\"`` key of ``metadata``.\n\nGroups are managed through\n[`ParameterGroupCollection`][albert.collections.parameter_groups.ParameterGroupCollection]\n(``client.parameter_groups``).\n\n!!! example\n    ```python\n    from albert.resources.parameter_groups import (\n        ParameterGroup,\n        ParameterValue,\n        PGType,\n    )\n\n    pg = ParameterGroup(\n        name=\"Mixing Step\",\n        type=PGType.BATCH,\n        parameters=[ParameterValue(id=\"PRM9999999\", value=\"500\")],\n    )\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "Tags": {
          "anyOf": [
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/$defs/Tag"
                  },
                  {
                    "$ref": "#/$defs/EntityLink"
                  }
                ]
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A list of Tag objects or strings representing tags.",
          "title": "Tags"
        },
        "name": {
          "description": "The name of the parameter group. Required.",
          "title": "Name",
          "type": "string"
        },
        "type": {
          "anyOf": [
            {
              "$ref": "#/$defs/PGType"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The kind of task the group relates to (``general``, ``batch``, or ``property``)."
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert Parameter Group ID (format ``PRG...``). Set when the group is retrieved from or created in Albert. Serialized as ``albertId``.",
          "title": "Albertid"
        },
        "description": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A free-text description of the group.",
          "title": "Description"
        },
        "class": {
          "$ref": "#/$defs/SecurityClass",
          "default": "restricted",
          "description": "The access/security class of the group. Defaults to ``RESTRICTED``. Serialized as ``class``."
        },
        "ACL": {
          "anyOf": [
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/$defs/User"
                  },
                  {
                    "$ref": "#/$defs/EntityLink"
                  }
                ]
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Access-control entries governing who can act on the group. Serialized as ``ACL``.",
          "title": "Acl"
        },
        "Metadata": {
          "additionalProperties": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "integer"
              },
              {
                "type": "string"
              },
              {
                "$ref": "#/$defs/EntityLinkWithName"
              },
              {
                "$ref": "#/$defs/EntityLink"
              },
              {
                "items": {
                  "anyOf": [
                    {
                      "$ref": "#/$defs/EntityLinkWithName"
                    },
                    {
                      "$ref": "#/$defs/EntityLink"
                    }
                  ]
                },
                "type": "array"
              }
            ]
          },
          "description": "Custom metadata fields. Test standards are stored under the ``\"Standards\"`` key. Serialized as ``Metadata``.",
          "title": "Metadata",
          "type": "object"
        },
        "Parameters": {
          "description": "The parameters in the group, each with its value, unit, and validation. See [`ParameterValue`][albert.resources.parameter_groups.ParameterValue]. Serialized as ``Parameters``.",
          "items": {
            "$ref": "#/$defs/ParameterValue"
          },
          "title": "Parameters",
          "type": "array"
        },
        "verified": {
          "default": false,
          "description": "Whether the group has been verified (an approval/governance state). Read-only.",
          "title": "Verified",
          "type": "boolean"
        },
        "documents": {
          "description": "Documents (e.g. SOPs) associated with the Parameter Group. See Also --------",
          "items": {
            "$ref": "#/$defs/EntityLink"
          },
          "title": "Documents",
          "type": "array"
        }
      },
      "required": [
        "name"
      ],
      "title": "ParameterGroup",
      "type": "object"
    },
    "ParameterGroupSetpoints": {
      "description": "All parameter setpoints belonging to one Data Template or Parameter Group.\n\nA workflow is organized by group: each [`ParameterGroupSetpoints`][albert.resources.workflows.ParameterGroupSetpoints] names one\nData Template or Parameter Group (by ``id`` or by a full ``parameter_group`` object)\nand carries the [`ParameterSetpoint`][albert.resources.workflows.ParameterSetpoint] list for the parameters in it. A\n[`Workflow`][albert.resources.workflows.Workflow] holds one of these per group. Both the order of setpoints within a\ngroup and the order of groups within the workflow are part of what makes a workflow\nunique, so preserve the order you intend.\n\n!!! example\n    ```python\n    from albert.resources.workflows import (\n        ParameterGroupSetpoints,\n        ParameterSetpoint,\n    )\n\n    group = ParameterGroupSetpoints(\n        id=\"PRG9999999\",\n        parameter_setpoints=[\n            ParameterSetpoint(parameter_id=\"PRM9999999\", value=\"25\", short_name=\"Temp\"),\n        ],\n    )\n    ```",
      "properties": {
        "parameter_group": {
          "anyOf": [
            {
              "$ref": "#/$defs/ParameterGroup"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The parameter group to set setpoints on. Provide either ``parameter_group`` or ``id``. If both are given they must refer to the same group."
        },
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The ID of the parameter group (``PRG...``) or Data Template (``DAT...``). Provide either ``id`` or ``parameter_group``. Auto-filled from ``parameter_group`` when one is provided.",
          "title": "Id"
        },
        "name": {
          "default": "Pre-linked Parameters",
          "description": "Read-only display name of the group (defaults to ``\"Pre-linked Parameters\"``).",
          "title": "Name",
          "type": "string"
        },
        "Parameters": {
          "description": "The setpoints to apply to this group's parameters.",
          "items": {
            "$ref": "#/$defs/ParameterSetpoint"
          },
          "title": "Parameters",
          "type": "array"
        },
        "rowId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Read-only. The group's interval row ID.",
          "title": "Rowid"
        },
        "prgSequence": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Ordering key; needed because a Parameter Group can be repeated within a workflow. Not required when writing (PUT). See Also --------",
          "title": "Prgsequence"
        }
      },
      "title": "ParameterGroupSetpoints",
      "type": "object"
    },
    "ParameterSetpoint": {
      "description": "The fixed value (or set of interval values) for one parameter within a workflow.\n\nA setpoint pins a single parameter to a condition. Provide either a single ``value``\n(plus ``unit`` where applicable) for a fixed setpoint, or a list of ``intervals`` to\nintervalize the parameter across several values. You must identify the parameter by\npassing either a full ``parameter`` object or its ``parameter_id``. Setpoints are\ngrouped under a [`ParameterGroupSetpoints`][albert.resources.workflows.ParameterGroupSetpoints], which is in turn placed on a\n[`Workflow`][albert.resources.workflows.Workflow].\n\nNormal parameters take exactly one of ``value`` or ``intervals``. Special parameters\n(Equipment, Consumables, Templates) take an entity ID as their value.\n\n!!! example\n    ```python\n    from albert.resources.workflows import ParameterSetpoint, Interval\n\n    # A single fixed setpoint identified by parameter ID.\n    temp = ParameterSetpoint(parameter_id=\"PRM9999999\", value=\"25\", short_name=\"Temp\")\n\n    # The same parameter intervalized across two values.\n    temp_varied = ParameterSetpoint(\n        parameter_id=\"PRM9999999\",\n        short_name=\"Temp\",\n        intervals=[\n            Interval(value=\"25\", unit={\"id\": \"UNI9999999\"}),\n            Interval(value=\"60\", unit={\"id\": \"UNI9999999\"}),\n        ],\n    )\n    ```",
      "properties": {
        "parameter": {
          "anyOf": [
            {
              "$ref": "#/$defs/Parameter"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The parameter to set. Provide either ``parameter`` or ``parameter_id``. If both are given they must refer to the same parameter."
        },
        "value": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "$ref": "#/$defs/EntityLink"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The value of the setpoint. For a Special parameter (an inventory item), provide the item's [`EntityLink`][albert.core.shared.models.base.EntityLink] (or a mapping with an ``id``). Mutually exclusive with ``intervals`` for Normal parameters.",
          "title": "Value"
        },
        "Unit": {
          "anyOf": [
            {
              "$ref": "#/$defs/Unit"
            },
            {
              "$ref": "#/$defs/EntityLink"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The unit of ``value``, where applicable.",
          "title": "Unit"
        },
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The ID of the parameter (e.g. ``\"PRM9999999\"``). Provide either ``parameter`` or ``parameter_id``.",
          "title": "Id"
        },
        "Intervals": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/Interval"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The interval values when the parameter is intervalized. Provide either ``intervals`` or ``value`` (plus ``unit``), not both.",
          "title": "Intervals"
        },
        "category": {
          "anyOf": [
            {
              "$ref": "#/$defs/ParameterCategory"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The category of the parameter: ``SPECIAL`` for an inventory item (Equipment, Consumable, Template), ``NORMAL`` for everything else."
        },
        "shortName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The short / display name of the parameter. Required if ``value`` is a mapping.",
          "title": "Shortname"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The parameter name. Auto-filled from ``parameter`` when one is provided.",
          "title": "Name"
        },
        "rowId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Read-only. The row ID of this parameter with respect to its interval row.",
          "title": "Rowid"
        },
        "prgPrmRowId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Ordering key; needed because a Parameter Group can be repeated within a workflow. Not required when writing (PUT). See Also --------",
          "title": "Prgprmrowid"
        }
      },
      "title": "ParameterSetpoint",
      "type": "object"
    },
    "ParameterValue": {
      "description": "A single [`Parameter`][albert.resources.parameters.Parameter] and its value within a [`ParameterGroup`][albert.resources.parameter_groups.ParameterGroup].\n\nA ``ParameterValue`` binds one Parameter to the value, unit, and validation\nrules it takes inside a group. Each entry must reference an existing Parameter,\nso provide exactly one of ``id`` (the Parameter's Albert ID) or ``parameter``\n(the [`Parameter`][albert.resources.parameters.Parameter] object itself); when a\n``parameter`` is given, the ``id``, ``category``, and ``name`` are populated\nfrom it. Values are later fixed to setpoints inside a\n[`Workflow`][albert.resources.workflows.Workflow].\n\n!!! example\n    ```python\n    from albert.resources.parameter_groups import ParameterValue\n\n    # Reference the parameter by its Albert ID\n    value = ParameterValue(id=\"PRM9999999\", value=\"500\")\n    ```",
      "properties": {
        "parameter": {
          "anyOf": [
            {
              "$ref": "#/$defs/Parameter"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Parameter this value is associated with. Provide either ``id`` or ``parameter``. Excluded from serialization."
        },
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert ID of the associated Parameter. Provide either ``id`` or ``parameter``.",
          "title": "Id"
        },
        "category": {
          "anyOf": [
            {
              "$ref": "#/$defs/ParameterCategory"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The category of the parameter (``Normal`` or ``Special``). Populated from ``parameter`` when one is provided. When only ``id`` is given, the parameter-group create API rejects the payload (``400 \"Category mismatch ... Category undefined expected\"``), so set ``category`` explicitly (``ParameterCategory.NORMAL`` for ordinary parameters) or pass the full ``parameter`` object."
        },
        "shortName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A short name for the parameter value. Serialized as ``shortName``.",
          "title": "Shortname"
        },
        "value": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/$defs/InventoryItem"
            },
            {
              "$ref": "#/$defs/EntityLink"
            },
            {
              "$ref": "#/$defs/User"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The value of the parameter. Can be a plain string, an [`InventoryItem`][albert.resources.inventory.InventoryItem] (e.g. when the parameter represents an instrument choice), or a [`User`][albert.resources.users.User] (e.g. a user reference such as \"Performed By\").",
          "title": "Value"
        },
        "Unit": {
          "anyOf": [
            {
              "$ref": "#/$defs/Unit"
            },
            {
              "$ref": "#/$defs/EntityLink"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The unit of measure for the value. Serialized as ``Unit``.",
          "title": "Unit"
        },
        "Added": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "required": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Whether this parameter is required. Defaults to False.",
          "title": "Required"
        },
        "validation": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/ValueValidation"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "description": "Validation rules applied to the value. See [`ValueValidation`][albert.resources.parameter_groups.ValueValidation].",
          "title": "Validation"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The name of the parameter. Read-only.",
          "title": "Name"
        },
        "sequence": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The sequence of the parameter within the group. Read-only.",
          "title": "Sequence"
        },
        "originalShortName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Originalshortname"
        },
        "originalName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Originalname"
        }
      },
      "title": "ParameterValue",
      "type": "object"
    },
    "Project": {
      "description": "A project in Albert: the top-level container for a piece of R&D work.\n\nA project groups the formulations designed for the work, its Worksheet (1:1\nwith the project), the Tasks run against it, and the inventory it references.\nCreate and manage projects through the\n[`ProjectCollection`][albert.collections.projects.ProjectCollection] (``client.projects``).\n\nOnly ``description`` is required to build one; it doubles as the project's\ndisplay name. The ``id`` and ``state`` are assigned by Albert and are read\nonly from the client's perspective.\n\n!!! example\n    ```python\n    from albert import Albert\n    from albert.resources.projects import Project, ProjectClass\n    client = Albert()\n    project = client.projects.create(\n        project=Project(\n            description=\"Weatherproof Coatings 2026\",\n            project_class=ProjectClass.SHARED,\n        )\n    )\n    project.id\n    # 'PRO123'\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Read-only status string returned by Albert.",
          "title": "Status"
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "description": {
          "description": "Human-readable project name/description (1-2000 characters). Also serves as the project's display name.",
          "maxLength": 2000,
          "minLength": 1,
          "title": "Description",
          "type": "string"
        },
        "Locations": {
          "anyOf": [
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/$defs/Location"
                  },
                  {
                    "$ref": "#/$defs/EntityLink"
                  }
                ]
              },
              "maxItems": 20,
              "minItems": 1,
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The locations the project is associated with. Optional.",
          "title": "Locations"
        },
        "class": {
          "anyOf": [
            {
              "$ref": "#/$defs/ProjectClass"
            },
            {
              "type": "null"
            }
          ],
          "default": "private",
          "description": "Access-control class (private, shared, or confidential). Defaults to private."
        },
        "prefix": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional prefix used when naming entities within the project.",
          "title": "Prefix"
        },
        "appEngg": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Inventory Ids to be added as application engineering",
          "title": "Appengg"
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert Project ID (format ``PRO...``). Assigned by Albert and present once the project has been created or retrieved.",
          "title": "Albertid"
        },
        "ACL": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/ACL"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "description": "Access-control entries controlling who can access the project. Optional.",
          "title": "Acl"
        },
        "old_api_params": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Read-only. Do not use.",
          "title": "Old Api Params"
        },
        "task_config": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/TaskConfig"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "description": "Default task settings applied to tasks created within the project.",
          "title": "Task Config"
        },
        "grid": {
          "anyOf": [
            {
              "$ref": "#/$defs/GridDefault"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The default grid view (Property Data or Worksheet) shown for the project."
        },
        "Metadata": {
          "anyOf": [
            {
              "additionalProperties": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "integer"
                  },
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/$defs/EntityLinkWithName"
                  },
                  {
                    "$ref": "#/$defs/EntityLink"
                  },
                  {
                    "items": {
                      "anyOf": [
                        {
                          "$ref": "#/$defs/EntityLinkWithName"
                        },
                        {
                          "$ref": "#/$defs/EntityLink"
                        }
                      ]
                    },
                    "type": "array"
                  }
                ]
              },
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Custom field values. Allowed keys and values are defined via the Custom Fields API. Optional.",
          "title": "Metadata"
        },
        "state": {
          "anyOf": [
            {
              "$ref": "#/$defs/State"
            },
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The project's lifecycle state. Read only on create; can be changed via [`update`][albert.collections.projects.ProjectCollection.update]. Tenant-customized states outside [`State`][albert.resources.projects.State] parse as plain strings.",
          "title": "State"
        }
      },
      "required": [
        "description"
      ],
      "title": "Project",
      "type": "object"
    },
    "ProjectClass": {
      "description": "The access-control class of a project, governing who can see it.\n\n- ``PRIVATE``: visible only to the project's ACL members (the default).\n- ``SHARED``: visible more broadly across the organization.\n- ``CONFIDENTIAL``: restricted, most tightly controlled access.",
      "enum": [
        "shared",
        "confidential",
        "private"
      ],
      "title": "ProjectClass",
      "type": "string"
    },
    "QCTarget": {
      "properties": {
        "formulaId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Formulaid"
        },
        "target": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Target"
        }
      },
      "title": "QCTarget",
      "type": "object"
    },
    "QCTaskData": {
      "properties": {
        "datatemplateId": {
          "title": "Datatemplateid",
          "type": "string"
        },
        "Workflows": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/QCWorkflowTargets"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Workflows"
        }
      },
      "required": [
        "datatemplateId"
      ],
      "title": "QCTaskData",
      "type": "object"
    },
    "QCWorkflowTargets": {
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "taskName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Taskname"
        },
        "Targets": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/QCTarget"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Targets"
        }
      },
      "title": "QCWorkflowTargets",
      "type": "object"
    },
    "Role": {
      "description": "A named set of access permissions within a tenant.\n\nA role bundles policies that determine what a holder is allowed to do. Roles\nare assigned to users ([`User`][albert.resources.users.User]) and referenced\nby entity ACLs. Roles are typically read from Albert rather than built by\nhand.",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert ID of the role. Role IDs may contain ``#`` characters. Set once the role is retrieved from Albert.",
          "title": "Albertid"
        },
        "name": {
          "description": "The display name of the role.",
          "title": "Name",
          "type": "string"
        },
        "Policies": {
          "anyOf": [
            {
              "items": {},
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The policies (permission rules) associated with the role.",
          "title": "Policies"
        },
        "tenant": {
          "description": "The ID of the tenant the role belongs to.",
          "title": "Tenant",
          "type": "string"
        },
        "visibility": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Whether the role is visible in the platform's role listings.",
          "title": "Visibility"
        }
      },
      "required": [
        "name",
        "tenant"
      ],
      "title": "Role",
      "type": "object"
    },
    "SecurityClass": {
      "description": "The security (access control) class of a resource.\n\nAttributes\n----------\nSHARED : str\n    Accessible to all members of the tenant.\nRESTRICTED : str\n    Access is restricted to specific teams or users.\nCONFIDENTIAL : str\n    Access is limited to designated users only.\nPRIVATE : str\n    Visible only to the owner. Used by Projects.",
      "enum": [
        "shared",
        "restricted",
        "confidential",
        "private"
      ],
      "title": "SecurityClass",
      "type": "string"
    },
    "Standard": {
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "standardId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Standardid"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "standardOrganization": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Standardorganization"
        },
        "standardOrganizationId": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Standardorganizationid"
        }
      },
      "required": [
        "id"
      ],
      "title": "Standard",
      "type": "object"
    },
    "State": {
      "description": "The lifecycle state of a project.\n\nThe set of allowed states is customizable per tenant via the entity-status\nAPI; these are the platform defaults. Unknown tenant-specific values are\ntolerated as plain strings on [`Project.state`][albert.resources.projects.Project.state].",
      "enum": [
        "Not Started",
        "Active",
        "Closed - Success",
        "Closed - Archived",
        "Just Started",
        "In Progress"
      ],
      "title": "State",
      "type": "string"
    },
    "Status": {
      "description": "The status of a resource.\n\nAttributes\n----------\nACTIVE : str\n    The resource is fully operational and visible in normal operations.\nINACTIVE : str\n    The resource is hidden from normal operations and disabled from use.",
      "enum": [
        "active",
        "inactive"
      ],
      "title": "Status",
      "type": "string"
    },
    "StorageKeyReference": {
      "description": "S3 storage key references for a data column file result.",
      "properties": {
        "rawfile": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The raw file storage key.",
          "title": "Rawfile"
        },
        "s3Input": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The S3 key for the input file.",
          "title": "S3Input"
        },
        "s3Output": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The S3 key for the processed output file.",
          "title": "S3Output"
        },
        "preview": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The S3 key for a preview image.",
          "title": "Preview"
        },
        "thumb": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The S3 key for a thumbnail image.",
          "title": "Thumb"
        },
        "original": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The S3 key for the original file.",
          "title": "Original"
        }
      },
      "title": "StorageKeyReference",
      "type": "object"
    },
    "Tag": {
      "description": "A freeform text label used to categorize and connect entities.\n\nTags are shared by name across the platform and can be applied to inventory\nitems, companies, tasks, and other records to group and filter them. Managed\nthrough [`TagCollection`][albert.collections.tags.TagCollection] (``client.tags``);\nthe usual entry point is [`get_or_create`][albert.collections.tags.TagCollection.get_or_create].\n\n!!! example\n    ```python\n    from albert.resources.tags import Tag\n    tag = Tag(tag=\"high-priority\")\n    ```\nMethods\n-------\nfrom_string(tag) -> Tag\n    Build a Tag from its name string.",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "name": {
          "description": "The name of the tag (its text label).",
          "title": "Name",
          "type": "string"
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert ID of the tag (format ``TAG...``). Set when the tag is retrieved from or created in Albert. Methods ------- from_string(tag) -> Tag Build a Tag from its name string.",
          "title": "Albertid"
        }
      },
      "required": [
        "name"
      ],
      "title": "Tag",
      "type": "object"
    },
    "Target": {
      "properties": {
        "dataColumnUniqueId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Datacolumnuniqueid"
        },
        "value": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Value"
        }
      },
      "title": "Target",
      "type": "object"
    },
    "TaskConfig": {
      "description": "Default task settings applied when tasks are created within a project.",
      "properties": {
        "datatemplateId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "ID of the data template tasks default to.",
          "title": "Datatemplateid"
        },
        "workflowId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "ID of the workflow tasks default to.",
          "title": "Workflowid"
        },
        "defaultTaskName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Default name applied to new tasks.",
          "title": "Defaulttaskname"
        },
        "target": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Default target for the configured tasks.",
          "title": "Target"
        },
        "hidden": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": false,
          "description": "Whether this configuration is hidden in the UI.",
          "title": "Hidden"
        }
      },
      "title": "TaskConfig",
      "type": "object"
    },
    "TaskEntityType": {
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "customCategory": {
          "default": null,
          "title": "Customcategory",
          "type": "string"
        }
      },
      "title": "TaskEntityType",
      "type": "object"
    },
    "TaskInventoryInformation": {
      "description": "Which inventory item (and optionally which lot) a task acts on.\n\nEvery task references one or more inventory items through this model, stored\non [`inventory_information`][albert.resources.tasks.BaseTask.inventory_information]. What is required depends on the\ntask type:\n\n- [`BatchTask`][albert.resources.tasks.BatchTask]: ``inventory_id`` and ``batch_size`` are required\n  (you are making a quantity of that item).\n- [`PropertyTask`][albert.resources.tasks.PropertyTask] and [`GeneralTask`][albert.resources.tasks.GeneralTask]: ``inventory_id`` is\n  required and ``lot_id`` is recommended (the specific physical lot tested).",
      "properties": {
        "id": {
          "description": "The ID of the inventory item used in the task (serialized as ``id``).",
          "title": "Id",
          "type": "string"
        },
        "lotId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The ID of the specific lot used. Recommended for property and general tasks so results attach to the right physical material.",
          "title": "Lotid"
        },
        "lotNumber": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The human-readable lot number of the item.",
          "title": "Lotnumber"
        },
        "invLotUniqueId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A combined inventory-and-lot identifier used internally.",
          "title": "Invlotuniqueid"
        },
        "batchSize": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The quantity to make of the related inventory item. Required for [`BatchTask`][albert.resources.tasks.BatchTask]; the unit is given by [`batch_size_unit`][albert.resources.tasks.BatchTask.batch_size_unit].",
          "title": "Batchsize"
        },
        "selectedLot": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Read-only. Whether this lot is the one selected for the task.",
          "title": "Selectedlot"
        },
        "barcodeId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The barcode identifier of the physical item, if scanned.",
          "title": "Barcodeid"
        },
        "quantityUsed": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The amount of the item consumed by the task.",
          "title": "Quantityused"
        }
      },
      "required": [
        "id"
      ],
      "title": "TaskInventoryInformation",
      "type": "object"
    },
    "TaskPriority": {
      "description": "How urgent a task is, used for triage and sorting work queues.\n\nAttributes\n----------\nHIGH : str\n    Highest urgency (``\"High\"``).\nMEDIUM : str\n    Normal urgency (``\"Medium\"``).\nLOW : str\n    Lowest urgency (``\"Low\"``).",
      "enum": [
        "High",
        "Medium",
        "Low"
      ],
      "title": "TaskPriority",
      "type": "string"
    },
    "TaskSource": {
      "description": "A reference to the task or template a task was created from.\n\nRecorded in [`sources`][albert.resources.tasks.BaseTask.sources] to trace where a task originated.",
      "properties": {
        "id": {
          "description": "The ID of the originating task or template.",
          "title": "Id",
          "type": "string"
        },
        "type": {
          "$ref": "#/$defs/TaskSourceType",
          "description": "Whether ``id`` points to a task or a template."
        }
      },
      "required": [
        "id",
        "type"
      ],
      "title": "TaskSource",
      "type": "object"
    },
    "TaskSourceType": {
      "description": "What kind of thing a task was created from.\n\nAttributes\n----------\nTASK : str\n    The task was created from another existing task (``\"task\"``).\nTEMPLATE : str\n    The task was created from a task template (``\"template\"``).",
      "enum": [
        "task",
        "template"
      ],
      "title": "TaskSourceType",
      "type": "string"
    },
    "TaskState": {
      "description": "Where a task is in its lifecycle, from creation through completion.\n\nThe state generally advances as work progresses: an unclaimed task is\npicked up, started, finished, and eventually closed (or cancelled).\n\nAttributes\n----------\nUNCLAIMED : str\n    Created but not yet assigned to or claimed by anyone.\nNOT_STARTED : str\n    Claimed or assigned, but work has not begun.\nIN_PROGRESS : str\n    Work is actively underway.\nCOMPLETED : str\n    The work has been finished.\nCLOSED : str\n    Finalized and no longer active.\nCANCELLED : str\n    Abandoned before completion.",
      "enum": [
        "Unclaimed",
        "Not Started",
        "In Progress",
        "Completed",
        "Closed",
        "Cancelled"
      ],
      "title": "TaskState",
      "type": "string"
    },
    "Team": {
      "description": "A named group of users on the Albert platform.\n\nTeams share access: entity ACLs and Task assignments can reference a whole\nteam rather than individual users. Each member is a\n[`TeamMember`][albert.resources.teams.TeamMember] pairing a\n[`User`][albert.resources.users.User] with a team role.\n\n!!! example\n    ```python\n    from albert.resources.teams import Team, TeamMember\n    team = Team(\n        name=\"Coatings R&D\",\n        members=[TeamMember(id=\"USR12\", role=\"TeamOwner\")],\n    )\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert Team ID (format ``TEM...``). Set once the team is registered in or retrieved from Albert.",
          "title": "Albertid"
        },
        "name": {
          "description": "The display name of the team.",
          "minLength": 1,
          "title": "Name",
          "type": "string"
        },
        "Users": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/TeamMember"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The members of the team, each with their name and team role.",
          "title": "Users"
        }
      },
      "required": [
        "name"
      ],
      "title": "Team",
      "type": "object"
    },
    "TeamMember": {
      "description": "A user's membership in a team, pairing a user with their team role.\n\n!!! example\n    ```python\n    from albert.resources.teams import TeamMember\n    member = TeamMember(id=\"USR12\", role=\"TeamOwner\")\n    ```",
      "properties": {
        "id": {
          "description": "The Albert User ID (format ``USR...``) of the member.",
          "title": "Id",
          "type": "string"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The display name of the user.",
          "title": "Name"
        },
        "fgc": {
          "anyOf": [
            {
              "enum": [
                "TeamOwner",
                "TeamViewer"
              ],
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The member's role within the team: ``\"TeamOwner\"`` (can manage the team) or ``\"TeamViewer\"`` (read access). Defaults to ``\"TeamViewer\"`` when unset.",
          "title": "Fgc"
        }
      },
      "required": [
        "id"
      ],
      "title": "TeamMember",
      "type": "object"
    },
    "Unit": {
      "description": "A unit of measure (e.g. ``g``, ``mL``, ``\u00b0C``).\n\nUnits qualify quantities throughout the platform: inventory amounts,\nparameter values, and property results. Managed through\n[`UnitCollection`][albert.collections.units.UnitCollection] (``client.units``).\n\n!!! example\n    ```python\n    from albert.resources.units import Unit, UnitCategory\n    unit = Unit(name=\"milliliter\", symbol=\"mL\", category=UnitCategory.LIQUID_VOLUME)\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert ID of the unit (format ``UNI...``). Set when the unit is retrieved from or created in Albert.",
          "title": "Albertid"
        },
        "name": {
          "description": "Currently this is the only field that is displayed in Albert, so use this for display purposes. Therefore, users often use the symbol for the unit here as that's the preferred display.",
          "title": "Name",
          "type": "string"
        },
        "symbol": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The display symbol for the unit (e.g. ``\"g\"``).",
          "title": "Symbol"
        },
        "Synonyms": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "description": "Alternate names or spellings that also refer to this unit.",
          "title": "Synonyms"
        },
        "category": {
          "anyOf": [
            {
              "$ref": "#/$defs/UnitCategory"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The physical quantity the unit measures (e.g. ``Mass``, ``Volume``)."
        },
        "verified": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": false,
          "description": "Whether the unit has been verified in Albert. Read-only.",
          "title": "Verified"
        }
      },
      "required": [
        "name"
      ],
      "title": "Unit",
      "type": "object"
    },
    "UnitCategory": {
      "description": "The physical quantity a unit measures.\n\nAttributes\n----------\nLENGTH : str\n    Length units (e.g. m, cm).\nVOLUME : str\n    Volume units (e.g. m\u00b3).\nLIQUID_VOLUME : str\n    Liquid volume units (e.g. L, mL).\nANGLES : str\n    Angle units (e.g. degrees, radians).\nTIME : str\n    Time units (e.g. s, h).\nFREQUENCY : str\n    Frequency units (e.g. Hz).\nMASS : str\n    Mass units (e.g. g, kg).\nCURRENT : str\n    Electric current units (e.g. A).\nTEMPERATURE : str\n    Temperature units (e.g. \u00b0C, K).\nAMOUNT : str\n    Amount of substance units (e.g. mol).\nLUMINOSITY : str\n    Luminous intensity units (e.g. cd).\nFORCE : str\n    Force units (e.g. N).\nENERGY : str\n    Energy units (e.g. J).\nPOWER : str\n    Power units (e.g. W).\nPRESSURE : str\n    Pressure units (e.g. Pa, bar).\nELECTRICITY_AND_MAGNETISM : str\n    Electricity and magnetism units.\nOTHER : str\n    Units that do not fit another category.\nWEIGHT : str\n    Weight units.\nAREA : str\n    Area units (e.g. m\u00b2).\nSURFACE_AREA : str\n    Surface area units.\nBINARY : str\n    Binary/digital-information units (e.g. bytes).\nCAPACITANCE : str\n    Capacitance units (e.g. F).\nSPEED : str\n    Speed units (e.g. m/s).\nELECTRICAL_CONDUCTIVITY : str\n    Electrical conductivity units.\nELECTRICAL_PERMITTIVITY : str\n    Electrical permittivity units.\nDENSITY : str\n    Density units (e.g. g/mL).\nRESISTANCE : str\n    Electrical resistance units (e.g. \u03a9).",
      "enum": [
        "Length",
        "Volume",
        "Liquid volume",
        "Angles",
        "Time",
        "Frequency",
        "Mass",
        "Electric current",
        "Temperature",
        "Amount of substance",
        "Luminous intensity",
        "Force",
        "Energy",
        "Power",
        "Pressure",
        "Electricity and magnetism",
        "Other",
        "Weight",
        "Area",
        "Surface Area",
        "Binary",
        "Capacitance",
        "Speed",
        "Electrical conductivity",
        "Electrical permitivitty",
        "Density",
        "Resistance"
      ],
      "title": "UnitCategory",
      "type": "string"
    },
    "User": {
      "description": "An Albert user account: a person who can log in and act in the platform.\n\nA user has a name and email, an optional home\n[`Location`][albert.resources.locations.Location], and a set of\n[`Role`][albert.resources.roles.Role] objects that govern what they can do.\nThe ``user_class`` sets a broad permission tier\n([`UserClass`][albert.resources.users.UserClass]). Users are grouped into teams\n([`Team`][albert.resources.teams.Team]), and are referenced across the\nplatform, for example as the assignee of a Task or in an entity's ACL.\n\n!!! example\n    ```python\n    from albert.resources.users import User, UserClass\n    user = User(\n        name=\"Ada Lovelace\",\n        email=\"ada@example.com\",\n        user_class=UserClass.STANDARD,\n    )\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "name": {
          "description": "The display name of the user.",
          "title": "Name",
          "type": "string"
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert User ID (format ``USR...``). Set once the user is registered in or retrieved from Albert.",
          "title": "Albertid"
        },
        "Location": {
          "anyOf": [
            {
              "$ref": "#/$defs/Location"
            },
            {
              "$ref": "#/$defs/EntityLink"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The user's home location.",
          "title": "Location"
        },
        "email": {
          "default": null,
          "description": "The user's email address.",
          "format": "email",
          "title": "Email",
          "type": "string"
        },
        "Roles": {
          "description": "The roles the user holds, which determine their permissions.",
          "items": {
            "anyOf": [
              {
                "$ref": "#/$defs/Role"
              },
              {
                "$ref": "#/$defs/EntityLink"
              }
            ]
          },
          "maxItems": 1,
          "title": "Roles",
          "type": "array"
        },
        "userClass": {
          "$ref": "#/$defs/UserClass",
          "default": "standard",
          "description": "The ACL class level of the user (broad permission tier)."
        },
        "witnesser": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Whether the user can act as a witness on tasks (only relevant when witnessing is enabled for the tenant).",
          "title": "Witnesser"
        },
        "Metadata": {
          "anyOf": [
            {
              "additionalProperties": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "integer"
                  },
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/$defs/EntityLinkWithName"
                  },
                  {
                    "$ref": "#/$defs/EntityLink"
                  },
                  {
                    "items": {
                      "anyOf": [
                        {
                          "$ref": "#/$defs/EntityLinkWithName"
                        },
                        {
                          "$ref": "#/$defs/EntityLink"
                        }
                      ]
                    },
                    "type": "array"
                  }
                ]
              },
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Custom metadata attached to the user.",
          "title": "Metadata"
        }
      },
      "required": [
        "name"
      ],
      "title": "User",
      "type": "object"
    },
    "UserClass": {
      "description": "The ACL class level of a user, setting a broad permission tier.\n\nAttributes\n----------\nGUEST : str\n    Most limited access; typically external or temporary users.\nSTANDARD : str\n    Default access level for regular users.\nTRUSTED : str\n    Elevated access above standard users.\nPRIVILEGED : str\n    High access level below full administrators.\nADMIN : str\n    Full administrative access to the tenant.",
      "enum": [
        "guest",
        "standard",
        "trusted",
        "privileged",
        "admin"
      ],
      "title": "UserClass",
      "type": "string"
    },
    "ValueValidation": {
      "description": "A validation rule constraining a [`ParameterValue`][albert.resources.parameter_groups.ParameterValue].\n\nDeclares the expected [`DataType`][albert.resources.parameter_groups.DataType] for a parameter value and, optionally,\nthe bounds or allowed options it must satisfy. Attach one or more of these to a\n[`ParameterValue`][albert.resources.parameter_groups.ParameterValue] via its ``validation`` field.\n\nWhen ``datatype`` is ``date`` or ``timestamp``, ``value``, ``min``, and ``max`` are\nstrings in the wire format documented on [`DataType`][albert.resources.parameter_groups.DataType].\n\n!!! example\n    ```python\n    from albert.resources.parameter_groups import (\n        DataType,\n        Operator,\n        ValueValidation,\n    )\n\n    rule = ValueValidation(\n        datatype=DataType.NUMBER,\n        operator=Operator.BETWEEN,\n        min=\"0\",\n        max=\"100\",\n    )\n    ```",
      "properties": {
        "datatype": {
          "$ref": "#/$defs/DataType",
          "description": "The data type the value must conform to. Required."
        },
        "value": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "$ref": "#/$defs/EnumValidationValue"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "For ``ENUM`` types, the list of allowed options (see [`EnumValidationValue`][albert.resources.parameter_groups.EnumValidationValue]); otherwise an optional expected value. For ``date`` and ``timestamp`` types, a string in the wire format documented on [`DataType`][albert.resources.parameter_groups.DataType].",
          "title": "Value"
        },
        "min": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The lower bound, used with ``operator``. For numeric types, a numeric string; for ``date`` and ``timestamp`` types, a string in the wire format documented on [`DataType`][albert.resources.parameter_groups.DataType].",
          "title": "Min"
        },
        "max": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The upper bound, used with ``operator``. For numeric types, a numeric string; for ``date`` and ``timestamp`` types, a string in the wire format documented on [`DataType`][albert.resources.parameter_groups.DataType].",
          "title": "Max"
        },
        "operator": {
          "anyOf": [
            {
              "$ref": "#/$defs/Operator"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The comparison operator applied against ``min`` and/or ``max``."
        }
      },
      "required": [
        "datatype"
      ],
      "title": "ValueValidation",
      "type": "object"
    },
    "Workflow": {
      "description": "A specific set of parameter setpoints: the independent variables of a test.\n\nA workflow (WFL) captures only the *independent variables* of a test, the parameters and\nthe setpoints (a value, plus a unit where applicable) they are fixed to. It is built from\none or more groupings of parameters, where each grouping is either a Data Template that\nhas pre-linked parameters or a Parameter Group. A single workflow can combine several\ngroupings, for example one Data Template's pre-linked parameters together with a couple of\nParameter Groups, each contributing its own parameter setpoints. Because a Data Template\ncan carry pre-linked parameters, it is used here exactly like a Parameter Group: purely to\ndescribe a set of parameters and their setpoints.\n\nA workflow does NOT include a Data Template's Data Columns (also called Results). Those are\nthe *dependent variables*, and they are recorded only in Property Data\n([`TaskPropertyData`][albert.resources.property_data.TaskPropertyData]). In short: the Workflow holds\nthe independent variables; Property Data holds the dependent variables (the measured\nresults).\n\nA workflow is uniquely identified by its full setpoint configuration: the value and\nunit of every setpoint, the order of parameters within each Data Template / Parameter\nGroup, and the order of those groups within the workflow. For this reason workflows are\n*found-or-created* rather than blindly created: build the object you want and pass it to\n[`create`][albert.collections.workflows.WorkflowCollection.create], which returns the\nexisting match or makes a new one. IDs look like ``WFL...``.\n\nEvery tenant includes a built-in workflow ``WFL1`` (\"No Parameter Group\") with no\nparameter groups or setpoints. Use it when a task or block does not involve parameter\ngroups; it does not need to be created via\n[`create`][albert.collections.workflows.WorkflowCollection.create].\n\nWhen one or two parameters are intervalized, the workflow acts as a *parent* that carries\nthe resulting [`IntervalCombination`][albert.resources.workflows.IntervalCombination] entries. Each combination has an interval ID of\nthe form ``ROW1`` (one intervalized parameter) or ``ROW1XROW2`` (product of two). Use\n[`get_interval_id`][albert.resources.workflows.Workflow.get_interval_id] to build the interval ID for a condition, then use it with the\nproperty_data endpoints to read or write that condition's results.\n\n!!! example\n    ```python\n    from albert import Albert\n    from albert.resources.workflows import (\n        Workflow,\n        ParameterGroupSetpoints,\n        ParameterSetpoint,\n    )\n\n    client = Albert()\n    # One workflow combining a Data Template's pre-linked parameters with two\n    # Parameter Groups. Each grouping is keyed by its DAT... or PRG... id.\n    workflow = Workflow(\n        name=\"Tensile test at 23C, 50% RH\",\n        parameter_group_setpoints=[\n            # Pre-linked parameters on a Data Template (used just like a PRG here)\n            ParameterGroupSetpoints(\n                id=\"DAT9999999\",\n                parameter_setpoints=[\n                    ParameterSetpoint(parameter_id=\"PRM9999999\", value=\"23\", short_name=\"Temperature\"),\n                    ParameterSetpoint(parameter_id=\"PRM2\", value=\"50\", short_name=\"Humidity\"),\n                ],\n            ),\n            # A Parameter Group describing sample prep\n            ParameterGroupSetpoints(\n                id=\"PRG9999999\",\n                parameter_setpoints=[\n                    ParameterSetpoint(parameter_id=\"PRM3\", value=\"24\", short_name=\"Cure Time\"),\n                ],\n            ),\n            # A second Parameter Group (e.g. the mixing step)\n            ParameterGroupSetpoints(\n                id=\"PRG2\",\n                parameter_setpoints=[\n                    ParameterSetpoint(parameter_id=\"PRM4\", value=\"2000\", short_name=\"Mix Speed\"),\n                ],\n            ),\n        ],\n    )\n    created = client.workflows.create(workflows=[workflow])\n    created[0].id\n    # 'WFL1'\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "name": {
          "description": "The name of the workflow.",
          "title": "Name",
          "type": "string"
        },
        "ParameterGroups": {
          "description": "The setpoints to apply, organized one entry per Data Template / Parameter Group. The order of these entries is part of the workflow's identity.",
          "items": {
            "$ref": "#/$defs/ParameterGroupSetpoints"
          },
          "title": "Parametergroups",
          "type": "array"
        },
        "IntervalCombinations": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/IntervalCombination"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The realized conditions when parameters are intervalized. Populated by the platform; present when the workflow is retrieved, not something you set when building one.",
          "title": "Intervalcombinations"
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert ID of the workflow (``WFL...``). Set when a workflow is created or retrieved from the platform.",
          "title": "Albertid"
        },
        "blockMapping": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Read-only / informational. When a Workflow is returned in the context of a block, this is hydrated for convenience. See Also --------",
          "title": "Blockmapping"
        },
        "category": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Category"
        }
      },
      "required": [
        "name"
      ],
      "title": "Workflow",
      "type": "object"
    }
  },
  "description": "A task that manufactures a batch of a formulation inside Albert.\n\nUse a batch task after creating a new formulation to make a physical\nquantity of it. The item to make and the amount are given through\n[`inventory_information`][albert.resources.tasks.BatchTask.inventory_information] (``inventory_id`` and ``batch_size`` are\nrequired for batch tasks), with the unit set by [`batch_size_unit`][albert.resources.tasks.BatchTask.batch_size_unit].\n\nInherits all shared fields from [`BaseTask`][albert.resources.tasks.BaseTask]. Its [`category`][albert.resources.tasks.BatchTask.category] is\n[`BATCH`][albert.resources.tasks.TaskCategory.BATCH] (or [`BATCH_WITH_QC`][albert.resources.tasks.TaskCategory.BATCH_WITH_QC] when\nquality-control data is attached). Create and manage batch tasks with\n[`TaskCollection`][albert.collections.tasks.TaskCollection] (``client.tasks``).\n\n!!! example\n    ```python\n    from albert.resources.tasks import BatchTask\n    from albert.resources.tasks import TaskInventoryInformation\n\n    task = BatchTask(\n        name=\"Make 500 g of Formula A\",\n        parent_id=\"PROA9999999\",\n        inventory_information=[\n            TaskInventoryInformation(inventory_id=\"INVEXP9999999\", batch_size=500)\n        ],\n    )\n    ```\nNotes\n-----\nAll other fields (``location``, ``priority``, ``due_date``, ``state``,\n``assigned_to``, dates, and so on) are inherited from [`BaseTask`][albert.resources.tasks.BaseTask].",
  "properties": {
    "status": {
      "anyOf": [
        {
          "$ref": "#/$defs/Status"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The status of the resource, optional."
    },
    "Created": {
      "anyOf": [
        {
          "$ref": "#/$defs/AuditFields"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Audit fields for the creation of the resource, optional."
    },
    "Updated": {
      "anyOf": [
        {
          "$ref": "#/$defs/AuditFields"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Audit fields for the update of the resource, optional."
    },
    "Tags": {
      "anyOf": [
        {
          "items": {
            "anyOf": [
              {
                "$ref": "#/$defs/Tag"
              },
              {
                "$ref": "#/$defs/EntityLink"
              }
            ]
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "A list of Tag objects or strings representing tags.",
      "title": "Tags"
    },
    "albertId": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The task's ID (``\"TAS...\"``, serialized as ``albertId``). Assigned by Albert; ``None`` before the task is created.",
      "title": "Albertid"
    },
    "name": {
      "description": "Human-readable name of the task. Required.",
      "title": "Name",
      "type": "string"
    },
    "category": {
      "default": "Batch",
      "enum": [
        "Batch",
        "BatchWithQC"
      ],
      "title": "Category",
      "type": "string"
    },
    "parentId": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The ID of the parent project this task belongs to.",
      "title": "Parentid"
    },
    "Metadata": {
      "additionalProperties": {
        "anyOf": [
          {
            "type": "number"
          },
          {
            "type": "integer"
          },
          {
            "type": "string"
          },
          {
            "$ref": "#/$defs/EntityLinkWithName"
          },
          {
            "$ref": "#/$defs/EntityLink"
          },
          {
            "items": {
              "anyOf": [
                {
                  "$ref": "#/$defs/EntityLinkWithName"
                },
                {
                  "$ref": "#/$defs/EntityLink"
                }
              ]
            },
            "type": "array"
          }
        ]
      },
      "description": "Custom metadata fields keyed by name.",
      "title": "Metadata",
      "type": "object"
    },
    "Sources": {
      "anyOf": [
        {
          "items": {
            "$ref": "#/$defs/TaskSource"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "description": "The task(s) or template(s) this task was created from.",
      "title": "Sources"
    },
    "Inventories": {
      "default": null,
      "description": "The inventory item(s) (and optionally lot(s)) the task acts on.",
      "items": {
        "$ref": "#/$defs/TaskInventoryInformation"
      },
      "title": "Inventories",
      "type": "array"
    },
    "Location": {
      "anyOf": [
        {
          "$ref": "#/$defs/Location"
        },
        {
          "$ref": "#/$defs/EntityLink"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Where the task is performed.",
      "title": "Location"
    },
    "priority": {
      "anyOf": [
        {
          "$ref": "#/$defs/TaskPriority"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The task's urgency."
    },
    "class": {
      "anyOf": [
        {
          "$ref": "#/$defs/SecurityClass"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Access-control classification (serialized as ``class``)."
    },
    "passOrFail": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Whether the task is evaluated as pass/fail.",
      "title": "Passorfail"
    },
    "notes": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Free-text notes.",
      "title": "Notes"
    },
    "startDate": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Read-only. Date work started (``YYYY-MM-DD``).",
      "title": "Startdate"
    },
    "dueDate": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Target completion date (``YYYY-MM-DD``).",
      "title": "Duedate"
    },
    "claimedDate": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Read-only. Date the task was claimed.",
      "title": "Claimeddate"
    },
    "completedDate": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Read-only. Date the task was completed.",
      "title": "Completeddate"
    },
    "closedDate": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Read-only. Date the task was closed.",
      "title": "Closeddate"
    },
    "result": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Overall result summary for the task.",
      "title": "Result"
    },
    "state": {
      "anyOf": [
        {
          "$ref": "#/$defs/TaskState"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Current lifecycle state of the task."
    },
    "Project": {
      "anyOf": [
        {
          "$ref": "#/$defs/Project"
        },
        {
          "$ref": "#/$defs/EntityLink"
        },
        {
          "items": {
            "anyOf": [
              {
                "$ref": "#/$defs/Project"
              },
              {
                "$ref": "#/$defs/EntityLink"
              }
            ]
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The project(s) the task is associated with.",
      "title": "Project"
    },
    "AssignedTo": {
      "anyOf": [
        {
          "$ref": "#/$defs/User"
        },
        {
          "$ref": "#/$defs/EntityLinkWithName"
        },
        {
          "$ref": "#/$defs/Team"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The user or team responsible for the task.",
      "title": "Assignedto"
    },
    "PageState": {
      "anyOf": [
        {
          "$ref": "#/$defs/PageState"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Internal UI layout state for the task page."
    },
    "EntityType": {
      "anyOf": [
        {
          "$ref": "#/$defs/TaskEntityType"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Internal entity-type classification. See Also --------"
    },
    "batchSizeUnit": {
      "anyOf": [
        {
          "$ref": "#/$defs/BatchSizeUnit"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The unit of measure for the batch size (grams, kilograms, or pounds)."
    },
    "qcTask": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Whether this is a quality-control batch task.",
      "title": "Qctask"
    },
    "batchTaskId": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The ID of a related batch task.",
      "title": "Batchtaskid"
    },
    "target": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "A target value or specification associated with the task.",
      "title": "Target"
    },
    "QCTaskData": {
      "anyOf": [
        {
          "items": {
            "$ref": "#/$defs/QCTaskData"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Quality-control data associated with the batch task. Notes ----- All other fields (``location``, ``priority``, ``due_date``, ``state``, ``assigned_to``, dates, and so on) are inherited from [`BaseTask`][albert.resources.tasks.BaseTask].",
      "title": "Qctaskdata"
    },
    "Workflow": {
      "anyOf": [
        {
          "items": {
            "anyOf": [
              {
                "$ref": "#/$defs/Workflow"
              },
              {
                "$ref": "#/$defs/EntityLink"
              }
            ]
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Workflow(s) associated with the batch task.\n\nWhen the task does not involve parameter groups, use ``WFL1``, the platform\ndefault workflow with no parameter groups (\"No Parameter Group\"). It is\npre-provisioned and does not need to be created via\n[`create`][albert.collections.workflows.WorkflowCollection.create].\nFor workflows with parameter setpoints, register via\n[`create`][albert.collections.workflows.WorkflowCollection.create] and link by\nthe returned ID.",
      "title": "Workflow"
    },
    "Blocks": {
      "anyOf": [
        {
          "items": {
            "$ref": "#/$defs/Block"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Blocks associated with the batch task, when it captures data.",
      "title": "Blocks"
    }
  },
  "required": [
    "name"
  ],
  "title": "BatchTask",
  "type": "object"
}

Fields:

category

batch_size_unit

batch_size_unit: BatchSizeUnit | None = None

The unit of measure for the batch size (grams, kilograms, or pounds).

qc_task

qc_task: bool | None = None

Whether this is a quality-control batch task.

batch_task_id

batch_task_id: str | None = None

The ID of a related batch task.

target

target: str | None = None

A target value or specification associated with the task.

qc_task_data

qc_task_data: list[QCTaskData] | None = None

Quality-control data associated with the batch task. Notes ----- All other fields (location, priority, due_date, state, assigned_to, dates, and so on) are inherited from BaseTask.

workflows

workflows: list[SerializeAsEntityLink[Workflow]] | None = (
    None
)

Workflow(s) associated with the batch task.

When the task does not involve parameter groups, use WFL1, the platform default workflow with no parameter groups ("No Parameter Group"). It is pre-provisioned and does not need to be created via create. For workflows with parameter setpoints, register via create and link by the returned ID.

blocks

blocks: list[Block] | None = None

Blocks associated with the batch task, when it captures data.

GeneralTask

Bases: BaseTask

A task for lab work that is neither a batch nor a property task.

Use a general task for anything that does not fit the other two types, such as equipment calibration or maintenance. General tasks do not hold blocks and capture no property data.

Inherits all fields from BaseTask; its category is always GENERAL. Only name is required. Create and manage general tasks with TaskCollection (client.tasks).

Example

from albert.resources.tasks import GeneralTask

task = GeneralTask(name="Calibrate rheometer")
Show JSON schema:
{
  "$defs": {
    "ACL": {
      "description": "A single access rule for a user.",
      "properties": {
        "id": {
          "description": "The id of the user for which this ACL applies",
          "title": "Id",
          "type": "string"
        },
        "fgc": {
          "anyOf": [
            {
              "$ref": "#/$defs/AccessControlLevel"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Fine-Grain Control Level"
        }
      },
      "required": [
        "id"
      ],
      "title": "ACL",
      "type": "object"
    },
    "AccessControlLevel": {
      "description": "Access control levels you can grant users.",
      "enum": [
        "ProjectOwner",
        "ProjectEditor",
        "ProjectViewer",
        "ProjectAllTask",
        "ProjectStrictViewer",
        "ProjectPropertyTask",
        "InventoryOwner",
        "InventoryViewer",
        "CustomTemplateOwner",
        "CustomTemplateViewer",
        "CASFullAccess"
      ],
      "title": "AccessControlLevel",
      "type": "string"
    },
    "AuditFields": {
      "description": "The audit fields for a resource",
      "properties": {
        "by": {
          "default": null,
          "title": "By",
          "type": "string"
        },
        "byName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Byname"
        },
        "at": {
          "anyOf": [
            {
              "format": "date-time",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "At"
        }
      },
      "title": "AuditFields",
      "type": "object"
    },
    "BlockLevelInventoryInformation": {
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "lotId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Lotid"
        },
        "invLotUniqueId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Invlotuniqueid"
        }
      },
      "required": [
        "id"
      ],
      "title": "BlockLevelInventoryInformation",
      "type": "object"
    },
    "BlockState": {
      "properties": {
        "id": {
          "description": "The ID of the block.",
          "title": "Id",
          "type": "string"
        },
        "expand": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Expand"
        },
        "Interval": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/IntervalId"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The IDs of the interval (e.g., id: ROW2XROW4)",
          "title": "Interval"
        },
        "Inventory": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/BlockLevelInventoryInformation"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Inventory"
        }
      },
      "required": [
        "id"
      ],
      "title": "BlockState",
      "type": "object"
    },
    "EntityLink": {
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "category": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Category"
        }
      },
      "required": [
        "id"
      ],
      "title": "EntityLink",
      "type": "object"
    },
    "EntityLinkWithName": {
      "description": "EntityLink that includes the name field in serialization.",
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "category": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Category"
        }
      },
      "required": [
        "id"
      ],
      "title": "EntityLinkWithName",
      "type": "object"
    },
    "GridDefault": {
      "description": "The default grid view shown for a project.\n\n- ``PD``: the Property Data grid.\n- ``WKS``: the Worksheet grid.",
      "enum": [
        "PD",
        "WKS"
      ],
      "title": "GridDefault",
      "type": "string"
    },
    "IntervalId": {
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        }
      },
      "required": [
        "id"
      ],
      "title": "IntervalId",
      "type": "object"
    },
    "Location": {
      "description": "A physical lab or site location in Albert.\n\nLocations are referenced by Tasks and Inventory Items to record where an\nactivity is performed or where a material lives, and each Location can hold\none or more Storage Locations\n([`StorageLocation`][albert.resources.storage_locations.StorageLocation]). Managed\nthrough [`LocationCollection`][albert.collections.locations.LocationCollection].\n\n!!! example\n    ```python\n    from albert.resources.locations import Location\n    location = Location(\n        name=\"Boston Lab\",\n        latitude=42.3601,\n        longitude=-71.0589,\n        address=\"1 Main St\",\n        country=\"US\",\n    )\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "name": {
          "description": "The human-readable name of the location.",
          "title": "Name",
          "type": "string"
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert ID of the location. Assigned by Albert and populated once the location has been created or retrieved.",
          "title": "Albertid"
        },
        "latitude": {
          "description": "The latitude of the location, in decimal degrees.",
          "title": "Latitude",
          "type": "number"
        },
        "longitude": {
          "description": "The longitude of the location, in decimal degrees.",
          "title": "Longitude",
          "type": "number"
        },
        "address": {
          "description": "The street address of the location.",
          "title": "Address",
          "type": "string"
        },
        "country": {
          "anyOf": [
            {
              "maxLength": 2,
              "minLength": 2,
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The two-letter country code of the location (for example, ``\"US\"``).",
          "title": "Country"
        }
      },
      "required": [
        "name",
        "latitude",
        "longitude",
        "address"
      ],
      "title": "Location",
      "type": "object"
    },
    "PageState": {
      "properties": {
        "leftPanelExpand": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Leftpanelexpand"
        },
        "Block": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/BlockState"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Block"
        }
      },
      "title": "PageState",
      "type": "object"
    },
    "Project": {
      "description": "A project in Albert: the top-level container for a piece of R&D work.\n\nA project groups the formulations designed for the work, its Worksheet (1:1\nwith the project), the Tasks run against it, and the inventory it references.\nCreate and manage projects through the\n[`ProjectCollection`][albert.collections.projects.ProjectCollection] (``client.projects``).\n\nOnly ``description`` is required to build one; it doubles as the project's\ndisplay name. The ``id`` and ``state`` are assigned by Albert and are read\nonly from the client's perspective.\n\n!!! example\n    ```python\n    from albert import Albert\n    from albert.resources.projects import Project, ProjectClass\n    client = Albert()\n    project = client.projects.create(\n        project=Project(\n            description=\"Weatherproof Coatings 2026\",\n            project_class=ProjectClass.SHARED,\n        )\n    )\n    project.id\n    # 'PRO123'\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Read-only status string returned by Albert.",
          "title": "Status"
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "description": {
          "description": "Human-readable project name/description (1-2000 characters). Also serves as the project's display name.",
          "maxLength": 2000,
          "minLength": 1,
          "title": "Description",
          "type": "string"
        },
        "Locations": {
          "anyOf": [
            {
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/$defs/Location"
                  },
                  {
                    "$ref": "#/$defs/EntityLink"
                  }
                ]
              },
              "maxItems": 20,
              "minItems": 1,
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The locations the project is associated with. Optional.",
          "title": "Locations"
        },
        "class": {
          "anyOf": [
            {
              "$ref": "#/$defs/ProjectClass"
            },
            {
              "type": "null"
            }
          ],
          "default": "private",
          "description": "Access-control class (private, shared, or confidential). Defaults to private."
        },
        "prefix": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional prefix used when naming entities within the project.",
          "title": "Prefix"
        },
        "appEngg": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Inventory Ids to be added as application engineering",
          "title": "Appengg"
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert Project ID (format ``PRO...``). Assigned by Albert and present once the project has been created or retrieved.",
          "title": "Albertid"
        },
        "ACL": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/ACL"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "description": "Access-control entries controlling who can access the project. Optional.",
          "title": "Acl"
        },
        "old_api_params": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Read-only. Do not use.",
          "title": "Old Api Params"
        },
        "task_config": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/TaskConfig"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "description": "Default task settings applied to tasks created within the project.",
          "title": "Task Config"
        },
        "grid": {
          "anyOf": [
            {
              "$ref": "#/$defs/GridDefault"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The default grid view (Property Data or Worksheet) shown for the project."
        },
        "Metadata": {
          "anyOf": [
            {
              "additionalProperties": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "integer"
                  },
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/$defs/EntityLinkWithName"
                  },
                  {
                    "$ref": "#/$defs/EntityLink"
                  },
                  {
                    "items": {
                      "anyOf": [
                        {
                          "$ref": "#/$defs/EntityLinkWithName"
                        },
                        {
                          "$ref": "#/$defs/EntityLink"
                        }
                      ]
                    },
                    "type": "array"
                  }
                ]
              },
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Custom field values. Allowed keys and values are defined via the Custom Fields API. Optional.",
          "title": "Metadata"
        },
        "state": {
          "anyOf": [
            {
              "$ref": "#/$defs/State"
            },
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The project's lifecycle state. Read only on create; can be changed via [`update`][albert.collections.projects.ProjectCollection.update]. Tenant-customized states outside [`State`][albert.resources.projects.State] parse as plain strings.",
          "title": "State"
        }
      },
      "required": [
        "description"
      ],
      "title": "Project",
      "type": "object"
    },
    "ProjectClass": {
      "description": "The access-control class of a project, governing who can see it.\n\n- ``PRIVATE``: visible only to the project's ACL members (the default).\n- ``SHARED``: visible more broadly across the organization.\n- ``CONFIDENTIAL``: restricted, most tightly controlled access.",
      "enum": [
        "shared",
        "confidential",
        "private"
      ],
      "title": "ProjectClass",
      "type": "string"
    },
    "Role": {
      "description": "A named set of access permissions within a tenant.\n\nA role bundles policies that determine what a holder is allowed to do. Roles\nare assigned to users ([`User`][albert.resources.users.User]) and referenced\nby entity ACLs. Roles are typically read from Albert rather than built by\nhand.",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert ID of the role. Role IDs may contain ``#`` characters. Set once the role is retrieved from Albert.",
          "title": "Albertid"
        },
        "name": {
          "description": "The display name of the role.",
          "title": "Name",
          "type": "string"
        },
        "Policies": {
          "anyOf": [
            {
              "items": {},
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The policies (permission rules) associated with the role.",
          "title": "Policies"
        },
        "tenant": {
          "description": "The ID of the tenant the role belongs to.",
          "title": "Tenant",
          "type": "string"
        },
        "visibility": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Whether the role is visible in the platform's role listings.",
          "title": "Visibility"
        }
      },
      "required": [
        "name",
        "tenant"
      ],
      "title": "Role",
      "type": "object"
    },
    "SecurityClass": {
      "description": "The security (access control) class of a resource.\n\nAttributes\n----------\nSHARED : str\n    Accessible to all members of the tenant.\nRESTRICTED : str\n    Access is restricted to specific teams or users.\nCONFIDENTIAL : str\n    Access is limited to designated users only.\nPRIVATE : str\n    Visible only to the owner. Used by Projects.",
      "enum": [
        "shared",
        "restricted",
        "confidential",
        "private"
      ],
      "title": "SecurityClass",
      "type": "string"
    },
    "State": {
      "description": "The lifecycle state of a project.\n\nThe set of allowed states is customizable per tenant via the entity-status\nAPI; these are the platform defaults. Unknown tenant-specific values are\ntolerated as plain strings on [`Project.state`][albert.resources.projects.Project.state].",
      "enum": [
        "Not Started",
        "Active",
        "Closed - Success",
        "Closed - Archived",
        "Just Started",
        "In Progress"
      ],
      "title": "State",
      "type": "string"
    },
    "Status": {
      "description": "The status of a resource.\n\nAttributes\n----------\nACTIVE : str\n    The resource is fully operational and visible in normal operations.\nINACTIVE : str\n    The resource is hidden from normal operations and disabled from use.",
      "enum": [
        "active",
        "inactive"
      ],
      "title": "Status",
      "type": "string"
    },
    "Tag": {
      "description": "A freeform text label used to categorize and connect entities.\n\nTags are shared by name across the platform and can be applied to inventory\nitems, companies, tasks, and other records to group and filter them. Managed\nthrough [`TagCollection`][albert.collections.tags.TagCollection] (``client.tags``);\nthe usual entry point is [`get_or_create`][albert.collections.tags.TagCollection.get_or_create].\n\n!!! example\n    ```python\n    from albert.resources.tags import Tag\n    tag = Tag(tag=\"high-priority\")\n    ```\nMethods\n-------\nfrom_string(tag) -> Tag\n    Build a Tag from its name string.",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "name": {
          "description": "The name of the tag (its text label).",
          "title": "Name",
          "type": "string"
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert ID of the tag (format ``TAG...``). Set when the tag is retrieved from or created in Albert. Methods ------- from_string(tag) -> Tag Build a Tag from its name string.",
          "title": "Albertid"
        }
      },
      "required": [
        "name"
      ],
      "title": "Tag",
      "type": "object"
    },
    "TaskConfig": {
      "description": "Default task settings applied when tasks are created within a project.",
      "properties": {
        "datatemplateId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "ID of the data template tasks default to.",
          "title": "Datatemplateid"
        },
        "workflowId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "ID of the workflow tasks default to.",
          "title": "Workflowid"
        },
        "defaultTaskName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Default name applied to new tasks.",
          "title": "Defaulttaskname"
        },
        "target": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Default target for the configured tasks.",
          "title": "Target"
        },
        "hidden": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": false,
          "description": "Whether this configuration is hidden in the UI.",
          "title": "Hidden"
        }
      },
      "title": "TaskConfig",
      "type": "object"
    },
    "TaskEntityType": {
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "customCategory": {
          "default": null,
          "title": "Customcategory",
          "type": "string"
        }
      },
      "title": "TaskEntityType",
      "type": "object"
    },
    "TaskInventoryInformation": {
      "description": "Which inventory item (and optionally which lot) a task acts on.\n\nEvery task references one or more inventory items through this model, stored\non [`inventory_information`][albert.resources.tasks.BaseTask.inventory_information]. What is required depends on the\ntask type:\n\n- [`BatchTask`][albert.resources.tasks.BatchTask]: ``inventory_id`` and ``batch_size`` are required\n  (you are making a quantity of that item).\n- [`PropertyTask`][albert.resources.tasks.PropertyTask] and [`GeneralTask`][albert.resources.tasks.GeneralTask]: ``inventory_id`` is\n  required and ``lot_id`` is recommended (the specific physical lot tested).",
      "properties": {
        "id": {
          "description": "The ID of the inventory item used in the task (serialized as ``id``).",
          "title": "Id",
          "type": "string"
        },
        "lotId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The ID of the specific lot used. Recommended for property and general tasks so results attach to the right physical material.",
          "title": "Lotid"
        },
        "lotNumber": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The human-readable lot number of the item.",
          "title": "Lotnumber"
        },
        "invLotUniqueId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A combined inventory-and-lot identifier used internally.",
          "title": "Invlotuniqueid"
        },
        "batchSize": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The quantity to make of the related inventory item. Required for [`BatchTask`][albert.resources.tasks.BatchTask]; the unit is given by [`batch_size_unit`][albert.resources.tasks.BatchTask.batch_size_unit].",
          "title": "Batchsize"
        },
        "selectedLot": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Read-only. Whether this lot is the one selected for the task.",
          "title": "Selectedlot"
        },
        "barcodeId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The barcode identifier of the physical item, if scanned.",
          "title": "Barcodeid"
        },
        "quantityUsed": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The amount of the item consumed by the task.",
          "title": "Quantityused"
        }
      },
      "required": [
        "id"
      ],
      "title": "TaskInventoryInformation",
      "type": "object"
    },
    "TaskPriority": {
      "description": "How urgent a task is, used for triage and sorting work queues.\n\nAttributes\n----------\nHIGH : str\n    Highest urgency (``\"High\"``).\nMEDIUM : str\n    Normal urgency (``\"Medium\"``).\nLOW : str\n    Lowest urgency (``\"Low\"``).",
      "enum": [
        "High",
        "Medium",
        "Low"
      ],
      "title": "TaskPriority",
      "type": "string"
    },
    "TaskSource": {
      "description": "A reference to the task or template a task was created from.\n\nRecorded in [`sources`][albert.resources.tasks.BaseTask.sources] to trace where a task originated.",
      "properties": {
        "id": {
          "description": "The ID of the originating task or template.",
          "title": "Id",
          "type": "string"
        },
        "type": {
          "$ref": "#/$defs/TaskSourceType",
          "description": "Whether ``id`` points to a task or a template."
        }
      },
      "required": [
        "id",
        "type"
      ],
      "title": "TaskSource",
      "type": "object"
    },
    "TaskSourceType": {
      "description": "What kind of thing a task was created from.\n\nAttributes\n----------\nTASK : str\n    The task was created from another existing task (``\"task\"``).\nTEMPLATE : str\n    The task was created from a task template (``\"template\"``).",
      "enum": [
        "task",
        "template"
      ],
      "title": "TaskSourceType",
      "type": "string"
    },
    "TaskState": {
      "description": "Where a task is in its lifecycle, from creation through completion.\n\nThe state generally advances as work progresses: an unclaimed task is\npicked up, started, finished, and eventually closed (or cancelled).\n\nAttributes\n----------\nUNCLAIMED : str\n    Created but not yet assigned to or claimed by anyone.\nNOT_STARTED : str\n    Claimed or assigned, but work has not begun.\nIN_PROGRESS : str\n    Work is actively underway.\nCOMPLETED : str\n    The work has been finished.\nCLOSED : str\n    Finalized and no longer active.\nCANCELLED : str\n    Abandoned before completion.",
      "enum": [
        "Unclaimed",
        "Not Started",
        "In Progress",
        "Completed",
        "Closed",
        "Cancelled"
      ],
      "title": "TaskState",
      "type": "string"
    },
    "Team": {
      "description": "A named group of users on the Albert platform.\n\nTeams share access: entity ACLs and Task assignments can reference a whole\nteam rather than individual users. Each member is a\n[`TeamMember`][albert.resources.teams.TeamMember] pairing a\n[`User`][albert.resources.users.User] with a team role.\n\n!!! example\n    ```python\n    from albert.resources.teams import Team, TeamMember\n    team = Team(\n        name=\"Coatings R&D\",\n        members=[TeamMember(id=\"USR12\", role=\"TeamOwner\")],\n    )\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert Team ID (format ``TEM...``). Set once the team is registered in or retrieved from Albert.",
          "title": "Albertid"
        },
        "name": {
          "description": "The display name of the team.",
          "minLength": 1,
          "title": "Name",
          "type": "string"
        },
        "Users": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/TeamMember"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The members of the team, each with their name and team role.",
          "title": "Users"
        }
      },
      "required": [
        "name"
      ],
      "title": "Team",
      "type": "object"
    },
    "TeamMember": {
      "description": "A user's membership in a team, pairing a user with their team role.\n\n!!! example\n    ```python\n    from albert.resources.teams import TeamMember\n    member = TeamMember(id=\"USR12\", role=\"TeamOwner\")\n    ```",
      "properties": {
        "id": {
          "description": "The Albert User ID (format ``USR...``) of the member.",
          "title": "Id",
          "type": "string"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The display name of the user.",
          "title": "Name"
        },
        "fgc": {
          "anyOf": [
            {
              "enum": [
                "TeamOwner",
                "TeamViewer"
              ],
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The member's role within the team: ``\"TeamOwner\"`` (can manage the team) or ``\"TeamViewer\"`` (read access). Defaults to ``\"TeamViewer\"`` when unset.",
          "title": "Fgc"
        }
      },
      "required": [
        "id"
      ],
      "title": "TeamMember",
      "type": "object"
    },
    "User": {
      "description": "An Albert user account: a person who can log in and act in the platform.\n\nA user has a name and email, an optional home\n[`Location`][albert.resources.locations.Location], and a set of\n[`Role`][albert.resources.roles.Role] objects that govern what they can do.\nThe ``user_class`` sets a broad permission tier\n([`UserClass`][albert.resources.users.UserClass]). Users are grouped into teams\n([`Team`][albert.resources.teams.Team]), and are referenced across the\nplatform, for example as the assignee of a Task or in an entity's ACL.\n\n!!! example\n    ```python\n    from albert.resources.users import User, UserClass\n    user = User(\n        name=\"Ada Lovelace\",\n        email=\"ada@example.com\",\n        user_class=UserClass.STANDARD,\n    )\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "name": {
          "description": "The display name of the user.",
          "title": "Name",
          "type": "string"
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert User ID (format ``USR...``). Set once the user is registered in or retrieved from Albert.",
          "title": "Albertid"
        },
        "Location": {
          "anyOf": [
            {
              "$ref": "#/$defs/Location"
            },
            {
              "$ref": "#/$defs/EntityLink"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The user's home location.",
          "title": "Location"
        },
        "email": {
          "default": null,
          "description": "The user's email address.",
          "format": "email",
          "title": "Email",
          "type": "string"
        },
        "Roles": {
          "description": "The roles the user holds, which determine their permissions.",
          "items": {
            "anyOf": [
              {
                "$ref": "#/$defs/Role"
              },
              {
                "$ref": "#/$defs/EntityLink"
              }
            ]
          },
          "maxItems": 1,
          "title": "Roles",
          "type": "array"
        },
        "userClass": {
          "$ref": "#/$defs/UserClass",
          "default": "standard",
          "description": "The ACL class level of the user (broad permission tier)."
        },
        "witnesser": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Whether the user can act as a witness on tasks (only relevant when witnessing is enabled for the tenant).",
          "title": "Witnesser"
        },
        "Metadata": {
          "anyOf": [
            {
              "additionalProperties": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "integer"
                  },
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/$defs/EntityLinkWithName"
                  },
                  {
                    "$ref": "#/$defs/EntityLink"
                  },
                  {
                    "items": {
                      "anyOf": [
                        {
                          "$ref": "#/$defs/EntityLinkWithName"
                        },
                        {
                          "$ref": "#/$defs/EntityLink"
                        }
                      ]
                    },
                    "type": "array"
                  }
                ]
              },
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Custom metadata attached to the user.",
          "title": "Metadata"
        }
      },
      "required": [
        "name"
      ],
      "title": "User",
      "type": "object"
    },
    "UserClass": {
      "description": "The ACL class level of a user, setting a broad permission tier.\n\nAttributes\n----------\nGUEST : str\n    Most limited access; typically external or temporary users.\nSTANDARD : str\n    Default access level for regular users.\nTRUSTED : str\n    Elevated access above standard users.\nPRIVILEGED : str\n    High access level below full administrators.\nADMIN : str\n    Full administrative access to the tenant.",
      "enum": [
        "guest",
        "standard",
        "trusted",
        "privileged",
        "admin"
      ],
      "title": "UserClass",
      "type": "string"
    }
  },
  "description": "A task for lab work that is neither a batch nor a property task.\n\nUse a general task for anything that does not fit the other two types, such\nas equipment calibration or maintenance. General tasks do not hold blocks\nand capture no property data.\n\nInherits all fields from [`BaseTask`][albert.resources.tasks.BaseTask]; its [`category`][albert.resources.tasks.GeneralTask.category] is always\n[`GENERAL`][albert.resources.tasks.TaskCategory.GENERAL]. Only [`name`][albert.resources.tasks.BaseTask.name] is required.\nCreate and manage general tasks with\n[`TaskCollection`][albert.collections.tasks.TaskCollection] (``client.tasks``).\n\n!!! example\n    ```python\n    from albert.resources.tasks import GeneralTask\n\n    task = GeneralTask(name=\"Calibrate rheometer\")\n    ```",
  "properties": {
    "status": {
      "anyOf": [
        {
          "$ref": "#/$defs/Status"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The status of the resource, optional."
    },
    "Created": {
      "anyOf": [
        {
          "$ref": "#/$defs/AuditFields"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Audit fields for the creation of the resource, optional."
    },
    "Updated": {
      "anyOf": [
        {
          "$ref": "#/$defs/AuditFields"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Audit fields for the update of the resource, optional."
    },
    "Tags": {
      "anyOf": [
        {
          "items": {
            "anyOf": [
              {
                "$ref": "#/$defs/Tag"
              },
              {
                "$ref": "#/$defs/EntityLink"
              }
            ]
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "A list of Tag objects or strings representing tags.",
      "title": "Tags"
    },
    "albertId": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The task's ID (``\"TAS...\"``, serialized as ``albertId``). Assigned by Albert; ``None`` before the task is created.",
      "title": "Albertid"
    },
    "name": {
      "description": "Human-readable name of the task. Required.",
      "title": "Name",
      "type": "string"
    },
    "category": {
      "const": "General",
      "default": "General",
      "title": "Category",
      "type": "string"
    },
    "parentId": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The ID of the parent project this task belongs to.",
      "title": "Parentid"
    },
    "Metadata": {
      "additionalProperties": {
        "anyOf": [
          {
            "type": "number"
          },
          {
            "type": "integer"
          },
          {
            "type": "string"
          },
          {
            "$ref": "#/$defs/EntityLinkWithName"
          },
          {
            "$ref": "#/$defs/EntityLink"
          },
          {
            "items": {
              "anyOf": [
                {
                  "$ref": "#/$defs/EntityLinkWithName"
                },
                {
                  "$ref": "#/$defs/EntityLink"
                }
              ]
            },
            "type": "array"
          }
        ]
      },
      "description": "Custom metadata fields keyed by name.",
      "title": "Metadata",
      "type": "object"
    },
    "Sources": {
      "anyOf": [
        {
          "items": {
            "$ref": "#/$defs/TaskSource"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "description": "The task(s) or template(s) this task was created from.",
      "title": "Sources"
    },
    "Inventories": {
      "default": null,
      "description": "The inventory item(s) (and optionally lot(s)) the task acts on.",
      "items": {
        "$ref": "#/$defs/TaskInventoryInformation"
      },
      "title": "Inventories",
      "type": "array"
    },
    "Location": {
      "anyOf": [
        {
          "$ref": "#/$defs/Location"
        },
        {
          "$ref": "#/$defs/EntityLink"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Where the task is performed.",
      "title": "Location"
    },
    "priority": {
      "anyOf": [
        {
          "$ref": "#/$defs/TaskPriority"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The task's urgency."
    },
    "class": {
      "anyOf": [
        {
          "$ref": "#/$defs/SecurityClass"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Access-control classification (serialized as ``class``)."
    },
    "passOrFail": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Whether the task is evaluated as pass/fail.",
      "title": "Passorfail"
    },
    "notes": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Free-text notes.",
      "title": "Notes"
    },
    "startDate": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Read-only. Date work started (``YYYY-MM-DD``).",
      "title": "Startdate"
    },
    "dueDate": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Target completion date (``YYYY-MM-DD``).",
      "title": "Duedate"
    },
    "claimedDate": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Read-only. Date the task was claimed.",
      "title": "Claimeddate"
    },
    "completedDate": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Read-only. Date the task was completed.",
      "title": "Completeddate"
    },
    "closedDate": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Read-only. Date the task was closed.",
      "title": "Closeddate"
    },
    "result": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Overall result summary for the task.",
      "title": "Result"
    },
    "state": {
      "anyOf": [
        {
          "$ref": "#/$defs/TaskState"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Current lifecycle state of the task."
    },
    "Project": {
      "anyOf": [
        {
          "$ref": "#/$defs/Project"
        },
        {
          "$ref": "#/$defs/EntityLink"
        },
        {
          "items": {
            "anyOf": [
              {
                "$ref": "#/$defs/Project"
              },
              {
                "$ref": "#/$defs/EntityLink"
              }
            ]
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The project(s) the task is associated with.",
      "title": "Project"
    },
    "AssignedTo": {
      "anyOf": [
        {
          "$ref": "#/$defs/User"
        },
        {
          "$ref": "#/$defs/EntityLinkWithName"
        },
        {
          "$ref": "#/$defs/Team"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The user or team responsible for the task.",
      "title": "Assignedto"
    },
    "PageState": {
      "anyOf": [
        {
          "$ref": "#/$defs/PageState"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Internal UI layout state for the task page."
    },
    "EntityType": {
      "anyOf": [
        {
          "$ref": "#/$defs/TaskEntityType"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Internal entity-type classification. See Also --------"
    }
  },
  "required": [
    "name"
  ],
  "title": "GeneralTask",
  "type": "object"
}

Fields:

category

TaskHistoryEvent

Bases: BaseAlbertModel

Show JSON schema:
{
  "$defs": {
    "AuditFields": {
      "description": "The audit fields for a resource",
      "properties": {
        "by": {
          "default": null,
          "title": "By",
          "type": "string"
        },
        "byName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Byname"
        },
        "at": {
          "anyOf": [
            {
              "format": "date-time",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "At"
        }
      },
      "title": "AuditFields",
      "type": "object"
    },
    "EntityLink": {
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "category": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Category"
        }
      },
      "required": [
        "id"
      ],
      "title": "EntityLink",
      "type": "object"
    },
    "EntityLinkWithName": {
      "description": "EntityLink that includes the name field in serialization.",
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "category": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Category"
        }
      },
      "required": [
        "id"
      ],
      "title": "EntityLinkWithName",
      "type": "object"
    },
    "Location": {
      "description": "A physical lab or site location in Albert.\n\nLocations are referenced by Tasks and Inventory Items to record where an\nactivity is performed or where a material lives, and each Location can hold\none or more Storage Locations\n([`StorageLocation`][albert.resources.storage_locations.StorageLocation]). Managed\nthrough [`LocationCollection`][albert.collections.locations.LocationCollection].\n\n!!! example\n    ```python\n    from albert.resources.locations import Location\n    location = Location(\n        name=\"Boston Lab\",\n        latitude=42.3601,\n        longitude=-71.0589,\n        address=\"1 Main St\",\n        country=\"US\",\n    )\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "name": {
          "description": "The human-readable name of the location.",
          "title": "Name",
          "type": "string"
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert ID of the location. Assigned by Albert and populated once the location has been created or retrieved.",
          "title": "Albertid"
        },
        "latitude": {
          "description": "The latitude of the location, in decimal degrees.",
          "title": "Latitude",
          "type": "number"
        },
        "longitude": {
          "description": "The longitude of the location, in decimal degrees.",
          "title": "Longitude",
          "type": "number"
        },
        "address": {
          "description": "The street address of the location.",
          "title": "Address",
          "type": "string"
        },
        "country": {
          "anyOf": [
            {
              "maxLength": 2,
              "minLength": 2,
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The two-letter country code of the location (for example, ``\"US\"``).",
          "title": "Country"
        }
      },
      "required": [
        "name",
        "latitude",
        "longitude",
        "address"
      ],
      "title": "Location",
      "type": "object"
    },
    "Role": {
      "description": "A named set of access permissions within a tenant.\n\nA role bundles policies that determine what a holder is allowed to do. Roles\nare assigned to users ([`User`][albert.resources.users.User]) and referenced\nby entity ACLs. Roles are typically read from Albert rather than built by\nhand.",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert ID of the role. Role IDs may contain ``#`` characters. Set once the role is retrieved from Albert.",
          "title": "Albertid"
        },
        "name": {
          "description": "The display name of the role.",
          "title": "Name",
          "type": "string"
        },
        "Policies": {
          "anyOf": [
            {
              "items": {},
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The policies (permission rules) associated with the role.",
          "title": "Policies"
        },
        "tenant": {
          "description": "The ID of the tenant the role belongs to.",
          "title": "Tenant",
          "type": "string"
        },
        "visibility": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Whether the role is visible in the platform's role listings.",
          "title": "Visibility"
        }
      },
      "required": [
        "name",
        "tenant"
      ],
      "title": "Role",
      "type": "object"
    },
    "Status": {
      "description": "The status of a resource.\n\nAttributes\n----------\nACTIVE : str\n    The resource is fully operational and visible in normal operations.\nINACTIVE : str\n    The resource is hidden from normal operations and disabled from use.",
      "enum": [
        "active",
        "inactive"
      ],
      "title": "Status",
      "type": "string"
    },
    "User": {
      "description": "An Albert user account: a person who can log in and act in the platform.\n\nA user has a name and email, an optional home\n[`Location`][albert.resources.locations.Location], and a set of\n[`Role`][albert.resources.roles.Role] objects that govern what they can do.\nThe ``user_class`` sets a broad permission tier\n([`UserClass`][albert.resources.users.UserClass]). Users are grouped into teams\n([`Team`][albert.resources.teams.Team]), and are referenced across the\nplatform, for example as the assignee of a Task or in an entity's ACL.\n\n!!! example\n    ```python\n    from albert.resources.users import User, UserClass\n    user = User(\n        name=\"Ada Lovelace\",\n        email=\"ada@example.com\",\n        user_class=UserClass.STANDARD,\n    )\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "name": {
          "description": "The display name of the user.",
          "title": "Name",
          "type": "string"
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert User ID (format ``USR...``). Set once the user is registered in or retrieved from Albert.",
          "title": "Albertid"
        },
        "Location": {
          "anyOf": [
            {
              "$ref": "#/$defs/Location"
            },
            {
              "$ref": "#/$defs/EntityLink"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The user's home location.",
          "title": "Location"
        },
        "email": {
          "default": null,
          "description": "The user's email address.",
          "format": "email",
          "title": "Email",
          "type": "string"
        },
        "Roles": {
          "description": "The roles the user holds, which determine their permissions.",
          "items": {
            "anyOf": [
              {
                "$ref": "#/$defs/Role"
              },
              {
                "$ref": "#/$defs/EntityLink"
              }
            ]
          },
          "maxItems": 1,
          "title": "Roles",
          "type": "array"
        },
        "userClass": {
          "$ref": "#/$defs/UserClass",
          "default": "standard",
          "description": "The ACL class level of the user (broad permission tier)."
        },
        "witnesser": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Whether the user can act as a witness on tasks (only relevant when witnessing is enabled for the tenant).",
          "title": "Witnesser"
        },
        "Metadata": {
          "anyOf": [
            {
              "additionalProperties": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "integer"
                  },
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/$defs/EntityLinkWithName"
                  },
                  {
                    "$ref": "#/$defs/EntityLink"
                  },
                  {
                    "items": {
                      "anyOf": [
                        {
                          "$ref": "#/$defs/EntityLinkWithName"
                        },
                        {
                          "$ref": "#/$defs/EntityLink"
                        }
                      ]
                    },
                    "type": "array"
                  }
                ]
              },
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Custom metadata attached to the user.",
          "title": "Metadata"
        }
      },
      "required": [
        "name"
      ],
      "title": "User",
      "type": "object"
    },
    "UserClass": {
      "description": "The ACL class level of a user, setting a broad permission tier.\n\nAttributes\n----------\nGUEST : str\n    Most limited access; typically external or temporary users.\nSTANDARD : str\n    Default access level for regular users.\nTRUSTED : str\n    Elevated access above standard users.\nPRIVILEGED : str\n    High access level below full administrators.\nADMIN : str\n    Full administrative access to the tenant.",
      "enum": [
        "guest",
        "standard",
        "trusted",
        "privileged",
        "admin"
      ],
      "title": "UserClass",
      "type": "string"
    }
  },
  "properties": {
    "state": {
      "title": "State",
      "type": "string"
    },
    "action": {
      "title": "Action",
      "type": "string"
    },
    "actionAt": {
      "format": "date-time",
      "title": "Actionat",
      "type": "string"
    },
    "User": {
      "anyOf": [
        {
          "$ref": "#/$defs/User"
        },
        {
          "$ref": "#/$defs/EntityLink"
        }
      ],
      "title": "User"
    },
    "oldValue": {
      "anyOf": [
        {},
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Oldvalue"
    },
    "newValue": {
      "anyOf": [
        {},
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Newvalue"
    }
  },
  "required": [
    "state",
    "action",
    "actionAt",
    "User"
  ],
  "title": "TaskHistoryEvent",
  "type": "object"
}

Fields:

state

state: str

action

action: str

action_at

action_at: datetime

user

user: SerializeAsEntityLink[User]

old_value

old_value: Any | None = None

new_value

new_value: Any | None = None

TaskHistory

Bases: BaseAlbertModel

The chronological record of changes made to a task.

Returned by get_history, this wraps the individual change events (state changes, field edits, and so on) recorded for a task.

Show JSON schema:
{
  "$defs": {
    "AuditFields": {
      "description": "The audit fields for a resource",
      "properties": {
        "by": {
          "default": null,
          "title": "By",
          "type": "string"
        },
        "byName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Byname"
        },
        "at": {
          "anyOf": [
            {
              "format": "date-time",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "At"
        }
      },
      "title": "AuditFields",
      "type": "object"
    },
    "EntityLink": {
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "category": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Category"
        }
      },
      "required": [
        "id"
      ],
      "title": "EntityLink",
      "type": "object"
    },
    "EntityLinkWithName": {
      "description": "EntityLink that includes the name field in serialization.",
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "category": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Category"
        }
      },
      "required": [
        "id"
      ],
      "title": "EntityLinkWithName",
      "type": "object"
    },
    "Location": {
      "description": "A physical lab or site location in Albert.\n\nLocations are referenced by Tasks and Inventory Items to record where an\nactivity is performed or where a material lives, and each Location can hold\none or more Storage Locations\n([`StorageLocation`][albert.resources.storage_locations.StorageLocation]). Managed\nthrough [`LocationCollection`][albert.collections.locations.LocationCollection].\n\n!!! example\n    ```python\n    from albert.resources.locations import Location\n    location = Location(\n        name=\"Boston Lab\",\n        latitude=42.3601,\n        longitude=-71.0589,\n        address=\"1 Main St\",\n        country=\"US\",\n    )\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "name": {
          "description": "The human-readable name of the location.",
          "title": "Name",
          "type": "string"
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert ID of the location. Assigned by Albert and populated once the location has been created or retrieved.",
          "title": "Albertid"
        },
        "latitude": {
          "description": "The latitude of the location, in decimal degrees.",
          "title": "Latitude",
          "type": "number"
        },
        "longitude": {
          "description": "The longitude of the location, in decimal degrees.",
          "title": "Longitude",
          "type": "number"
        },
        "address": {
          "description": "The street address of the location.",
          "title": "Address",
          "type": "string"
        },
        "country": {
          "anyOf": [
            {
              "maxLength": 2,
              "minLength": 2,
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The two-letter country code of the location (for example, ``\"US\"``).",
          "title": "Country"
        }
      },
      "required": [
        "name",
        "latitude",
        "longitude",
        "address"
      ],
      "title": "Location",
      "type": "object"
    },
    "Role": {
      "description": "A named set of access permissions within a tenant.\n\nA role bundles policies that determine what a holder is allowed to do. Roles\nare assigned to users ([`User`][albert.resources.users.User]) and referenced\nby entity ACLs. Roles are typically read from Albert rather than built by\nhand.",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert ID of the role. Role IDs may contain ``#`` characters. Set once the role is retrieved from Albert.",
          "title": "Albertid"
        },
        "name": {
          "description": "The display name of the role.",
          "title": "Name",
          "type": "string"
        },
        "Policies": {
          "anyOf": [
            {
              "items": {},
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The policies (permission rules) associated with the role.",
          "title": "Policies"
        },
        "tenant": {
          "description": "The ID of the tenant the role belongs to.",
          "title": "Tenant",
          "type": "string"
        },
        "visibility": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Whether the role is visible in the platform's role listings.",
          "title": "Visibility"
        }
      },
      "required": [
        "name",
        "tenant"
      ],
      "title": "Role",
      "type": "object"
    },
    "Status": {
      "description": "The status of a resource.\n\nAttributes\n----------\nACTIVE : str\n    The resource is fully operational and visible in normal operations.\nINACTIVE : str\n    The resource is hidden from normal operations and disabled from use.",
      "enum": [
        "active",
        "inactive"
      ],
      "title": "Status",
      "type": "string"
    },
    "TaskHistoryEvent": {
      "properties": {
        "state": {
          "title": "State",
          "type": "string"
        },
        "action": {
          "title": "Action",
          "type": "string"
        },
        "actionAt": {
          "format": "date-time",
          "title": "Actionat",
          "type": "string"
        },
        "User": {
          "anyOf": [
            {
              "$ref": "#/$defs/User"
            },
            {
              "$ref": "#/$defs/EntityLink"
            }
          ],
          "title": "User"
        },
        "oldValue": {
          "anyOf": [
            {},
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Oldvalue"
        },
        "newValue": {
          "anyOf": [
            {},
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Newvalue"
        }
      },
      "required": [
        "state",
        "action",
        "actionAt",
        "User"
      ],
      "title": "TaskHistoryEvent",
      "type": "object"
    },
    "User": {
      "description": "An Albert user account: a person who can log in and act in the platform.\n\nA user has a name and email, an optional home\n[`Location`][albert.resources.locations.Location], and a set of\n[`Role`][albert.resources.roles.Role] objects that govern what they can do.\nThe ``user_class`` sets a broad permission tier\n([`UserClass`][albert.resources.users.UserClass]). Users are grouped into teams\n([`Team`][albert.resources.teams.Team]), and are referenced across the\nplatform, for example as the assignee of a Task or in an entity's ACL.\n\n!!! example\n    ```python\n    from albert.resources.users import User, UserClass\n    user = User(\n        name=\"Ada Lovelace\",\n        email=\"ada@example.com\",\n        user_class=UserClass.STANDARD,\n    )\n    ```",
      "properties": {
        "status": {
          "anyOf": [
            {
              "$ref": "#/$defs/Status"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The status of the resource, optional."
        },
        "Created": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the creation of the resource, optional."
        },
        "Updated": {
          "anyOf": [
            {
              "$ref": "#/$defs/AuditFields"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Audit fields for the update of the resource, optional."
        },
        "name": {
          "description": "The display name of the user.",
          "title": "Name",
          "type": "string"
        },
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Albert User ID (format ``USR...``). Set once the user is registered in or retrieved from Albert.",
          "title": "Albertid"
        },
        "Location": {
          "anyOf": [
            {
              "$ref": "#/$defs/Location"
            },
            {
              "$ref": "#/$defs/EntityLink"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The user's home location.",
          "title": "Location"
        },
        "email": {
          "default": null,
          "description": "The user's email address.",
          "format": "email",
          "title": "Email",
          "type": "string"
        },
        "Roles": {
          "description": "The roles the user holds, which determine their permissions.",
          "items": {
            "anyOf": [
              {
                "$ref": "#/$defs/Role"
              },
              {
                "$ref": "#/$defs/EntityLink"
              }
            ]
          },
          "maxItems": 1,
          "title": "Roles",
          "type": "array"
        },
        "userClass": {
          "$ref": "#/$defs/UserClass",
          "default": "standard",
          "description": "The ACL class level of the user (broad permission tier)."
        },
        "witnesser": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Whether the user can act as a witness on tasks (only relevant when witnessing is enabled for the tenant).",
          "title": "Witnesser"
        },
        "Metadata": {
          "anyOf": [
            {
              "additionalProperties": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "integer"
                  },
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/$defs/EntityLinkWithName"
                  },
                  {
                    "$ref": "#/$defs/EntityLink"
                  },
                  {
                    "items": {
                      "anyOf": [
                        {
                          "$ref": "#/$defs/EntityLinkWithName"
                        },
                        {
                          "$ref": "#/$defs/EntityLink"
                        }
                      ]
                    },
                    "type": "array"
                  }
                ]
              },
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Custom metadata attached to the user.",
          "title": "Metadata"
        }
      },
      "required": [
        "name"
      ],
      "title": "User",
      "type": "object"
    },
    "UserClass": {
      "description": "The ACL class level of a user, setting a broad permission tier.\n\nAttributes\n----------\nGUEST : str\n    Most limited access; typically external or temporary users.\nSTANDARD : str\n    Default access level for regular users.\nTRUSTED : str\n    Elevated access above standard users.\nPRIVILEGED : str\n    High access level below full administrators.\nADMIN : str\n    Full administrative access to the tenant.",
      "enum": [
        "guest",
        "standard",
        "trusted",
        "privileged",
        "admin"
      ],
      "title": "UserClass",
      "type": "string"
    }
  },
  "description": "The chronological record of changes made to a task.\n\nReturned by [`get_history`][albert.collections.tasks.TaskCollection.get_history],\nthis wraps the individual change events (state changes, field edits, and so\non) recorded for a task.",
  "properties": {
    "Items": {
      "description": "The history events, each describing one change (its action, timestamp, acting user, and old/new values).",
      "items": {
        "$ref": "#/$defs/TaskHistoryEvent"
      },
      "title": "Items",
      "type": "array"
    }
  },
  "required": [
    "Items"
  ],
  "title": "TaskHistory",
  "type": "object"
}

Fields:

items

The history events, each describing one change (its action, timestamp, acting user, and old/new values).

TaskPatchPayload

Bases: PatchPayload

A payload for a PATCH request to update a Task.

Show JSON schema:
{
  "$defs": {
    "PatchDatum": {
      "properties": {
        "operation": {
          "title": "Operation",
          "type": "string"
        },
        "attribute": {
          "title": "Attribute",
          "type": "string"
        },
        "newValue": {
          "anyOf": [
            {},
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Newvalue"
        },
        "oldValue": {
          "anyOf": [
            {},
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Oldvalue"
        }
      },
      "required": [
        "operation",
        "attribute"
      ],
      "title": "PatchDatum",
      "type": "object"
    }
  },
  "description": "A payload for a PATCH request to update a Task.",
  "properties": {
    "data": {
      "items": {
        "$ref": "#/$defs/PatchDatum"
      },
      "title": "Data",
      "type": "array"
    },
    "id": {
      "description": "The id of the Task to be updated.",
      "title": "Id",
      "type": "string"
    }
  },
  "required": [
    "data",
    "id"
  ],
  "title": "TaskPatchPayload",
  "type": "object"
}

Fields:

id

id: str

The id of the Task to be updated.

TaskSearchInventory

Bases: BaseAlbertModel

Show JSON schema:
{
  "properties": {
    "id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Id"
    },
    "name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Name"
    },
    "albertIdAndName": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Albertidandname"
    }
  },
  "title": "TaskSearchInventory",
  "type": "object"
}

Fields:

id

id: str | None = None

name

name: str | None = None

albert_id_and_name

albert_id_and_name: str | None = None

TaskSearchDataTemplate

Bases: BaseAlbertModel

Show JSON schema:
{
  "properties": {
    "id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Id"
    },
    "name": {
      "title": "Name",
      "type": "string"
    }
  },
  "required": [
    "name"
  ],
  "title": "TaskSearchDataTemplate",
  "type": "object"
}

Fields:

id

id: str | None = None

name

name: str

TaskSearchLot

Bases: BaseAlbertModel

Show JSON schema:
{
  "properties": {
    "number": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Number"
    },
    "selectedLot": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Selectedlot"
    }
  },
  "title": "TaskSearchLot",
  "type": "object"
}

Fields:

number

number: str | None = None

selected_lot

selected_lot: bool | None = None

TaskSearchLocation

Bases: BaseAlbertModel

Show JSON schema:
{
  "properties": {
    "name": {
      "title": "Name",
      "type": "string"
    }
  },
  "required": [
    "name"
  ],
  "title": "TaskSearchLocation",
  "type": "object"
}

Fields:

name

name: str

TaskSearchTag

Bases: BaseAlbertModel

Show JSON schema:
{
  "properties": {
    "tagName": {
      "title": "Tagname",
      "type": "string"
    }
  },
  "required": [
    "tagName"
  ],
  "title": "TaskSearchTag",
  "type": "object"
}

Fields:

tag_name

tag_name: str

TaskSearchWorkflow

Bases: BaseAlbertModel

Show JSON schema:
{
  "properties": {
    "id": {
      "title": "Id",
      "type": "string"
    },
    "name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Name"
    },
    "category": {
      "title": "Category",
      "type": "string"
    }
  },
  "required": [
    "id",
    "category"
  ],
  "title": "TaskSearchWorkflow",
  "type": "object"
}

Fields:

id

id: str

name

name: str | None = None

category

category: str

TaskSearchItem

Bases: BaseAlbertModel, HydrationMixin[BaseTask]

Lightweight representation of a Task returned from unhydrated search().

Show JSON schema:
{
  "$defs": {
    "TaskSearchDataTemplate": {
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "name": {
          "title": "Name",
          "type": "string"
        }
      },
      "required": [
        "name"
      ],
      "title": "TaskSearchDataTemplate",
      "type": "object"
    },
    "TaskSearchInventory": {
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "albertIdAndName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Albertidandname"
        }
      },
      "title": "TaskSearchInventory",
      "type": "object"
    },
    "TaskSearchLocation": {
      "properties": {
        "name": {
          "title": "Name",
          "type": "string"
        }
      },
      "required": [
        "name"
      ],
      "title": "TaskSearchLocation",
      "type": "object"
    },
    "TaskSearchLot": {
      "properties": {
        "number": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Number"
        },
        "selectedLot": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Selectedlot"
        }
      },
      "title": "TaskSearchLot",
      "type": "object"
    },
    "TaskSearchTag": {
      "properties": {
        "tagName": {
          "title": "Tagname",
          "type": "string"
        }
      },
      "required": [
        "tagName"
      ],
      "title": "TaskSearchTag",
      "type": "object"
    },
    "TaskSearchWorkflow": {
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "category": {
          "title": "Category",
          "type": "string"
        }
      },
      "required": [
        "id",
        "category"
      ],
      "title": "TaskSearchWorkflow",
      "type": "object"
    }
  },
  "description": "Lightweight representation of a Task returned from unhydrated search().",
  "properties": {
    "albertId": {
      "title": "Albertid",
      "type": "string"
    },
    "name": {
      "title": "Name",
      "type": "string"
    },
    "category": {
      "title": "Category",
      "type": "string"
    },
    "priority": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Priority"
    },
    "state": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "State"
    },
    "assignedTo": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Assignedto"
    },
    "assignedToUserId": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Assignedtouserid"
    },
    "createdByName": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Createdbyname"
    },
    "createdAt": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Createdat"
    },
    "dueDate": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Duedate"
    },
    "completedDate": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Completeddate"
    },
    "startDate": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Startdate"
    },
    "closedDate": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Closeddate"
    },
    "location": {
      "anyOf": [
        {
          "items": {
            "$ref": "#/$defs/TaskSearchLocation"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Location"
    },
    "inventory": {
      "anyOf": [
        {
          "items": {
            "$ref": "#/$defs/TaskSearchInventory"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Inventory"
    },
    "tags": {
      "anyOf": [
        {
          "items": {
            "$ref": "#/$defs/TaskSearchTag"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Tags"
    },
    "lot": {
      "anyOf": [
        {
          "items": {
            "$ref": "#/$defs/TaskSearchLot"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Lot"
    },
    "dataTemplate": {
      "anyOf": [
        {
          "items": {
            "$ref": "#/$defs/TaskSearchDataTemplate"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Datatemplate"
    },
    "workflow": {
      "anyOf": [
        {
          "items": {
            "$ref": "#/$defs/TaskSearchWorkflow"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Workflow"
    },
    "projectId": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Projectid"
    },
    "isQCTask": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Isqctask"
    },
    "parentBatchStatus": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Parentbatchstatus"
    }
  },
  "required": [
    "albertId",
    "name",
    "category"
  ],
  "title": "TaskSearchItem",
  "type": "object"
}

Fields:

id

id: TaskId

name

name: str

category

category: str

priority

priority: str | None = None

state

state: str | None = None

assigned_to

assigned_to: str | None = None

assigned_to_user_id

assigned_to_user_id: str | None = None

created_by_name

created_by_name: str | None = None

created_at

created_at: str | None = None

due_date

due_date: str | None = None

completed_date

completed_date: str | None = None

start_date

start_date: str | None = None

closed_date

closed_date: str | None = None

location

location: list[TaskSearchLocation] | None = None

inventory

inventory: list[TaskSearchInventory] | None = None

tags

tags: list[TaskSearchTag] | None = None

lot

lot: list[TaskSearchLot] | None = None

data_template

data_template: list[TaskSearchDataTemplate] | None = None

workflow

workflow: list[TaskSearchWorkflow] | None = None

project_id

project_id: list[str] | None = None

is_qc_task

is_qc_task: bool | None = None

parent_batch_status

parent_batch_status: str | None = None

TaskMetadataDataTemplate

Bases: BaseAlbertModel

Metadata summary describing a data template on the task.

Show JSON schema:
{
  "$defs": {
    "Standard": {
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "standardId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Standardid"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "standardOrganization": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Standardorganization"
        },
        "standardOrganizationId": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Standardorganizationid"
        }
      },
      "required": [
        "id"
      ],
      "title": "Standard",
      "type": "object"
    }
  },
  "description": "Metadata summary describing a data template on the task.",
  "properties": {
    "id": {
      "title": "Id",
      "type": "string"
    },
    "name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Name"
    },
    "fullName": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Fullname"
    },
    "propertyId": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Propertyid"
    },
    "isloadGrid": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Isloadgrid"
    },
    "Standards": {
      "anyOf": [
        {
          "$ref": "#/$defs/Standard"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    }
  },
  "required": [
    "id"
  ],
  "title": "TaskMetadataDataTemplate",
  "type": "object"
}

Fields:

id

id: str

name

name: str | None = None

full_name

full_name: str | None = None

property_id

property_id: str | None = None

isload_grid

isload_grid: bool | None = None

standards

standards: Standard | None = None

TaskMetadataIntervalDetail

Bases: BaseAlbertModel

Displays a single interval detail for workflow metadata.

Show JSON schema:
{
  "description": "Displays a single interval detail for workflow metadata.",
  "properties": {
    "name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Name"
    },
    "value": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Value"
    },
    "unitName": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Unitname"
    }
  },
  "title": "TaskMetadataIntervalDetail",
  "type": "object"
}

Fields:

name

name: str | None = None

value

value: str | None = None

unit_name

unit_name: str | None = None

TaskMetadataInterval

Bases: BaseAlbertModel

Represents an interval attached to a workflow step.

Show JSON schema:
{
  "$defs": {
    "TaskMetadataIntervalDetail": {
      "description": "Displays a single interval detail for workflow metadata.",
      "properties": {
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "value": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Value"
        },
        "unitName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Unitname"
        }
      },
      "title": "TaskMetadataIntervalDetail",
      "type": "object"
    }
  },
  "description": "Represents an interval attached to a workflow step.",
  "properties": {
    "interval": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Interval"
    },
    "intervalParams": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intervalparams"
    },
    "intervalString": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Intervalstring"
    },
    "intervalDetails": {
      "items": {
        "$ref": "#/$defs/TaskMetadataIntervalDetail"
      },
      "title": "Intervaldetails",
      "type": "array"
    },
    "sequence": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Sequence"
    }
  },
  "title": "TaskMetadataInterval",
  "type": "object"
}

Fields:

interval

interval: str | None = None

interval_params

interval_params: str | None = None

interval_string

interval_string: str | None = None

interval_details

interval_details: list[TaskMetadataIntervalDetail]

sequence

sequence: int | None = None

TaskMetadataWorkflow

Bases: BaseAlbertModel

Captures workflow identifiers and interval configuration.

Show JSON schema:
{
  "$defs": {
    "TaskMetadataInterval": {
      "description": "Represents an interval attached to a workflow step.",
      "properties": {
        "interval": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Interval"
        },
        "intervalParams": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Intervalparams"
        },
        "intervalString": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Intervalstring"
        },
        "intervalDetails": {
          "items": {
            "$ref": "#/$defs/TaskMetadataIntervalDetail"
          },
          "title": "Intervaldetails",
          "type": "array"
        },
        "sequence": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Sequence"
        }
      },
      "title": "TaskMetadataInterval",
      "type": "object"
    },
    "TaskMetadataIntervalDetail": {
      "description": "Displays a single interval detail for workflow metadata.",
      "properties": {
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "value": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Value"
        },
        "unitName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Unitname"
        }
      },
      "title": "TaskMetadataIntervalDetail",
      "type": "object"
    }
  },
  "description": "Captures workflow identifiers and interval configuration.",
  "properties": {
    "albertId": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Albertid"
    },
    "name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Name"
    },
    "Intervals": {
      "items": {
        "$ref": "#/$defs/TaskMetadataInterval"
      },
      "title": "Intervals",
      "type": "array"
    }
  },
  "title": "TaskMetadataWorkflow",
  "type": "object"
}

Fields:

albert_id

albert_id: str | None = None

name

name: str | None = None

intervals

TaskMetadataValueItem

Bases: BaseAlbertModel

Represents a selectable value reference in metadata.

Show JSON schema:
{
  "description": "Represents a selectable value reference in metadata.",
  "properties": {
    "id": {
      "title": "Id",
      "type": "string"
    },
    "name": {
      "title": "Name",
      "type": "string"
    }
  },
  "required": [
    "id",
    "name"
  ],
  "title": "TaskMetadataValueItem",
  "type": "object"
}

Fields:

id

id: str

name

name: str

TaskMetadataUnit

Bases: BaseAlbertModel

Identifies the unit associated with an interval or parameter.

Show JSON schema:
{
  "description": "Identifies the unit associated with an interval or parameter.",
  "properties": {
    "id": {
      "title": "Id",
      "type": "string"
    },
    "name": {
      "title": "Name",
      "type": "string"
    }
  },
  "required": [
    "id",
    "name"
  ],
  "title": "TaskMetadataUnit",
  "type": "object"
}

Fields:

id

id: str

name

name: str

TaskMetadataIntervalType

Bases: BaseAlbertModel

Describes a concrete interval type recorded on the task.

Show JSON schema:
{
  "$defs": {
    "TaskMetadataUnit": {
      "description": "Identifies the unit associated with an interval or parameter.",
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "name": {
          "title": "Name",
          "type": "string"
        }
      },
      "required": [
        "id",
        "name"
      ],
      "title": "TaskMetadataUnit",
      "type": "object"
    }
  },
  "description": "Describes a concrete interval type recorded on the task.",
  "properties": {
    "id": {
      "title": "Id",
      "type": "string"
    },
    "value": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Value"
    },
    "name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Name"
    },
    "rowId": {
      "title": "Rowid",
      "type": "string"
    },
    "Unit": {
      "anyOf": [
        {
          "$ref": "#/$defs/TaskMetadataUnit"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    }
  },
  "required": [
    "id",
    "rowId"
  ],
  "title": "TaskMetadataIntervalType",
  "type": "object"
}

Fields:

id

id: str

value

value: str | None = None

name

name: str | None = None

row_id

row_id: str

unit

unit: TaskMetadataUnit | None = None

TaskMetadataParameter

Bases: BaseAlbertModel

Represents a parameter entry included in workflow metadata.

Show JSON schema:
{
  "$defs": {
    "TaskMetadataIntervalType": {
      "description": "Describes a concrete interval type recorded on the task.",
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "value": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Value"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "rowId": {
          "title": "Rowid",
          "type": "string"
        },
        "Unit": {
          "anyOf": [
            {
              "$ref": "#/$defs/TaskMetadataUnit"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        }
      },
      "required": [
        "id",
        "rowId"
      ],
      "title": "TaskMetadataIntervalType",
      "type": "object"
    },
    "TaskMetadataUnit": {
      "description": "Identifies the unit associated with an interval or parameter.",
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "name": {
          "title": "Name",
          "type": "string"
        }
      },
      "required": [
        "id",
        "name"
      ],
      "title": "TaskMetadataUnit",
      "type": "object"
    },
    "TaskMetadataValueItem": {
      "description": "Represents a selectable value reference in metadata.",
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "name": {
          "title": "Name",
          "type": "string"
        }
      },
      "required": [
        "id",
        "name"
      ],
      "title": "TaskMetadataValueItem",
      "type": "object"
    }
  },
  "description": "Represents a parameter entry included in workflow metadata.",
  "properties": {
    "id": {
      "title": "Id",
      "type": "string"
    },
    "name": {
      "title": "Name",
      "type": "string"
    },
    "value": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "$ref": "#/$defs/TaskMetadataValueItem"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Value"
    },
    "rowId": {
      "title": "Rowid",
      "type": "string"
    },
    "Unit": {
      "anyOf": [
        {
          "$ref": "#/$defs/TaskMetadataUnit"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "shortName": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Shortname"
    },
    "category": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Category"
    },
    "Intervals": {
      "items": {
        "$ref": "#/$defs/TaskMetadataIntervalType"
      },
      "title": "Intervals",
      "type": "array"
    }
  },
  "required": [
    "id",
    "name",
    "rowId"
  ],
  "title": "TaskMetadataParameter",
  "type": "object"
}

Fields:

id

id: str

name

name: str

value

value: str | TaskMetadataValueItem | None = None

row_id

row_id: str

unit

unit: TaskMetadataUnit | None = None

short_name

short_name: str | None = None

category

category: str | None = None

intervals

TaskMetadataParameterGroup

Bases: BaseAlbertModel

Groups related parameters for metadata serialization.

Show JSON schema:
{
  "$defs": {
    "TaskMetadataIntervalType": {
      "description": "Describes a concrete interval type recorded on the task.",
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "value": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Value"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "rowId": {
          "title": "Rowid",
          "type": "string"
        },
        "Unit": {
          "anyOf": [
            {
              "$ref": "#/$defs/TaskMetadataUnit"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        }
      },
      "required": [
        "id",
        "rowId"
      ],
      "title": "TaskMetadataIntervalType",
      "type": "object"
    },
    "TaskMetadataParameter": {
      "description": "Represents a parameter entry included in workflow metadata.",
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "name": {
          "title": "Name",
          "type": "string"
        },
        "value": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/$defs/TaskMetadataValueItem"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Value"
        },
        "rowId": {
          "title": "Rowid",
          "type": "string"
        },
        "Unit": {
          "anyOf": [
            {
              "$ref": "#/$defs/TaskMetadataUnit"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "shortName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Shortname"
        },
        "category": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Category"
        },
        "Intervals": {
          "items": {
            "$ref": "#/$defs/TaskMetadataIntervalType"
          },
          "title": "Intervals",
          "type": "array"
        }
      },
      "required": [
        "id",
        "name",
        "rowId"
      ],
      "title": "TaskMetadataParameter",
      "type": "object"
    },
    "TaskMetadataUnit": {
      "description": "Identifies the unit associated with an interval or parameter.",
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "name": {
          "title": "Name",
          "type": "string"
        }
      },
      "required": [
        "id",
        "name"
      ],
      "title": "TaskMetadataUnit",
      "type": "object"
    },
    "TaskMetadataValueItem": {
      "description": "Represents a selectable value reference in metadata.",
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "name": {
          "title": "Name",
          "type": "string"
        }
      },
      "required": [
        "id",
        "name"
      ],
      "title": "TaskMetadataValueItem",
      "type": "object"
    }
  },
  "description": "Groups related parameters for metadata serialization.",
  "properties": {
    "id": {
      "title": "Id",
      "type": "string"
    },
    "name": {
      "title": "Name",
      "type": "string"
    },
    "prgSequence": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Prgsequence"
    },
    "rowId": {
      "title": "Rowid",
      "type": "string"
    },
    "Parameters": {
      "items": {
        "$ref": "#/$defs/TaskMetadataParameter"
      },
      "title": "Parameters",
      "type": "array"
    }
  },
  "required": [
    "id",
    "name",
    "rowId"
  ],
  "title": "TaskMetadataParameterGroup",
  "type": "object"
}

Fields:

id

id: str

name

name: str

prg_sequence

prg_sequence: int | None = None

row_id

row_id: str

parameters

TaskMetadataWorkflowJson

Bases: BaseAlbertModel

Holds the serialized workflow JSON metadata payload.

Show JSON schema:
{
  "$defs": {
    "TaskMetadataIntervalType": {
      "description": "Describes a concrete interval type recorded on the task.",
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "value": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Value"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "rowId": {
          "title": "Rowid",
          "type": "string"
        },
        "Unit": {
          "anyOf": [
            {
              "$ref": "#/$defs/TaskMetadataUnit"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        }
      },
      "required": [
        "id",
        "rowId"
      ],
      "title": "TaskMetadataIntervalType",
      "type": "object"
    },
    "TaskMetadataParameter": {
      "description": "Represents a parameter entry included in workflow metadata.",
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "name": {
          "title": "Name",
          "type": "string"
        },
        "value": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/$defs/TaskMetadataValueItem"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Value"
        },
        "rowId": {
          "title": "Rowid",
          "type": "string"
        },
        "Unit": {
          "anyOf": [
            {
              "$ref": "#/$defs/TaskMetadataUnit"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "shortName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Shortname"
        },
        "category": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Category"
        },
        "Intervals": {
          "items": {
            "$ref": "#/$defs/TaskMetadataIntervalType"
          },
          "title": "Intervals",
          "type": "array"
        }
      },
      "required": [
        "id",
        "name",
        "rowId"
      ],
      "title": "TaskMetadataParameter",
      "type": "object"
    },
    "TaskMetadataParameterGroup": {
      "description": "Groups related parameters for metadata serialization.",
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "name": {
          "title": "Name",
          "type": "string"
        },
        "prgSequence": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Prgsequence"
        },
        "rowId": {
          "title": "Rowid",
          "type": "string"
        },
        "Parameters": {
          "items": {
            "$ref": "#/$defs/TaskMetadataParameter"
          },
          "title": "Parameters",
          "type": "array"
        }
      },
      "required": [
        "id",
        "name",
        "rowId"
      ],
      "title": "TaskMetadataParameterGroup",
      "type": "object"
    },
    "TaskMetadataUnit": {
      "description": "Identifies the unit associated with an interval or parameter.",
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "name": {
          "title": "Name",
          "type": "string"
        }
      },
      "required": [
        "id",
        "name"
      ],
      "title": "TaskMetadataUnit",
      "type": "object"
    },
    "TaskMetadataValueItem": {
      "description": "Represents a selectable value reference in metadata.",
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "name": {
          "title": "Name",
          "type": "string"
        }
      },
      "required": [
        "id",
        "name"
      ],
      "title": "TaskMetadataValueItem",
      "type": "object"
    }
  },
  "description": "Holds the serialized workflow JSON metadata payload.",
  "properties": {
    "albertId": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Albertid"
    },
    "name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Name"
    },
    "ParameterGroups": {
      "items": {
        "$ref": "#/$defs/TaskMetadataParameterGroup"
      },
      "title": "Parametergroups",
      "type": "array"
    }
  },
  "title": "TaskMetadataWorkflowJson",
  "type": "object"
}

Fields:

albert_id

albert_id: str | None = None

name

name: str | None = None

parameter_groups

parameter_groups: list[TaskMetadataParameterGroup]

TaskMetadataBlockdata

Bases: BaseAlbertModel

Aggregates block-level metadata for proxy execution.

Show JSON schema:
{
  "$defs": {
    "Standard": {
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "standardId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Standardid"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "standardOrganization": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Standardorganization"
        },
        "standardOrganizationId": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Standardorganizationid"
        }
      },
      "required": [
        "id"
      ],
      "title": "Standard",
      "type": "object"
    },
    "TaskMetadataDataTemplate": {
      "description": "Metadata summary describing a data template on the task.",
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "fullName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Fullname"
        },
        "propertyId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Propertyid"
        },
        "isloadGrid": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Isloadgrid"
        },
        "Standards": {
          "anyOf": [
            {
              "$ref": "#/$defs/Standard"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        }
      },
      "required": [
        "id"
      ],
      "title": "TaskMetadataDataTemplate",
      "type": "object"
    },
    "TaskMetadataInterval": {
      "description": "Represents an interval attached to a workflow step.",
      "properties": {
        "interval": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Interval"
        },
        "intervalParams": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Intervalparams"
        },
        "intervalString": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Intervalstring"
        },
        "intervalDetails": {
          "items": {
            "$ref": "#/$defs/TaskMetadataIntervalDetail"
          },
          "title": "Intervaldetails",
          "type": "array"
        },
        "sequence": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Sequence"
        }
      },
      "title": "TaskMetadataInterval",
      "type": "object"
    },
    "TaskMetadataIntervalDetail": {
      "description": "Displays a single interval detail for workflow metadata.",
      "properties": {
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "value": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Value"
        },
        "unitName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Unitname"
        }
      },
      "title": "TaskMetadataIntervalDetail",
      "type": "object"
    },
    "TaskMetadataIntervalType": {
      "description": "Describes a concrete interval type recorded on the task.",
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "value": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Value"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "rowId": {
          "title": "Rowid",
          "type": "string"
        },
        "Unit": {
          "anyOf": [
            {
              "$ref": "#/$defs/TaskMetadataUnit"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        }
      },
      "required": [
        "id",
        "rowId"
      ],
      "title": "TaskMetadataIntervalType",
      "type": "object"
    },
    "TaskMetadataParameter": {
      "description": "Represents a parameter entry included in workflow metadata.",
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "name": {
          "title": "Name",
          "type": "string"
        },
        "value": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/$defs/TaskMetadataValueItem"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Value"
        },
        "rowId": {
          "title": "Rowid",
          "type": "string"
        },
        "Unit": {
          "anyOf": [
            {
              "$ref": "#/$defs/TaskMetadataUnit"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "shortName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Shortname"
        },
        "category": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Category"
        },
        "Intervals": {
          "items": {
            "$ref": "#/$defs/TaskMetadataIntervalType"
          },
          "title": "Intervals",
          "type": "array"
        }
      },
      "required": [
        "id",
        "name",
        "rowId"
      ],
      "title": "TaskMetadataParameter",
      "type": "object"
    },
    "TaskMetadataParameterGroup": {
      "description": "Groups related parameters for metadata serialization.",
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "name": {
          "title": "Name",
          "type": "string"
        },
        "prgSequence": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Prgsequence"
        },
        "rowId": {
          "title": "Rowid",
          "type": "string"
        },
        "Parameters": {
          "items": {
            "$ref": "#/$defs/TaskMetadataParameter"
          },
          "title": "Parameters",
          "type": "array"
        }
      },
      "required": [
        "id",
        "name",
        "rowId"
      ],
      "title": "TaskMetadataParameterGroup",
      "type": "object"
    },
    "TaskMetadataUnit": {
      "description": "Identifies the unit associated with an interval or parameter.",
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "name": {
          "title": "Name",
          "type": "string"
        }
      },
      "required": [
        "id",
        "name"
      ],
      "title": "TaskMetadataUnit",
      "type": "object"
    },
    "TaskMetadataValueItem": {
      "description": "Represents a selectable value reference in metadata.",
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "name": {
          "title": "Name",
          "type": "string"
        }
      },
      "required": [
        "id",
        "name"
      ],
      "title": "TaskMetadataValueItem",
      "type": "object"
    },
    "TaskMetadataWorkflow": {
      "description": "Captures workflow identifiers and interval configuration.",
      "properties": {
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Albertid"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "Intervals": {
          "items": {
            "$ref": "#/$defs/TaskMetadataInterval"
          },
          "title": "Intervals",
          "type": "array"
        }
      },
      "title": "TaskMetadataWorkflow",
      "type": "object"
    },
    "TaskMetadataWorkflowJson": {
      "description": "Holds the serialized workflow JSON metadata payload.",
      "properties": {
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Albertid"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "ParameterGroups": {
          "items": {
            "$ref": "#/$defs/TaskMetadataParameterGroup"
          },
          "title": "Parametergroups",
          "type": "array"
        }
      },
      "title": "TaskMetadataWorkflowJson",
      "type": "object"
    }
  },
  "description": "Aggregates block-level metadata for proxy execution.",
  "properties": {
    "id": {
      "title": "Id",
      "type": "string"
    },
    "Datatemplate": {
      "items": {
        "$ref": "#/$defs/TaskMetadataDataTemplate"
      },
      "title": "Datatemplate",
      "type": "array"
    },
    "Workflow": {
      "items": {
        "$ref": "#/$defs/TaskMetadataWorkflow"
      },
      "title": "Workflow",
      "type": "array"
    },
    "WorkflowJson": {
      "anyOf": [
        {
          "$ref": "#/$defs/TaskMetadataWorkflowJson"
        },
        {
          "additionalProperties": true,
          "type": "object"
        }
      ],
      "title": "Workflowjson"
    }
  },
  "required": [
    "id"
  ],
  "title": "TaskMetadataBlockdata",
  "type": "object"
}

Fields:

id

id: str

datatemplate

workflow

workflow_json

workflow_json: TaskMetadataWorkflowJson | dict

TaskMetadata

Bases: BaseAlbertModel

Top-level metadata describing the task context for scripts.

Show JSON schema:
{
  "$defs": {
    "Standard": {
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "standardId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Standardid"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "standardOrganization": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Standardorganization"
        },
        "standardOrganizationId": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Standardorganizationid"
        }
      },
      "required": [
        "id"
      ],
      "title": "Standard",
      "type": "object"
    },
    "TaskInventoryInformation": {
      "description": "Which inventory item (and optionally which lot) a task acts on.\n\nEvery task references one or more inventory items through this model, stored\non [`inventory_information`][albert.resources.tasks.BaseTask.inventory_information]. What is required depends on the\ntask type:\n\n- [`BatchTask`][albert.resources.tasks.BatchTask]: ``inventory_id`` and ``batch_size`` are required\n  (you are making a quantity of that item).\n- [`PropertyTask`][albert.resources.tasks.PropertyTask] and [`GeneralTask`][albert.resources.tasks.GeneralTask]: ``inventory_id`` is\n  required and ``lot_id`` is recommended (the specific physical lot tested).",
      "properties": {
        "id": {
          "description": "The ID of the inventory item used in the task (serialized as ``id``).",
          "title": "Id",
          "type": "string"
        },
        "lotId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The ID of the specific lot used. Recommended for property and general tasks so results attach to the right physical material.",
          "title": "Lotid"
        },
        "lotNumber": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The human-readable lot number of the item.",
          "title": "Lotnumber"
        },
        "invLotUniqueId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A combined inventory-and-lot identifier used internally.",
          "title": "Invlotuniqueid"
        },
        "batchSize": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The quantity to make of the related inventory item. Required for [`BatchTask`][albert.resources.tasks.BatchTask]; the unit is given by [`batch_size_unit`][albert.resources.tasks.BatchTask.batch_size_unit].",
          "title": "Batchsize"
        },
        "selectedLot": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Read-only. Whether this lot is the one selected for the task.",
          "title": "Selectedlot"
        },
        "barcodeId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The barcode identifier of the physical item, if scanned.",
          "title": "Barcodeid"
        },
        "quantityUsed": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The amount of the item consumed by the task.",
          "title": "Quantityused"
        }
      },
      "required": [
        "id"
      ],
      "title": "TaskInventoryInformation",
      "type": "object"
    },
    "TaskMetadataBlockdata": {
      "description": "Aggregates block-level metadata for proxy execution.",
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "Datatemplate": {
          "items": {
            "$ref": "#/$defs/TaskMetadataDataTemplate"
          },
          "title": "Datatemplate",
          "type": "array"
        },
        "Workflow": {
          "items": {
            "$ref": "#/$defs/TaskMetadataWorkflow"
          },
          "title": "Workflow",
          "type": "array"
        },
        "WorkflowJson": {
          "anyOf": [
            {
              "$ref": "#/$defs/TaskMetadataWorkflowJson"
            },
            {
              "additionalProperties": true,
              "type": "object"
            }
          ],
          "title": "Workflowjson"
        }
      },
      "required": [
        "id"
      ],
      "title": "TaskMetadataBlockdata",
      "type": "object"
    },
    "TaskMetadataDataTemplate": {
      "description": "Metadata summary describing a data template on the task.",
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "fullName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Fullname"
        },
        "propertyId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Propertyid"
        },
        "isloadGrid": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Isloadgrid"
        },
        "Standards": {
          "anyOf": [
            {
              "$ref": "#/$defs/Standard"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        }
      },
      "required": [
        "id"
      ],
      "title": "TaskMetadataDataTemplate",
      "type": "object"
    },
    "TaskMetadataInterval": {
      "description": "Represents an interval attached to a workflow step.",
      "properties": {
        "interval": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Interval"
        },
        "intervalParams": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Intervalparams"
        },
        "intervalString": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Intervalstring"
        },
        "intervalDetails": {
          "items": {
            "$ref": "#/$defs/TaskMetadataIntervalDetail"
          },
          "title": "Intervaldetails",
          "type": "array"
        },
        "sequence": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Sequence"
        }
      },
      "title": "TaskMetadataInterval",
      "type": "object"
    },
    "TaskMetadataIntervalDetail": {
      "description": "Displays a single interval detail for workflow metadata.",
      "properties": {
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "value": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Value"
        },
        "unitName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Unitname"
        }
      },
      "title": "TaskMetadataIntervalDetail",
      "type": "object"
    },
    "TaskMetadataIntervalType": {
      "description": "Describes a concrete interval type recorded on the task.",
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "value": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Value"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "rowId": {
          "title": "Rowid",
          "type": "string"
        },
        "Unit": {
          "anyOf": [
            {
              "$ref": "#/$defs/TaskMetadataUnit"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        }
      },
      "required": [
        "id",
        "rowId"
      ],
      "title": "TaskMetadataIntervalType",
      "type": "object"
    },
    "TaskMetadataParameter": {
      "description": "Represents a parameter entry included in workflow metadata.",
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "name": {
          "title": "Name",
          "type": "string"
        },
        "value": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/$defs/TaskMetadataValueItem"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Value"
        },
        "rowId": {
          "title": "Rowid",
          "type": "string"
        },
        "Unit": {
          "anyOf": [
            {
              "$ref": "#/$defs/TaskMetadataUnit"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "shortName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Shortname"
        },
        "category": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Category"
        },
        "Intervals": {
          "items": {
            "$ref": "#/$defs/TaskMetadataIntervalType"
          },
          "title": "Intervals",
          "type": "array"
        }
      },
      "required": [
        "id",
        "name",
        "rowId"
      ],
      "title": "TaskMetadataParameter",
      "type": "object"
    },
    "TaskMetadataParameterGroup": {
      "description": "Groups related parameters for metadata serialization.",
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "name": {
          "title": "Name",
          "type": "string"
        },
        "prgSequence": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Prgsequence"
        },
        "rowId": {
          "title": "Rowid",
          "type": "string"
        },
        "Parameters": {
          "items": {
            "$ref": "#/$defs/TaskMetadataParameter"
          },
          "title": "Parameters",
          "type": "array"
        }
      },
      "required": [
        "id",
        "name",
        "rowId"
      ],
      "title": "TaskMetadataParameterGroup",
      "type": "object"
    },
    "TaskMetadataUnit": {
      "description": "Identifies the unit associated with an interval or parameter.",
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "name": {
          "title": "Name",
          "type": "string"
        }
      },
      "required": [
        "id",
        "name"
      ],
      "title": "TaskMetadataUnit",
      "type": "object"
    },
    "TaskMetadataValueItem": {
      "description": "Represents a selectable value reference in metadata.",
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "name": {
          "title": "Name",
          "type": "string"
        }
      },
      "required": [
        "id",
        "name"
      ],
      "title": "TaskMetadataValueItem",
      "type": "object"
    },
    "TaskMetadataWorkflow": {
      "description": "Captures workflow identifiers and interval configuration.",
      "properties": {
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Albertid"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "Intervals": {
          "items": {
            "$ref": "#/$defs/TaskMetadataInterval"
          },
          "title": "Intervals",
          "type": "array"
        }
      },
      "title": "TaskMetadataWorkflow",
      "type": "object"
    },
    "TaskMetadataWorkflowJson": {
      "description": "Holds the serialized workflow JSON metadata payload.",
      "properties": {
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Albertid"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "ParameterGroups": {
          "items": {
            "$ref": "#/$defs/TaskMetadataParameterGroup"
          },
          "title": "Parametergroups",
          "type": "array"
        }
      },
      "title": "TaskMetadataWorkflowJson",
      "type": "object"
    }
  },
  "description": "Top-level metadata describing the task context for scripts.",
  "properties": {
    "filename": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Filename"
    },
    "taskId": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Taskid"
    },
    "blockId": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Blockid"
    },
    "Inventories": {
      "items": {
        "$ref": "#/$defs/TaskInventoryInformation"
      },
      "title": "Inventories",
      "type": "array"
    },
    "Blockdata": {
      "anyOf": [
        {
          "$ref": "#/$defs/TaskMetadataBlockdata"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    }
  },
  "title": "TaskMetadata",
  "type": "object"
}

Fields:

filename

filename: str | None = None

task_id

task_id: str | None = None

block_id

block_id: str | None = None

inventories

blockdata

blockdata: TaskMetadataBlockdata | None = None

CsvTableInput

Bases: BaseAlbertModel

Payload for invoking the CSV table proxy endpoint.

Show JSON schema:
{
  "$defs": {
    "Standard": {
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "standardId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Standardid"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "standardOrganization": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Standardorganization"
        },
        "standardOrganizationId": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Standardorganizationid"
        }
      },
      "required": [
        "id"
      ],
      "title": "Standard",
      "type": "object"
    },
    "TaskInventoryInformation": {
      "description": "Which inventory item (and optionally which lot) a task acts on.\n\nEvery task references one or more inventory items through this model, stored\non [`inventory_information`][albert.resources.tasks.BaseTask.inventory_information]. What is required depends on the\ntask type:\n\n- [`BatchTask`][albert.resources.tasks.BatchTask]: ``inventory_id`` and ``batch_size`` are required\n  (you are making a quantity of that item).\n- [`PropertyTask`][albert.resources.tasks.PropertyTask] and [`GeneralTask`][albert.resources.tasks.GeneralTask]: ``inventory_id`` is\n  required and ``lot_id`` is recommended (the specific physical lot tested).",
      "properties": {
        "id": {
          "description": "The ID of the inventory item used in the task (serialized as ``id``).",
          "title": "Id",
          "type": "string"
        },
        "lotId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The ID of the specific lot used. Recommended for property and general tasks so results attach to the right physical material.",
          "title": "Lotid"
        },
        "lotNumber": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The human-readable lot number of the item.",
          "title": "Lotnumber"
        },
        "invLotUniqueId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A combined inventory-and-lot identifier used internally.",
          "title": "Invlotuniqueid"
        },
        "batchSize": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The quantity to make of the related inventory item. Required for [`BatchTask`][albert.resources.tasks.BatchTask]; the unit is given by [`batch_size_unit`][albert.resources.tasks.BatchTask.batch_size_unit].",
          "title": "Batchsize"
        },
        "selectedLot": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Read-only. Whether this lot is the one selected for the task.",
          "title": "Selectedlot"
        },
        "barcodeId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The barcode identifier of the physical item, if scanned.",
          "title": "Barcodeid"
        },
        "quantityUsed": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The amount of the item consumed by the task.",
          "title": "Quantityused"
        }
      },
      "required": [
        "id"
      ],
      "title": "TaskInventoryInformation",
      "type": "object"
    },
    "TaskMetadata": {
      "description": "Top-level metadata describing the task context for scripts.",
      "properties": {
        "filename": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Filename"
        },
        "taskId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Taskid"
        },
        "blockId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Blockid"
        },
        "Inventories": {
          "items": {
            "$ref": "#/$defs/TaskInventoryInformation"
          },
          "title": "Inventories",
          "type": "array"
        },
        "Blockdata": {
          "anyOf": [
            {
              "$ref": "#/$defs/TaskMetadataBlockdata"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        }
      },
      "title": "TaskMetadata",
      "type": "object"
    },
    "TaskMetadataBlockdata": {
      "description": "Aggregates block-level metadata for proxy execution.",
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "Datatemplate": {
          "items": {
            "$ref": "#/$defs/TaskMetadataDataTemplate"
          },
          "title": "Datatemplate",
          "type": "array"
        },
        "Workflow": {
          "items": {
            "$ref": "#/$defs/TaskMetadataWorkflow"
          },
          "title": "Workflow",
          "type": "array"
        },
        "WorkflowJson": {
          "anyOf": [
            {
              "$ref": "#/$defs/TaskMetadataWorkflowJson"
            },
            {
              "additionalProperties": true,
              "type": "object"
            }
          ],
          "title": "Workflowjson"
        }
      },
      "required": [
        "id"
      ],
      "title": "TaskMetadataBlockdata",
      "type": "object"
    },
    "TaskMetadataDataTemplate": {
      "description": "Metadata summary describing a data template on the task.",
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "fullName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Fullname"
        },
        "propertyId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Propertyid"
        },
        "isloadGrid": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Isloadgrid"
        },
        "Standards": {
          "anyOf": [
            {
              "$ref": "#/$defs/Standard"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        }
      },
      "required": [
        "id"
      ],
      "title": "TaskMetadataDataTemplate",
      "type": "object"
    },
    "TaskMetadataInterval": {
      "description": "Represents an interval attached to a workflow step.",
      "properties": {
        "interval": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Interval"
        },
        "intervalParams": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Intervalparams"
        },
        "intervalString": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Intervalstring"
        },
        "intervalDetails": {
          "items": {
            "$ref": "#/$defs/TaskMetadataIntervalDetail"
          },
          "title": "Intervaldetails",
          "type": "array"
        },
        "sequence": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Sequence"
        }
      },
      "title": "TaskMetadataInterval",
      "type": "object"
    },
    "TaskMetadataIntervalDetail": {
      "description": "Displays a single interval detail for workflow metadata.",
      "properties": {
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "value": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Value"
        },
        "unitName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Unitname"
        }
      },
      "title": "TaskMetadataIntervalDetail",
      "type": "object"
    },
    "TaskMetadataIntervalType": {
      "description": "Describes a concrete interval type recorded on the task.",
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "value": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Value"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "rowId": {
          "title": "Rowid",
          "type": "string"
        },
        "Unit": {
          "anyOf": [
            {
              "$ref": "#/$defs/TaskMetadataUnit"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        }
      },
      "required": [
        "id",
        "rowId"
      ],
      "title": "TaskMetadataIntervalType",
      "type": "object"
    },
    "TaskMetadataParameter": {
      "description": "Represents a parameter entry included in workflow metadata.",
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "name": {
          "title": "Name",
          "type": "string"
        },
        "value": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/$defs/TaskMetadataValueItem"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Value"
        },
        "rowId": {
          "title": "Rowid",
          "type": "string"
        },
        "Unit": {
          "anyOf": [
            {
              "$ref": "#/$defs/TaskMetadataUnit"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "shortName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Shortname"
        },
        "category": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Category"
        },
        "Intervals": {
          "items": {
            "$ref": "#/$defs/TaskMetadataIntervalType"
          },
          "title": "Intervals",
          "type": "array"
        }
      },
      "required": [
        "id",
        "name",
        "rowId"
      ],
      "title": "TaskMetadataParameter",
      "type": "object"
    },
    "TaskMetadataParameterGroup": {
      "description": "Groups related parameters for metadata serialization.",
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "name": {
          "title": "Name",
          "type": "string"
        },
        "prgSequence": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Prgsequence"
        },
        "rowId": {
          "title": "Rowid",
          "type": "string"
        },
        "Parameters": {
          "items": {
            "$ref": "#/$defs/TaskMetadataParameter"
          },
          "title": "Parameters",
          "type": "array"
        }
      },
      "required": [
        "id",
        "name",
        "rowId"
      ],
      "title": "TaskMetadataParameterGroup",
      "type": "object"
    },
    "TaskMetadataUnit": {
      "description": "Identifies the unit associated with an interval or parameter.",
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "name": {
          "title": "Name",
          "type": "string"
        }
      },
      "required": [
        "id",
        "name"
      ],
      "title": "TaskMetadataUnit",
      "type": "object"
    },
    "TaskMetadataValueItem": {
      "description": "Represents a selectable value reference in metadata.",
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "name": {
          "title": "Name",
          "type": "string"
        }
      },
      "required": [
        "id",
        "name"
      ],
      "title": "TaskMetadataValueItem",
      "type": "object"
    },
    "TaskMetadataWorkflow": {
      "description": "Captures workflow identifiers and interval configuration.",
      "properties": {
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Albertid"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "Intervals": {
          "items": {
            "$ref": "#/$defs/TaskMetadataInterval"
          },
          "title": "Intervals",
          "type": "array"
        }
      },
      "title": "TaskMetadataWorkflow",
      "type": "object"
    },
    "TaskMetadataWorkflowJson": {
      "description": "Holds the serialized workflow JSON metadata payload.",
      "properties": {
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Albertid"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "ParameterGroups": {
          "items": {
            "$ref": "#/$defs/TaskMetadataParameterGroup"
          },
          "title": "Parametergroups",
          "type": "array"
        }
      },
      "title": "TaskMetadataWorkflowJson",
      "type": "object"
    }
  },
  "description": "Payload for invoking the CSV table proxy endpoint.",
  "properties": {
    "scriptS3URL": {
      "title": "Scripts3Url",
      "type": "string"
    },
    "dataS3URL": {
      "title": "Datas3Url",
      "type": "string"
    },
    "TaskMetadata": {
      "$ref": "#/$defs/TaskMetadata"
    }
  },
  "required": [
    "scriptS3URL",
    "dataS3URL",
    "TaskMetadata"
  ],
  "title": "CsvTableInput",
  "type": "object"
}

Fields:

script_s3_url

script_s3_url: str

data_s3_url

data_s3_url: str

task_metadata

task_metadata: TaskMetadata

CsvTableResponseItem

Bases: BaseAlbertModel

Single table response emitted by the CSV table proxy.

Show JSON schema:
{
  "description": "Single table response emitted by the CSV table proxy.",
  "properties": {
    "Data": {
      "items": {
        "additionalProperties": true,
        "type": "object"
      },
      "title": "Data",
      "type": "array"
    }
  },
  "required": [
    "Data"
  ],
  "title": "CsvTableResponseItem",
  "type": "object"
}

Fields:

data

data: list[dict[str, Any]]

CsvCurveInput

Bases: BaseAlbertModel

Payload sent to the curve CSV proxy runner.

Show JSON schema:
{
  "$defs": {
    "Standard": {
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "standardId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Standardid"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "standardOrganization": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Standardorganization"
        },
        "standardOrganizationId": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Standardorganizationid"
        }
      },
      "required": [
        "id"
      ],
      "title": "Standard",
      "type": "object"
    },
    "TaskInventoryInformation": {
      "description": "Which inventory item (and optionally which lot) a task acts on.\n\nEvery task references one or more inventory items through this model, stored\non [`inventory_information`][albert.resources.tasks.BaseTask.inventory_information]. What is required depends on the\ntask type:\n\n- [`BatchTask`][albert.resources.tasks.BatchTask]: ``inventory_id`` and ``batch_size`` are required\n  (you are making a quantity of that item).\n- [`PropertyTask`][albert.resources.tasks.PropertyTask] and [`GeneralTask`][albert.resources.tasks.GeneralTask]: ``inventory_id`` is\n  required and ``lot_id`` is recommended (the specific physical lot tested).",
      "properties": {
        "id": {
          "description": "The ID of the inventory item used in the task (serialized as ``id``).",
          "title": "Id",
          "type": "string"
        },
        "lotId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The ID of the specific lot used. Recommended for property and general tasks so results attach to the right physical material.",
          "title": "Lotid"
        },
        "lotNumber": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The human-readable lot number of the item.",
          "title": "Lotnumber"
        },
        "invLotUniqueId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A combined inventory-and-lot identifier used internally.",
          "title": "Invlotuniqueid"
        },
        "batchSize": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The quantity to make of the related inventory item. Required for [`BatchTask`][albert.resources.tasks.BatchTask]; the unit is given by [`batch_size_unit`][albert.resources.tasks.BatchTask.batch_size_unit].",
          "title": "Batchsize"
        },
        "selectedLot": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Read-only. Whether this lot is the one selected for the task.",
          "title": "Selectedlot"
        },
        "barcodeId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The barcode identifier of the physical item, if scanned.",
          "title": "Barcodeid"
        },
        "quantityUsed": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The amount of the item consumed by the task.",
          "title": "Quantityused"
        }
      },
      "required": [
        "id"
      ],
      "title": "TaskInventoryInformation",
      "type": "object"
    },
    "TaskMetadata": {
      "description": "Top-level metadata describing the task context for scripts.",
      "properties": {
        "filename": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Filename"
        },
        "taskId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Taskid"
        },
        "blockId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Blockid"
        },
        "Inventories": {
          "items": {
            "$ref": "#/$defs/TaskInventoryInformation"
          },
          "title": "Inventories",
          "type": "array"
        },
        "Blockdata": {
          "anyOf": [
            {
              "$ref": "#/$defs/TaskMetadataBlockdata"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        }
      },
      "title": "TaskMetadata",
      "type": "object"
    },
    "TaskMetadataBlockdata": {
      "description": "Aggregates block-level metadata for proxy execution.",
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "Datatemplate": {
          "items": {
            "$ref": "#/$defs/TaskMetadataDataTemplate"
          },
          "title": "Datatemplate",
          "type": "array"
        },
        "Workflow": {
          "items": {
            "$ref": "#/$defs/TaskMetadataWorkflow"
          },
          "title": "Workflow",
          "type": "array"
        },
        "WorkflowJson": {
          "anyOf": [
            {
              "$ref": "#/$defs/TaskMetadataWorkflowJson"
            },
            {
              "additionalProperties": true,
              "type": "object"
            }
          ],
          "title": "Workflowjson"
        }
      },
      "required": [
        "id"
      ],
      "title": "TaskMetadataBlockdata",
      "type": "object"
    },
    "TaskMetadataDataTemplate": {
      "description": "Metadata summary describing a data template on the task.",
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "fullName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Fullname"
        },
        "propertyId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Propertyid"
        },
        "isloadGrid": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Isloadgrid"
        },
        "Standards": {
          "anyOf": [
            {
              "$ref": "#/$defs/Standard"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        }
      },
      "required": [
        "id"
      ],
      "title": "TaskMetadataDataTemplate",
      "type": "object"
    },
    "TaskMetadataInterval": {
      "description": "Represents an interval attached to a workflow step.",
      "properties": {
        "interval": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Interval"
        },
        "intervalParams": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Intervalparams"
        },
        "intervalString": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Intervalstring"
        },
        "intervalDetails": {
          "items": {
            "$ref": "#/$defs/TaskMetadataIntervalDetail"
          },
          "title": "Intervaldetails",
          "type": "array"
        },
        "sequence": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Sequence"
        }
      },
      "title": "TaskMetadataInterval",
      "type": "object"
    },
    "TaskMetadataIntervalDetail": {
      "description": "Displays a single interval detail for workflow metadata.",
      "properties": {
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "value": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Value"
        },
        "unitName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Unitname"
        }
      },
      "title": "TaskMetadataIntervalDetail",
      "type": "object"
    },
    "TaskMetadataIntervalType": {
      "description": "Describes a concrete interval type recorded on the task.",
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "value": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Value"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "rowId": {
          "title": "Rowid",
          "type": "string"
        },
        "Unit": {
          "anyOf": [
            {
              "$ref": "#/$defs/TaskMetadataUnit"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        }
      },
      "required": [
        "id",
        "rowId"
      ],
      "title": "TaskMetadataIntervalType",
      "type": "object"
    },
    "TaskMetadataParameter": {
      "description": "Represents a parameter entry included in workflow metadata.",
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "name": {
          "title": "Name",
          "type": "string"
        },
        "value": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/$defs/TaskMetadataValueItem"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Value"
        },
        "rowId": {
          "title": "Rowid",
          "type": "string"
        },
        "Unit": {
          "anyOf": [
            {
              "$ref": "#/$defs/TaskMetadataUnit"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "shortName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Shortname"
        },
        "category": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Category"
        },
        "Intervals": {
          "items": {
            "$ref": "#/$defs/TaskMetadataIntervalType"
          },
          "title": "Intervals",
          "type": "array"
        }
      },
      "required": [
        "id",
        "name",
        "rowId"
      ],
      "title": "TaskMetadataParameter",
      "type": "object"
    },
    "TaskMetadataParameterGroup": {
      "description": "Groups related parameters for metadata serialization.",
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "name": {
          "title": "Name",
          "type": "string"
        },
        "prgSequence": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Prgsequence"
        },
        "rowId": {
          "title": "Rowid",
          "type": "string"
        },
        "Parameters": {
          "items": {
            "$ref": "#/$defs/TaskMetadataParameter"
          },
          "title": "Parameters",
          "type": "array"
        }
      },
      "required": [
        "id",
        "name",
        "rowId"
      ],
      "title": "TaskMetadataParameterGroup",
      "type": "object"
    },
    "TaskMetadataUnit": {
      "description": "Identifies the unit associated with an interval or parameter.",
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "name": {
          "title": "Name",
          "type": "string"
        }
      },
      "required": [
        "id",
        "name"
      ],
      "title": "TaskMetadataUnit",
      "type": "object"
    },
    "TaskMetadataValueItem": {
      "description": "Represents a selectable value reference in metadata.",
      "properties": {
        "id": {
          "title": "Id",
          "type": "string"
        },
        "name": {
          "title": "Name",
          "type": "string"
        }
      },
      "required": [
        "id",
        "name"
      ],
      "title": "TaskMetadataValueItem",
      "type": "object"
    },
    "TaskMetadataWorkflow": {
      "description": "Captures workflow identifiers and interval configuration.",
      "properties": {
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Albertid"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "Intervals": {
          "items": {
            "$ref": "#/$defs/TaskMetadataInterval"
          },
          "title": "Intervals",
          "type": "array"
        }
      },
      "title": "TaskMetadataWorkflow",
      "type": "object"
    },
    "TaskMetadataWorkflowJson": {
      "description": "Holds the serialized workflow JSON metadata payload.",
      "properties": {
        "albertId": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Albertid"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "ParameterGroups": {
          "items": {
            "$ref": "#/$defs/TaskMetadataParameterGroup"
          },
          "title": "Parametergroups",
          "type": "array"
        }
      },
      "title": "TaskMetadataWorkflowJson",
      "type": "object"
    }
  },
  "description": "Payload sent to the curve CSV proxy runner.",
  "properties": {
    "scriptS3URL": {
      "title": "Scripts3Url",
      "type": "string"
    },
    "dataS3URL": {
      "title": "Datas3Url",
      "type": "string"
    },
    "resultS3URL": {
      "title": "Results3Url",
      "type": "string"
    },
    "TaskMetadata": {
      "$ref": "#/$defs/TaskMetadata"
    }
  },
  "required": [
    "scriptS3URL",
    "dataS3URL",
    "resultS3URL",
    "TaskMetadata"
  ],
  "title": "CsvCurveInput",
  "type": "object"
}

Fields:

script_s3_url

script_s3_url: str

data_s3_url

data_s3_url: str

result_s3_url

result_s3_url: str

task_metadata

task_metadata: TaskMetadata

CsvCurveResponse

Bases: BaseAlbertModel

Details about the curve CSV file produced by the runner.

Show JSON schema:
{
  "description": "Details about the curve CSV file produced by the runner.",
  "properties": {
    "status": {
      "title": "Status",
      "type": "string"
    },
    "message": {
      "title": "Message",
      "type": "string"
    },
    "eTag": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Etag"
    },
    "size": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Size"
    },
    "columnHeaders": {
      "additionalProperties": true,
      "title": "Columnheaders",
      "type": "object"
    }
  },
  "required": [
    "status",
    "message",
    "columnHeaders"
  ],
  "title": "CsvCurveResponse",
  "type": "object"
}

Fields:

status

status: str

message

message: str

e_tag

e_tag: str | None = None

size

size: float | None = None

column_headers

column_headers: dict[str, Any]