SDS (🧪 Beta)
albert.resources.sds
SDSDataEntity
Entity names for get_field_options.
These are the entity query values accepted by the field-options endpoint.
They do not always match the SDSRequest field name.
Attributes:
| Name | Type | Description |
|---|---|---|
FLASHPOINT |
str
|
Options for |
BOILINGPOINT |
str
|
Options for |
ENFORCECLOAKING |
str
|
Options for |
VOC_UNIT |
str
|
Options for |
SDSLegalEntity
Bases: BaseAlbertModel
A legal-entity option for a jurisdiction.
Returned by
get_legal_entities.
Send value as SDSRequest.legal_entity.
Show JSON schema:
{
"description": "A legal-entity option for a jurisdiction.\n\nReturned by\n[`get_legal_entities`][albert.collections.sds.SDSCollection.get_legal_entities].\nSend ``value`` as [`SDSRequest.legal_entity`][albert.resources.sds.SDSRequest.legal_entity].",
"properties": {
"legalEntityId": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "The legal-entity identifier.",
"title": "Legalentityid"
},
"legalEntityName": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The display name of the legal entity.",
"title": "Legalentityname"
},
"value": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "The integer sent as ``legal_entity`` on [`SDSRequest`][albert.resources.sds.SDSRequest].",
"title": "Value"
},
"isDefault": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether this legal entity is the default for the jurisdiction.",
"title": "Isdefault"
}
},
"title": "SDSLegalEntity",
"type": "object"
}
Fields:
-
legal_entity_id(int | None) -
legal_entity_name(str | None) -
value(int | None) -
is_default(bool | None)
is_default
is_default: bool | None = None
Whether this legal entity is the default for the jurisdiction.
SDSFieldOptions
Bases: BaseAlbertModel
Tenant-specific options for one SDS input field.
Returned by
get_field_options.
When display is false, omit the field on
SDSRequest. When data is a list of
objects with a value key, send that value.
Show JSON schema:
{
"description": "Tenant-specific options for one SDS input field.\n\nReturned by\n[`get_field_options`][albert.collections.sds.SDSCollection.get_field_options].\nWhen ``display`` is false, omit the field on\n[`SDSRequest`][albert.resources.sds.SDSRequest]. When ``data`` is a list of\nobjects with a ``value`` key, send that ``value``.",
"properties": {
"display": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether the field should be shown and sent for this tenant.",
"title": "Display"
},
"isRequired": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether the field is required for this tenant.",
"title": "Isrequired"
},
"data": {
"default": null,
"description": "The allowed values. Shape varies by entity (list of objects, list of strings, or empty).",
"title": "Data"
}
},
"title": "SDSFieldOptions",
"type": "object"
}
Fields:
SDSRequest
Bases: BaseAlbertModel
Input for generating an SDS for a formula inventory item.
Identity fields (Albert ID, region, language, product type, physical state,
legal entity) are required. Resolve codes from the SDS lookup helpers and
send map values (e.g. "EN", "liquid"), not display names.
Product name and formula composition are not caller-supplied.
generate_sds always
loads the inventory name and unpacks the formula for CAS, ingredients, and
inventory SDS rows.
Formula inventory only (INVMO… / MO… / INVP…).
Show JSON schema:
{
"additionalProperties": false,
"description": "Input for generating an SDS for a formula inventory item.\n\nIdentity fields (Albert ID, region, language, product type, physical state,\nlegal entity) are required. Resolve codes from the SDS lookup helpers and\nsend map **values** (e.g. ``\"EN\"``, ``\"liquid\"``), not display names.\n\nProduct name and formula composition are not caller-supplied.\n[`generate_sds`][albert.collections.sds.SDSCollection.generate_sds] always\nloads the inventory name and unpacks the formula for CAS, ingredients, and\ninventory SDS rows.\n\nFormula inventory only (``INVMO\u2026`` / ``MO\u2026`` / ``INVP\u2026``).",
"properties": {
"albertID": {
"description": "Formula inventory Albert ID. ``INV`` is added on input if omitted and stripped on output because generate expects ``albertID`` without the prefix.",
"title": "Albertid",
"type": "string"
},
"productType": {
"description": "Product-type code from [`get_products`][albert.collections.sds.SDSCollection.get_products] (e.g. ``\"acrylate\"``).",
"title": "Producttype",
"type": "string"
},
"language": {
"description": "Language code from [`get_languages`][albert.collections.sds.SDSCollection.get_languages] (e.g. ``\"EN\"``).",
"title": "Language",
"type": "string"
},
"region": {
"description": "Jurisdiction code from [`get_jurisdictions`][albert.collections.sds.SDSCollection.get_jurisdictions] (e.g. ``\"US\"``). Required; no default.",
"title": "Region",
"type": "string"
},
"legalEntity": {
"description": "Integer ``value`` from [`get_legal_entities`][albert.collections.sds.SDSCollection.get_legal_entities].",
"title": "Legalentity",
"type": "integer"
},
"physicalState": {
"description": "Physical-state code from [`get_physical_states`][albert.collections.sds.SDSCollection.get_physical_states] (e.g. ``\"liquid\"``).",
"title": "Physicalstate",
"type": "string"
},
"flashPoint": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Flash-point option **value** from [`get_field_options`][albert.collections.sds.SDSCollection.get_field_options], not the display label.",
"title": "Flashpoint"
},
"initialBoilingPoint": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Initial boiling point option value, optional.",
"title": "Initialboilingpoint"
},
"viscosity": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Dynamic viscosity, optional.",
"title": "Viscosity"
},
"viscosityUnit": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Viscosity unit code (e.g. ``\"cP\"``), optional.",
"title": "Viscosityunit"
},
"specificGravity": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Specific gravity, optional.",
"title": "Specificgravity"
},
"color": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Color description, optional.",
"title": "Color"
},
"odor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Odor description, optional.",
"title": "Odor"
},
"vocContent": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "VOC content, optional.",
"title": "Voccontent"
},
"vocContentUnit": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "VOC unit from [`get_field_options`][albert.collections.sds.SDSCollection.get_field_options] with ``vocUnit``, optional.",
"title": "Voccontentunit"
},
"pHvalue": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "pH range enum string (e.g. ``\"2 \u2264 pH \u2264 11.5\"``), optional.",
"title": "Phvalue"
},
"heatOfReaction": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Heat-of-reaction enum string (e.g. ``\"<300J/g\"``), optional.",
"title": "Heatofreaction"
},
"peroxideCheck": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Peroxide check value, optional.",
"title": "Peroxidecheck"
},
"enforceCloaking": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "When True, cloak CAS numbers on the SDS. Tenant-gated via field options.",
"title": "Enforcecloaking"
},
"section15Disclosure": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Section 15 disclosure option value, optional.",
"title": "Section15Disclosure"
},
"projectColorFormulaId": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Project / color / formula identifier, optional.",
"title": "Projectcolorformulaid"
},
"currentLocation": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Current location code, optional.",
"title": "Currentlocation"
},
"location": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Location code, optional.",
"title": "Location"
},
"kinematicViscosity40": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Kinematic viscosity at 40\u00b0C in mm\u00b2/s, optional.",
"title": "Kinematicviscosity40"
}
},
"required": [
"albertID",
"productType",
"language",
"region",
"legalEntity",
"physicalState"
],
"title": "SDSRequest",
"type": "object"
}
Config:
extra:forbid
Fields:
-
albert_id(InventoryId) -
product_type(str) -
language(str) -
region(str) -
legal_entity(int) -
physical_state(str) -
flash_point(float | None) -
initial_boiling_point(float | None) -
viscosity(float | None) -
viscosity_unit(str | None) -
specific_gravity(float | None) -
color(str | None) -
odor(str | None) -
voc_content(str | None) -
voc_content_unit(str | None) -
ph_value(str | None) -
heat_of_reaction(str | None) -
peroxide_check(str | None) -
enforce_cloaking(bool | None) -
section_15_disclosure(str | None) -
project_color_formula_id(str | int | None) -
current_location(str | None) -
location(str | None) -
kinematic_viscosity_40(float | None)
albert_id
albert_id: InventoryId
Formula inventory Albert ID. INV is added on input if omitted and stripped on output because generate expects albertID without the prefix.
flash_point
flash_point: float | None = None
Flash-point option value from get_field_options, not the display label.
initial_boiling_point
initial_boiling_point: float | None = None
Initial boiling point option value, optional.
voc_content_unit
voc_content_unit: str | None = None
VOC unit from get_field_options with vocUnit, optional.
heat_of_reaction
heat_of_reaction: str | None = None
Heat-of-reaction enum string (e.g. "<300J/g"), optional.
enforce_cloaking
enforce_cloaking: bool | None = None
When True, cloak CAS numbers on the SDS. Tenant-gated via field options.
section_15_disclosure
section_15_disclosure: str | None = None
Section 15 disclosure option value, optional.
project_color_formula_id
Project / color / formula identifier, optional.
kinematic_viscosity_40
kinematic_viscosity_40: float | None = None
Kinematic viscosity at 40°C in mm²/s, optional.
GeneratedSDS
Bases: BaseAlbertModel
The SDS generated for a formula inventory item.
The inner SDS JSON can include keys beyond the core GHS sections, so unknown response fields are preserved on the model.
Show JSON schema:
{
"additionalProperties": true,
"description": "The SDS generated for a formula inventory item.\n\nThe inner SDS JSON can include keys beyond the core GHS sections, so unknown\nresponse fields are preserved on the model.",
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The formula Albert ID associated with the generated SDS.",
"title": "Id"
},
"sds": {
"additionalProperties": true,
"description": "The generated SDS JSON (GHS sections plus extra keys such as coversheet and explainability).",
"title": "Sds",
"type": "object"
},
"presignedURL": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Short-lived URL for the generated SDS PDF.",
"title": "Presignedurl"
},
"presignedURL_Metadata": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Short-lived URL for the generated SDS metadata spreadsheet, when present.",
"title": "Presignedurl Metadata"
}
},
"required": [
"sds"
],
"title": "GeneratedSDS",
"type": "object"
}
Config:
extra:allow
Fields:
sds_json
The generated SDS JSON (GHS sections plus extra keys such as coversheet and explainability).
metadata_url
metadata_url: str | None = None
Short-lived URL for the generated SDS metadata spreadsheet, when present.