Record Code2Des Placement
POST /api/v1/organizations/{organization_id}/projects/{project_id}/code2des/{code2des_id}/placement
Requires Write access and a completed row.
For the first successful call for this Code2Des job, the backend stores the supplied ID as materialized_node_id and updates materialized_at plus audit fields. Repeating the call for the same job is idempotent: it returns the original materializedAt and does not replace materialized_node_id.
The plugin calls this only after committing a native root. Partial child failures remain visible through the plugin's actual placed-layer count and diagnostics; placement means a root was created, not that every planned node succeeded. A new generation creates a new Code2Des row and Figma root, so earlier generated nodes are not removed or overwritten.