Process fields and views
A process field has an opaque id (used in the field route) and a key (used in an item's fieldValues). Discover both from the process/field response; never assume they are equal. Supported public types are text, long_text, number, currency, date, boolean, select, company and url. Boolean values are true/false, not strings; false and numeric zero satisfy required presence. Currency/number values must be finite JSON numbers. Dates are calendar dates, select values must be configured options, company values are owned company IDs, and URLs must use HTTP(S). Unknown keys/unsupported properties are rejected. Blank/whitespace-only required text is invalid.
No implicit business default is invented for a missing required custom field. Creation validates required values in the same transaction as the new resource. Existing legacy values whose definitions were removed may remain unchanged; this compatibility allowance does not authorize new unknown values. Treat fieldValues as the documented map replacement and preserve values you intend to keep.
Visibility flags independently control create/edit/table/dashboard presentation and filtering. A required, non-hidden field is always shown on create: create/update normalize visibleOnCreate to true, including partial updates that make it required or unhide it. Legacy contradictory rows remain readable and both creation forms expose their required inputs. A hidden field is not required for new creation. Company field table visibility is a different setting and never exempts a required company field.
Hide removes a field from ordinary presentation without deleting its stored item values. Permanent field removal uses preview plus confirmation and removes that field's data/references from affected resources. Inspect impact and returned counts; irreversible removal is not an ordinary PATCH. Built-in Orders fields cannot be deleted. Renaming keys or changing types needs explicit consideration of existing values; do not assume automatic value conversion.
Use createProcessField, updateProcessField, reorderProcessFields and hideProcessField; previewProcessFieldDeletion/permanentlyDeleteProcessField perform destructive removal. Creating/reordering/deleting uses the process ETag as documented; updating/hiding uses the field version. Reorder includes the exact configured field set, including hidden fields.
updateProcessViews stores the supported table/dashboard/detail settings. Table columns, order, widths, search/filter/sort fields and pageSettings are configuration; they do not change item data. JSON page settings can contain nested objects, arrays, scalar values and null, but no non-JSON runtime values. Use explicit visible field IDs/keys discovered from the process and read configuration back after editing.
Company field definitions use explicit preservation semantics. Replacing or removing a key in PUT /company-fields changes future validation and presentation only; it never renames or deletes stored company values. Renaming a key means introducing a new field key. Existing values under removed keys may be submitted unchanged, but new or changed undefined values are rejected. To migrate, configure the new key, then explicitly PATCH each company's customFields replacement map with the intended copied value. To delete retained values, explicitly omit them from that replacement map. Changing a type requires explicitly correcting incompatible values; no automatic coercion occurs. Required flags apply regardless of table visibility.