Introduction
A part is a named container for modelling statements. Inside it, sketches, extrudes and cuts fuse and interact the way they do anywhere else; across its boundary, nothing fuses. A part is also the unit an assembly works with: only an exported part() definition can be inserted, mated and animated.
Part
part(name, callback) declares a named part. Everything the callback does — sketches, features, connectors, exposures, parameters, properties — belongs to that part.
Param
param() declares a named value with a control, at the top of a part() body. The part's file shows it in the Part Parameters panel; an assembly sets it per instance. Exported from a *.params.js file instead, the same call declares a project parameter that every model imports. The return value is a plain number, string, boolean or array, so the rest of the body reads it like any variable: in a sketch guess, a dimension, an extrude distance, an if, a loop bound.
Configurations
A configuration is a named set of values for a part's parameters. An angle bracket made for M6, M8 and M10 screws, a spacer in three lengths, a housing with or without a lid: the parameters are declared once, and each configuration is one row of a table that lists only the values it changes. Everything else stays shared, so a fix to the part is a fix to every configuration.
Connector
A connector is a named coordinate frame attached to the part's geometry — an origin, an X direction and a Z normal. Mates in an assembly join connectors to connectors, so the connectors a part declares are its mating interface. Every instance of the part carries the same set. A bolt circle or a hole grid needs only one: declare it on the first hole and copy it.
Expose
expose(name, source) publishes a piece of the part's geometry under a name. It is the outbound half of the part's interface: param() takes values in, connector() hands mate frames out, expose() hands geometry out.
Property
property(label, name, value) publishes a value the part computes, under a name the code reads it by and a label the Part Parameters panel shows. It is the part's value interface, the outbound twin of param(): a parameter is a value the part takes in, a property is a value it hands out, calculated from those parameters. connector() and expose() do the same for mate frames and geometry.