# esri/i3s-spec architecture

> Architecture diagram of the GitHub repository esri/i3s-spec, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/esri/i3s-spec
- Repository: https://github.com/esri/i3s-spec

## Overview

This repository defines the I3S scene-layer and SLPK formats, their layer-specific schemas and REST access conventions, and documents a converter for upgrading or validating packages. The principal workflow is consuming or producing 3D scene data as a layer, encoding it as I3S/SLPK, and accessing its resources through scene-service endpoints. The converter is a separate documented capability. No implementation excerpts were available, so links show only relationships stated in the README.

Main entry points: [`format/Indexed 3d Scene Layer Format Specification.md`](https://github.com/esri/i3s-spec/blob/master/format/Indexed%203d%20Scene%20Layer%20Format%20Specification.md) (I3S specification), [`docs/1.10/3DSceneLayer.psl.md`](https://github.com/esri/i3s-spec/blob/master/docs/1.10/3DSceneLayer.psl.md) (I3S / SLPK), [`docs/1.10/3Dobject_ReadMe.md`](https://github.com/esri/i3s-spec/blob/master/docs/1.10/3Dobject_ReadMe.md) (3D objects), [`docs/1.10/IntegratedMesh_ReadMe.md`](https://github.com/esri/i3s-spec/blob/master/docs/1.10/IntegratedMesh_ReadMe.md) (Integrated mesh)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_format["Format specification"]
  node_i3s_spec["I3S specification"]
  node_lod["LOD model<br/>[LevelofDetail.md]"]
  node_package["I3S / SLPK"]
end

subgraph group_layers["Layer schemas"]
  node_objects["3D objects<br/>[3Dobject_ReadMe.md]"]
  node_integrated_mesh["Integrated mesh"]
  node_points["Points<br/>[Point_ReadMe.md]"]
  node_buildings["Building layers<br/>[BSL_ReadMe.md]"]
  node_point_cloud["Point cloud<br/>[pcsl_ReadMe.md]"]
end

subgraph group_access["Service access"]
  node_rest_access["REST access"]
end

subgraph group_tools["Conversion tool"]
  node_converter["I3S converter"]
  node_converter_examples["Converter examples"]
end

node_implementer(("Data implementer"))
node_consumer(("Scene client"))
node_converter_user(("Converter user"))
node_scene_service["Scene service"]

node_implementer -->|"implements layer"| node_objects
node_implementer -->|"implements layer"| node_integrated_mesh
node_implementer -->|"implements layer"| node_points
node_implementer -->|"implements layer"| node_buildings
node_implementer -->|"implements layer"| node_point_cloud
node_objects -->|"follows format"| node_i3s_spec
node_integrated_mesh -->|"follows format"| node_i3s_spec
node_points -->|"follows format"| node_i3s_spec
node_buildings -->|"follows format"| node_i3s_spec
node_point_cloud -->|"follows format"| node_i3s_spec
node_i3s_spec -->|"defines encoding"| node_package
node_lod -->|"describes levels"| node_i3s_spec
node_scene_service -->|"exposes endpoints"| node_rest_access
node_rest_access -->|"serves resources"| node_package
node_consumer -->|"requests resources"| node_scene_service
node_converter_user -->|"runs tool"| node_converter
node_converter -->|"validates or converts"| node_package

click node_i3s_spec "https://github.com/esri/i3s-spec/blob/master/format/Indexed%203d%20Scene%20Layer%20Format%20Specification.md"
click node_lod "https://github.com/esri/i3s-spec/blob/master/format/LevelofDetail.md"
click node_package "https://github.com/esri/i3s-spec/blob/master/docs/1.10/3DSceneLayer.psl.md"
click node_objects "https://github.com/esri/i3s-spec/blob/master/docs/1.10/3Dobject_ReadMe.md"
click node_integrated_mesh "https://github.com/esri/i3s-spec/blob/master/docs/1.10/IntegratedMesh_ReadMe.md"
click node_points "https://github.com/esri/i3s-spec/blob/master/docs/1.10/Point_ReadMe.md"
click node_buildings "https://github.com/esri/i3s-spec/blob/master/docs/1.10/BSL_ReadMe.md"
click node_point_cloud "https://github.com/esri/i3s-spec/blob/master/docs/2.1/pcsl_ReadMe.md"
click node_rest_access "https://github.com/esri/i3s-spec/blob/master/docs/1.10/3DSceneLayer.psl.md"
click node_converter "https://github.com/esri/i3s-spec/blob/master/i3s_converter/i3s_converter_ReadMe.md"
click node_converter_examples "https://github.com/esri/i3s-spec/blob/master/i3s_converter/i3s_converter_examples.md"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_i3s_spec,node_lod,node_package,node_consumer,node_converter_user toneBlue
class node_objects,node_integrated_mesh,node_points,node_buildings,node_point_cloud toneAmber
class node_rest_access toneMint
class node_converter,node_converter_examples toneRose
class node_implementer,node_scene_service toneIndigo
```

## Components

### Format specification

- [I3S specification](https://github.com/esri/i3s-spec/blob/master/format/Indexed%203d%20Scene%20Layer%20Format%20Specification.md): `format/Indexed 3d Scene Layer Format Specification.md`
- [LOD model](https://github.com/esri/i3s-spec/blob/master/format/LevelofDetail.md): `format/LevelofDetail.md`
- [I3S / SLPK](https://github.com/esri/i3s-spec/blob/master/docs/1.10/3DSceneLayer.psl.md): `docs/1.10/3DSceneLayer.psl.md`

### Layer schemas

- [3D objects](https://github.com/esri/i3s-spec/blob/master/docs/1.10/3Dobject_ReadMe.md): `docs/1.10/3Dobject_ReadMe.md`
- [Integrated mesh](https://github.com/esri/i3s-spec/blob/master/docs/1.10/IntegratedMesh_ReadMe.md): `docs/1.10/IntegratedMesh_ReadMe.md`
- [Points](https://github.com/esri/i3s-spec/blob/master/docs/1.10/Point_ReadMe.md): `docs/1.10/Point_ReadMe.md`
- [Building layers](https://github.com/esri/i3s-spec/blob/master/docs/1.10/BSL_ReadMe.md): `docs/1.10/BSL_ReadMe.md`
- [Point cloud](https://github.com/esri/i3s-spec/blob/master/docs/2.1/pcsl_ReadMe.md): `docs/2.1/pcsl_ReadMe.md`

### Service access

- [REST access](https://github.com/esri/i3s-spec/blob/master/docs/1.10/3DSceneLayer.psl.md): `docs/1.10/3DSceneLayer.psl.md`

### Conversion tool

- [I3S converter](https://github.com/esri/i3s-spec/blob/master/i3s_converter/i3s_converter_ReadMe.md): `i3s_converter/i3s_converter_ReadMe.md`
- [Converter examples](https://github.com/esri/i3s-spec/blob/master/i3s_converter/i3s_converter_examples.md): `i3s_converter/i3s_converter_examples.md`

### Other components

- **Data implementer**
- **Scene client**
- **Converter user**
- **Scene service**

## Connections

- Data implementer → 3D objects: implements layer
- Data implementer → Integrated mesh: implements layer
- Data implementer → Points: implements layer
- Data implementer → Building layers: implements layer
- Data implementer → Point cloud: implements layer
- 3D objects → I3S specification: follows format
- Integrated mesh → I3S specification: follows format
- Points → I3S specification: follows format
- Building layers → I3S specification: follows format
- Point cloud → I3S specification: follows format
- I3S specification → I3S / SLPK: defines encoding
- LOD model → I3S specification: describes levels
- Scene service → REST access: exposes endpoints
- REST access → I3S / SLPK: serves resources
- Scene client → Scene service: requests resources
- Converter user → I3S converter: runs tool
- I3S converter → I3S / SLPK: validates or converts
