Repository navigation
Endpoints reference
This is the high-level map. For exhaustive per-operation request/response schemas, parameter types, and examples, see the OpenAPI spec at /openapi/v2.json. Sedis also provides an interactive API reference (Scalar) rendered from that OpenAPI spec, available in the Sedis integration environment — ask your Sedis contact for access. Everything below shares the same envelope, query conventions (Query conventions), errors (Errors), and auth (Authentication).
All paths are relative to https://api.sedis.se/v2.
Reference data, shared across all customers (no tenant scoping — every key sees the same companies and parameters).
| Resource | Method | What it returns |
|---|---|---|
/bolagsanalys/companies |
GET | Listed companies (companyId, name, nextReportDate, isInactive, latestReportUri, countryCode, nationalIdentificationNumber). Filters: ?companyId=, ?nameContains=, ?countryCode=. |
/bolagsanalys/parameters |
GET | Parameter metadata (code, name, groupName, description, period). Filters: ?code=, ?groupName=, ?nameContains=. |
/bolagsanalys/data |
GET | Quarterly figures (companyId, parameterCode, quarterId, figure, text, lastUpdatedUtc). Filters: ?companyId=, ?parameterCode=, ?quarterId=, ?fromDate=, ?toDate=. |
Note:
quarterIdis a packed number:20251= 2025 Q1. On input the?quarterId=filter accepts either20251or2025Q1. On/bolagsanalys/data,?fromDate=/?toDate=are quarter bounds (also20251or2025Q1), not calendar dates — Bolagsanalys data is quarter-keyed. See Code examples.
Your own property data is tenant-scoped — you only ever see rows owned by your SedisCustomer (Multi-tenant isolation). Sedis-curated reference data is shared. The six read resources, plus a POST search and the ingestion endpoints:
| Resource | Method | Scope | Notes |
|---|---|---|---|
/fastighetsbenchmark/property-units |
GET, POST, PUT | tenant | Your real estate (Fastighet). Create with POST, rename/update with PUT (Writing data). Filters incl. ?name= (exact — your own name for it), ?propertyType= (a property-type id, int), ?municipalityId=, ?belongsToJamforelseobjektSedisId=, geometry (Geometry). Opt-in belongsToJamforelseobjekt lineage (The Comp Composite & clone lineage). |
/fastighetsbenchmark/samlingar |
GET, POST, PUT, DELETE | tenant | Your collections (Samling) — the only full-CRUD Fastighetsbenchmark resource. Read + create + replace + delete (The Comp Composite & clone lineage, ingestion below). PUT {sedisId} replaces the name + members and re-triggers the recalculation cascade; DELETE {sedisId} cascades the collection's data cleanup. |
/fastighetsbenchmark/jamforelseobjekt |
GET | tenant | Your comparison zones cloned from a SedisObjekt (Jämförelseobjekt). Opt-in containsPropertyUnits lineage (The Comp Composite & clone lineage). |
/fastighetsbenchmark/reference-zones |
GET | shared (read-only) | Sedis-curated external benchmark datasets (e.g. Nils Holgersson, Cushman & Wakefield, SEPREF, Forum). |
/fastighetsbenchmark/parameters |
GET | shared | CompParameter metadata (code, name, groupName, description, unit, isBaseData, dataType, and enumValues for enum codes — The Comp Composite & clone lineage). |
/fastighetsbenchmark/municipalities |
GET | shared | Municipalities: id (what municipalityId takes), name, countryCode, code (Sweden: SCB kommunkod). Filters ?code=, ?countryCode=, ?nameContains=. |
/fastighetsbenchmark/property-types |
GET | shared | Property types { id, name } — the EB0 domain and the ?propertyType= filter. |
/fastighetsbenchmark/comp-data |
GET | tenant | The CompDatum time-series — self-describing via dataType (decimal/boolean/enum/date) + the matching figure/boolean/enum/date member (The Comp Composite & clone lineage). Always fetched here, never inlined. Filters: ?sedisId= (exact), ?sedisIdIn= (comma-separated multi-value), ?parameterCode=, ?fromDate=, ?toDate=. Supports ?count=false. |
Note: The source SedisObjekt is not a partner-fetchable resource. A Jämförelseobjekt is your clone of a Sedis-owned SedisObjekt aggregate; you reach the relationship through the bidirectional clone lineage (
belongsToJamforelseobjekt/containsPropertyUnits, The Comp Composite & clone lineage), not by fetching the SedisObjekt itself.
For geometry inputs too large for a URL (big polygons, MultiPolygons), POST the shape instead of putting it in ?wkt=:
| Resource | Method |
|---|---|
/fastighetsbenchmark/property-units/search |
POST |
/fastighetsbenchmark/samlingar/search |
POST |
/fastighetsbenchmark/jamforelseobjekt/search |
POST |
Same response envelope as the matching GET. See Geometry.
| Resource | Method | What it does |
|---|---|---|
/fastighetsbenchmark/samlingar |
POST | Create a customer-owned Samling; triggers Sedis's recalculation cascade. |
/fastighetsbenchmark/samlingar/{sedisId} |
PUT |
Full replace of the Samling's name + members. Because the member set changed, this re-triggers the recalculation cascade. Tenant-scoped (a {sedisId} that is not yours → 404). Returns 200 with the updated resource. |
/fastighetsbenchmark/samlingar/{sedisId} |
DELETE | Delete the Samling, cascading its data/tags cleanup. Tenant-scoped (not yours → 404). Returns 204 No Content. |
/fastighetsbenchmark/property-units |
POST | Create a property unit — the only way to create one. 201 with its sedisId. |
/fastighetsbenchmark/property-units/{sedisId} |
PUT | Full replace of a property unit's attributes — the only way to rename one. If-Match → 412. |
/fastighetsbenchmark/property-units/{sedisId} |
DELETE | Remove a property unit with all its values — only while none of them is shared (409 shared-data otherwise). 204. |
/fastighetsbenchmark/property-units/{sedisId}/values/{valueDate} |
PATCH | Change some values at one value date (JSON Merge Patch). Not shared → 200; shared → 202, waits for Sedis's review. |
/fastighetsbenchmark/property-units/{sedisId}/values/{valueDate} |
DELETE | Remove every value at one value date — only if it is not shared (409 shared-data otherwise). 204. |
/fastighetsbenchmark/property-units/{sedisId}/pending-changes |
GET | Your changes of shared values that wait for Sedis, with Sedis's reviewComment when it sent them back. |
/fastighetsbenchmark/comp-uploads |
POST | Upload values for one value date; never creates a property unit. Strict (422, nothing saved). submit: true sends it to Sedis for review. |
/fastighetsbenchmark/comp-uploads/{id} |
GET | Where an upload is: uploaded → submitted → publishing → published. |
All of it in Writing data.
The POST endpoints require a mandatory Idempotency-Key header. PUT and DELETE are idempotent by HTTP semantics and do not require the header. See The Comp Composite & clone lineage (Ingestion) and Errors (RFC 7807).
The Fastighetsbenchmark Comp-family resources share a common base (CompBaseResponse): sedisId, name, sourceName, insertedOnUtc, lastUpdatedUtc, isLocked, and the freeze-state fields (freezeOnSourceChanges, sourceUpdateAvailable, …). The OpenAPI spec composes each resource via allOf: [CompBaseResponse, {…}]. Opt-in members (geometry, belongsToJamforelseobjekt, containsPropertyUnits (Jämförelseobjekt only), tags) are omitted unless you request them with ?fields= (Query conventions, Geometry, The Comp Composite & clone lineage).