Project response model
Nullable fields represent unknown values; they do not imply zero cost or a completed action.
| Field | Type | Required | Details |
|---|---|---|---|
id |
string | No | |
name |
string | No | |
product |
string or null | No | |
category |
string or null | No | |
targetQuantity |
integer or null | No | |
stage |
string | No | prototype, first_batch, second_batch or later |
markets |
string[] | No | |
intake |
object | No | |
intake.manufacturingIntent |
object or null | No | |
contextVersion |
string | No | Content fingerprint used for intent edits and RFQ approval |
status |
string | No | |
createdAt |
string | No |
Full JSON schema
{ "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "product": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "category": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "targetQuantity": { "anyOf": [ { "type": "integer" }, { "type": "null" } ] }, "stage": { "type": "string", "description": "prototype, first_batch, second_batch or later" }, "markets": { "type": "array", "items": { "type": "string" } }, "intake": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "manufacturingIntent": { "anyOf": [ { "type": "object", "properties": { "schemaVersion": { "type": "number", "const": 1 }, "current": { "type": "object", "properties": { "purpose": { "type": "string", "enum": [ "samples", "pilot", "production", "unknown" ] }, "quantity": { "anyOf": [ { "type": "integer", "exclusiveMinimum": 0, "maximum": 10000000 }, { "type": "null" } ] }, "unit": { "anyOf": [ { "type": "string", "minLength": 1, "maxLength": 800 }, { "type": "null" } ] }, "configuration": { "anyOf": [ { "type": "string", "minLength": 1, "maxLength": 800 }, { "type": "null" } ] }, "revision": { "anyOf": [ { "type": "string", "minLength": 1, "maxLength": 800 }, { "type": "null" } ] }, "confirmation": { "type": "string", "enum": [ "unconfirmed", "caller_confirmed" ] }, "source": { "anyOf": [ { "type": "object", "properties": { "kind": { "type": "string", "enum": [ "caller", "file", "interview" ] }, "reference": { "type": "string", "minLength": 1, "maxLength": 800 }, "quote": { "anyOf": [ { "type": "string", "minLength": 1, "maxLength": 800 }, { "type": "null" } ] } }, "required": [ "kind", "reference", "quote" ], "additionalProperties": false }, { "type": "null" } ] } }, "required": [ "purpose", "quantity", "unit", "configuration", "revision", "confirmation", "source" ], "additionalProperties": false }, "plannedPilot": { "anyOf": [ { "type": "object", "properties": { "quantity": { "anyOf": [ { "type": "integer", "exclusiveMinimum": 0, "maximum": 10000000 }, { "type": "null" } ] }, "unit": { "anyOf": [ { "type": "string", "minLength": 1, "maxLength": 800 }, { "type": "null" } ] }, "period": { "anyOf": [ { "type": "string", "minLength": 1, "maxLength": 800 }, { "type": "null" } ] }, "source": { "anyOf": [ { "type": "object", "properties": { "kind": { "type": "string", "enum": [ "caller", "file", "interview" ] }, "reference": { "type": "string", "minLength": 1, "maxLength": 800 }, "quote": { "anyOf": [ { "type": "string", "minLength": 1, "maxLength": 800 }, { "type": "null" } ] } }, "required": [ "kind", "reference", "quote" ], "additionalProperties": false }, { "type": "null" } ] } }, "required": [ "quantity", "unit", "period", "source" ], "additionalProperties": false }, { "type": "null" } ] }, "forecast": { "anyOf": [ { "type": "object", "properties": { "quantity": { "anyOf": [ { "type": "integer", "exclusiveMinimum": 0, "maximum": 10000000 }, { "type": "null" } ] }, "unit": { "anyOf": [ { "type": "string", "minLength": 1, "maxLength": 800 }, { "type": "null" } ] }, "period": { "anyOf": [ { "type": "string", "minLength": 1, "maxLength": 800 }, { "type": "null" } ] }, "source": { "anyOf": [ { "type": "object", "properties": { "kind": { "type": "string", "enum": [ "caller", "file", "interview" ] }, "reference": { "type": "string", "minLength": 1, "maxLength": 800 }, "quote": { "anyOf": [ { "type": "string", "minLength": 1, "maxLength": 800 }, { "type": "null" } ] } }, "required": [ "kind", "reference", "quote" ], "additionalProperties": false }, { "type": "null" } ] } }, "required": [ "quantity", "unit", "period", "source" ], "additionalProperties": false }, { "type": "null" } ] }, "requirements": { "maxItems": 20, "type": "array", "items": { "type": "object", "properties": { "kind": { "type": "string", "enum": [ "location", "quality", "material", "inspection", "deadline", "other" ] }, "detail": { "type": "string", "minLength": 1, "maxLength": 800 }, "strength": { "type": "string", "enum": [ "hard", "preference" ] }, "confirmation": { "type": "string", "enum": [ "unconfirmed", "caller_confirmed" ] }, "source": { "anyOf": [ { "type": "object", "properties": { "kind": { "type": "string", "enum": [ "caller", "file", "interview" ] }, "reference": { "type": "string", "minLength": 1, "maxLength": 800 }, "quote": { "anyOf": [ { "type": "string", "minLength": 1, "maxLength": 800 }, { "type": "null" } ] } }, "required": [ "kind", "reference", "quote" ], "additionalProperties": false }, { "type": "null" } ] } }, "required": [ "kind", "detail", "strength", "confirmation", "source" ], "additionalProperties": false } }, "priorities": { "maxItems": 5, "type": "array", "items": { "type": "string", "enum": [ "quality", "price", "lead_time", "scale", "location" ] } }, "prioritySource": { "anyOf": [ { "type": "object", "properties": { "kind": { "type": "string", "enum": [ "caller", "file", "interview" ] }, "reference": { "type": "string", "minLength": 1, "maxLength": 800 }, "quote": { "anyOf": [ { "type": "string", "minLength": 1, "maxLength": 800 }, { "type": "null" } ] } }, "required": [ "kind", "reference", "quote" ], "additionalProperties": false }, { "type": "null" } ] } }, "required": [ "schemaVersion", "current", "plannedPilot", "forecast", "requirements", "priorities", "prioritySource" ], "additionalProperties": false }, { "type": "null" } ] } }, "additionalProperties": {} }, "contextVersion": { "type": "string", "description": "Content fingerprint used for intent edits and RFQ approval" }, "status": { "type": "string" }, "createdAt": { "type": "string" } }}