Implementation examples
These examples show how records from different domains fit together. All data is fictional.
A strata corporation and its plan
{
"id": "sc-0001",
"name": "The Owners, Strata Plan EPS0001",
"commonName": "Example Residences",
"strataPlanNumber": "EPS0001",
"strataPlanId": "sp-0001",
"jurisdiction": "BC",
"status": "active",
"establishedDate": "2015-06-30",
"fiscalYearEnd": "12-31",
"mailingAddress": {
"streetAddress": "100 Example Street",
"locality": "Vancouver",
"region": "BC",
"postalCode": "V5K 0A1",
"country": "CA"
},
"managementOrganizationId": "org-0001"
}{
"id": "sp-0001",
"planNumber": "EPS0001",
"planType": "building",
"depositDate": "2015-06-30",
"totalStrataLots": 48,
"totalUnitEntitlement": 4800,
"phased": false
}A general meeting and a resolution
The resolution refers to the meeting through meetingType and meetingId:
{
"id": "gm-2026-agm",
"strataCorporationId": "sc-0001",
"meetingType": "annual",
"scheduledStart": "2026-03-14T19:00:00-07:00",
"format": "hybrid",
"location": "Amenity room, 100 Example Street, and online",
"noticeDate": "2026-02-20",
"quorumAchieved": true,
"status": "held",
"minutesDocumentId": "doc-0101"
}{
"id": "res-2026-03",
"meetingType": "general",
"meetingId": "gm-2026-agm",
"title": "Approve 2026 operating budget",
"voteThreshold": "majority",
"outcome": "passed",
"votingRecordId": "vote-2026-03"
}A maintenance request and its work order
{
"id": "mr-2026-0042",
"strataCorporationId": "sc-0001",
"title": "Water stain on parkade ceiling",
"description": "Stain near stall 14, appears to be growing after rain.",
"reportedAt": "2026-05-02T08:15:00-07:00",
"reportedByPersonId": "person-0001",
"locationType": "commonProperty",
"priority": "high",
"status": "inProgress"
}{
"id": "wo-2026-0017",
"strataCorporationId": "sc-0001",
"maintenanceRequestIds": [
"mr-2026-0042"
],
"contractorOrganizationId": "org-0003",
"scope": "Investigate source of parkade ceiling leak near stall 14 and provide repair quote.",
"status": "issued",
"issuedDate": "2026-05-04",
"estimatedCost": {
"amount": "750.00",
"currency": "CAD"
}
}Type definitions in TypeScript
You can generate types from the schemas with any JSON Schema-to-TypeScript tool, or write them by hand. A hand-written equivalent of StrataLot looks like this:
type Identifier = string;
interface StrataLot {
id: Identifier;
strataCorporationId: Identifier;
lotNumber: number;
unitEntitlement: number;
parcelIdentifier?: string; // "123-456-789"
usage?: "residential" | "nonResidential";
areaSquareMetres?: number;
buildingId?: Identifier;
extensions?: Record<string, Record<string, unknown>>;
}Adopting the standard
- Implement export of the core entities and validate the output.
- Publish which entities and which specification version you support.
- Avoid calling your product "conformant" or "certified" — no conformance program exists yet. "Implements draft 0.1.0 of COOS for these entities" is accurate.
- Share what didn't fit through the contribution process.