Parts and Revisions
Last updated on May 21, 2026
A Part identifies a product or component family, such as PCB-V1, SENSOR-A4, or ASSY-4400. A Revision tracks a design or process version, and every Unit belongs to one part and one revision.
Identity
A part and its revisions share a compact set of fields.
| Field | Type | Required | Notes |
|---|---|---|---|
number | string | yes | 1-60 chars, ^[a-zA-Z0-9_.:+-]+$, unique per org (case-insensitive). |
name | string | yes | 1-60 chars. Display name. |
revisions[].number | string | yes | 1-60 chars, unique per part. |
revisions[].image_id | uuid | no | Optional image asset for the revision (visible on the part page). |
Lifecycle
Each part splits into one or more revisions, and each revision splits into the units built against it.
Part ──▶ Revision A ──▶ Units
Revision B ──▶ Units
Revision C ──▶ UnitsYou can create parts and revisions three ways.
- First Run. Calling
runs.createwith a newpart_numbercreates the part, then the revision (which defaults toAif you omit it). Auto-created parts get the nameNew Partuntil you rename them. - API. Call
parts.createandparts.revisions.createto seed inventory before any Run lands. - Dashboard. Create from Inventory → Parts → New Part, then add revisions from the part detail page.
Deleting a part cascades: revisions, units on those revisions, and every run on those units are deleted. Deleting the last revision of a part deletes the part automatically.
Revisions
Use a new revision when the design or process changes enough to affect yield: a new BOM, new firmware, or a new assembly line. You can then filter analytics by revision_number to validate a fix or detect a regression.
Each revision can carry an image (a schematic, photo, or render) that you upload from the dashboard or through PATCH /v2/parts/{number}/revisions/{revision_number} with an image_id.
In the dashboard
Open Inventory → Parts to manage your parts.
List columns: part number, name, total units, procedures count, and revisions count. Rows expand to show revisions inline.
Actions on the Part page: edit the part number, edit the name, create a revision, delete the part, view Procedures linked to the part, and jump to units filtered by the part.
Limits
A few hard limits apply to parts and revisions.
- Part number: 1-60 characters.
- Name: 1-60 characters.
- Revision number: 1-60 characters, unique within the part.
API
The API exposes parts.create, list, get, update, and delete. Revisions expose create, get, update, and delete, with no standalone list because revisions are nested on parts.get. See the REST API reference for schemas.
from tofupilot.v2 import TofuPilot
client = TofuPilot()
client.parts.create(number="PCB-001", name="Main PCB")
client.parts.revisions.create(part_number="PCB-001", number="C")
client.units.create(serial_number="SN-100", part_number="PCB-001", revision_number="C")How is this guide?
Units
Learn how to track units under test in TofuPilot with units: serial numbers, typed metadata, attachments, sub-unit hierarchies, and reference samples.
Batches
Learn how to group units made together with TofuPilot Batches and slice yield by manufacturing lot, build day, or contract manufacturer shipment.