Track remedy work and partner catalog items
Keep a property’s report JSON under data.assessments[reportRef] and include that reference in linkedAssessmentIds. A task’s findingRef points to a remedy in that saved report, such as /remedies/0. Copy the finding’s exact remedyKey. Source references stay fixed when the task changes.
POST /v2/vastu/remediation/tasks/upsert records a task’s status (pending, in_progress, completed or cancelled), assignee, dueDate (YYYY-MM-DD) and evidence references. New tasks start pending. Completion requires evidence; an evidence entry can carry a photoRef and a note. Use expectedRevision=0 for an absent board, then the revision returned by the last write. Each mutationId binds the full request. A stale revision returns 409; an exact immediate replay returns the stored result at zero charge. Follow reassessmentLink.operation with its method and request, then select resultPointer in the returned JSON; the assessmentId identifies that saved reading. A completed task can be reopened; its prior status history and reassessments remain recorded.
POST /v2/vastu/remediation/reassess accepts propertyId, taskId, expectedRevision, mutationId and a new plan. It computes a new supplied-input plan assessment after the recorded completion and places its assessmentId and reassessmentLink on the completed task. remediation/tasks/list reads the property’s board. remediation/tasks/delete removes the board with id and matching confirmId.
POST /v2/vastu/merchant/catalog/upload accepts catalogId, expectedRevision, mutationId, format (csv or json) and content. JSON content is an array. CSV content is a string with this header:
remedyKey,itemId,kind,label,availability,link,referralRef
vastu.remedy.zone.NE,site-visit,service,"Consultation, on site",on_request,https://partner.example/visit,visit-ref
Use keys from reference/remedies/catalog. kind is sku or service. availability is in_stock, out_of_stock, on_request or unavailable. link and referralRef are optional. At most 200 unique remedyKey/itemId pairs fit in the 64 KiB request/store limit. CSV supports quoted commas, doubled quotes and quoted newlines. Unknown fields, unknown remedy keys and unsafe links return 400 before charging.
merchant/catalog/get returns the owner’s catalog. merchant/remedies accepts catalogId and remedyKeys and returns mappedItems alongside the original modern-practice remedy and its provenance. Plan reports, room responses and plan assessments can also select an optional merchantCatalogId. Items retain partner-supplied availability and referral references. merchant/catalog/delete requires id and matching confirmId.
Each successful useful workflow operation costs $0.01 (attributable cost ×4, with a one-cent minimum). Deletions, empty task boards, unmatched catalog results and exact mutation replays are free. Validation errors retain no charge. Failed writes refund the charge; a pending refund is reported explicitly with its charged amount and refundPending. Catalogs and boards expire within 30 days; board expiry never exceeds the property’s expiry. Deleting a property also removes its board. Account erasure covers both stores and prevents new writes.
Compose the report and partner CTA
plan/report accepts an optional composition object with sections, intro, outro and ctaBlocks. sections is a unique ordered selection from summary, facing, plot-shape, compliance, rooms, zones, defects, remedies, elements and sources. intro/outro are plain text, each at most 4000 UTF-8 bytes. Up to eight CTA blocks carry a label, an absolute HTTPS link and an optional phone. HTML escapes every custom text value and validates links; quotations and assessment facts remain unchanged.
{"format":"html","composition":{"sections":["remedies","rooms","sources"],"intro":"Property review for the interiors team","outro":"Record completion before the next assessment.","ctaBlocks":[{"label":"Book a site visit","link":"https://partner.example/visit","phone":"+91 98765 43210"}]}}
Use format=html for the standalone HTML artifact or format=pdf for a server-rendered PDF. Decode a PDF artifact’s base64 content and save its filename. Both formats use the same section manifest and partner blocks. Rendering failure returns 503 without charge; report generation retains its published report price. The uncomposed report’s existing section order remains the default.