{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "title": "ProjectTaskPayload",
    "description": "Canonical schema for a Project Task record's changes payload. Supports multi-tenant custom fields via patternProperties. All five NetSuite custom-field prefix families are permitted: custentity_ (Entity Custom Fields), custbody_ (Transaction Body Custom Fields), custcol_ (Transaction Column Custom Fields), custitem_ (Item Custom Fields), custevent_ (CRM Event Custom Fields). Record-type-to-prefix mapping: projecttask → primarily custbody_ and custcol_. Data type validation for all custom fields is deferred to Stage 2 (field_metadata table).",
    "type": "object",
    "properties": {
        "title": {
            "type": "string",
            "description": "The primary name of the project task."
        },
        "status": {
            "type": "string",
            "description": "The project task status."
        },
        "project": {
            "type": "string",
            "description": "Internal ID of the parent project."
        },
        "isInactive": {
            "type": "boolean",
            "description": "Strict boolean. NetSuite 'T'/'F' must be normalized before validation."
        },
        "startDate": {
            "type": "string",
            "format": "date-time",
            "description": "ISO8601 Date/Time."
        }
    },
    "patternProperties": {
        "^cust(body|col|entity|item|record|event)[a-zA-Z0-9_]*$": {
            "description": "Allows any NetSuite custom field across all five prefix families: custentity_ (Entity), custbody_ (Transaction Body), custcol_ (Transaction Column), custitem_ (Item), custevent_ (CRM Event). Data type validation is deferred to Stage 2 (field_metadata table lookup by account_id + record_type + field_id)."
        }
    },
    "additionalProperties": false
}
