Skip to content
OpenCOOS

Implementation examples

These examples show how records from different domains fit together. All data is fictional.

A strata corporation and its plan

StrataCorporation.example.json
{
  "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"
}
StrataPlan.example.json
{
  "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:

GeneralMeeting.example.json
{
  "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"
}
Resolution.example.json
{
  "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

MaintenanceRequest.example.json
{
  "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"
}
WorkOrder.example.json
{
  "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

  1. Implement export of the core entities and validate the output.
  2. Publish which entities and which specification version you support.
  3. Avoid calling your product "conformant" or "certified" — no conformance program exists yet. "Implements draft 0.1.0 of COOS for these entities" is accurate.
  4. Share what didn't fit through the contribution process.