{"meta":{"platform":"Opportunity Exchange","canonical":"https://veilpoint.ca/api/v1/catalog","retrievedAt":"2026-07-27T07:11:26.020Z","dataStatus":"Factual metadata: this catalogue documents public datasets, identifiers, relationships, methodologies, endpoints, and versioning contracts.","evidence":{"status":"published","truthState":"metadata","recordType":"metadata","isActionable":false,"synthetic":false,"confidence":null,"sourceKinds":[],"asOf":null,"qualification":"Factual self-description of the platform, current as served.","assumptions":[]},"citeAs":"Opportunity Exchange (VeilPoint), \"Public data and agent contract\", https://veilpoint.ca/api/v1/catalog, retrieved 2026-07-27."},"data":{"apiVersion":"v1","catalogVersion":"1.2.0","updateContract":"meta.retrievedAt is the response time; dataset observation and verification dates live in record provenance and /api/v1/sources. ETags change only when data changes.","identifiers":[{"entity":"occupation","primary":"noc","scheme":"NOC 2021 v1.0 unit-group code","localAlias":"id"},{"entity":"municipality","primary":"sgcCode","scheme":"Statistics Canada SGC 2021 census-subdivision code","localAlias":"id"},{"entity":"sector","primary":"id","scheme":"OEX stable sector-group identifier"},{"entity":"job-posting","primary":"id","scheme":"Source-stable posting identifier"},{"entity":"business","primary":"id","scheme":"Provider or registry-stable business identifier"},{"entity":"training-program","primary":"id","scheme":"Provider-stable training-program identifier"},{"entity":"data-source","primary":"id","scheme":"OEX provider registry identifier"},{"entity":"rental-market-centre","primary":"cmhcCode","scheme":"CMHC/StatCan geography code (CMA, CA, CSD, or provincial part — see geoLevel)"}],"datasets":[{"id":"occupations","entity":"occupation","endpoint":"/api/v1/roles","bulk":"/data/occupations.json","html":"/role/{id}","markdown":"/role/{id}.md"},{"id":"noc-2021","entity":"noc-unit-group","endpoint":"/api/v1/noc","bulk":"/data/noc.json"},{"id":"municipalities","entity":"municipality","endpoint":"/api/v1/municipalities","bulk":"/data/municipalities.json","html":"/directory/{id}","markdown":"/directory/{id}.md"},{"id":"sectors","entity":"sector","endpoint":"/api/v1/sectors","bulk":"/data/sectors.json","html":"/sectors/{id}","markdown":"/sectors/{id}.md"},{"id":"jobs","entity":"job-posting","endpoint":"/api/v1/jobs","bulk":"/data/jobs.json","html":"/jobs","markdown":"/jobs.md"},{"id":"housing","entity":"municipal-housing-market","endpoint":"/api/v1/real-estate","bulk":"/data/real-estate.json","html":"/real-estate/{municipalityId}","markdown":"/real-estate/{municipalityId}.md"},{"id":"trade","entity":"provincial-trade-flow","endpoint":"/api/v1/trade","bulk":"/data/trade.json","html":"/trade","markdown":"/trade.md"},{"id":"wages","entity":"wage-observation","endpoint":"/api/v1/wages","bulk":"/data/wages.json","html":"/wages","markdown":"/wages.md"},{"id":"rents","entity":"rental-market-centre","endpoint":"/api/v1/rents","bulk":"/data/rents.json","html":"/rents","markdown":"/rents.md"},{"id":"sources","entity":"data-source","endpoint":"/api/v1/sources","bulk":"/data/sources.json","html":"/about/data","markdown":"/sources.md"}],"relationships":[{"from":"occupation.noc","to":"noc-unit-group.code","resource":"/api/v1/noc"},{"from":"wage-observation.noc","to":"noc-unit-group.code","resource":"/api/v1/wages?noc={code}"},{"from":"job-posting.occupationId","to":"occupation.id","resource":"/api/v1/jobs"},{"from":"occupation.outcomesByCommunity[].municipalityId","to":"municipality.id","resource":"/api/v1/roles/{id}"},{"from":"occupation.trainingPrograms[].id","to":"training-program.id","resource":"/api/v1/roles/{id}"},{"from":"sector.occupations[].id","to":"occupation.id","resource":"/api/v1/sectors/{id}"},{"from":"municipality.businesses[].id","to":"business.id","resource":"/api/v1/municipalities/{id}"},{"from":"*.provenance.sources[].name","to":"data-source.label","resource":"/api/v1/sources"}],"methodologies":[{"id":"discretionary-income-v1","resource":"/api/v1/outcomes","description":"Hourly wage to monthly after-tax income, housing, utilities, commuting, and discretionary remainder."},{"id":"pathway-feasibility-v1","resource":"/api/v1/evaluate","description":"Three-state constraint evaluation: meets, does not meet, or needs review."},{"id":"credential-bottleneck-v1","resource":"/api/v1/insights/credential-bottlenecks","description":"Vacancies gated by a credential relative to current and lapsed holders, with k-anonymous suppression."},{"id":"municipal-influence-v1","resource":"/api/admin/demand-intelligence","description":"Authenticated decision actions and linked outcomes aggregated by municipality; operational traffic excluded.","access":"admin"}],"operations":{"liveness":"/api/health","trafficReadiness":"/api/readiness","publicLaunchStatus":"/api/public-launch-status","legacyPublicLaunchAlias":"/api/ready"},"truthStates":{"preview":"Synthetic demonstration records — structurally realistic, never actionable.","snapshot":"Authoritative data published for a stated reporting period; not real-time.","measured_aggregate":"Statistical survey estimates (e.g. JVWS vacancies) — measurements of a market, not individual postings.","mixed":"Derived from inputs of differing strength; inherits the weakest material input.","live":"Current actionable records from a production-backed provider; the only state permitting live language.","metadata":"Factual self-description of the platform."},"discovery":{"agentDocumentation":"/agents","agentDocumentationTwin":"/agents.md","agentCapabilityManifest":"/.well-known/agent-capabilities.json","llmsText":"/llms.txt","llmsFullText":"/llms-full.txt","machineIndex":"/index.md","openapi":"/api/v1/openapi.json","jsonCatalog":"/api/v1/catalog","mcp":"/mcp"}}}