RSLog DataTemplate Format v1
File format: JSON (.json extension) | Current version: 1.0.0
Table of Contents
- Overview
- Top-Level Structure
- Properties
- Data (Settings)
- Lists
- Rock Classification | Soil Classification
- Standard Hatch Patterns | User-Defined Hatch Patterns
- Geologic Categories | Geologic Units
- Sample Types | Field Test Types | Drill Methods
- Moisture Descriptors | Consistency Descriptors | Relative Density Descriptors
- Extra Tags | Sample Location Statuses | Investigation Progress
- Borehole Survey Types | Well Plug Types | Well / Piezometer Types
- Quality Management Roles | Quality Management Statuses
- Guidance for Third-Party Integration
- Version History
Related document: RSLog JSON Export Format
Overview
A DataTemplate defines the reference data, classification systems, field test types, descriptors, and formatting rules available to projects in RSLog. It acts as a standardized configuration that governs what options users see during data entry and how descriptions and reports are generated.
DataTemplates are intended to be published infrequently and shared across organizations or accounts. A department of transportation, for example, might publish a single DataTemplate that all of its consultants import, ensuring consistent terminology, classification tables, and report formatting across every project.
This document describes the JSON structure of a DataTemplate file. It is meant to be used alongside the RSLog JSON Export Format, which documents the project data that references these template definitions.
How the two file types relate: The DataTemplate defines the vocabulary -- which sample types, drill methods, classification terms, descriptors, and other reference data are available. The project JSON (documented in the RSLog JSON Export Format) contains the actual borehole data -- samples, stratigraphy layers, field tests, and so on. Many fields in the project JSON are lookup fields whose values must match entries defined in the DataTemplate. For example, a stratigraphy layer's MoistureDescriptor must be a descriptor value from the DataTemplate's moistureDescriptor list, and a sample's TypeName must match a title in the DataTemplate's sampleType list. See How DataTemplate Lists Map to Project Data for the full mapping.
Top-Level Structure
A DataTemplate file contains three root objects:
{
"properties": { ... },
"data": [ ... ],
"lists": { ... }
}
| Section | Purpose |
|---|---|
properties |
File metadata -- version, name, author, timestamps, identifiers |
data |
Application settings that control data-entry defaults, description compiler behavior, and report formatting |
lists |
Reference lists (lookup tables) used by the template -- classifications, test types, drill methods, descriptors, etc. |
JSON naming convention: All keys in a DataTemplate file use camelCase (e.g. fileVersion, soilClassification, fieldTestType). This differs from the RSLog JSON Export Format, which uses PascalCase.
Properties
Metadata about the template file itself.
{
"properties": {
"fileVersion": "1.0.0",
"fileType": "RSLog Data Template",
"exportedBy": "Jane Smith",
"dateCreated": "2026-03-11T17:28:04.861391Z",
"lastTimeModified": null,
"id": "b024968e-6b33-703f-8709-3a1feb20a250",
"tenantId": null,
"name": "My Organization Template",
"isReadOnly": false
}
}
| Field | Type | Required | Description |
|---|---|---|---|
fileVersion |
string | Yes | Semantic version (e.g. "1.0.0"). Must not exceed the version supported by the target RSLog instance. |
fileType |
string | Yes | Always "RSLog Data Template". |
exportedBy |
string | No | Name of the user who exported the file. Informational only. |
dateCreated |
DateTime | No | UTC timestamp when the file was created. |
lastTimeModified |
DateTime? | No | UTC timestamp of the last modification to the source template. May be null. |
id |
GUID | Yes | Unique identifier for the template. Use a new v4 UUID when creating a template from scratch. |
tenantId |
GUID? | No | System-managed account identifier. Set to null for externally authored files. |
name |
string | Yes | Human-readable template name (e.g. "Caltrans Template"). |
isReadOnly |
bool | No | If true, the template cannot be edited after import. Defaults to false. |
Version Compatibility
RSLog validates the fileVersion on import:
- The major version must match the application's supported major version. Files from an older or newer major version are rejected.
- Minor and patch versions are backward-compatible within the same major version. A file with a lower minor/patch version than the application supports can be imported without issue.
- A file with a version higher than the application supports is rejected with an error prompting the user to update.
Data (Settings)
The data array contains application-level settings as simple key/value pairs:
{
"data": [
{ "name": "App.DateFormat", "value": "yyyy-MM-dd" },
{ "name": "App.DataEntry.SampleType", "value": "SPT Split Spoon" },
...
]
}
Each entry has a name (the setting key) and a value (always a string, even for booleans and numbers). Settings are organized by prefix.
App.DateFormat
| Setting | Description | Example |
|---|---|---|
App.DateFormat |
Date display format used throughout the application | "yyyy-MM-dd" |
App.DataEntry -- Data-Entry Defaults
These settings control default selections and behavior during borehole data entry.
| Setting | Description | Example |
|---|---|---|
App.DataEntry.LineBreak |
Character used for line breaks in description text | "#" |
App.DataEntry.SampleType |
Default sample type (by title) | "SPT Split Spoon" |
App.DataEntry.TestType |
Default field test type (by title) | "Standard Penetration Test (SPT)" |
App.DataEntry.DrillMethod |
Default drilling method (by title) | "Auger (Hollow-Stem)" |
App.DataEntry.Refusal |
Blow count threshold that constitutes refusal | "50" |
App.DataEntry.RefusalText |
Text displayed when refusal is reached | "REF" |
App.DataEntry.WHText |
Text for "weight of hammer" condition | "WH" |
App.DataEntry.WRText |
Text for "weight of rods" condition | "WR" |
App.DataEntry.SptTextAlign |
SPT text alignment (1 = left, 2 = center, 3 = right) | "2" |
App.DataEntry.SptGraphAlign |
SPT graph alignment | "2" |
App.DataEntry.SptNValueAutoCalculate1 through 6 |
Interval assignment for each SPT blow-count field | "1", "2", "3" |
App.DataEntry.SptNValueAutoCalculate1Enabled |
Whether auto-calculation is enabled for the first SPT interval | "True" |
App.DataEntry.StartNotes |
Default text inserted at the start of a borehole log | "Ground Surface" |
App.DataEntry.TerminationNotes |
Default termination note. Supports {depth} placeholder. |
"Bottom of borehole at {depth} bgs." |
App.DataEntry.DefaultStrataLineType |
GUID of the default strata boundary line style | GUID string |
App.DataEntry.AutomaticallyBoringMethod |
Auto-populate boring method on new strata | "True" |
App.DataEntry.ShowAS1726SoilTypes |
Show AS 1726 soil types during data entry | "False" |
DataEntry.AutomaticallyGenerateSPTSample |
Auto-generate an SPT sample when an SPT test is added | "True" |
DataEntry.SyncSPTSampleWithFieldTest |
Keep SPT sample depths in sync with the field test | "True" |
DataEntry.SPTBlowCountSource |
Which value to use as the blow count source ("NValue") |
"NValue" |
App.Compiler -- Description Compiler
These settings define how soil and rock descriptions are automatically assembled from classification data. The compiler templates are themselves JSON strings embedded as values.
| Setting | Description |
|---|---|
App.Compiler.SoilJson |
Soil description template (JSON string). Defines the order and formatting of description components. |
App.Compiler.RockJson |
Rock description template (JSON string). Same structure as the soil template. |
App.Compiler.SoilOptions |
Soil compiler formatting options (JSON string). |
App.Compiler.RockOptions |
Rock compiler formatting options (JSON string). |
Compiler template structure: Each template is a JSON object with a data array of description elements and an options object. Each element in data represents a field that may appear in the compiled description:
{
"name": "GroupName",
"type": "dynamic",
"bold": "false",
"italic": "false",
"underline": "false",
"uppercase": "false",
"beforeText": "",
"afterText": "",
"value": "Group Name *",
"colorClass": "orange"
}
Elements with "type": "space" insert whitespace between fields. The value field is a display label used in the editor; actual data is populated at compile time from the borehole's classification data.
Compiler options:
| Option | Description |
|---|---|
alignment |
Text alignment ("left", "center", "right") |
isRemoveExtraSpace |
Remove redundant whitespace from the compiled output |
isLowercase |
Convert the output to lowercase (except where overridden) |
isRemovePunctuation |
Strip trailing punctuation from empty fields |
isSoiltypesUppercase |
Render soil group names in uppercase |
isRockTypesUppercase |
Render rock type names in uppercase |
isInterimGroupNameMajorType |
Use the major soil type as the interim group name for interbedded strata |
addFillText |
Append fill indicator text when the stratum is classified as fill |
fillText |
The fill indicator text (e.g. "(FILL)") |
soilComponentOrdering |
Controls the ordering of secondary soil components in the description |
Refer to the RSLog JSON Export Format for complete details on soil and rock description fields.
App.Report -- Report & Borehole Log Settings
| Setting | Description | Example |
|---|---|---|
App.Report.RepeatLithologicDataOnPageBreaks |
Repeat lithologic description when a stratum spans a page break | "False" |
App.Report.RepeatLithologicDataDisplayMode |
Display mode for repeated descriptions (0 = full, 1 = abbreviated) | "0" |
App.Report.ShowPiezometerLogColumn |
Show the piezometer column on the borehole log | "True" |
App.Report.HidePiezometerLogColumn |
Force-hide the piezometer column | "False" |
App.Report.PiezometerLogColumnNoData |
Text shown when no piezometer data exists | "No Data" |
App.Report.HidePiezometerReadingTable |
Hide the piezometer reading summary table | "True" |
App.Report.WritePiezometerReadingText |
Write piezometer readings as text instead of a table | "False" |
App.Report.PiezometerReadingNoGroundwaterData |
Text when no groundwater data is available | "No groundwater data" |
App.Report.GroundwaterNullDisplayDuringDrilling |
How to display missing groundwater readings during drilling (0 = hide, 1 = show symbol) | "1" |
App.Report.GroundwaterSymbolDuringDrilling |
Symbol image filename for groundwater during drilling | "groundwater_symbol_hollow_black.png" |
App.Report.GroundwaterNullDisplayShortTerm |
Same as above, for short-term readings | "1" |
App.Report.GroundwaterSymbolShortTerm |
Symbol image for short-term groundwater | "groundwater_symbol_short_term_black.png" |
App.Report.GroundwaterNullDisplayLongTerm |
Same as above, for long-term readings | "1" |
App.Report.GroundwaterSymbolLongTerm |
Symbol image for long-term groundwater | "groundwater_symbol_solid_black.png" |
App.Consistency -- Automatic Consistency Assignment
| Setting | Description | Example |
|---|---|---|
App.Consistency.ColumnName |
Test data column used for automatic consistency/relative density lookup | "N60" |
App.Consistency.TestName |
Field test type (by title) whose results drive the lookup | "Standard Penetration Test (SPT)" |
Lists
The lists object contains the reference data (lookup tables) that define the options available within the template. Each list is an array of objects.
The sections below are grouped by geotechnical domain. For each list, the JSON key is given first, followed by a description and field table.
Rock Classification
JSON key: rockClassification
Defines the classification terms used for rock logging. Each entry belongs to a classification category identified by the type field. A single template typically includes entries across many categories -- strength grades, weathering states, grain sizes, defect characteristics, rock names, and more. The term values from these entries appear as lookup values in the project export -- for example, Stratigraphy.Advanced.Weathering draws from type 3 (Weathering) entries, and Stratigraphy.Advanced.Strength draws from type 10 (Strength) entries. See the lookup mapping table for the full list.
| Field | Type | Required | Description |
|---|---|---|---|
id |
GUID | Yes | Unique identifier |
type |
int | Yes | Classification category (see table below) |
number |
int? | No | Ordering number within the category |
symbol |
string | No | Short code (e.g. "R1", "SW") |
term |
string | No | Descriptive term (e.g. "Very Low", "Slightly Weathered") |
description |
string | No | Extended description or criteria |
ucs |
string | No | Unconfined compressive strength range (strength entries only) |
hostId |
GUID? | No | Parent entry reference (for hierarchical classifications) |
color |
string | No | Display color (hex) |
rockName |
string | No | Rock name (rock type entries only, e.g. "Granite") |
nameModifiers |
string | No | Modifiers appended to the rock name |
category |
string | No | Sub-category within the classification (e.g. "Felsic (coarse-grained)") |
grainSize |
string | No | Grain size range description |
lithifiedProduct |
string | No | Lithified equivalent (clastic rock entries) |
fragment |
string | No | Fragment type (pyroclastic entries) |
readOnly |
bool | No | Whether the entry can be edited by users |
isChanges |
bool | No | Internal tracking flag |
Classification Type Codes:
| Code | Category |
|---|---|
| 1 | Defects -- Roughness |
| 2 | Defects -- Infill Type |
| 3 | Weathering |
| 4 | Defects -- Infill Character |
| 5 | Rock Type -- Sedimentary Rock |
| 6 | Pyroclastic / Igneous Rock |
| 7 | Clastic Rock |
| 8 | Healing |
| 9 | Bedding Spacing |
| 10 | Strength |
| 11 | Defects -- Surface Shape |
| 12 | Slaking |
| 13 | Fracture Density |
| 14 | Hardness |
| 15 | Crystalline / Metamorphic |
| 16 | Rock Type -- Igneous Rock |
| 17 | Rock Type -- Metamorphic Rock |
| 18 | Defects -- Type |
| 19 | Alteration |
| 20 | Defects -- Infill Thickness |
| 21 | Defects -- Fracture Width |
Soil Classification
JSON key: soilClassification
Defines the descriptive terms used for soil logging. Each entry belongs to a classification category identified by the type field. Categories cover particle properties, plasticity, strength indices, structure, and interlayering descriptors. The description values from these entries appear as lookup values in the project export -- for example, Stratigraphy.Components.SandParticleAngularity draws from type 4 (Particle Angularity) entries, and Stratigraphy.General.Structure draws from type 10 (Structure) entries. See the lookup mapping table for the full list.
| Field | Type | Required | Description |
|---|---|---|---|
type |
int | Yes | Classification category (see table below) |
soilClassificationTypeName |
string | No | Custom category name override. Usually null. |
description |
string | Yes | The descriptor term (e.g. "Subangular", "Nonplastic", "Fissured") |
criteria |
string | No | Criteria or definition for the term |
definition |
string | No | Additional definition text |
seiveSize |
string | No | Sieve size (particle size entries) |
particleSize |
string | No | Particle size range expression |
Soil Classification Type Codes:
| Code | Category |
|---|---|
| 1 | Color Term |
| 2 | Proportion |
| 3 | Particle Size |
| 4 | Particle Angularity |
| 5 | Particle Shape |
| 6 | Plasticity |
| 7 | Dry Strength |
| 8 | Dilatancy |
| 9 | Toughness |
| 10 | Structure |
| 11 | Cementation |
| 12 | Interbed Joiner |
Standard Hatch Patterns
JSON key: hatchPatternStandard
Standard lithologic hatch patterns (also called soil symbols) used on borehole logs to represent soil and rock types. These follow established classification systems (USCS, AGS, etc.). When project data references a SoilSymbol (e.g. "ML", "CH", "GP"), it resolves against the title field of entries in this list.
| Field | Type | Required | Description |
|---|---|---|---|
id |
GUID | Yes | Unique identifier |
title |
string | No | Pattern title (typically the classification symbol, e.g. "SP", "CL") |
agsLegendCodeId |
GUID? | No | Link to an AGS legend code, if applicable |
soilSymbolId |
GUID? | No | Link to a built-in soil symbol image |
displayDescription |
string | No | Description shown to the user (e.g. "Poorly Graded Sand With Gravel") |
forecolor |
string | No | Foreground color override (hex) |
backColor |
string | No | Background color override (hex) |
category |
string | No | Classification system ("USCS", "AGS", etc.) |
imageFileName |
string | No | Filename of the hatch pattern image (e.g. "SP.jpg") |
customImageFileName |
string | No | Filename of a custom replacement image |
User-Defined Hatch Patterns
JSON key: hatchPatternUserDefined
Custom hatch patterns created by the organization. These allow teams to define lithologic symbols beyond the standard USCS/AGS sets. The image data is embedded directly in the file as a compressed string.
| Field | Type | Required | Description |
|---|---|---|---|
id |
GUID | Yes | Unique identifier |
title |
string | Yes | Pattern name (max 50 characters) |
description |
string | Yes | Description (max 256 characters) |
hatchPatternImage |
null | No | Unused in exported files (always null) |
imagePath |
string | No | Relative path to the stored image |
compressedImage |
string | No | GZip-compressed, Base64-encoded image data |
hatchFilename |
string | No | Image filename |
replacedHatchPattern |
bool | No | Whether this pattern replaces an existing standard pattern |
foreColor |
string | No | Foreground color (hex, default "#000000") |
backColor |
string | No | Background color (hex, default "#FFFFFF") |
scaleFactor |
float | No | Image scale factor (default 1) |
Geologic Categories
JSON key: geologicCategory
Top-level groupings for geologic units (e.g. "Fill", "Geologic Formation"). These provide an organizational hierarchy for the geologic units list.
| Field | Type | Required | Description |
|---|---|---|---|
id |
GUID | Yes | Unique identifier |
categoryName |
string | Yes | Category name |
description |
string | No | Description |
color |
string | Yes | Display color (hex) |
Geologic Units
JSON key: geologicUnit
Individual geologic formations or units assigned to strata during logging. Each unit belongs to a geologic category.
| Field | Type | Required | Description |
|---|---|---|---|
id |
GUID | Yes | Unique identifier |
unit |
string | Yes | Unit name (e.g. "Bay Mud", "Franciscan Formation") |
geologicCategoryId |
GUID? | No | References an id in geologicCategory. Must match an entry in the same file. |
description |
string | No | Description of the unit |
color |
string | Yes | Display color (hex) |
Sample Types
JSON key: sampleType
Defines the sampling methods available during data entry. Each type has a log symbol and optionally a representative image shown on the borehole log.
| Field | Type | Required | Description |
|---|---|---|---|
id |
GUID | Yes | Unique identifier |
title |
string | Yes | Sample type name (e.g. "SPT Split Spoon", "Shelby Tube") |
code |
string | No | Short code (e.g. "ss", "core") |
logSymbol |
string | Yes | Symbol shown on the borehole log (e.g. "S", "C") |
imagePath |
string | No | Path to the sample type image |
compressedImage |
string | No | GZip-compressed, Base64-encoded image data |
existingPhotoPath |
string | No | Path to an existing image on the server |
filePath |
string | No | Original file path of the image |
fileName |
string | No | Image filename |
isUser |
bool | No | Whether this is a user-created sample type (vs. system-provided) |
Field Test Types
JSON key: fieldTestType
Defines the in-situ tests available for data entry. Each test type specifies its data columns, allowing RSLog to create the appropriate data-entry fields and report columns.
| Field | Type | Required | Description |
|---|---|---|---|
title |
string | Yes | Test name (e.g. "Standard Penetration Test (SPT)", "Cone Penetration Test (CPT)") |
code |
string | No | Short code (e.g. "spt", "cpt") |
testDataColumns |
string | No | Comma-separated list of data column names (e.g. "N60,N1,N2,N3,N4,P1,P2,P3,P4,DriveLength,NValue") |
deletedColumns |
string | No | Columns removed from the default set |
generatedColumnTitle |
string | No | Title of an auto-generated summary column (e.g. "Final N") |
generatedColumnFormat |
string | No | Format string for the generated column (e.g. "{N1}/{P1}#{N2}/{P2}#{N3}/{P3}") |
testTypeConfig |
object? | No | Additional configuration for specialized test types |
isReadOnly |
bool | No | Whether the test type definition can be edited |
defaultDepthInterval |
double? | No | Default depth interval between tests (if applicable) |
Note: Field test types do not include an id field. They are matched by title during import.
Drill Methods
JSON key: drillMethod
The drilling and excavation methods available for selection during logging.
| Field | Type | Required | Description |
|---|---|---|---|
id |
GUID | Yes | Unique identifier |
title |
string | Yes | Method name (e.g. "Auger (Hollow-Stem)", "Rotary Drilled Diamond Core") |
symbol |
string | No | Log symbol (e.g. "A", "R-Rock") |
isUser |
bool | No | Whether this is a user-created method |
existingPhotoPath |
string | No | Path to an existing image |
compressedImage |
string | No | GZip-compressed, Base64-encoded image data |
Extra Tags
JSON key: extraTag
User-defined metadata fields that can be attached to projects or boreholes. These allow organizations to capture additional data beyond the standard RSLog fields. The DataTemplate defines the tag definitions (name, data type, which entity it applies to). The project export then contains tag instances as name/value pairs in the ExtraTags array on each project or borehole. A tag instance's name must match a name in this list, and its entityType must correspond to the entity it is attached to (1 = Project, 2 = Borehole).
| Field | Type | Required | Description |
|---|---|---|---|
id |
GUID | Yes | Unique identifier |
name |
string | Yes | Tag name (e.g. "Sampler Type(s) and Size(s) (ID)") |
value |
string | No | Default value |
description |
string | No | Description of the tag's purpose |
dataType |
int | Yes | Value type (see table below) |
entityType |
int | Yes | What the tag attaches to (see table below) |
Data Type Codes:
| Code | Type |
|---|---|
| 1 | Number |
| 2 | String |
| 3 | Boolean |
| 4 | Pick List |
Entity Type Codes:
| Code | Entity |
|---|---|
| 1 | Project |
| 2 | Borehole |
Moisture Descriptors
JSON key: moistureDescriptor
Terms used to describe the moisture condition of soil during logging.
| Field | Type | Required | Description |
|---|---|---|---|
id |
GUID | Yes | Unique identifier |
descriptor |
string | Yes | Moisture term (e.g. "Dry", "Moist", "Wet") (max 100 characters) |
symbol |
string | Yes | Short code (e.g. "D", "M", "W") (max 10 characters) |
minMoisture |
double? | No | Lower bound of the moisture range (if defined) |
maxMoisture |
double? | No | Upper bound of the moisture range (if defined) |
Consistency Descriptors
JSON key: consistency
Consistency terms for fine-grained (cohesive) soils, correlated to SPT blow-count ranges per standard geotechnical practice.
| Field | Type | Required | Description |
|---|---|---|---|
id |
GUID | Yes | Unique identifier |
descriptor |
string | Yes | Consistency term (e.g. "Very Soft", "Stiff", "Hard") |
minSPT |
int? | No | Minimum SPT N-value for this range |
maxSPT |
int? | No | Maximum SPT N-value for this range. null indicates no upper bound. |
Relative Density Descriptors
JSON key: relativeDensity
Relative density terms for coarse-grained (granular) soils, correlated to SPT blow-count ranges.
| Field | Type | Required | Description |
|---|---|---|---|
id |
GUID | Yes | Unique identifier |
descriptor |
string | Yes | Density term (e.g. "Very Loose", "Medium Dense", "Very Dense") |
minSPT |
int? | No | Minimum SPT N-value for this range |
maxSPT |
int? | No | Maximum SPT N-value for this range. null indicates no upper bound. |
Sample Location Statuses
JSON key: sampleLocationStatus
Tracks the physical location and testing status of collected samples through their lifecycle.
| Field | Type | Required | Description |
|---|---|---|---|
id |
GUID | Yes | Unique identifier |
descriptor |
string | Yes | Status description (e.g. "Location: Lab", "Lab. Testing: In Progress") |
symbol |
string | Yes | Short code (e.g. "L-LB", "T-IP") |
code |
string | No | Additional code |
Investigation Progress
JSON key: investigationProgress
Defines the stages a borehole progresses through during field investigation. Each stage has a color and progress indicator for dashboard display.
| Field | Type | Required | Description |
|---|---|---|---|
id |
GUID | Yes | Unique identifier |
title |
string | Yes | Stage name (e.g. "Planned", "Drilling / Excavating", "Completed") |
description |
string | No | Description of what the stage represents |
indicator |
float | Yes | Progress percentage (0--100) |
color |
string | Yes | Display color (hex) |
order |
int | No | Sort order |
code |
string | No | Short code (e.g. "planned", "drilling", "completed") |
Borehole Survey Types
JSON key: boreholeSurvey
Types of downhole survey or logging instruments that can be recorded on a borehole.
| Field | Type | Required | Description |
|---|---|---|---|
id |
GUID | Yes | Unique identifier |
title |
string | Yes | Survey type name (e.g. "Inclinometer", "Sonar Caliper") |
symbol |
string | No | Short code (e.g. "IN", "SC") |
Well Plug Types
JSON key: wellPlugType
Types of plugs or caps used for well completion at the top of a piezometer or monitoring well.
| Field | Type | Required | Description |
|---|---|---|---|
id |
GUID | Yes | Unique identifier |
descriptor |
string | Yes | Plug type name (e.g. "J Plug", "PVC Cap") |
symbol |
string | Yes | Short code (e.g. "JP", "PVC") |
Well / Piezometer Types
JSON key: wellType
Types of piezometers or monitoring wells that can be installed in a borehole.
| Field | Type | Required | Description |
|---|---|---|---|
id |
GUID | Yes | Unique identifier |
descriptor |
string | Yes | Instrument type name (e.g. "Standpipe", "Vibrating Wire") |
symbol |
string | Yes | Short code (e.g. "SP", "VW") |
Quality Management Roles
JSON key: qualityManagementRole
Defines the roles in the quality management workflow for borehole log review and approval.
| Field | Type | Required | Description |
|---|---|---|---|
id |
GUID | Yes | Unique identifier |
name |
string | Yes | Role name (e.g. "Field Logger", "Reviewer", "Approver") (max 250 characters) |
description |
string | No | Description of the role's responsibilities (max 1024 characters) |
readOnly |
bool | No | Whether the role definition can be edited. System-defined roles are read-only. |
Quality Management Statuses
JSON key: qualityManagementStatus
Defines the workflow states a borehole log passes through during the review and approval process.
| Field | Type | Required | Description |
|---|---|---|---|
id |
GUID | Yes | Unique identifier |
name |
string | Yes | Status name (e.g. "Draft", "Under Review", "Approved") (max 250 characters) |
description |
string | No | Description of the status (max 1024 characters) |
color |
string | No | Display color (hex, max 20 characters) |
readOnly |
bool | No | Whether the status definition can be edited. System-defined statuses are read-only. |
Guidance for Third-Party Integration
This section is for software vendors or developers building tools that produce DataTemplate files for import into RSLog.
How DataTemplate Lists Map to Project Data
When producing project JSON (described in the RSLog JSON Export Format), many fields are lookup fields whose values must match entries defined in the DataTemplate. The table below shows which DataTemplate list supplies values for each lookup field in the project export.
| Project export field | DataTemplate list | Matched on |
|---|---|---|
Project.UnitSystem |
(system lookup -- not in the DataTemplate) | name |
Project.DataTemplateName |
(the DataTemplate's own properties.name) |
exact match |
Project.CoordinateSystem |
(system lookup -- not in the DataTemplate) | name |
Project.ExtraTags[].name |
extraTag |
name (entity type 1 = Project) |
Borehole.ExtraTags[].name |
extraTag |
name (entity type 2 = Borehole) |
Sample.TypeName |
sampleType |
title |
Sample.MoistureLevel |
moistureDescriptor |
descriptor |
Sample.LocationStatusDescriptor |
sampleLocationStatus |
descriptor |
Sample.ColorDropdown.ColorTermDescription |
soilClassification (type 1 -- Color Term) |
description |
Stratigraphy.SoilSymbol |
hatchPatternStandard |
title |
Stratigraphy.ClassificationSystem.SelectedSystem |
(enum -- see ClassificationSystemEnum) | integer code |
Stratigraphy.GeologicUnit.Unit |
geologicUnit |
unit |
Stratigraphy.GeologicUnit.Category |
geologicCategory |
categoryName |
Stratigraphy.General.MoistureDescriptor |
moistureDescriptor |
descriptor |
Stratigraphy.General.ConsistencyDescriptorDescriptor |
consistency |
descriptor |
Stratigraphy.General.RelativeDensityDescriptor |
relativeDensity |
descriptor |
Stratigraphy.General.Structure |
soilClassification (type 10 -- Structure) |
description |
Stratigraphy.General.GrainSize |
soilClassification (type 3 -- Particle Size) |
description |
Stratigraphy.Components.*.ParticleAngularity |
soilClassification (type 4 -- Particle Angularity) |
description |
Stratigraphy.Components.*.Proportion |
soilClassification (type 2 -- Proportion) |
description |
Stratigraphy.Components.*.Cementation |
soilClassification (type 11 -- Cementation) |
description |
Stratigraphy.Components.*.ParticleShape |
soilClassification (type 5 -- Particle Shape) |
description |
Stratigraphy.Components.*.Plasticity |
soilClassification (type 6 -- Plasticity) |
description |
Stratigraphy.Advanced.Weathering |
rockClassification (type 3 -- Weathering) |
term |
Stratigraphy.Advanced.Strength |
rockClassification (type 10 -- Strength) |
term |
Stratigraphy.Advanced.Hardness |
rockClassification (type 14 -- Hardness) |
term |
Stratigraphy.Advanced.FractureDensity |
rockClassification (type 13 -- Fracture Density) |
term |
FieldTest.TestTitle |
fieldTestType |
title |
BoringMethod.DrillMethod |
drillMethod |
title |
BoreholeSurvey.Type |
boreholeSurvey |
title |
Piezometer.PiezoTypeSymbol |
wellType |
symbol |
Piezometer.PlugTypeSymbol |
wellPlugType |
symbol |
Borehole.ProgressStatus.Name |
investigationProgress |
title |
Borehole.QMStatusTitle |
qualityManagementStatus |
name |
Values that do not match an entry in the DataTemplate will be rejected or silently dropped during import. When generating project data, always use values drawn directly from the target DataTemplate.
Generating a Valid File
Start from an export. The easiest way to understand the expected structure is to export a DataTemplate from RSLog and use it as a reference. The JSON is the same format in both directions.
Set the version.
properties.fileVersionmust be set to a version the target RSLog instance supports. Use"1.0.0"unless you know the target supports a newer version.Generate unique IDs. Every entry that has an
idfield must have a unique v4 UUID. If you are generating a template from scratch, create new UUIDs for every item.Maintain cross-references. Some lists reference entries in other lists by ID:
geologicUnit.geologicCategoryIdmust match anidin thegeologicCategorylist.hatchPatternStandard.agsLegendCodeIdreferences AGS legend codes (these are system-managed; set tonullif not applicable).
All referenced IDs must be present within the same file.
Images. Sample type icons, drill method symbols, and user-defined hatch patterns can include embedded image data. Encode the image as a GZip-compressed, Base64-encoded string in the
compressedImagefield. Alternatively, leavecompressedImageempty and provide afilePathorimagePathif the image is already available on the server.Settings are optional. The
dataarray can be omitted entirely or partially populated. RSLog applies default values for any settings not present in the file.Lists are optional. Omitted lists will not overwrite existing template data during import. Include only the lists your integration needs to define.
Field Test Type Columns
When defining fieldTestType entries, the testDataColumns string is a comma-separated list of column names that RSLog will create for data entry. For the Standard Penetration Test, the expected columns are:
N60,N1,N2,N3,N4,P1,P2,P3,P4,DriveLength,NValue,RecoveryLength,Recovery,Type
The generatedColumnFormat uses curly-brace placeholders to reference column values. For example, "{N1}/{P1}#{N2}/{P2}#{N3}/{P3}" produces a formatted blow-count string like "8/6#10/6#12/6".
Read-Only Entries
Some entries (particularly quality management roles and statuses) may have readOnly: true. These are system-defined and cannot be modified by users after import, but they must still be included in the file to establish the workflow.
Validation
RSLog validates the file on import. Common rejection reasons:
fileVersionexceeds the application's maximum supported version.fileVersionhas a different major version than the application supports.- Required fields are missing or exceed their maximum length.
- Duplicate entries within a list.
Version History
| Version | Date | Notes |
|---|---|---|
| 1.0.0 | 2026-03-12 | Initial release |