Initial push

This commit is contained in:
2026-06-06 02:36:09 -04:00
parent d4fb486328
commit a8669d1967

View File

@@ -0,0 +1,87 @@
{
"_meta": {
"contract_version": "1.0",
"addon": "vs01",
"purpose": "Defines the spool envelope that vs01 produces and POSTs to the orchestrator receiver for every VS form submission.",
"created": "2026-06",
"supersedes": null,
"notes": "When the payload structure changes, increment to spool-v2.json. This file is never deleted — it documents what the orchestrator must remain able to consume."
},
"_header": {
"addon": {
"type": "string",
"value": "vs01",
"description": "Identifies the originating addon. Always 'vs01' for this contract."
},
"contract_version": {
"type": "string",
"value": "1.0",
"description": "The spool contract version. Must match this filename's version suffix."
},
"vs_code": {
"type": "string",
"format": "VS-NN",
"example": "VS-01",
"description": "The Vital Sign code being submitted. Must match a key in the loaded schemas."
},
"perspective": {
"type": "string",
"enum": ["homeowner", "professional", "public_record"],
"description": "The perspective slot being submitted. Determined by the submitter's access state."
},
"association_slug": {
"type": "string",
"description": "The URL slug of the association. Matches the key in config.json associations object."
},
"association_channel_id": {
"type": "string",
"description": "The Hubzilla channel ID of the association channel. Integer stored as string."
},
"submitted_at": {
"type": "string",
"format": "ISO 8601",
"example": "2026-06-15T14:32:00+00:00",
"description": "Timestamp of submission in ISO 8601 format."
},
"standing": {
"type": "string",
"enum": ["public", "participant", "professional", "operator"],
"description": "The access state of the submitter at the time of submission."
}
},
"_payload": {
"fields": {
"type": "object",
"description": "Keyed object of submitted field values. Keys match the field id values defined in the VS schema for the submitted perspective. Values are strings. Multiselect fields are JSON-encoded arrays.",
"example": {
"ho_claimed_type": "condominium",
"ho_claimed_source": "governing_documents",
"ho_type_denied_in_writing": "false",
"ho_type_inconsistent": "true",
"ho_inconsistency_detail": "The Declaration says Condominium. The attorney letter of March 2024 refers to it as a Master Association.",
"ho_account": "I have lived here for six years and have never been given a straight answer about what kind of association this is."
}
}
},
"_example_envelope": {
"addon": "vs01",
"contract_version": "1.0",
"vs_code": "VS-01",
"perspective": "homeowner",
"association_slug": "elm-court-condominiums",
"association_channel_id": "42",
"submitted_at": "2026-06-15T14:32:00+00:00",
"standing": "participant",
"fields": {
"ho_claimed_type": "condominium",
"ho_claimed_source": "governing_documents",
"ho_type_denied_in_writing": "false",
"ho_type_inconsistent": "false",
"ho_inconsistency_detail": "",
"ho_account": "The Declaration provided at closing identifies this as a condominium association under 765 ILCS 605."
}
}
}