Skip to content

Projects

albert.resources.projects

ProjectClass

Bases: str, Enum

The access-control class of a project, governing who can see it.

  • PRIVATE: visible only to the project's ACL members (the default).
  • SHARED: visible more broadly across the organization.
  • CONFIDENTIAL: most tightly controlled standard access.
  • RESTRICTED: limited access; returned for existing tenant projects and only usable when the tenant has the restricted project class feature enabled.

Attributes:

Name Type Description
SHARED
CONFIDENTIAL
PRIVATE
RESTRICTED

SHARED

SHARED = 'shared'

CONFIDENTIAL

CONFIDENTIAL = 'confidential'

PRIVATE

PRIVATE = 'private'

RESTRICTED

RESTRICTED = 'restricted'

State

Bases: str, Enum

The lifecycle state of a project.

The set of allowed states is customizable per tenant via the entity-status API; these are the platform defaults. Unknown tenant-specific values are tolerated as plain strings on Project.state.

Attributes:

Name Type Description
NOT_STARTED
ACTIVE
CLOSED_SUCCESS
CLOSED_ARCHIVED
JUST_STARTED
IN_PROGRESS

NOT_STARTED

NOT_STARTED = 'Not Started'

ACTIVE

ACTIVE = 'Active'

CLOSED_SUCCESS

CLOSED_SUCCESS = 'Closed - Success'

CLOSED_ARCHIVED

CLOSED_ARCHIVED = 'Closed - Archived'

JUST_STARTED

JUST_STARTED = 'Just Started'

IN_PROGRESS

IN_PROGRESS = 'In Progress'

TaskConfig

Bases: BaseAlbertModel

Default task settings applied when tasks are created within a project.

Show JSON schema:
{
  "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": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Whether this configuration is hidden in the UI (``\"true\"`` or ``\"false\"``).",
      "title": "Hidden"
    }
  },
  "title": "TaskConfig",
  "type": "object"
}

Fields:

data_template_id

data_template_id: str | None = None

ID of the data template tasks default to.

workflow_id

workflow_id: str | None = None

ID of the workflow tasks default to.

default_task_name

default_task_name: str | None = None

Default name applied to new tasks.

target

target: str | None = None

Default target for the configured tasks.

hidden

hidden: str | None = None

Whether this configuration is hidden in the UI ("true" or "false").

GridDefault

Bases: str, Enum

The default grid view shown for a project.

  • PD: the Property Data grid.
  • WKS: the Worksheet grid.

Attributes:

Name Type Description
PD
WKS

PD

PD = 'PD'

WKS

WKS = 'WKS'

Project

Bases: BaseSessionResource

A project in Albert: the top-level container for a piece of R&D work.

A project groups the formulations designed for the work, its Worksheet (1:1 with the project), the Tasks run against it, and the inventory it references. Create and manage projects through the ProjectCollection (client.projects).

Only description is required to build one; it doubles as the project's display name. The id and state are assigned by Albert and are read only from the client's perspective.

Example

from albert import Albert
from albert.resources.projects import Project, ProjectClass
client = Albert()
project = client.projects.create(
    project=Project(
        description="Weatherproof Coatings 2026",
        project_class=ProjectClass.SHARED,
    )
)
project.id
# 'PRO123'
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"
    },
    "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"
    },
    "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"
    },
    "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``: most tightly controlled standard access.\n- ``RESTRICTED``: limited access; returned for existing tenant projects and\n  only usable when the tenant has the restricted project class feature enabled.",
      "enum": [
        "shared",
        "confidential",
        "private",
        "restricted"
      ],
      "title": "ProjectClass",
      "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"
    },
    "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": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Whether this configuration is hidden in the UI (``\"true\"`` or ``\"false\"``).",
          "title": "Hidden"
        }
      },
      "title": "TaskConfig",
      "type": "object"
    }
  },
  "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"
    },
    "oldApiParams": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Read-only. Do not use.",
      "title": "Oldapiparams"
    },
    "TaskConfig": {
      "anyOf": [
        {
          "items": {
            "$ref": "#/$defs/TaskConfig"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "description": "Default task settings applied to tasks created within the project.",
      "title": "Taskconfig"
    },
    "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"
}

Fields:

Validators:

description

description: str

Human-readable project name/description (1-2000 characters). Also serves as the project's display name.

locations

locations: list[SerializeAsEntityLink[Location]] | None = (
    None
)

The locations the project is associated with. Optional.

project_class

project_class: ProjectClass | None = ProjectClass.PRIVATE

Access-control class (private, shared, or confidential). Defaults to private.

prefix

prefix: str | None = None

Optional prefix used when naming entities within the project.

application_engineering_inventory_ids

application_engineering_inventory_ids: list[str] | None = (
    None
)

Inventory Ids to be added as application engineering

id

id: ProjectId | None = None

The Albert Project ID (format PRO...). Assigned by Albert and present once the project has been created or retrieved.

acl

acl: list[ACL] | None

Access-control entries controlling who can access the project. Optional.

old_api_params

old_api_params: dict | None = None

Read-only. Do not use.

task_config

task_config: list[TaskConfig] | None

Default task settings applied to tasks created within the project.

grid

grid: GridDefault | None = None

The default grid view (Property Data or Worksheet) shown for the project.

metadata

metadata: dict[str, MetadataItem] | None = None

Custom field values. Allowed keys and values are defined via the Custom Fields API. Optional.

status

status: str | None = None

Read-only status string returned by Albert.

state

state: State | str | None = None

The project's lifecycle state. Read only on create; can be changed via update. Tenant-customized states outside State parse as plain strings.

smart

smart: SmartProject | None

Return the project-bound Smart Projects interface for this project.

Use this property for Smart Projects workflows: adding targets and building smart datasets scoped to the project. For standalone target or smart dataset creation, use TargetCollection or SmartDatasetCollection instead.

Returns:

Type Description
SmartProject or None

The SmartProject for this project, or None if no smart project record exists yet.

validate_status

validate_status(value)

Somehow, some statuses are capitalized in the API response. This ensures they are always lowercase.

Source code in src/albert/resources/projects.py
@field_validator("status", mode="before")
def validate_status(cls, value):
    """Somehow, some statuses are capitalized in the API response. This ensures they are always lowercase."""
    if isinstance(value, str):
        return value.lower()
    return value

ProjectSearchItem

Bases: BaseAlbertModel, HydrationMixin[Project]

A lightweight (partial) project returned by project search.

Returned by search, this carries only summary fields for fast listing. Use its hydration support (or fetch by id via get_by_id) to obtain the full Project.

Show JSON schema:
{
  "$defs": {
    "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"
    }
  },
  "description": "A lightweight (partial) project returned by project search.\n\nReturned by [`search`][albert.collections.projects.ProjectCollection.search],\nthis carries only summary fields for fast listing. Use its hydration support\n(or fetch by ``id`` via\n[`get_by_id`][albert.collections.projects.ProjectCollection.get_by_id]) to obtain\nthe full [`Project`][albert.resources.projects.Project].",
  "properties": {
    "albertId": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The Albert Project ID (format ``PRO...``).",
      "title": "Albertid"
    },
    "description": {
      "description": "The project's name/description.",
      "maxLength": 2000,
      "minLength": 1,
      "title": "Description",
      "type": "string"
    },
    "status": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Read-only status string returned by Albert.",
      "title": "Status"
    },
    "application": {
      "anyOf": [
        {
          "items": {
            "$ref": "#/$defs/EntityLinkWithName"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Application tags associated with the project.",
      "title": "Application"
    },
    "technology": {
      "anyOf": [
        {
          "items": {
            "$ref": "#/$defs/EntityLinkWithName"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Technology tags associated with the project.",
      "title": "Technology"
    }
  },
  "required": [
    "description"
  ],
  "title": "ProjectSearchItem",
  "type": "object"
}

Fields:

id

id: ProjectId | None = None

The Albert Project ID (format PRO...).

description

description: str

The project's name/description.

status

status: str | None = None

Read-only status string returned by Albert.

application

application: list[EntityLinkWithName] | None = None

Application tags associated with the project.

technology

technology: list[EntityLinkWithName] | None = None

Technology tags associated with the project.

DocumentSearchItem

Bases: BaseAlbertModel

A document (attachment) search result linked to a project.

Returned by document_search. Each item describes an attachment's metadata rather than its file contents.

Show JSON schema:
{
  "description": "A document (attachment) search result linked to a project.\n\nReturned by\n[`document_search`][albert.collections.projects.ProjectCollection.document_search]. Each\nitem describes an attachment's metadata rather than its file contents.",
  "properties": {
    "albertId": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The Albert Attachment ID (format ``ATT...``).",
      "title": "Albertid"
    },
    "name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The document's file name.",
      "title": "Name"
    },
    "mimeType": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The document's MIME type (e.g. ``application/pdf``).",
      "title": "Mimetype"
    },
    "fileSize": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The document's size in bytes.",
      "title": "Filesize"
    },
    "projectId": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "ID of the project the document is linked to.",
      "title": "Projectid"
    },
    "key": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Storage key for the document.",
      "title": "Key"
    },
    "source": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Source system or origin of the document.",
      "title": "Source"
    },
    "createdBy": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "ID of the user who uploaded the document.",
      "title": "Createdby"
    },
    "createdByName": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Name of the user who uploaded the document.",
      "title": "Createdbyname"
    },
    "createdAt": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Timestamp when the document was created.",
      "title": "Createdat"
    }
  },
  "title": "DocumentSearchItem",
  "type": "object"
}

Fields:

id

id: AttachmentId | None = None

The Albert Attachment ID (format ATT...).

name

name: str | None = None

The document's file name.

mime_type

mime_type: str | None = None

The document's MIME type (e.g. application/pdf).

file_size

file_size: int | None = None

The document's size in bytes.

project_id

project_id: str | None = None

ID of the project the document is linked to.

key

key: str | None = None

Storage key for the document.

source

source: str | None = None

Source system or origin of the document.

created_by

created_by: str | None = None

ID of the user who uploaded the document.

created_by_name

created_by_name: str | None = None

Name of the user who uploaded the document.

created_at

created_at: str | None = None

Timestamp when the document was created.

ReferenceFormulaType

Bases: str, Enum

Standard reference formula designations for reformulation projects.

In Albert reformulation workflows, reference formulas serve as comparison points across the project lifecycle. They are displayed as reference columns in Target Overview and reference bars in Compare Formula Data, allowing chemists to benchmark experimental results against known baselines without re-entering data or duplicating records.

  • ORIGINAL: "Original" (in-app: "The formula you're iterating from"). The starting-point commercial or benchmark formula being reformulated or replaced.
  • LEADING: "Leading" (in-app: "A top experimental candidate"). A promising intermediate candidate tracked against project goals.
  • FINAL: "Final" (in-app: "The project's selected outcome formula"). The formula selected as the successful outcome of the project.
  • CONTROL: "Control" (in-app: "A designated experimental control"). A formula used as an experimental baseline or control.
  • OTHER: "Other" (in-app: "Any other reference"). Any other reference designation at user discretion. Custom label strings may also be supplied in place of this enum member when calling reference formula methods.

Attributes:

Name Type Description
ORIGINAL
LEADING
FINAL
CONTROL
OTHER

ORIGINAL

ORIGINAL = 'Original'

LEADING

LEADING = 'Leading'

FINAL

FINAL = 'Final'

CONTROL

CONTROL = 'Control'

OTHER

OTHER = 'Other'

ReferenceFormula

Bases: BaseAlbertModel

A formula designated as a comparison point within an Albert project.

Reference formulas provide baseline comparison points for chemists working on reformulation projects. Once designated and synced with the project dataset via update_dataset, reference formulas surface in two primary reporting and analysis interfaces:

  • Target Overview: reference formulas appear as visually distinct reference columns alongside experimental formulas, populating historical performance results against project targets automatically without re-entering data.
  • Compare Formula Data: reference formulas appear as distinct reference bars plotted against target ranges, allowing chemists to see how experimental iterations compare to the commercial formula being replicated or competitor baselines being benchmarked.

Albert supports two product designation flows:

  1. Worksheet flow (in-project): designated via set_reference_formula. Applies to a formula already within this project's worksheet and is scoped to a specific sheet. The ingredients and process design sections of the column are locked by default upon designation in the worksheet to prevent accidental edits.
  2. Target Overview flow (cross-project linked): designated via link_reference_formula. Links an existing formula from another project that the caller has view/read access to. Albert includes the source project's full dataset in the project's smart dataset scope to power inverse design machine learning (Breakthrough), while surfacing only the specifically designated reference formula columns in the Target Overview and Compare Data UI.

Removing a designation via delete_reference_formula reverts the column or unlinks the view without deleting the underlying formula or its experimental history.

Example

from albert import Albert
from albert.resources.projects import ReferenceFormulaType

client = Albert()
rf = client.projects.set_reference_formula(
    project_id="PRO123",
    sheet_id="WKS456",
    inventory_id="INV123-001",
    reference_formula_type=ReferenceFormulaType.ORIGINAL,
)
rf.reference_formula_type
# 'Original'
Show JSON schema:
{
  "description": "A formula designated as a comparison point within an Albert project.\n\nReference formulas provide baseline comparison points for chemists working on\nreformulation projects. Once designated and synced with the project dataset via\n[`update_dataset`][albert.resources.smart_projects.SmartProject.update_dataset],\nreference formulas surface in two primary reporting and analysis interfaces:\n\n* **Target Overview**: reference formulas appear as visually distinct reference\n  columns alongside experimental formulas, populating historical performance\n  results against project targets automatically without re-entering data.\n* **Compare Formula Data**: reference formulas appear as distinct reference bars\n  plotted against target ranges, allowing chemists to see how experimental\n  iterations compare to the commercial formula being replicated or competitor\n  baselines being benchmarked.\n\nAlbert supports two product designation flows:\n\n1. **Worksheet flow (in-project)**: designated via\n   [`set_reference_formula`][albert.collections.projects.ProjectCollection.set_reference_formula].\n   Applies to a formula already within this project's worksheet and is scoped to a\n   specific sheet. The ingredients and process design sections of the column are\n   locked by default upon designation in the worksheet to prevent accidental edits.\n2. **Target Overview flow (cross-project linked)**: designated via\n   [`link_reference_formula`][albert.collections.projects.ProjectCollection.link_reference_formula].\n   Links an existing formula from another project that the caller has view/read access\n   to. Albert includes the source project's full dataset in the project's smart dataset\n   scope to power inverse design machine learning (Breakthrough), while surfacing only\n   the specifically designated reference formula columns in the Target Overview and\n   Compare Data UI.\n\nRemoving a designation via\n[`delete_reference_formula`][albert.collections.projects.ProjectCollection.delete_reference_formula]\nreverts the column or unlinks the view without deleting the underlying formula or its\nexperimental history.\n\n!!! example\n    ```python\n    from albert import Albert\n    from albert.resources.projects import ReferenceFormulaType\n\n    client = Albert()\n    rf = client.projects.set_reference_formula(\n        project_id=\"PRO123\",\n        sheet_id=\"WKS456\",\n        inventory_id=\"INV123-001\",\n        reference_formula_type=ReferenceFormulaType.ORIGINAL,\n    )\n    rf.reference_formula_type\n    # 'Original'\n    ```",
  "properties": {
    "projectId": {
      "description": "The ID of the project holding this reference formula designation.",
      "title": "Projectid",
      "type": "string"
    },
    "inventoryId": {
      "description": "The inventory ID of the designated formula (format ``INV...``).",
      "title": "Inventoryid",
      "type": "string"
    },
    "inventoryName": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The display name of the designated formula inventory item, when populated.",
      "title": "Inventoryname"
    },
    "referenceFormulaType": {
      "description": "The role this formula plays on the project (e.g. Original, Leading, Final, Control, or a custom string).",
      "title": "Referenceformulatype",
      "type": "string"
    },
    "isExternalFormula": {
      "description": "True when the formula originates from another project and is linked into this project.",
      "title": "Isexternalformula",
      "type": "boolean"
    },
    "parentProjectId": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The project where the formula originates. Equals ``project_id`` for in-project formulas.",
      "title": "Parentprojectid"
    },
    "worksheetId": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The worksheet sheet ID where an in-project formula is designated. None for cross-project linked formulas.",
      "title": "Worksheetid"
    }
  },
  "required": [
    "projectId",
    "inventoryId",
    "referenceFormulaType",
    "isExternalFormula"
  ],
  "title": "ReferenceFormula",
  "type": "object"
}

Fields:

project_id

project_id: ProjectId

The ID of the project holding this reference formula designation.

inventory_id

inventory_id: InventoryId

The inventory ID of the designated formula (format INV...).

inventory_name

inventory_name: str | None = None

The display name of the designated formula inventory item, when populated.

reference_formula_type

reference_formula_type: str

The role this formula plays on the project (e.g. Original, Leading, Final, Control, or a custom string).

is_external_formula

is_external_formula: bool

True when the formula originates from another project and is linked into this project.

parent_project_id

parent_project_id: ProjectId | None = None

The project where the formula originates. Equals project_id for in-project formulas.

sheet_id

sheet_id: WorksheetId | None = None

The worksheet sheet ID where an in-project formula is designated. None for cross-project linked formulas.