{"endpoint":"POST /api/v1/entitlement","authentication":"Session cookie, or Authorization: Bearer <scoped API key> with the entitlement:read scope.","description":"Deterministic coverage decision with the contract version and clause that produced it. Safe to call at booking, dispatch and quotation.","engineVersion":"1.2.0","request":{"assetTag":"string — plate tag scanned by the technician (or assetId / serial)","serviceType":["preventive","reactive","emergency","inspection","repair","replacement"],"at":"ISO 8601 — the instant to evaluate against. Defaults to now.","estimate":{"laborCents":"int","partsCents":"int","travelCents":"int"},"persist":"boolean — set false for what-if evaluation"},"response":{"outcome":["covered","partial","not_covered","unknown"],"coveredPct":"int","split":"covered vs billable, by component","versionId":"the exact contract version the decision binds to","citations":"clause reference, quote and page from the source document","reasoning":"ordered trace of every rule considered, matched or rejected"},"guarantees":["Same inputs and same contract version always produce the same decision.","An exclusion always beats a coverage rule.","Unknown never resolves to covered automatically.","Every covered or partial outcome cites a clause."]}