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.

FieldTypeRequiredNotes
numberstringyes1-60 chars, ^[a-zA-Z0-9_.:+-]+$, unique per org (case-insensitive).
namestringyes1-60 chars. Display name.
revisions[].numberstringyes1-60 chars, unique per part.
revisions[].image_iduuidnoOptional 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  ──▶  Units

You can create parts and revisions three ways.

  • First Run. Calling runs.create with a new part_number creates the part, then the revision (which defaults to A if you omit it). Auto-created parts get the name New Part until you rename them.
  • API. Call parts.create and parts.revisions.create to 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.

create_part.py
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?

On this page