Data model
Learn the main entities, project boundaries and identifier meanings.
Last updated:
On this page
Organisations and projectsMain entitiesGeometry and attributesIdentifiersDeletion and historyOrganisations and projects
orgs stores organisations and projects their projects. Users belong to an organisation; the super administrator is independent of organisations. Map and technical records carry project_id. Project access is checked against the session in the cookie-authenticated API and the access-key owner in v1 and OGC. Organisation-shared projects differ from membership-based projects; member roles and region permissions can narrow write scope.
Use the API for integrations instead of writing directly to the database. Type, connection, version, licence, quota and history rules are applied together in the API write workflow.
Main entities
| Entity | Meaning and main fields |
|---|---|
features |
Physical feature on the map; id, project_id, type, geom, props, version, deleted |
ref_layers |
Imported reference layer; name, appearance and order |
equipment |
Equipment within a node; node_id, kind, parent_id, props, version |
connections |
Technical connection joining two fiber/port ends at a node; node_id, a, b, location_id, slot |
relations |
Placement and route relationship; kind, child_id, parent_id, seq, via_id, via_no |
talep_items |
Building plan, unit, endpoint, policy and import-source records |
fiber_items |
Fiber allocation, reservation and related rule records |
circuits |
Technical circuit; anchors, saved route and optional endpoint relationship |
optik_items |
Optical profile, selection, frozen calculation and measurement records |
changes |
Before/after values, operation, user, key identifier when present, and batch |
project_members |
Project membership, project role and region/module scope |
tasarimlar, tasarim_eslem, tasarim_olaylar |
Design branch, identifier mapping and review/publication events |
is_paketleri |
Work package and as-built handover workflow |
ekler |
Field note, photo or document target and file metadata |
saha_paketleri, saha_islemler |
Offline package scope, submitted operations and review state |
kaynaklar, kaynak_satirlari |
Reimport source family and accepted baseline |
erisim_anahtarlari |
Integration scope and key digest; the full secret is not retained |
webhooklar, webhook_olaylar, webhook_teslimler |
Subscription, transactional event record and persistent delivery queue |
equipment.parent_id is the equipment's mechanical placement parent. connections.location_id identifies the splice tray and slot its slot. They do not replace the optical connection defined by connections.a and connections.b.
relations.kind=icinde identifies the enclosing site structure; guzergah a route segment; and giris the building relationship of an address entry. Route order is stored in seq, the traversed duct in via_id and the subduct number in via_no.
Geometry and attributes
Geometries are read and written in EPSG:4326, with GeoJSON coordinates in [longitude, latitude] order. General editing stores two-dimensional geometry. OGC services may use the axis order of the selected coordinate system; follow the Content-Crs header. Selecting a different project coordinate system does not change the storage system; conversion occurs during import and export.
GeoJSON feature attributes are under properties. In general editing requests, their editable portion is sent in props. Do not write server-returned properties.id, properties.type or properties.v as arbitrary attributes.
Cable start and end nodes are specified by props.from and props.to. Lines crossing on the map do not by themselves create a technical connection.
Identifiers
Organisation, user, project and reference-layer identifiers are numeric. Map feature, equipment and technical connection identifiers are strings. The server generates a type prefix and sequence number: for example KB- for fiber cables, BN- for buildings, EK- for splice closures, ODF- for ODFs, C- for connections and IL- for relationships.
Do not parse identifiers to infer permissions, order or entity state. Store the complete value returned by the API. A temporary id supplied on creation does not determine the permanent identifier; use the response's tmp mapping. Bundle restore creates new identifiers.
Deletion and history
General editing uses a deleted flag and version increment for primary entities. Dependent records may change or be deleted in the same transaction. History fields before and after carry the values before and after the operation. batch groups changes applied together.
A project bundle carries active project data; it is not a database backup covering all users, sessions and history tables. See Project bundle.