Template gallery / change-order
change-order
Letter-size construction change order: added and deducted scope, the delta against the original contract sum, schedule impact, and owner/contractor signature blocks.
chromium default PDF 16 top-level fields 1 unit per page
Fields
The full JSON Schema is below. Required fields are marked; anything missing comes back as a 422 naming the path, the expected type and a value that would be accepted.
| Field | Type | Required | Description |
|---|---|---|---|
| change_order_number | string | required | Sequential change order reference for this contract. |
| issued_on | string (date) | required | |
| contract_number | string | optional | |
| contract_date | string (date) | optional | Date of the original signed contract. |
| currency | string | optional | |
| accent | string | optional | |
| reason | string | optional | Why the change is needed. Written for the homeowner. |
| terms | string | optional | |
| contractor | object { name, address, phone, email, … } | required | |
| owner | object { name, address, email } | required | |
| project | object { name, address } | optional | |
| items | array of object { description, detail, labor, material, … } | required | Added or deducted scope. Use a negative `amount` for a credit. |
| original_contract_sum | number | required | Contract sum before any change orders. |
| prior_change_orders_total | number | optional | Net of all previously authorized change orders. |
| schedule_impact_days | integer | optional | Calendar days added to (or, if negative, removed from) the contract time. |
| new_completion_date | string (date) | optional |
Default render options
Applied unless you override them. Options are part of the cache key.
| page_size | "Letter" |
| margin | "0.5in" |
| print_background | true |
Example payload
This exact object renders the preview above. It is also what the API echoes back in a validation error, so an agent can repair a payload without a round trip to the docs.
{
"change_order_number": "CO-003",
"issued_on": "2026-09-16",
"contract_number": "HR-2026-118",
"contract_date": "2026-07-08",
"currency": "USD",
"reason": "Opening the joist bay under the tub exposed water damage to the subfloor and to two joists that was not visible at the time of the estimate. The owner also elected to upgrade the shower valve and to delete the recessed niche.",
"contractor": {
"name": "Halyard Remodeling LLC",
"address": "18 Dock St, Fernandina Beach, FL 32034",
"phone": "(904) 555-0142",
"email": "office@halyardremodel.test",
"license_number": "CBC1259847",
"license_state": "FL"
},
"owner": {
"name": "Dana and Marcus Reyes",
"address": "412 Ash Street, Fernandina Beach, FL 32034",
"email": "dana.reyes@example.test"
},
"project": {
"name": "Hall bathroom remodel",
"address": "412 Ash Street, Fernandina Beach, FL 32034"
},
"items": [
{
"description": "Replace damaged subfloor and sister two joists",
"detail": "Sister 2x8 to joists 4 and 5, new 3/4 in. tongue-and-groove decking over the affected bay, treated for moisture.",
"labor": 1240,
"material": 385,
"amount": 1625
},
{
"description": "Upgrade to thermostatic shower valve",
"detail": "Owner-selected Delta thermostatic valve in place of the pressure-balance valve in the original scope.",
"labor": 180,
"material": 465,
"amount": 645
},
{
"description": "Delete recessed shower niche",
"detail": "Credit for the niche shown on the original scope. Wall will be tiled flat.",
"amount": -540
}
],
"original_contract_sum": 24888.2,
"prior_change_orders_total": 1150,
"schedule_impact_days": 4,
"new_completion_date": "2026-11-06",
"terms": "This change order is part of the contract identified above. All other terms and conditions remain in force. Work under this change order does not begin until both parties have signed, and the amount is added to the next scheduled draw."
} Render it
curl -sS https://api.galleyrender.com/v1/render \
-H "Authorization: Bearer $GALLEY_API_KEY" \
-H 'content-type: application/json' \
-d '{
"template": "change-order@1",
"format": "pdf",
"data": "… the example payload above …"
}' # No API key. The first call mints a 50-render trial.
curl -sS https://mcp.galleyrender.com/mcp \
-H 'content-type: application/json' \
-H 'accept: application/json, text/event-stream' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "render",
"arguments": {
"template": "change-order",
"format": "pdf",
"data": { … see the example payload above … }
}
}
}'
Pin the version — change-order@1 — in anything you ship. Publishing a new
version never changes an old one. Render endpoint reference →
Renders the example payload on the production service. No account, no key.
JSON Schema
schema.json (16 top-level properties)
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Change order",
"type": "object",
"required": [
"change_order_number",
"issued_on",
"contractor",
"owner",
"original_contract_sum",
"items"
],
"additionalProperties": true,
"properties": {
"change_order_number": {
"type": "string",
"description": "Sequential change order reference for this contract.",
"examples": [
"CO-003"
]
},
"issued_on": {
"type": "string",
"format": "date",
"examples": [
"2026-09-16"
]
},
"contract_number": {
"type": "string",
"examples": [
"HR-2026-118"
]
},
"contract_date": {
"type": "string",
"format": "date",
"description": "Date of the original signed contract.",
"examples": [
"2026-07-08"
]
},
"currency": {
"type": "string",
"default": "USD",
"examples": [
"USD"
]
},
"accent": {
"type": "string",
"examples": [
"#b45309"
]
},
"reason": {
"type": "string",
"description": "Why the change is needed. Written for the homeowner.",
"examples": [
"Opening the joist bay exposed water damage to the subfloor and two joists that was not visible at the time of the estimate."
]
},
"terms": {
"type": "string",
"examples": [
"This change order is part of the contract above. All other terms remain in force. Work under this change order does not begin until both parties sign."
]
},
"contractor": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"examples": [
"Halyard Remodeling LLC"
]
},
"address": {
"type": "string",
"examples": [
"18 Dock St, Fernandina Beach, FL 32034"
]
},
"phone": {
"type": "string",
"examples": [
"(904) 555-0142"
]
},
"email": {
"type": "string",
"format": "email",
"examples": [
"office@halyardremodel.test"
]
},
"license_number": {
"type": "string",
"examples": [
"CBC1259847"
]
},
"license_state": {
"type": "string",
"examples": [
"FL"
]
},
"logo_url": {
"type": "string",
"format": "uri",
"examples": [
"https://example.com/logo.png"
]
}
}
},
"owner": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"examples": [
"Dana and Marcus Reyes"
]
},
"address": {
"type": "string",
"examples": [
"412 Ash Street, Fernandina Beach, FL 32034"
]
},
"email": {
"type": "string",
"format": "email",
"examples": [
"dana.reyes@example.test"
]
}
}
},
"project": {
"type": "object",
"properties": {
"name": {
"type": "string",
"examples": [
"Hall bathroom remodel"
]
},
"address": {
"type": "string",
"examples": [
"412 Ash Street, Fernandina Beach, FL 32034"
]
}
}
},
"items": {
"type": "array",
"minItems": 1,
"description": "Added or deducted scope. Use a negative `amount` for a credit.",
"items": {
"type": "object",
"required": [
"description",
"amount"
],
"properties": {
"description": {
"type": "string",
"examples": [
"Replace damaged subfloor and sister two joists"
]
},
"detail": {
"type": "string",
"examples": [
"Sister 2x8 to joists 4 and 5, new 3/4 in. tongue-and-groove decking over the affected bay."
]
},
"labor": {
"type": "number",
"examples": [
1240
]
},
"material": {
"type": "number",
"examples": [
385
]
},
"amount": {
"type": "number",
"description": "Signed delta for the line. Negative is a credit to the owner.",
"examples": [
1625
]
}
}
}
},
"original_contract_sum": {
"type": "number",
"minimum": 0,
"description": "Contract sum before any change orders.",
"examples": [
24888.2
]
},
"prior_change_orders_total": {
"type": "number",
"description": "Net of all previously authorized change orders.",
"examples": [
1150
]
},
"schedule_impact_days": {
"type": "integer",
"description": "Calendar days added to (or, if negative, removed from) the contract time.",
"examples": [
4
]
},
"new_completion_date": {
"type": "string",
"format": "date",
"examples": [
"2026-11-06"
]
}
}
}