{
  "title": "BIMR API capability catalogue",
  "version": "design-2026-09-09",
  "release_status": "proposal",
  "notice": "Illustrative endpoint designs, not a released or callable public API. Status describes the underlying capability or dependency, never endpoint availability.",
  "statuses": {
    "engine": "BIMR foundation",
    "build": "Service design",
    "partner": "Partner data",
    "network": "Network data"
  },
  "families": [
    {
      "id": "bim-orders",
      "title": "Order a BIM of your building",
      "audience": "Homeowners, building owners, architects, surveyors, software platforms",
      "summary": "A standalone building-to-file service, with no BIMR app subscription required.",
      "dependency": "Order orchestration, archive intake, pricing, review and direct delivery need implementation. Target: 1–5 working days for eligible orders from confirmation; the quote must give an expected delivery date.",
      "endpoints": [
        {
          "status": "build",
          "method": "POST",
          "path": "/v1/bim-orders/quotes",
          "name": "Check scope and get a quote",
          "result": "Building identity, available drawings, intended use, model detail, estimated fees and delivery target."
        },
        {
          "status": "build",
          "method": "POST",
          "path": "/v1/bim-orders",
          "name": "Place a standalone BIM order",
          "result": "Create an order against an accepted quote, authorized use and named recipients."
        },
        {
          "status": "build",
          "method": "GET",
          "path": "/v1/bim-orders/{order_id}",
          "name": "Track your order",
          "result": "See archive progress, missing information, review state and the current delivery estimate."
        },
        {
          "status": "build",
          "method": "POST",
          "path": "/v1/bim-orders/{order_id}/documents",
          "name": "Add your own drawings",
          "result": "Contribute permitted files to the same order, even while archive retrieval is underway."
        },
        {
          "status": "build",
          "method": "POST",
          "path": "/v1/bim-orders/{order_id}/approvals",
          "name": "Approve an order change",
          "result": "Approve extra archive fees, revised scope or delivery timing explicitly."
        },
        {
          "status": "build",
          "method": "POST",
          "path": "/v1/bim-orders/{order_id}/cancellation",
          "name": "Request cancellation",
          "result": "Return cancellation eligibility, incurred work and the applicable refund decision."
        },
        {
          "status": "build",
          "method": "GET",
          "path": "/v1/bim-orders/{order_id}/deliverables",
          "name": "Collect your model package",
          "result": "Authorized IFC download, preview, room schedule and a report of sources, coverage and assumptions."
        },
        {
          "status": "build",
          "method": "POST",
          "path": "/v1/bim-orders/{order_id}/deliveries",
          "name": "Deliver to your customer",
          "result": "Send the approved package to a named recipient by secure link, with delivery status."
        }
      ]
    },
    {
      "id": "archives",
      "title": "Drawing acquisition & archive correspondence",
      "audience": "Owners, property managers, archive services",
      "summary": "Coordinate the search, correspondence and receipt of actual building drawings.",
      "dependency": "Municipality-specific access, a configured mailbox, fee authority and release decisions are required. The workflow includes human handling for login, restrictions and ambiguous replies.",
      "endpoints": [
        {
          "status": "build",
          "method": "GET",
          "path": "/v1/archives/coverage",
          "name": "Check an archive route",
          "result": "Verified municipality contact, available request method and the date it was checked."
        },
        {
          "status": "build",
          "method": "POST",
          "path": "/v1/drawing-requests",
          "name": "Request archive drawings",
          "result": "A tracked request for the selected property, sheet types and permitted fee ceiling."
        },
        {
          "status": "build",
          "method": "GET",
          "path": "/v1/drawing-requests/{request_id}",
          "name": "Follow retrieval",
          "result": "Distinguish requested, received, partial, not found, restricted and needs-action states."
        },
        {
          "status": "build",
          "method": "GET",
          "path": "/v1/drawing-requests/{request_id}/messages",
          "name": "Read the correspondence",
          "result": "A permission-controlled thread linking archive questions, replies and attachments."
        },
        {
          "status": "build",
          "method": "POST",
          "path": "/v1/drawing-requests/{request_id}/replies",
          "name": "Continue the conversation",
          "result": "An authorized reply or agent-assisted clarification, retained with the request."
        },
        {
          "status": "build",
          "method": "GET",
          "path": "/v1/drawing-requests/{request_id}/documents",
          "name": "Collect received drawings",
          "result": "Original files linked to the request, source, building candidates and review status."
        }
      ]
    },
    {
      "id": "reconstruction",
      "title": "2D to 3D with the BIMR engine",
      "audience": "Architects, BIM consultants, owners, renovation teams",
      "summary": "Turn supported 2D drawings into an editable architectural IFC model.",
      "dependency": "The engine exists for selected vector PDFs. API jobs, complete drawing-set assembly and raster reconstruction need additional work; each result needs a stated coverage and review status.",
      "endpoints": [
        {
          "status": "build",
          "method": "POST",
          "path": "/v1/reconstructions/preflight",
          "name": "Check a drawing set",
          "result": "Supported input types, usable scale, missing floors or sections and a proposed model scope."
        },
        {
          "status": "engine",
          "method": "POST",
          "path": "/v1/reconstructions",
          "name": "Convert a drawing to BIM",
          "result": "A draft IFC from supported vector plans, with rooms, walls, openings and recorded assumptions."
        },
        {
          "status": "build",
          "method": "GET",
          "path": "/v1/reconstructions/{job_id}",
          "name": "Follow model generation",
          "result": "Processing stage and errors, independently from model coverage and review acceptance."
        },
        {
          "status": "build",
          "method": "GET",
          "path": "/v1/reconstructions/{job_id}/outputs",
          "name": "Download the reconstruction",
          "result": "IFC, room schedule, source references and model-quality findings in one output contract."
        },
        {
          "status": "engine",
          "method": "GET",
          "path": "/v1/reconstructions/{job_id}/provenance",
          "name": "Understand each element",
          "result": "Which geometry came from a drawing, construction practice or an explicit assumption."
        },
        {
          "status": "build",
          "method": "POST",
          "path": "/v1/reconstructions/{job_id}/reviews",
          "name": "Record a model review",
          "result": "Accepted corrections, reviewer identity and remaining limitations for this revision."
        },
        {
          "status": "build",
          "method": "POST",
          "path": "/v1/drawing-sets/{set_id}/reconstructions",
          "name": "Build across floors and files",
          "result": "A coordinated architectural model using compatible plans, sections and revision choices."
        },
        {
          "status": "build",
          "method": "POST",
          "path": "/v1/raster-reconstructions",
          "name": "Reconstruct scanned plans",
          "result": "A proposed scan-to-BIM service requiring a validated raster pipeline and geometric review."
        }
      ]
    },
    {
      "id": "models",
      "title": "IFC processing & model intelligence",
      "audience": "Software teams, designers, estimators, facility managers",
      "summary": "Use BIM models and their structured contents inside your own software.",
      "dependency": "IFC conversion and object queries have an existing foundation. New exports, comparison and review services need validation against model contents and units.",
      "endpoints": [
        {
          "status": "engine",
          "method": "POST",
          "path": "/v1/models",
          "name": "Process an IFC file",
          "result": "A browser-ready model and indexed elements from a customer-authorized IFC."
        },
        {
          "status": "engine",
          "method": "GET",
          "path": "/v1/models/{model_id}/elements",
          "name": "Query building elements",
          "result": "Filter actual model objects and return identifiers, classes and available properties."
        },
        {
          "status": "engine",
          "method": "GET",
          "path": "/v1/models/{model_id}/spaces",
          "name": "Read rooms and storeys",
          "result": "A room and floor register with model references and available quantities."
        },
        {
          "status": "engine",
          "method": "GET",
          "path": "/v1/models/{model_id}/systems",
          "name": "Explore building systems",
          "result": "Discover the systems actually present in the model and their connected elements."
        },
        {
          "status": "engine",
          "method": "GET",
          "path": "/v1/models/{model_id}/quantities",
          "name": "Extract quantities",
          "result": "Available areas, lengths, volumes and counts with units and measurement provenance."
        },
        {
          "status": "build",
          "method": "POST",
          "path": "/v1/model-comparisons",
          "name": "Compare model revisions",
          "result": "Added, removed and changed objects, including unresolved identity matches."
        },
        {
          "status": "build",
          "method": "POST",
          "path": "/v1/model-checks",
          "name": "Check handover information",
          "result": "Missing properties and documents against the customer's stated requirements."
        },
        {
          "status": "build",
          "method": "POST",
          "path": "/v1/model-views",
          "name": "Embed a model view",
          "result": "A permission-scoped view of selected models or objects with an expiry and revocation path."
        }
      ]
    },
    {
      "id": "drawing-sets",
      "title": "Drawing sets, revisions & 2D outputs",
      "audience": "Architects, contractors, surveyors, maintenance teams",
      "summary": "Keep the original drawings useful alongside the model.",
      "dependency": "Sheet classification, revision reconciliation and generated 2D outputs need new packaging and validation. Derived drawings retain their source limitations.",
      "endpoints": [
        {
          "status": "build",
          "method": "POST",
          "path": "/v1/drawing-sets",
          "name": "Organize a drawing package",
          "result": "An inventory of sheets, floors, disciplines, dates and source files."
        },
        {
          "status": "build",
          "method": "GET",
          "path": "/v1/drawing-sets/{set_id}/coverage",
          "name": "Find missing drawings",
          "result": "Missing floors, sections and references against the agreed building scope."
        },
        {
          "status": "build",
          "method": "GET",
          "path": "/v1/drawing-sets/{set_id}/revisions",
          "name": "See drawing history",
          "result": "Current, superseded and unresolved sheet versions with the review decision."
        },
        {
          "status": "build",
          "method": "POST",
          "path": "/v1/drawing-comparisons",
          "name": "Compare drawing revisions",
          "result": "Candidate geometry and annotation changes for a reviewer to verify."
        },
        {
          "status": "build",
          "method": "POST",
          "path": "/v1/models/{model_id}/floor-plan-exports",
          "name": "Export a model floor plan",
          "result": "A proposed PDF or SVG plan with scale and the model revision identified."
        },
        {
          "status": "build",
          "method": "POST",
          "path": "/v1/models/{model_id}/section-exports",
          "name": "Create a model section",
          "result": "A selected cut through the available geometry with source and limitation notes."
        }
      ]
    },
    {
      "id": "buildings",
      "title": "Building identity & portfolio records",
      "audience": "Owners, BRFs, property managers, public property teams",
      "summary": "Connect the same physical building across documents, models and business systems.",
      "dependency": "Customer mandates and upstream entitlements govern access. A property can contain several buildings; an address match alone must not silently merge them.",
      "endpoints": [
        {
          "status": "engine",
          "method": "POST",
          "path": "/v1/buildings/resolve",
          "name": "Find the right building",
          "result": "Address or property-reference candidates with ambiguity and source information."
        },
        {
          "status": "engine",
          "method": "GET",
          "path": "/v1/buildings/{building_id}",
          "name": "Read the building record",
          "result": "Known facts, linked models and documents, dates and unresolved information."
        },
        {
          "status": "engine",
          "method": "PATCH",
          "path": "/v1/buildings/{building_id}",
          "name": "Correct building information",
          "result": "An authorized correction with the previous value and source retained."
        },
        {
          "status": "build",
          "method": "POST",
          "path": "/v1/portfolio-imports",
          "name": "Import a portfolio",
          "result": "Reconcile your building list, external IDs and owner groups without duplicates."
        },
        {
          "status": "engine",
          "method": "GET",
          "path": "/v1/portfolios/{portfolio_id}/buildings",
          "name": "List permitted buildings",
          "result": "The buildings in the selected owner or manager scope, including incomplete identities."
        },
        {
          "status": "partner",
          "method": "POST",
          "path": "/v1/ownership-lookups",
          "name": "Find an owner's holdings",
          "result": "A separately entitled register lookup with price, mandate and permitted use checked first."
        },
        {
          "status": "build",
          "method": "GET",
          "path": "/v1/buildings/{building_id}/coverage",
          "name": "See information gaps",
          "result": "A collection list for missing facts, drawings, documents and equipment records."
        }
      ]
    },
    {
      "id": "documents",
      "title": "Document intelligence & building questions",
      "audience": "Property software, managers, inspectors, administrators",
      "summary": "Turn a building binder into searchable records with evidence attached.",
      "dependency": "Existing extraction supports selected document types. Answers require access to the cited originals; scans readable as text are not automatically reconstructable as geometry.",
      "endpoints": [
        {
          "status": "engine",
          "method": "POST",
          "path": "/v1/documents",
          "name": "Ingest building documents",
          "result": "Stored originals, document classification and candidate building links."
        },
        {
          "status": "engine",
          "method": "GET",
          "path": "/v1/documents/{document_id}/extractions",
          "name": "Read extracted facts",
          "result": "Typed facts, source pages, confidence and review state for supported reports and invoices."
        },
        {
          "status": "engine",
          "method": "GET",
          "path": "/v1/documents/{document_id}/original",
          "name": "Open the source",
          "result": "Authorized access to the original file behind a claim or extracted value."
        },
        {
          "status": "build",
          "method": "POST",
          "path": "/v1/document-searches",
          "name": "Search permitted evidence",
          "result": "Relevant passages and source references within explicitly selected buildings."
        },
        {
          "status": "engine",
          "method": "POST",
          "path": "/v1/building-questions",
          "name": "Ask a building question",
          "result": "A cited answer from permitted building records, with unknowns kept visible."
        },
        {
          "status": "build",
          "method": "POST",
          "path": "/v1/documents/{document_id}/reviews",
          "name": "Correct an extraction",
          "result": "A reviewed value linked to the original extraction and the responsible reviewer."
        }
      ]
    },
    {
      "id": "history",
      "title": "Building history & asset records",
      "audience": "Owners, new managers, contractors, accountants",
      "summary": "Retain the building's documented history through changes of staff and systems.",
      "dependency": "A reported action, a paid invoice and accepted completion remain distinct. Dates and installed-product identity need source evidence.",
      "endpoints": [
        {
          "status": "engine",
          "method": "GET",
          "path": "/v1/buildings/{building_id}/history",
          "name": "Read the building timeline",
          "result": "Dated inspection, renovation and work records with their supporting documents."
        },
        {
          "status": "engine",
          "method": "POST",
          "path": "/v1/buildings/{building_id}/events",
          "name": "Add a documented event",
          "result": "A sourced action linked to the building, system or known model element."
        },
        {
          "status": "build",
          "method": "GET",
          "path": "/v1/buildings/{building_id}/components",
          "name": "Read the component register",
          "result": "Documented roof, window and other component records, dates and information gaps."
        },
        {
          "status": "build",
          "method": "GET",
          "path": "/v1/assets/{asset_id}/history",
          "name": "Follow an installed asset",
          "result": "Installation, service and replacement evidence for a confirmed asset identity."
        },
        {
          "status": "build",
          "method": "POST",
          "path": "/v1/building-handovers",
          "name": "Prepare a portable handover",
          "result": "Authorized originals, model revisions, identifiers and history for a named successor."
        }
      ]
    },
    {
      "id": "operations",
      "title": "Inspections, maintenance & field work",
      "audience": "Contractors, inspectors, residents, property managers",
      "summary": "Connect the finding, the work and the evidence of completion.",
      "dependency": "External write operations need delegated scope and delivery controls. Due dates need an applicable rule and supporting facts; records do not certify legal compliance.",
      "endpoints": [
        {
          "status": "engine",
          "method": "GET",
          "path": "/v1/buildings/{building_id}/obligations",
          "name": "Read inspection requirements",
          "result": "Supported obligations, their basis, due dates and missing inputs."
        },
        {
          "status": "engine",
          "method": "GET",
          "path": "/v1/portfolios/{portfolio_id}/calendar",
          "name": "Connect the work calendar",
          "result": "Scheduled inspections and work, including unresolved dependencies."
        },
        {
          "status": "engine",
          "method": "POST",
          "path": "/v1/work-orders",
          "name": "Create a scoped work package",
          "result": "Selected locations, relevant model objects, requirements and permitted documents."
        },
        {
          "status": "engine",
          "method": "POST",
          "path": "/v1/work-orders/{work_order_id}/evidence",
          "name": "Submit field evidence",
          "result": "Photos, measurements and a contractor's completion report attached to the job."
        },
        {
          "status": "build",
          "method": "POST",
          "path": "/v1/work-orders/{work_order_id}/acceptance",
          "name": "Record owner acceptance",
          "result": "The owner's separate decision on the submitted work and any remaining issues."
        },
        {
          "status": "build",
          "method": "POST",
          "path": "/v1/inspection-closeouts",
          "name": "Prepare a finding response",
          "result": "Finding-by-finding evidence linking corrective work to the original inspection."
        },
        {
          "status": "build",
          "method": "POST",
          "path": "/v1/issue-reports",
          "name": "Receive occupant reports",
          "result": "A fault report restricted to the reporter's permitted building or space."
        },
        {
          "status": "build",
          "method": "POST",
          "path": "/v1/visit-coordination-checks",
          "name": "Coordinate site visits",
          "result": "Conflicting visits, access requirements and acknowledgments within an authorized portfolio."
        }
      ]
    },
    {
      "id": "finance",
      "title": "Invoices, contracts & maintenance budgets",
      "audience": "Financial managers, accountants, owners, engaged suppliers",
      "summary": "Make building expenditure traceable to agreements and documented work.",
      "dependency": "Use the customer's own agreements and costs. Accounting decisions require review; external accounting sync and supplier access need separately authorized connections.",
      "endpoints": [
        {
          "status": "engine",
          "method": "POST",
          "path": "/v1/invoice-checks",
          "name": "Check an invoice",
          "result": "Arithmetic and matched-line exceptions against the customer's own agreed prices."
        },
        {
          "status": "build",
          "method": "POST",
          "path": "/v1/work-invoice-reconciliations",
          "name": "Match work to a bill",
          "result": "Differences between authorized scope, submitted evidence, acceptance and invoiced work."
        },
        {
          "status": "build",
          "method": "POST",
          "path": "/v1/supplier-invoice-prechecks",
          "name": "Check a draft supplier bill",
          "result": "An engaged supplier checks only the contract and job scope explicitly shared with it."
        },
        {
          "status": "build",
          "method": "POST",
          "path": "/v1/maintenance-scenarios",
          "name": "Compare maintenance options",
          "result": "Timing and quantity scenarios using documented costs and explicit assumptions."
        },
        {
          "status": "build",
          "method": "POST",
          "path": "/v1/component-register-drafts",
          "name": "Draft investment allocations",
          "result": "Source-linked component dates and costs for an accountant to review."
        },
        {
          "status": "partner",
          "method": "POST",
          "path": "/v1/accounting-exports",
          "name": "Send an approved accounting package",
          "result": "Reviewed records mapped to the customer's ledger and connected accounting system."
        }
      ]
    },
    {
      "id": "energy",
      "title": "Energy, weather & connected equipment",
      "audience": "Owners, energy consultants, utilities, facility managers",
      "summary": "Give consumption a building, a period and a clear comparison basis.",
      "dependency": "Area definitions, estimated readings and weather methods stay visible. Continuous meter or BMS data needs a customer-authorized provider connection.",
      "endpoints": [
        {
          "status": "engine",
          "method": "POST",
          "path": "/v1/consumption-imports",
          "name": "Import consumption records",
          "result": "Building-linked readings or invoice-derived periods with units and estimate flags."
        },
        {
          "status": "engine",
          "method": "GET",
          "path": "/v1/buildings/{building_id}/consumption",
          "name": "Read energy and water use",
          "result": "A consistent time series with original periods, gaps and source references."
        },
        {
          "status": "engine",
          "method": "POST",
          "path": "/v1/energy-normalizations",
          "name": "Add weather context",
          "result": "A qualified weather-adjusted series using a documented method and area basis."
        },
        {
          "status": "build",
          "method": "POST",
          "path": "/v1/retrofit-reports",
          "name": "Evaluate a renovation period",
          "result": "Before-and-after consumption with weather, occupancy and other comparison limits."
        },
        {
          "status": "build",
          "method": "GET",
          "path": "/v1/buildings/{building_id}/weather-alerts",
          "name": "Plan weather-sensitive work",
          "result": "Relevant weather signals linked to documented exposure and planned activities."
        },
        {
          "status": "partner",
          "method": "POST",
          "path": "/v1/meter-connections",
          "name": "Connect a meter",
          "result": "An authorized meter-to-building mapping, provider details and feed health."
        },
        {
          "status": "partner",
          "method": "GET",
          "path": "/v1/assets/{asset_id}/telemetry",
          "name": "Read connected equipment",
          "result": "Authorized time series and alarms with units, timestamps and missing-data indicators."
        }
      ]
    },
    {
      "id": "suppliers",
      "title": "Products, service & supplier connections",
      "audience": "Manufacturers, distributors, installers, service companies",
      "summary": "Connect a known installation to the information and service it needs.",
      "dependency": "Manufacturer data, supplier contracts and confirmed asset identities are required for product-specific claims. No catalogue access implies access to the customer base.",
      "endpoints": [
        {
          "status": "engine",
          "method": "POST",
          "path": "/v1/purchase-imports",
          "name": "Match purchase records",
          "result": "Candidate links between the customer's purchased items and model elements, awaiting confirmation."
        },
        {
          "status": "partner",
          "method": "GET",
          "path": "/v1/products/{product_id}",
          "name": "Read a product record",
          "result": "Licensed technical properties, identifiers and lifecycle information."
        },
        {
          "status": "partner",
          "method": "GET",
          "path": "/v1/assets/{asset_id}/documents",
          "name": "Find manuals and warranty terms",
          "result": "Documents for a confirmed installed product and the applicable version."
        },
        {
          "status": "partner",
          "method": "POST",
          "path": "/v1/replacement-part-searches",
          "name": "Find replacement candidates",
          "result": "Compatibility evidence and required checks for a specified installation."
        },
        {
          "status": "partner",
          "method": "POST",
          "path": "/v1/supplier-availability-checks",
          "name": "Check price and availability",
          "result": "Current stock, customer-specific price, lead time and the supplier's timestamp."
        },
        {
          "status": "partner",
          "method": "POST",
          "path": "/v1/recall-matches",
          "name": "Match a product notice",
          "result": "Authenticated recall or obsolescence notices matched to confirmed product or serial ranges."
        },
        {
          "status": "partner",
          "method": "POST",
          "path": "/v1/service-requests",
          "name": "Request service or a quote",
          "result": "An owner's approved request sent to selected companies with only the necessary information."
        },
        {
          "status": "engine",
          "method": "GET",
          "path": "/v1/companies/{company_id}/facts",
          "name": "Check company information",
          "result": "Permitted register facts and source freshness, without an invented certification verdict."
        }
      ]
    },
    {
      "id": "materials",
      "title": "Materials, carbon & reuse",
      "audience": "Architects, sustainability teams, manufacturers, reuse partners",
      "summary": "Connect available quantities to documented materials and environmental evidence.",
      "dependency": "Product EPDs and generic factors have different scopes. Model quantities and condition descriptions must be reviewed for the intended assessment or reuse decision.",
      "endpoints": [
        {
          "status": "partner",
          "method": "POST",
          "path": "/v1/carbon-assessments",
          "name": "Estimate material impact",
          "result": "Qualified quantities and licensed factors with lifecycle boundaries and uncertainty."
        },
        {
          "status": "partner",
          "method": "GET",
          "path": "/v1/products/{product_id}/environmental-declarations",
          "name": "Retrieve product EPD evidence",
          "result": "The matched declaration, validity period and scope of applicability."
        },
        {
          "status": "build",
          "method": "POST",
          "path": "/v1/reuse-inventories",
          "name": "Prepare a reuse inventory",
          "result": "Documented components, dimensions, condition and disassembly evidence."
        },
        {
          "status": "partner",
          "method": "POST",
          "path": "/v1/reuse-listings",
          "name": "Share approved reusable stock",
          "result": "A selected inventory sent to an authorized reuse partner under agreed sharing terms."
        }
      ]
    },
    {
      "id": "context",
      "title": "Exterior models & site context",
      "audience": "Portfolio teams, planners, surveyors, energy designers",
      "summary": "Give a building useful geographic context before interior drawings are available.",
      "dependency": "Coverage, source dates, geometric meaning and onward-use rights vary by dataset. Exterior geometry cannot establish the interior or the actual condition of a site.",
      "endpoints": [
        {
          "status": "build",
          "method": "POST",
          "path": "/v1/exterior-models",
          "name": "Build an exterior shell",
          "result": "A footprint-based model using a sourced height or a clearly identified estimate."
        },
        {
          "status": "partner",
          "method": "POST",
          "path": "/v1/roof-reconstructions",
          "name": "Refine exterior geometry",
          "result": "A proposed roof model from suitable licensed laser or building geometry, subject to coverage checks."
        },
        {
          "status": "build",
          "method": "GET",
          "path": "/v1/buildings/{building_id}/site-context",
          "name": "Read environmental context",
          "result": "Permitted geological and public context layers with resolution and source dates."
        },
        {
          "status": "build",
          "method": "POST",
          "path": "/v1/solar-screenings",
          "name": "Screen a roof for solar",
          "result": "A preliminary scenario from qualified roof and shading data, with engineering checks identified."
        },
        {
          "status": "build",
          "method": "POST",
          "path": "/v1/building-map-exports",
          "name": "Create a portfolio map",
          "result": "An authorized building map with selected facts, source attribution and missing locations counted."
        }
      ]
    },
    {
      "id": "reports",
      "title": "Reports, graphs & evidence packages",
      "audience": "Boards, banks, insurers, transaction advisers, software teams",
      "summary": "Give each recipient a useful view of the evidence they are allowed to see.",
      "dependency": "Sharing is case-specific and owner-authorized. A report summarizes evidence and gaps; it is not an automated lending, insurance or statutory approval.",
      "endpoints": [
        {
          "status": "build",
          "method": "POST",
          "path": "/v1/building-reports",
          "name": "Create a building report",
          "result": "Selected model, condition, maintenance and expenditure records with sources and dates."
        },
        {
          "status": "build",
          "method": "POST",
          "path": "/v1/evidence-packages",
          "name": "Prepare a case-specific evidence pack",
          "result": "Permitted documents and unresolved gaps for a transaction, insurance claim or finance application."
        },
        {
          "status": "build",
          "method": "POST",
          "path": "/v1/chart-exports",
          "name": "Generate an information graphic",
          "result": "A PDF or SVG chart from permitted data, retaining units, source dates and attribution."
        },
        {
          "status": "build",
          "method": "POST",
          "path": "/v1/portfolio-reports",
          "name": "Summarize a portfolio",
          "result": "Comparable measures and exceptions across only the owner's selected buildings."
        },
        {
          "status": "build",
          "method": "POST",
          "path": "/v1/share-links",
          "name": "Share with a named recipient",
          "result": "An expiring, revocable delivery link to a selected report or package."
        }
      ]
    },
    {
      "id": "network",
      "title": "Permissioned portfolio & network insights",
      "audience": "Owners, managers, energy teams, participating manufacturers",
      "summary": "Make comparable observations useful as the evidence base grows.",
      "dependency": "Requires sufficient eligible observations, comparable definitions and permission. Public statistical references can support early energy comparisons; there is no demonstrated large customer dataset today.",
      "endpoints": [
        {
          "status": "network",
          "method": "POST",
          "path": "/v1/energy-benchmarks",
          "name": "Compare similar buildings",
          "result": "Eligible peer or public-reference comparisons with sample size, period and comparability limits."
        },
        {
          "status": "network",
          "method": "POST",
          "path": "/v1/maintenance-benchmarks",
          "name": "Explore maintenance patterns",
          "result": "Historical recurrence and resolution statistics with missing records and cohort limits stated."
        },
        {
          "status": "network",
          "method": "POST",
          "path": "/v1/equipment-outcome-reports",
          "name": "Study observed asset outcomes",
          "result": "Qualified reliability and service observations for identified equipment and exposure periods."
        },
        {
          "status": "network",
          "method": "POST",
          "path": "/v1/service-outcome-reports",
          "name": "Compare documented service outcomes",
          "result": "Eligible descriptive completion and return-visit statistics without exposing customer records or current bids."
        }
      ]
    },
    {
      "id": "platform",
      "title": "Integration controls & delivery",
      "audience": "Software vendors, integrators, enterprise IT",
      "summary": "Make each service usable from another application with bounded access and reliable delivery.",
      "dependency": "These are proposed external platform controls. Existing app sessions are not a released machine-to-machine API contract.",
      "endpoints": [
        {
          "status": "build",
          "method": "GET",
          "path": "/v1/capabilities",
          "name": "Discover entitled services",
          "result": "The operations and source permissions actually enabled for the calling integration."
        },
        {
          "status": "build",
          "method": "POST",
          "path": "/v1/integration-credentials",
          "name": "Create scoped credentials",
          "result": "Machine access limited to agreed operations, owners and buildings, with an expiry."
        },
        {
          "status": "build",
          "method": "POST",
          "path": "/v1/access-grants",
          "name": "Authorize a recipient or integration",
          "result": "Explicit building and purpose scope, duration and audit evidence."
        },
        {
          "status": "build",
          "method": "DELETE",
          "path": "/v1/access-grants/{grant_id}",
          "name": "Revoke a grant",
          "result": "Stop future access through a specified grant while retaining the required audit record."
        },
        {
          "status": "build",
          "method": "POST",
          "path": "/v1/webhook-subscriptions",
          "name": "Subscribe to changes",
          "result": "Signed delivery events for approved jobs, records and model revisions."
        },
        {
          "status": "build",
          "method": "GET",
          "path": "/v1/jobs/{job_id}",
          "name": "Poll a background job",
          "result": "Durable state, retry details and separate processing, coverage and review results."
        },
        {
          "status": "build",
          "method": "GET",
          "path": "/v1/usage",
          "name": "Read metered usage",
          "result": "Itemized operations, agreed unit prices and source charges for the calling customer."
        },
        {
          "status": "build",
          "method": "GET",
          "path": "/v1/audit-events",
          "name": "Inspect an integration's activity",
          "result": "Permitted access, corrections, approvals and deliveries with timestamps and responsible actors."
        }
      ]
    }
  ]
}
