Get started

    API Endpoint

        https://api.rocscience.com/
                

The RSLog API provides programatic access to CRUD action for many endpoints and entities.

To use this API, you need to have these features enabled and the correct permissions. Please visit us at Contact Us if you have any questions. For more information about RSLog, view the RSLog Documentation.

Creating a REST Request

REST requests can be used in code, a browser, or command line. Each REST request consists of a base url, an endpoint, headers, and a body. The base url is always the same, https://www.rslogonline.com/. The endpoint is specific to each request. The header is used to perform authentication. The body consist of all data being sent to the API. This documentation will specify each of these elements for all available APIs.

Each REST request must have an HTTP method identified to perform a specific function. These types are display in the table below and must be specified when making each request.

URL STRUCTURE

https://www.rslogonline.com/{endpoint}

HTTP Methods

Request Type Description
GET Retrieve data
POST Create new resources
PUT Replace an existing resource
DELETE Delete data

How To Connect

POST

To connect to the RSLog API and recieve a token, send a post request to the follwing url with the body of the request specified below:
/api/connect/token

BODY

x-www-form-urlencoded

Key Example Value
tenant RSLog
username user1
password ****

Using the Token

Once you have recieved the token, add it to the header of each API call. See an example header below:

Key Example Value
Authorization Bearer [token]

Projects

POST


## Here is an example POST BODY
{
    "title" : "Geographic",
    "contactId" : "10B36C5D-6271-0A48-787B-3A054DA59D0E",
    "projectStatusId" : "62F2F00F-E014-4781-B121-367FE22C3270",
    "unitSystemId" : "FF4D854B-423F-4C53-B5F7-2F22AE87B1D4",
    "coordinateSystemId" : "234E363F-9096-4AFC-A95D-4E791F7C190B",
    "lat" : 32.40939,
    "long": -23.30293
}
    

To create a new project you need to make a POST call to the follwing url:
/api/v1/project

BODY PARAMETERS

Field Type Description
Title string Title of the project

Max length: 250 characters
ContactId Guid ID of the contact associated with the project

Must correspond to a valid Contact
ProjectStatusId Guid ID of the project status

Must correspond to a valid Project Status
The title of the project cannot be "Archived"
UnitSystemId Guid ID of the unit system

Must correspond to a valid Unit Systems
CoordinateSystemId Guid ID of the coordinate system

Must correspond to a valid Coordinate System
JobNo string (optional) Job number

Max length: 50 characters
LeadEngineer string (optional) Name of the lead engineer

Max length: 250 characters
SiteLocation string (optional) Location of the site

Max length: 250 characters
SiteUtmZone int (optional) UTM zone of the site

If coordinate system is UTM: Must be between 1 and 60 (inclusive)
AnonymousDataSharing bool (optional) Whether anonymous data sharing is enabled
Ellipsoid string (optional) Ellipsoid used for coordinates

Max length: 250 characters
IsExample bool (optional) Whether this is an example project
Notes string (optional) Additional notes

Max length: 1024 characters
FolderPath string (optional) Path to the project folder

Max length: 250 characters
Lat double (optional) Latitude
Long double (optional) Longitude
Easting double (optional) Easting coordinate
Northing double (optional) Northing coordinate
Elevation double (optional) Elevation
SiteUtmZoneString string (optional) UTM zone string

Max length: 1 character
If coordinate system is UTM: Must be a single letter between C and X
UserProjects List<UserProjectDto> (optional) List of user projects associated with this project
UnitSystemString string (optional) String representation of the unit system
PolygonCoordinates string (optional) Coordinates of the polygon
PolylineCoordinates string (optional) Coordinates of the polyline
CoordinateSystemString string (optional) String representation of the coordinate system
ImportFrom string (optional) Source of import

Max length: 100 characters
IsPloygon bool (optional) Whether the project uses a polygon
IsHideNullValue bool (optional) Whether to hide null values
ZoomLevel int (optional) Zoom level for map display
IsStatusChange bool (optional) Whether the status has changed
Division string (optional) Division

Max length: 128 characters
InstallationDistrict string (optional) Installation district

Max length: 128 characters
Route string (optional) Route

Max length: 128 characters
County string (optional) County

Max length: 128 characters
StructureName string (optional) Name of the structure

Max length: 128 characters
Postmile string (optional) Postmile

Max length: 128 characters
StructureNumber string (optional) Number of the structure

Max length: 128 characters
CoordinateReference string (optional) Coordinate reference

Max length: 128 characters
Required if coordinate system is Projected
IsEpgs bool (optional) Whether EPGS is used

Required if coordinate system is Projected
CoordinateUnit string (optional) Unit of coordinates

Max length: 128 characters
IsLocked bool (optional) Whether the project is locked
IsArchived bool (optional) Whether the project is archived
ExtraTagJsonData string (optional) Additional JSON data for tags

GET

To get a project, you need to make a GET call to the following url:
/api/v1/project/{id}

GET ALL Projects

To get all projects, you need to make a GET call to the following url:
/api/v1/projects

GET ALL Boreholes

To get all boreholes from a project, you need to make a GET call to the following url:
/api/v1/project/{id}/boreholes

PUT

To get a stratigraphy you need to make a GET call to the following url:
/api/v1/project/{id}

BODY PARAMETERS

Field Type Description
Title string Title of the project

Max length: 250 characters
ContactId Guid ID of the contact associated with the project

Must correspond to a valid Contact
ProjectStatusId Guid ID of the project status

Must correspond to a valid Project Status
The title of the project cannot be "Archived"
UnitSystemId Guid ID of the unit system

Must correspond to a valid Unit Systems
CoordinateSystemId Guid ID of the coordinate system

Must correspond to a valid Coordinate System
JobNo string (optional) Job number

Max length: 50 characters
LeadEngineer string (optional) Name of the lead engineer

Max length: 250 characters
SiteLocation string (optional) Location of the site

Max length: 250 characters
SiteUtmZone int (optional) UTM zone of the site

If coordinate system is UTM: Must be between 1 and 60 (inclusive)
AnonymousDataSharing bool (optional) Whether anonymous data sharing is enabled
Ellipsoid string (optional) Ellipsoid used for coordinates

Max length: 250 characters
IsExample bool (optional) Whether this is an example project
Notes string (optional) Additional notes

Max length: 1024 characters
FolderPath string (optional) Path to the project folder

Max length: 250 characters
Lat double (optional) Latitude
Long double (optional) Longitude
Easting double (optional) Easting coordinate
Northing double (optional) Northing coordinate
Elevation double (optional) Elevation
SiteUtmZoneString string (optional) UTM zone string

Max length: 1 character
If coordinate system is UTM: Must be a single letter between C and X
UserProjects List<UserProjectDto> (optional) List of user projects associated with this project
UnitSystemString string (optional) String representation of the unit system
PolygonCoordinates string (optional) Coordinates of the polygon
PolylineCoordinates string (optional) Coordinates of the polyline
CoordinateSystemString string (optional) String representation of the coordinate system
ImportFrom string (optional) Source of import

Max length: 100 characters
IsPloygon bool (optional) Whether the project uses a polygon
IsHideNullValue bool (optional) Whether to hide null values
ZoomLevel int (optional) Zoom level for map display
IsStatusChange bool (optional) Whether the status has changed
Division string (optional) Division

Max length: 128 characters
InstallationDistrict string (optional) Installation district

Max length: 128 characters
Route string (optional) Route

Max length: 128 characters
County string (optional) County

Max length: 128 characters
StructureName string (optional) Name of the structure

Max length: 128 characters
Postmile string (optional) Postmile

Max length: 128 characters
StructureNumber string (optional) Number of the structure

Max length: 128 characters
CoordinateReference string (optional) Coordinate reference

Max length: 128 characters
Required if coordinate system is Projected
IsEpgs bool (optional) Whether EPGS is used

Required if coordinate system is Projected
CoordinateUnit string (optional) Unit of coordinates

Max length: 128 characters
IsLocked bool (optional) Whether the project is locked
IsArchived bool (optional) Whether the project is archived
ExtraTagJsonData string (optional) Additional JSON data for tags

Boreholes

POST


    ## Here is an example POST BODY
    {
        "name" : "API's Borehole",
        "testHoleType" : "0",
        "depth" : 43,
        "projectId" : "635be7fa-0c71-21b4-1628-3a0e79f4115b",
        "boreholeStatusId" : "17C53CE0-036E-40C7-A204-1AE30B0AD158"
    }
        

To create a new borehole you need to make a POST call to the following url:
/api/v1/borehole

BODY PARAMETERS

Field Type Description
TestHoleType string Type of test hole

Must be either "0" or "1"
Max length: 1 character
Name string Name of the borehole

Max length: 100 characters
Depth double Depth of the borehole
ProjectId Guid ID of the project this borehole belongs to

Must correspond to a valid project
BoreholeStatusId Guid ID of the borehole status

Must correspond to a valid Borehole Status
GroundwaterLevel double (optional) Groundwater level
FillMaterial double (optional) Fill material depth
StartDate DateTime (optional) Start date of drilling
EndDate DateTime (optional) End date of drilling
LoggedBy string (optional) Name of the person who logged the borehole

Max length: 250 characters
ReviewedBy string (optional) Name of the person who reviewed the borehole log

Max length: 250 characters
Elevation double (optional) Elevation of the borehole
X double (optional) X coordinate
Y double (optional) Y coordinate
Easting double (optional) Easting coordinate
Northing double (optional) Northing coordinate
Lat double (optional) Latitude
Long double (optional) Longitude
DrillingContractor string (optional) Name of the drilling contractor

Max length: 255 characters
Notes string (optional) Additional notes

Max length: 2000 characters
MarkIconPath string (optional) Path to the mark icon

Max length: 2000 characters
PiezoType string (optional) Type of piezometer

Max length: 65535 characters
PlugType string (optional) Type of plug

Max length: 65535 characters
EndCapType string (optional) Type of end cap

Max length: 65535 characters
PipeDia string (optional) Pipe diameter

Max length: 65535 characters
TrendDeg double (optional) Trend degree
PlungeDeg double (optional) Plunge degree
AGSTestHoleTypes string (optional) AGS test hole types

Max length: 65535 characters
AGSTestHoleTypeCode string (optional) AGS test hole type code

Max length: 65535 characters
IsHideNullValue bool (optional) Whether to hide null values
Size string (optional) Size of the borehole

Max length: 65535 characters
Equipment string (optional) Equipment used

Max length: 65535 characters
ThicknessOfOverburden double (optional) Thickness of overburden
DepthDrilledIntoRock double (optional) Depth drilled into rock
TotalCoreBoxes double (optional) Total number of core boxes
NameOfDriller string (optional) Name of the driller

Max length: 65535 characters
Disturbed double (optional) Disturbed depth
UnDisturbed double (optional) Undisturbed depth
RockFeatures bool (optional) Whether rock features are present
IsImportData bool (optional) Whether the data is imported
AGSPiezoTypeCode string (optional) AGS piezometer type code

Max length: 65535 characters
AGSPiezoType Guid (optional) AGS piezometer type ID
Benchmark string (optional) Benchmark information

Max length: 65535 characters
LiftingMechanism string (optional) Lifting mechanism used

Max length: 65535 characters
ElevationSurveyMethod string (optional) Method used for elevation survey

Max length: 65535 characters
HorizontalSurveyBenchmark string (optional) Horizontal survey benchmark

Max length: 65535 characters
HorizontalSurveyMethod string (optional) Method used for horizontal survey

Max length: 65535 characters
Verticality string (optional) Verticality information

Max length: 65535 characters
StructureName string (optional) Name of the structure

Max length: 65535 characters
StructureNumber string (optional) Number of the structure

Max length: 65535 characters
StationLine string (optional) Station line information

Max length: 65535 characters
StationNumber string (optional) Station number

Max length: 65535 characters
Offset string (optional) Offset information

Max length: 65535 characters
HammerType string (optional) Type of hammer used

Max length: 65535 characters
HammerId string (optional) Id of the Hammer used

Max length: 65535 characters
HammerDrop string (optional) Type of hammer used

Max length: 65535 characters
HammerWeight string (optional) Weight of the hammer used

Max length: 65535 characters
HammerEnergy string (optional) Hammer Energy

Max length: 65535 characters
StartNotes string (optional) Starting Notes

Max length: 2000 characters
TerminationNotes string (optional) Notes about the termination

Max length: 2000 characters
Comment string (optional) Borehole Comments

Max length: 65535 characters
InstalledStickup bool (optional) Whether stickup is installed
InstalledStickupValue double (optional) Value of the installed stickup

InstalledStickupValue > 0
EnteredBy string (optional) Who entered the borehole

Max length: 65535 characters
BoreholePrePlanningId string (optional) Preplans for the borehole

Must be valid

GET

To get a borehole you need to make a GET call to the following url:
/api/v1/borehole/{id}

PUT


    ## Here is an example PUT BODY
    {
        "name" : "Jim's Borehole",
        "testHoleType" : "0",
        "depth" : 43,
        "projectId" : "635be7fa-0c71-21b4-1628-3a0e79f4115b",
        "boreholeStatusId" : "17C53CE0-036E-40C7-A204-1AE30B0AD158"
    }
        

To modify an existing borehole, you need to make a PUT call to the following url:
/api/v1/borehole/{id}

BODY PARAMETERS

Field Type Description
TestHoleType string Type of test hole

Must be either "0" or "1"
Max length: 1 character
Name string Name of the borehole

Max length: 100 characters
Depth double Depth of the borehole
ProjectId Guid ID of the project this borehole belongs to

Must correspond to a valid project
BoreholeStatusId Guid ID of the borehole status

Must correspond to a valid Borehole Status
GroundwaterLevel double (optional) Groundwater level
FillMaterial double (optional) Fill material depth
StartDate DateTime (optional) Start date of drilling
EndDate DateTime (optional) End date of drilling
LoggedBy string (optional) Name of the person who logged the borehole

Max length: 250 characters
ReviewedBy string (optional) Name of the person who reviewed the borehole log

Max length: 250 characters
Elevation double (optional) Elevation of the borehole
X double (optional) X coordinate
Y double (optional) Y coordinate
Easting double (optional) Easting coordinate
Northing double (optional) Northing coordinate
Lat double (optional) Latitude
Long double (optional) Longitude
DrillingContractor string (optional) Name of the drilling contractor

Max length: 255 characters
Notes string (optional) Additional notes

Max length: 2000 characters
MarkIconPath string (optional) Path to the mark icon

Max length: 2000 characters
PiezoType string (optional) Type of piezometer

Max length: 65535 characters
PlugType string (optional) Type of plug

Max length: 65535 characters
EndCapType string (optional) Type of end cap

Max length: 65535 characters
PipeDia string (optional) Pipe diameter

Max length: 65535 characters
TrendDeg double (optional) Trend degree
PlungeDeg double (optional) Plunge degree
AGSTestHoleTypes string (optional) AGS test hole types

Max length: 65535 characters
AGSTestHoleTypeCode string (optional) AGS test hole type code

Max length: 65535 characters
IsHideNullValue bool (optional) Whether to hide null values
Size string (optional) Size of the borehole

Max length: 65535 characters
Equipment string (optional) Equipment used

Max length: 65535 characters
ThicknessOfOverburden double (optional) Thickness of overburden
DepthDrilledIntoRock double (optional) Depth drilled into rock
TotalCoreBoxes double (optional) Total number of core boxes
NameOfDriller string (optional) Name of the driller

Max length: 65535 characters
Disturbed double (optional) Disturbed depth
UnDisturbed double (optional) Undisturbed depth
RockFeatures bool (optional) Whether rock features are present
IsImportData bool (optional) Whether the data is imported
AGSPiezoTypeCode string (optional) AGS piezometer type code

Max length: 65535 characters
AGSPiezoType Guid (optional) AGS piezometer type ID
Benchmark string (optional) Benchmark information

Max length: 65535 characters
LiftingMechanism string (optional) Lifting mechanism used

Max length: 65535 characters
ElevationSurveyMethod string (optional) Method used for elevation survey

Max length: 65535 characters
HorizontalSurveyBenchmark string (optional) Horizontal survey benchmark

Max length: 65535 characters
HorizontalSurveyMethod string (optional) Method used for horizontal survey

Max length: 65535 characters
Verticality string (optional) Verticality information

Max length: 65535 characters
StructureName string (optional) Name of the structure

Max length: 65535 characters
StructureNumber string (optional) Number of the structure

Max length: 65535 characters
StationLine string (optional) Station line information

Max length: 65535 characters
StationNumber string (optional) Station number

Max length: 65535 characters
Offset string (optional) Offset information

Max length: 65535 characters
HammerType string (optional) Type of hammer used

Max length: 65535 characters
HammerId string (optional) Id of the Hammer used

Max length: 65535 characters
HammerDrop string (optional) Type of hammer used

Max length: 65535 characters
HammerWeight string (optional) Weight of the hammer used

Max length: 65535 characters
HammerEnergy string (optional) Hammer Energy

Max length: 65535 characters
StartNotes string (optional) Starting Notes

Max length: 2000 characters
TerminationNotes string (optional) Notes about the termination

Max length: 2000 characters
Comment string (optional) Borehole Comments

Max length: 65535 characters
InstalledStickup bool (optional) Whether stickup is installed
InstalledStickupValue double (optional) Value of the installed stickup

InstalledStickupValue > 0
EnteredBy string (optional) Who entered the borehole

Max length: 65535 characters
BoreholePrePlanningId string (optional) Preplans for the borehole

Must be valid

GET ALL Stratigraphies

To get all the stratigraphis from a borehole, you need to make a GET call to the following url:
/api/v1/borehole/{id}/stratigraphies

GET ALL Comments

To get all the comments from a borehole, you need to make a GET call to the following url:
/api/v1/borehole/{id}/comments

GET ALL Drill Runs

To get all the drill runs from a borehole, you need to make a GET call to the following url:
/api/v1/borehole/{id}/drill-runs

GET ALL Boring Details

To get all the boring details from a borehole, you need to make a GET call to the following url:
/api/v1/borehole/{id}/boring-details

GET ALL Piezometers

To get all the piezometers from a borehole, you need to make a GET call to the following url:
/api/v1/borehole/{id}/piezometers

GET ALL Backfill Details

To get all the backfill details from a borehole, you need to make a GET call to the following url:
/api/v1/borehole/{id}/backfill-details

GET ALL Discontinuities

To get all the discontinuities from a borehole, you need to make a GET call to the following url:
/api/v1/borehole/{id}/discontinuities

COMMON LAYER INFO

This DTO is used by Stratigraphy and InterimDetail

COMMON LAYER INFO PARAMETERS

Field Type Description
Color inputs
ColorDescription string (optional) Description of the layer color
ColorTermId Guid (optional) ID of the color term

Must correspond to a valid Munsell Color Term
ColorTermCode Guid (optional) Code for the color term

Must be a valid Munsell Color
Must be specified if ColorTermId is specified
JoinerTerm int (optional)

Must correspond to a valid Munsell Joiner Term
Must be given together with JoinerTermCode and ColorTermCode if supplied
JoinerTermCode Guid (optional) Code for the joiner term

Must be a valid Munsell Color
Must be given together with JoinerTerm and ColorTermCode if supplied
USCS classification type soil Layer Info
MajorType
↓
GroupName
↓
GroupSymbol
Guid
Guid
Guid
(optional) ID of the major soil type
(optional) ID of the soil group name
(optional) ID of the soil group symbol

Selection order: MajorType → GroupName → GroupSymbol
If a field is provided, the previous must also be provided
If ParentType is "Soil", the ClassificationSystem of the Interm from ReferenceId must be USCS
USCS detailed view common inputs (non-component variables)
MoistureDescriptorId Guid (optional) ID of the moisture descriptor

Must correspond to a valid Moisture Descriptor
ConsistencyDescriptorId Guid (optional) ID of the consistency descriptor

Must correspond to a valid Consistency Descriptor
RelativeDensityId Guid (optional) ID of the relative density

Must correspond to a valid Relative Density
StructureId Guid (optional) ID of the soil structure

Must correspond to a valid Structure
USCS component common variables
FinesPercent int (optional) Percentage of fines in the soil

Must be between 0 and 100
Only one of FinesProportionId or FinesPercent should be provided at one time
FinesProportionId Guid (optional) ID of the fines proportion

Only one of FinesProportionId or FinesPercent should be provided at one time
FinesPlasticityId Guid (optional) ID of the fines plasticity

Must be a valid Fine Plasticity
FinesDryStrengthId Guid (optional) ID of the fines dry strength

Must be a valid Dry Strength
FinesDilatancyId Guid (optional) ID of the fines dilatancy

Must be a valid Dilatancy
FinesToughnessId Guid (optional) ID of the fines toughness

Must be a valid Toughness
SandPercent int (optional) Percentage of sand in the soil

Must be between 0 and 100
Cannot provide both SandPercent and SandProportionId
SandProportionId Guid (optional) ID of the sand proportion

Only one of SandProportionId or SandPercent should be provided at one time
SandParticleSizeIdsList List<Guid> (optional) List of IDs for sand particle sizes

Each SandParticleSizeId must be valid in SandParticleSizeIdsList
SandParticleAngularityId Guid (optional) ID of the sand particle angularity

Must be a valid Particle Angularity
SandCementationId Guid (optional) ID of the sand cementation

Must be a valid Cementation
GravelPercent int (optional) Percentage of gravel in the soil

Must be between 0 and 100
Cannot provide both GravelPercent and GravelProportionId
GravelProportionId Guid (optional) ID of the gravel proportion

Only one of GravelProportionId or GravelPercent should be provided at one time
GravelParticleSizeIdsList List<Guid> (optional) List of IDs for gravel particle sizes

Each GravelParticleSizeId in GravelParticleSizeIdsList must be valid
GravelParticleAngularityId Guid (optional) ID of the gravel particle angularity

Must be valid if provided
GravelCementationId Guid (optional) ID of the gravel cementation

Must be valid if provided
GravelParticleShapeId Guid (optional) ID of the gravel particle shape

Must be a valid Particle Shape
CobblesPercent int (optional) Percentage of cobbles in the soil

Must be between 0 and 100
CobblesRockTypeId Guid (optional) ID of the cobbles rock type

Must be valid and the type must be Igneous, Sedimentary, or Metamorphic
CobblesSize double (optional) Size of cobbles

Cannot be less than 0
CobblesParticleAngularityId Guid (optional) ID of the cobbles particle angularity

Must be valid if provided
CobblesWeatheringId Guid (optional) ID of the cobbles weathering

Must be a valid Weathering
CobblesParticleShapeId Guid (optional) ID of the cobbles particle shape

Must be a valid Particle Shape
CobblesHardnessId Guid (optional) ID of the cobbles hardness

Must be a valid Hardness
Boulders
BouldersPercent int (optional) Percentage of boulders in the soil

Must be between 0 and 100
BouldersRockTypeId Guid (optional) ID of the boulders rock type

Must be valid
BouldersSize double (optional) Size of boulders

Cannot be less than 0
BouldersParticleAngularityId Guid (optional) ID of the boulders particle angularity

Must be valid if provided and be the same as the ClassificationType
BouldersWeatheringId Guid (optional) ID of the boulders weathering

Must be a valid Weathering and be the same as the ClassificationType
BouldersParticleShapeId Guid (optional) ID of the boulders particle shape

Must be a valid Particle Shape and be the same as the ClassificationType
BouldersHardnessId Guid (optional) ID of the boulders hardness

Must be a valid Hardness and be the same as ClassificationType
ROCK classification type rock Layer Info
RockType
↓
RockCategory
↓
RockName
↓
NameModifier
MajorGrockGroupEnum
Guid
string
string
(optional) Enum representing the major rock group
(optional) ID of the rock category
(optional) Name of the rock
(optional) Modifier for the rock name

Selection order: RockType → RockCategory → RockName → NameModifier
If a field is provided, the previous must also be provided
ROCK detailed view common inputs
BeddingThicknessId Guid (optional) ID of the bedding thickness

Must be a valid Bedding Thickness
SlakingId Guid (optional) ID of the slaking characteristic

Must be a valid Slaking
GrainSizeId Guid (optional) ID of the grain size

Must be a valid Hardness
If RockType is Sedimentary, then GrainSizeId must be valid if provided
FractureDensityId Guid (optional) ID of the fracture density

Must be a valid Fracture Density
HardnessId Guid (optional) ID of the rock hardness

Must be a valid Hardness
StrengthId Guid (optional) ID of the rock strength

Must be a valid Strength
WeatheringId Guid (optional) ID of the rock weathering

Must be a valid Weathering and be the same as the ClassificationType
Additional Information
Description string (optional) General description of the layer

Max character limit (65535)

Stratigraphy

POST


    Stratigraphy POST BODY QUERY Examples:
    (USCS)

    {
        "boreholeId" : "2aa74dd5-63e5-a525-6cf4-3a14cb02a6e3",
        "classificationSystem": "USCS",
        "MajorType" : "25af4bbb-9492-5a28-fe5b-3a0bf543d2dc",
        "GroupName" : "8d5df4a9-7a71-6253-29a2-3a0bf543d2dc",
        "GroupSymbol" : "c24cb143-44f6-ca90-3997-3a0bf543d2d3",
        "SoilSymbolId" : "BC9EA70F-3077-4AB7-B0F0-6E3BF1903556",
        "from" : 11,
        "to": 15,
        "ColorTermId" : "652637AC-888E-4ED5-828C-EFE323F8ABAD",
        "ColorTermCode" : "fbae9348-1e2d-4a69-9ab0-9bd9c8360cf2",
        "JoinerTerm" : 2,
        "JoinerTermCode" : "1f07c4d3-71da-42c9-bb73-557181d30a83",
        "ConsistencyDescriptorId" : "6ef80839-c9ab-4f7a-95bd-512cc1b2868b",
        "MoistureDescriptorId" : "0cb4fed5-666a-48e1-bb9b-1f2174e82e09",
        "StructureId" : "14b379d8-29df-4c26-9f64-1ef28a989046",
        "UnitWeight" : 100.0,
        "LineStyleId" : "2fd627fa-3578-4b37-8771-500bd518107f",
        "ThicknessId" : "c431dfa5-b81e-4b81-9864-9da94caecf71",
        "Color" : "#FFFFFF",
        "FinesPercent" : 90,
        "FinesPlasticityId" : "887f1548-8ceb-4ddd-a2be-37402342f097",
        "FinesDryStrengthId" : "6db3eece-c20d-476a-bf5d-6686ad2094b9",
        "FinesDilatancyId" : "a1b4c5f5-c92b-4a6c-ac65-6ae3bff7bd15",
        "FinesToughnessId" : "63430552-02a5-42ec-8060-d21067bd94be",
        "SandProportionId" : "bfca46c0-a679-4780-9832-2f6377a3ad3e",
        "SandParticleSizeIdsList" : ["3deabc8f-f895-446a-b504-effb7b6c700e","bac12fa8-acd0-4e9c-9434-cc6c650eb7e5"],
        "SandParticleAngularityId" : "95e7c972-9eaf-4572-82d2-3c490f969ed1",
        "SandCementationId" : "861eeebb-5976-4b02-a5b8-57c400f59c2b",
        "GravelProportionId" : "bfca46c0-a679-4780-9832-2f6377a3ad3e",
        "GravelParticleSizeIdsList" : ["c0d87890-0b28-447b-ac1a-33e2a900a96d","fc5a889e-4dfd-4871-bf8e-823229f0913c"],
        "GravelParticleAngularityId" : "95e7c972-9eaf-4572-82d2-3c490f969ed1",
        "GravelCementationId" : "861eeebb-5976-4b02-a5b8-57c400f59c2b",
        "GravelParticleShapeId" : "de045a19-48a0-49f0-9f43-0e374021b243",
        "CobblesSoilConstituent" : "Interstitial",
        "CobblesPercent" : 50,
        "CobblesRockTypeId" : "ca5208b5-0ea8-4da1-8ee9-877cd34fad10",
        "CobblesSize" : 5,
        "CobblesParticleAngularityId" : "95e7c972-9eaf-4572-82d2-3c490f969ed1",
        "CobblesWeatheringId" : "7314ceeb-a18b-4ae4-ad59-ad9a5300ec2f",
        "CobblesParticleShapeId" : "9972dea0-f316-47e7-9a52-baeee317ab85",
        "CobblesHardnessId" : "c479b99c-56ab-4cec-8393-c301b02f6541",
        "BouldersSoilConstituent" : "Predominant",
        "BouldersPercent" : 60,
        "BouldersRockTypeId" : "ca5208b5-0ea8-4da1-8ee9-877cd34fad10",
        "BouldersSize" : 3,
        "BouldersParticleAngularityId" : "eba9b0b1-7b6e-4446-868d-e529aba7ad8a",
        "BouldersWeatheringId" : "533680b0-a91d-44cb-96a9-715380854eca",
        "BouldersParticleShapeId" : "9972dea0-f316-47e7-9a52-baeee317ab85",
        "BouldersHardnessId" : "18e2ffd2-20e3-4156-93ff-a3608c2716b6"
    }



    (ROCK)

    {
        "boreholeId" : "2aa74dd5-63e5-a525-6cf4-3a14cb02a6e3",
        "classificationSystem": "ROCK",
        "RockType" : "Igneous",
        "RockCategory": "5f388b84-ab64-436b-84c9-a20dda1d40c5",
        "RockName" : "Gabbro",
        "NameModifier": "Breccia",
        "from" : 12,
        "to": 15,
        "ColorTermId" : "652637AC-888E-4ED5-828C-EFE323F8ABAD",
        "ColorTermCode" : "fbae9348-1e2d-4a69-9ab0-9bd9c8360cf2",
        "JoinerTerm" : 2,
        "JoinerTermCode" : "1f07c4d3-71da-42c9-bb73-557181d30a83",
        "UnitWeight" : 100.0,
        "LineStyleId" : "2fd627fa-3578-4b37-8771-500bd518107f",
        "ThicknessId" : "c431dfa5-b81e-4b81-9864-9da94caecf71",
        "Color" : "#FFFFFF",
        "BeddingThicknessId" : "d9404616-da1b-4f8e-9183-86c983369d5f",
        "SlakingId" : "5d833822-102a-483a-b397-198d5836b441",
        "FractureDensityId" : "f409bacc-93bf-4f0f-b61c-1fef3304f43d",
        "WeatheringId" : "391ddcef-2e62-4fb0-94b2-9db7ad9ce492",
        "HardnessId" : "8a06aea7-5248-44d9-bf09-6f32df347eea",
        "StrengthId" : "b224d8f3-8182-4bda-915c-3d361bb83b0d"
    }

    (AASHTO)

    {
        "boreholeId" : "7ffe5d5c-5b5b-61c1-7343-3a14459594c9",
        "classificationSystem": "AASHTO",
        "MajorType" : "b488e752-0e11-2b1b-46e6-3a0bf543d2dc",
        "SignificantConstituent" : "3ecfeabd-4f04-3d28-6c6a-3a0bf543d2dc",
        "Characteristics" : "5043695a-10c4-2c93-2d6e-3a0bf543d2dc",
        "GroupSymbol" : "52d9efc8-1b07-c52a-c265-3a0bf543d2dc",
        "from" : 5,
        "to": 8
    }

    (AGS)

    {
        "boreholeId" : "7ffe5d5c-5b5b-61c1-7343-3a14459594c9",
        "classificationSystem": "AGS",
        "MajorType" : "4be481c0-121e-eff2-2b33-3a0bf543d2dc",
        "MaterialDescription" : "44b25e95-7e40-267e-1696-3a0bf543d2dc",
        "from" : 10,
        "to": 12
    }
    

To create a new stratigraphy you need to make a POST call to the following url:
/api/v1/stratigraphy

Note: Stratigraphy inherits the Common Layer Info Dto as well

BODY PARAMETERS

Field Type Description
BoreholeId Guid ID of the borehole this stratigraphy belongs to

Must correspond to a valid borehole
ClassificationSystem ClassificationSystemEnum Classification system used

Must be one of "USCS", "AASHTO", "AGS", or "ROCK"
From double Starting depth of the stratigraphy layer

0 ≤ From < To ≤ borehole.Depth
To double Ending depth of the stratigraphy layer

From < To ≤ borehole.Depth
Title string (optional) Title of the stratigraphy layer

512 character limit
SoilSymbolId Guid (optional) ID of the soil symbol

Must correspond to a valid Soil Symbol
GeologicCategoryId Guid (optional) ID of the geologic category

Must correspond to a valid GeologicCategory if provided
GeologicUnitId Guid (optional) ID of the geologic unit

Must correspond to a valid GeologicUnit if provided
MajorType
↓
SignificantConstituent
↓
Characteristics
↓
GroupSymbol
Guid
Guid
Guid
Guid
(optional) ID of the significant constituent
(optional) ID of the characteristics

For AASHTO:
Selection order: MajorType → SignificantConstituent → Characteristics → GroupSymbol.
SignificantConstituent must be valid and its majorType must match the provided majorType.
Characteristics must be valid and its significantConstituentId must match what's provided
MajorType
↓
Material Description
Guid
Guid
(optional) Description of the Material

For AASHTO:
Selection order: MajorType → Material Description.
MaterialDescription must be valid and it’s majorType must be the same as the one provided.
MarkAsFill bool (optional) Indicates if the layer should be marked as fill
CobblesSoilConstituent SoilConstituentEnum (optional) Soil constituent for cobbles

For USCS and AASHTO: Must be "SoilConstituentPredominant", "SoilConstituentInterstitial", or "SoilConstituentMatrix" if provided
BouldersSoilConstituent SoilConstituentEnum (optional) Soil constituent for boulders

For USCS and AASHTO: Must be "SoilConstituentPredominant", "SoilConstituentInterstitial", or "SoilConstituentMatrix" if provided
UnitWeight double (optional) Unit weight of the layer

For ROCK: Must be provided and ≥ 0
LineBottomLayer bool (optional) Indicates if a line should be drawn at the bottom of the layer
LineStyleId Guid (optional) ID of the line style

Must correspond to a valid Line Style
ThicknessId Guid (optional) ID of the thickness

Must be a valid Thickness
Color string (optional) Color of the layer

Must be valid if provided
RockWeatheredToDecomposed bool (optional) Indicates if the rock is weathered to decomposed
RockDecomposed bool (optional) Indicates if the rock is decomposed
RockPoorlyIndurated bool (optional) Indicates if the rock is poorly indurated

GET

To get a stratigraphy you need to make a GET call to the following url:
/api/v1/stratigraphy/{id}

PUT


    ## PUT body example
    {
        "Symbol": "apple"
    }
                

To modify an existing stratigraphy, make a PUT call to the following url:
/api/v1/stratigraphy/{id}

Note: Stratigraphy inherits the Common Layer Info Dto as well

BODY PARAMETERS

Field Type Description
BoreholeId Guid ID of the borehole this stratigraphy belongs to

Must correspond to a valid borehole
ClassificationSystem ClassificationSystemEnum Classification system used

Must be one of "USCS", "AASHTO", "AGS", or "ROCK"
From double Starting depth of the stratigraphy layer

0 ≤ From < To ≤ borehole.Depth
To double Ending depth of the stratigraphy layer

From < To ≤ borehole.Depth
Title string (optional) Title of the stratigraphy layer

512 character limit
SoilSymbolId Guid (optional) ID of the soil symbol

Must correspond to a valid Soil Symbol
GeologicCategoryId Guid (optional) ID of the geologic category

Must correspond to a valid GeologicCategory if provided
GeologicUnitId Guid (optional) ID of the geologic unit

Must correspond to a valid GeologicUnit if provided
MajorType
↓
SignificantConstituent
↓
Characteristics
↓
GroupSymbol
Guid
Guid
Guid
Guid
(optional) ID of the significant constituent
(optional) ID of the characteristics

For AASHTO:
Selection order: MajorType → SignificantConstituent → Characteristics → GroupSymbol.
SignificantConstituent must be valid and its majorType must match the provided majorType.
Characteristics must be valid and its significantConstituentId must match what's provided
MajorType
↓
Material Description
Guid
Guid
(optional) Description of the Material

For AASHTO:
Selection order: MajorType → Material Description.
MaterialDescription must be valid and it’s majorType must be the same as the one provided.
MarkAsFill bool (optional) Indicates if the layer should be marked as fill
CobblesSoilConstituent SoilConstituentEnum (optional) Soil constituent for cobbles

For USCS and AASHTO: Must be "SoilConstituentPredominant", "SoilConstituentInterstitial", or "SoilConstituentMatrix" if provided
BouldersSoilConstituent SoilConstituentEnum (optional) Soil constituent for boulders

For USCS and AASHTO: Must be "SoilConstituentPredominant", "SoilConstituentInterstitial", or "SoilConstituentMatrix" if provided
UnitWeight double (optional) Unit weight of the layer

For ROCK: Must be provided and ≥ 0
LineBottomLayer bool (optional) Indicates if a line should be drawn at the bottom of the layer
LineStyleId Guid (optional) ID of the line style

Must correspond to a valid Line Style
ThicknessId Guid (optional) ID of the thickness

Must be a valid Thickness
Color string (optional) Color of the layer

Must be valid if provided
RockWeatheredToDecomposed bool (optional) Indicates if the rock is weathered to decomposed
RockDecomposed bool (optional) Indicates if the rock is decomposed
RockPoorlyIndurated bool (optional) Indicates if the rock is poorly indurated

GET ALL INTERIM

To get all interims from a stratigraphy, you need to make a GET call to the following url:
/api/v1/stratigraphy/{id}/interim

GET ALL FRACTURE CONDITION

To get all fracture conditions from a stratigraphy, you need to make a GET call to the following url:
/api/v1/stratigraphy/{id}/fracture-condition

GET ALL DRILLING OBSERVATION

To get all drilling observations from a stratigraphy, you need to make a GET call to the following url:
/api/v1/stratigraphy/{id}/drilling-observation

Interim

POST


    ## Here is an example POST BODY
    {
        "StratigraphyId": "CF37290D-FF4D-BDB3-016A-3A14D4CEC63D",
        "ClassificationSystem": "USCS",
        "Depth": 2.5,
        "Variable": 1,
        "ReferenceId": "A1B2C3D4-E5F6-G7H8-I9J0-K1L2M3N4O5P6"
    }
        

To create a new interim you need to make a POST call to the following url:
/api/v1/interim

BODY PARAMETERS

Field Type Description
StratigraphyId Guid ID of the stratigraphy this interim belongs to

Must correspond to a Stratigraphy in the database
ClassificationSystem ClassificationSystemEnum Classification system used

Must be "USCS" or "ROCK"
Depth double Depth of the interim

stratigraphy.From ≤ Depth ≤ stratigraphy.To
Variable int (optional) Variable type for the interim

If ClassificationSystem = USCS:
Must be "Consistency", "Moisture", "InterbeddedSoil", or "IsolatedLayer"

If ClassificationSystem = ROCK:
Must be "GrainSize", "Color", "InterbeddedSoil", "Weathering", "Hardness", "FractureDensity", "InterbeddedRock", or "IsolatedInterbed"
ReferenceId Guid (optional) ID of the reference entity

Must correspond to a valid entity of type Variable in the corresponding database

GET

To get an interim you need to make a GET call to the following url:
/api/v1/interim/{id}

PUT


    ## PUT BODY example
    {
        "StratigraphyId": "CF37290D-FF4D-BDB3-016A-3A14D4CEC63D",
        "ClassificationSystem": "USCS",
        "Depth": 2.5,
        "Variable": 1,
        "ReferenceId": "A1B2C3D4-E5F6-G7H8-I9J0-K1L2M3N4O5P6"
    }
        

To modify an existing interim, make a PUT call to the following url:
/api/v1/interim/{id}

BODY PARAMETERS

Field Type Description
StratigraphyId Guid ID of the stratigraphy this interim belongs to

Must correspond to a Stratigraphy in the database
ClassificationSystem ClassificationSystemEnum Classification system used

Must be "USCS" or "ROCK"
Depth double Depth of the interim

stratigraphy.From ≤ Depth ≤ stratigraphy.To
Variable int (optional) Variable type for the interim

If ClassificationSystem = USCS:
Must be "Consistency", "Moisture", "InterbeddedSoil", or "IsolatedLayer"

If ClassificationSystem = ROCK:
Must be "GrainSize", "Color", "InterbeddedSoil", "Weathering", "Hardness", "FractureDensity", "InterbeddedRock", or "IsolatedInterbed"
ReferenceId Guid (optional) ID of the reference entity

Must correspond to a valid entity of type Variable in the corresponding database

Interim Details

POST


    ## Here is an example POST BODY
    USCS, Interbedded Layer

    {
        "referenceID" : "B7AFD797-FEEF-0810-BC0A-3A15231A3C60",
        "parentType" : "Soil",
        "childType" : 1,
        "MajorType" : "25af4bbb-9492-5a28-fe5b-3a0bf543d2dc",
        "GroupName" : "8d5df4a9-7a71-6253-29a2-3a0bf543d2dc",
        "GroupSymbol" : "c24cb143-44f6-ca90-3997-3a0bf543d2d3",
        "InterbedJoinerId" : "EA6906FA-F305-48A8-9676-B56B097450E9",
        "ColorTermId" : "652637AC-888E-4ED5-828C-EFE323F8ABAD",
        "ColorTermCode" : "fbae9348-1e2d-4a69-9ab0-9bd9c8360cf2",
        "JoinerTerm" : 2,
        "JoinerTermCode" : "1f07c4d3-71da-42c9-bb73-557181d30a83",
        "ConsistencyDescriptorId" : "6ef80839-c9ab-4f7a-95bd-512cc1b2868b",
        "MoistureDescriptorId" : "0cb4fed5-666a-48e1-bb9b-1f2174e82e09",
        "StructureId" : "14b379d8-29df-4c26-9f64-1ef28a989046",
        "FinesPercent" : 90,
        "FinesPlasticityId" : "887f1548-8ceb-4ddd-a2be-37402342f097",
        "FinesDryStrengthId" : "6db3eece-c20d-476a-bf5d-6686ad2094b9",
        "FinesDilatancyId" : "a1b4c5f5-c92b-4a6c-ac65-6ae3bff7bd15",
        "FinesToughnessId" : "63430552-02a5-42ec-8060-d21067bd94be",
        "SandProportionId" : "bfca46c0-a679-4780-9832-2f6377a3ad3e",
        "SandParticleSizeIdsList" : ["3deabc8f-f895-446a-b504-effb7b6c700e","bac12fa8-acd0-4e9c-9434-cc6c650eb7e5"],
        "SandParticleAngularityId" : "95e7c972-9eaf-4572-82d2-3c490f969ed1",
        "SandCementationId" : "861eeebb-5976-4b02-a5b8-57c400f59c2b",
        "GravelProportionId" : "bfca46c0-a679-4780-9832-2f6377a3ad3e",
        "GravelParticleSizeIdsList" : ["c0d87890-0b28-447b-ac1a-33e2a900a96d","fc5a889e-4dfd-4871-bf8e-823229f0913c"],
        "GravelParticleAngularityId" : "95e7c972-9eaf-4572-82d2-3c490f969ed1",
        "GravelCementationId" : "861eeebb-5976-4b02-a5b8-57c400f59c2b",
        "GravelParticleShapeId" : "de045a19-48a0-49f0-9f43-0e374021b243",
        "CobblesPercent" : 50,
        "CobblesRockTypeId" : "ca5208b5-0ea8-4da1-8ee9-877cd34fad10",
        "CobblesSize" : 5,
        "CobblesParticleAngularityId" : "95e7c972-9eaf-4572-82d2-3c490f969ed1",
        "CobblesWeatheringId" : "7314ceeb-a18b-4ae4-ad59-ad9a5300ec2f",
        "CobblesParticleShapeId" : "9972dea0-f316-47e7-9a52-baeee317ab85",
        "CobblesHardnessId" : "c479b99c-56ab-4cec-8393-c301b02f6541",
        "BouldersPercent" : 60,
        "BouldersRockTypeId" : "ca5208b5-0ea8-4da1-8ee9-877cd34fad10",
        "BouldersSize" : 3,
        "BouldersParticleAngularityId" : "eba9b0b1-7b6e-4446-868d-e529aba7ad8a",
        "BouldersWeatheringId" : "533680b0-a91d-44cb-96a9-715380854eca",
        "BouldersParticleShapeId" : "9972dea0-f316-47e7-9a52-baeee317ab85",
        "BouldersHardnessId" : "18e2ffd2-20e3-4156-93ff-a3608c2716b6"
    }

    ROCK, Interbedded Layer

    {
        "referenceID" : "FB6D3D49-A984-63A7-3E5E-3A1523763F16",
        "parentType" : "Rock",
        "childType" : 1,
        "InterbedJoinerId" : "EA6906FA-F305-48A8-9676-B56B097450E9",
        "RockType" : "Igneous",
        "RockCategory": "5f388b84-ab64-436b-84c9-a20dda1d40c5",
        "RockName" : "Gabbro",
        "NameModifier": "Breccia",
        "ColorTermId" : "652637AC-888E-4ED5-828C-EFE323F8ABAD",
        "ColorTermCode" : "fbae9348-1e2d-4a69-9ab0-9bd9c8360cf2",
        "JoinerTerm" : 2,
        "JoinerTermCode" : "1f07c4d3-71da-42c9-bb73-557181d30a83",
        "BeddingThicknessId" : "d9404616-da1b-4f8e-9183-86c983369d5f",
        "SlakingId" : "5d833822-102a-483a-b397-198d5836b441",
        "FractureDensityId" : "f409bacc-93bf-4f0f-b61c-1fef3304f43d",
        "WeatheringId" : "391ddcef-2e62-4fb0-94b2-9db7ad9ce492",
        "HardnessId" : "8a06aea7-5248-44d9-bf09-6f32df347eea",
        "StrengthId" : "b224d8f3-8182-4bda-915c-3d361bb83b0"
    }
        

To create a new interim detail you need to make a POST call to the following url :
/api/v1/interim-detail

Note: Interim Details inherits the Common Layer Info Dto as well

BODY PARAMETERS

Field Type Description
ParentType ParentTypeEnum Type of the parent material

Must be "Soil" or "Rock"
ChildType ChildTypeEnum Type of the child layer

If ParentType is "Rock", ChildType must be "InterbeddedLayer" or "IsolatedLayer"
ReferenceId Guid (optional) ID of the referenced Interim

Must correspond to a valid Interim in the database
LayerThickness double (optional) Thickness of the layer

If ChildType is "IsolatedLayer", then LayerThickness must be ≥ 0
InterbedJoinerId Guid (optional) ID of the interbed joiner

If ChildType is "InterbeddedLayer" and InterbedJoinerId is not null, then it must exist in the SoilClassification database

GET

To get an interim detail you need to make a GET call to the following url :
/api/v1/interim-detail/{id}

PUT

To modify an existing interim detail, make a PUT call to the following url :
/api/v1/interim-detail/{id}

Note: Interim Details inherits the Common Layer Info Dto as well

BODY PARAMETERS

Field Type Description
ParentType ParentTypeEnum Type of the parent material

Must be "Soil" or "Rock"
ChildType ChildTypeEnum Type of the child layer

If ParentType is "Rock", ChildType must be "InterbeddedLayer" or "IsolatedLayer"
ReferenceId Guid (optional) ID of the referenced Interim

Must correspond to a valid Interim in the database
LayerThickness double (optional) Thickness of the layer

If ChildType is "IsolatedLayer", then LayerThickness must be ≥ 0
InterbedJoinerId Guid (optional) ID of the interbed joiner

If ChildType is "InterbeddedLayer" and InterbedJoinerId is not null, then it must exist in the SoilClassification database

Plug Types

POST


    ## Here is an example POST BODY
    {
        "Descriptor": "apple",
        "Symbol": "apples"
    }
    

To create a new plug type you need to make a POST call to the following url:
/api/v1/plug-type


    ## Result example :

    {
        "descriptor": "apple",
        "symbol": "apples",
        "lastModificationTime": null,
        "lastModifierId": null,
        "creationTime": "2024-10-04T15:29:36.8212518-04:00",
        "creatorId": null,
        "id": "c1f08383-285a-46a3-5eca-3a156b2f2814"
    }
    

BODY PARAMETERS

Field Type Description
Descriptor String Description of Plug Type

128 character limit
Symbol String Symbol of the Plug Type

128 character limit

GET

To get a plug type you need to make a GET call to the following url:
/api/v1/plug-type/{id}

GETALL

To get all plug types you need to make a GET call to the following url:
/api/v1/plug-types

PUT


    ## PUT body example
    {
        "Symbol": "apple"
    }
                

To modify an existing plug type, make a PUT call to the following url:
/api/v1/plug-type/{id}

BODY PARAMETERS

Field Type Description
Descriptor String Description of Plug Type

128 character limit
Symbol String Symbol of the Plug Type

128 character limit

Piezometer Types

POST


    ## Here is an example POST BODY
    {
        "Descriptor": "apple",
        "Symbol": "apples"
    }
    

To create a new piezometer type you need to make a POST call to the following url:
/api/v1/piezometer-type


BODY PARAMETERS

Field Type Description
Descriptor String Description of Piezometer Type

128 character limit
Symbol String Symbol of the Piezometer Type

128 character limit

GET

To get a piezometer type you need to make a GET call to the following url:
/api/v1/piezometer-type/{id}

GETALL

To get all piezometer types you need to make a GET call to the following url:
/api/v1/piezometer-types

PUT


    ## PUT BODY example
    {
        "Symbol": "apple"
    }
                

To modify an existing piezometer type, make a PUT call to the following url:
/api/v1/piezometer-type/{id}

BODY PARAMETERS

Field Type Description
Descriptor String Description of Plug Type

128 character limit
Symbol String Symbol of the Plug Type

128 character limit

Boring Details

POST


    ## Here is an example POST BODY
    {
        "BoreholeId": "CF37290D-FF4D-BDB3-016A-3A14D4CEC63D",
        "From": 1.0,
        "To": 3.0,
        "DrillRig": "Example Drill Rig",
        "DrillMethodId": "A1B2C3D4-E5F6-G7H8-I9J0-K1L2M3N4O5P6",
        "AGSDrillMethodId": "B2C3D4E5-F6G7-H8I9-J0K1-L2M3N4O5P6Q7",
        "RigTypeId": "C3D4E5F6-G7H8-I9J0-K1L2-M3N4O5P6Q7R8",
        "BitTypeId": "D4E5F6G7-H8I9-J0K1-L2M3-N4O5P6Q7R8S9",
        "HoleCasingTypeId": "E5F6G7H8-I9J0-K1L2-M3N4-O5P6Q7R8S9T0",
        "TenantId": "F6G7H8I9-J0K1-L2M3-N4O5-P6Q7R8S9T0U1",
        "DrillMethod": "Example Drill Method",
        "DrillMethodTitle": "Example Drill Method Title",
        "HoleDiameter": 10.5,
        "CasingDiameter": 8.5,
        "DrillRod": "Example Drill Rod",
        "DrillBit": "Example Drill Bit",
        "Notes": "Example notes for boring method",
        "AGSBackfillId": "G7H8I9J0-K1L2-M3N4-O5P6-Q7R8S9T0U1V2",
        "BackFillCode": "BF001",
        "InstrumentInstalle": false,
        "Date": "2024-10-08 14:30",
        "Time": "14:30:00"
    }
    

To create a new boring detail you need to make a POST call to the following url:
/api/v1/boring-detail


    ## Result example :
    {
        "boreholeId": "cf37290d-ff4d-bdb3-016a-3a14d4cec63d",
        ...
    }
    

BODY PARAMETERS

Field Type Description
BoreholeId Guid ID of the borehole this boring detail belongs to

Must correspond to a borehole in the database
From double Starting depth of the boring detail

Must be between 0 and the depth of the borehole
Must be less than To
To double Ending depth of the boring detail

Must be between 0 and the depth of the borehole
Must be greater than From
DrillRig string (optional) Description of the drill rig

255 character limit
DrillMethodId Guid (optional) ID of the drill method

Must correspond to an existing drill method in the database
One of DrillMethodId or AGSDrillMethodId are required
AGSDrillMethodId Guid (optional) ID of the AGS drill method

Must correspond to an existing AGS drill method in the database
One of DrillMethodId or AGSDrillMethodId are required
RigTypeId Guid (optional) ID of the rig type

Must correspond to an existing rig type in the database
BitTypeId Guid (optional) ID of the bit type

Must correspond to an existing bit type in the database
HoleCasingTypeId Guid (optional) ID of the hole casing type

Must correspond to an existing hole casting type in the database
TenantId Guid (optional) ID of the tenant
DrillMethod string (optional) Description of the drill method
DrillMethodTitle string (optional) Title of the drill method
HoleDiameter double (optional) Diameter of the hole

Must be a positive value
CasingDiameter double (optional) Diameter of the casing

Must be a positive value and less than or equal to HoleDiameter
DrillRod string (optional) Description of the drill rod

128 character limit
DrillBit string (optional) Description of the drill bit

128 character limit
Notes string (optional) Additional notes

2000 character limit
AGSBackfillId Guid (optional) ID of the AGS backfill
BackFillCode string (optional) Code for the backfill
InstrumentInstalle bool (optional) Indicates if an instrument is installed
Date DateTime (optional) Date of the boring detail

Must follow the format 'yyyy-MM-dd HH:mm'
Time TimeSpan (optional) Time of the boring detail

GET

To get a boring detail you need to make a GET call to the following url:
/api/v1/boring-detail/{id}

PUT


    ## PUT BODY example
    {
        "From": 1.5,
        "To": 3.5,
        "DrillRig":"Updated Drill Rig",
        "HoleDiameter" :11.0,
        "CasingDiameter" :9.0,
        "Notes":"Updated notes for boring detail"
    }
    

To modify an existing boring detail, make a PUT call to the following url:
/api/v1/boring-detail/{id}

BODY PARAMETERS

Field Type Description
BoreholeId Guid ID of the borehole this boring detail belongs to

Must correspond to a borehole in the database
From double Starting depth of the boring detail

Must be between 0 and the depth of the borehole
Must be less than To
To double Ending depth of the boring detail

Must be between 0 and the depth of the borehole
Must be greater than From
DrillRig string (optional) Description of the drill rig

255 character limit
DrillMethodId Guid (optional) ID of the drill method

Must correspond to an existing drill method in the database
One of DrillMethodId or AGSDrillMethodId are required
AGSDrillMethodId Guid (optional) ID of the AGS drill method

Must correspond to an existing AGS drill method in the database
One of DrillMethodId or AGSDrillMethodId are required
RigTypeId Guid (optional) ID of the rig type

Must correspond to an existing rig type in the database
BitTypeId Guid (optional) ID of the bit type

Must correspond to an existing bit type in the database
HoleCasingTypeId Guid (optional) ID of the hole casing type

Must correspond to an existing hole casting type in the database
TenantId Guid (optional) ID of the tenant
DrillMethod string (optional) Description of the drill method
DrillMethodTitle string (optional) Title of the drill method
HoleDiameter double (optional) Diameter of the hole

Must be a positive value
CasingDiameter double (optional) Diameter of the casing

Must be a positive value and less than or equal to HoleDiameter
DrillRod string (optional) Description of the drill rod

128 character limit
DrillBit string (optional) Description of the drill bit

128 character limit
Notes string (optional) Additional notes

2000 character limit
AGSBackfillId Guid (optional) ID of the AGS backfill
BackFillCode string (optional) Code for the backfill
InstrumentInstalle bool (optional) Indicates if an instrument is installed
Date DateTime (optional) Date of the boring detail

Must follow the format 'yyyy-MM-dd HH:mm'
Time TimeSpan (optional) Time of the boring detail

Backfill Details

POST


    ## Here is an example POST BODY
    {
        "To": 2.0,
        "From": 1.0,
        "BoreholeId": "675145F2-2F6A-4CFE-98BE-097AEBA1EFEF"
    }
    

To create a new backfill detail you need to make a POST call to the following url:
/api/v1/backfill-details



    ## Result example :
    {
        "from": 1,
        "to": 2,
        "boreholeId": "675145f2-2f6a-4cfe-98be-097aeba1efef",
        "agsBackfillId": null,
        "lastModificationTime": null,
        "lastModifierId": null,
        "creationTime": "2024-09-19T13:47:43.4073327-04:00",
        "creatorId": "bf3b8e7e-8bb9-6d1a-d4eb-3a019a190b58",
        "id": "a780645b-a1a9-4b6b-cd37-3a151d927b8e"
    }
    

BODY PARAMETERS

Field Type Description
BoreholeId Guid ID of the piezometer this backfill detail belongs to

BoreholeId can be found using the /api/v1/project/{id}/boreholes
From double Starting depth of the backfill detail

0 < From < borehole.Depth
From < To
To double Ending depth of the backfill detail

0 < To < borehole.Depth
To > From
AGSBackfillId Guid (optional) AGSBackfillId for this backfill detail

AGSBackfillId can be found using the /api/v1/project/{id}/AGSBackfillId

GET

To get a backfill detail you need to make a GET call to the following url:
/api/v1/backfill-details/{id}

PUT

    ## PUT BODY example
    {
        "From": 3.0
        "To": 5.0
    }
                    

To modify an existing backfill detail, make a PUT call to the following url:
/api/v1/backfill-details/{id}

BODY PARAMETERS

Field Type Description
From double Starting depth of the backfill detail

0 < From < borehole.Depth
From < To
To double Ending depth of the backfill detail

0 < To < borehole.Depth
To > From
AGSBackfillId Guid (optional) AGSBackfillId for this backfill detail

AGSBackfillId can be found using the /api/v1/project/{id}/AGSBackfillId

Samples

POST


    ## Here is an example POST BODY
    {
        "boreholeId" : "C70E67B3-DA65-5C47-5531-3A13BB459FAE",
        "sampleTypeId" : "B737A4E3-747D-46A1-BA57-17320FFEC675",
        "depth": 50,
        "to": 100,
        "colorTermId": "AA4CF1B4-B07B-4CE4-A422-363DB9E13B98",
        "joinerTerm": 1,
        "colorTermCode": "4BFC4362-60B8-4365-8D17-01D94BF25707",
        "joinerTermCode": "99413134-1C99-44CF-B6CB-046889C11046"
    }
    

To create a new sample you need to make a POST call to the following url:
/api/v1/sample


BODY PARAMETERS

Field Type Description
BoreholeId Guid ID of the piezometer this sample belongs to

BoreholeId can be found using the /api/v1/project/{id}/boreholes
SampleTypeId Guid Id of the sample type

Must correspond to a valid Sample Type
Depth double Depth of the sample

0 < Depth < borehole.Depth
Depth < To
MoistureDescriptorId Guid (optional)

Must correspond to a valid Moisture Descriptor
SampleNumber string (optional)

250 character limit
SampleDescription string (optional)

1000 character limit
To double (optional)

0 < To < Borehole.Depth
To > Depth
Color string (optional)

128 character limit
SampleRecovery string (optional)

128 character limit
RQD string (optional)

128 character limit
ColorTermId Guid (optional) ID of the color term

Must correspond to a valid Munsell Color Term
ColorTermCode Guid (optional) Code for the color term

Must be a valid Munsell Color
Must be specified if ColorTermId is specified
JoinerTerm int (optional)

Must correspond to a valid Munsell Joiner Term
Must be given together with JoinerTermCode and ColorTermCode if supplied
JoinerTermCode Guid (optional) Code for the joiner term

Must be a valid Munsell Color
Must be given together with JoinerTerm and ColorTermCode if supplied

GET

To get a sample you need to make a GET call to the following url:
/api/v1/sample/{id}

PUT

    ## PUT BODY example
    {
        "SampleTypeId: "bfe38763-863e-486a-91a8-aece9c79d693",
        "Depth": 5.0
    }
                    

To modify an existing sample, make a PUT call to the following url:
/api/v1/sample/{id}

BODY PARAMETERS

Field Type Description
SampleTypeId Guid Id of the sample type

Must correspond to a valid Sample Type
Depth double Depth of the sample

0 < Depth < borehole.Depth
Depth < To
MoistureDescriptorId Guid (optional)

Must correspond to a valid Moisture Descriptor
SampleNumber string (optional)

250 character limit
SampleDescription string (optional)

1000 character limit
To double (optional)

0 < To < Borehole.Depth
To > Depth
Color string (optional)

128 character limit
SampleRecovery string (optional)

128 character limit
RQD string (optional)

128 character limit
ColorTermId Guid (optional)

Must correspond to a valid Munsell Color Term
ColorTermCode Guid (optional) Code for the color term

Must be a valid Munsell Color
Must be specified if ColorTermId is specified
JoinerTerm int (optional)

Must correspond to a valid Munsell Joiner Term
Must be given together with JoinerTermCode and ColorTermCode if supplied
JoinerTermCode Guid (optional) Code for the joiner term

Must be a valid Munsell Color
Must be given together with JoinerTerm and ColorTermCode if supplied

Comments

POST


    ## Here is an example POST BODY
    {
        "BoreholeId": "60FFD87C-F87D-4DCC-89A2-653205CDB0A1",
        "SampleTypeId: "bfe38763-863e-486a-91a8-aece9c79d693",
        "Depth": 5.0
    }
    

To create a new comment you need to make a POST call to the following url:
/api/v1/comment


BODY PARAMETERS

Field Type Description
BoreholeId Guid ID of the piezometer this pipe segment belongs to

BoreholeId can be found using the /api/v1/project/{id}/boreholes
Depth double Depth of the sample

0 < Depth < borehole.Depth
Description String Comment Description

500 character limit

GET

To get a comment you need to make a GET call to the following url:
/api/v1/comment/{id}

PUT

    ## PUT BODY example
    {
        "SampleTypeId: "bfe38763-863e-486a-91a8-aece9c79d693",
        "Depth": 5.0
    }
                    

To modify an existing comment, make a PUT call to the following url:
/api/v1/comment/{id}

BODY PARAMETERS

Field Type Description
BoreholeId Guid ID of the piezometer this pipe segment belongs to

BoreholeId can be found using the /api/v1/project/{id}/boreholes
Depth double Depth of the sample

0 < Depth < borehole.Depth
Description String Comment Description

500 character limit

Fracture Conditions

POST


    ## Here is an example POST BODY
    {
        "BoreholeId": "60FFD87C-F87D-4DCC-89A2-653205CDB0A1",
        "SampleTypeId: "bfe38763-863e-486a-91a8-aece9c79d693",
        "Depth": 5.0
    }
    

To create a new fracture condition you need to make a POST call to the following url:
/api/v1/fracture-condition



    ## Result example :

    {
        "from": 3,
        "to": 1,
        "nestedPiezometerId": "cf37290d-ff4d-bdb3-016a-3a14d4cec63d",
        "pipeTypeId": null,
        "agsPipeTypeId": null,
        "lastModificationTime": null,
        "lastModifierId": null,
        "creationTime": "2024-09-16T09:45:26.0161668-04:00",
        "creatorId": "bf3b8e7e-8bb9-6d1a-d4eb-3a019a190b58",
        "id": "ab24c234-6f94-9971-e277-3a150d4194bc"
    }
    

BODY PARAMETERS

Field Type Description
StratigraphyId Guid ID of the piezometer this fracture condition belongs to

BoreholeId can be found using the /api/v1/project/{id}/boreholes
Code string Id of the fracture condition type

128 character limit
Dip double
Spacing string (optional)

128 character limit
Width double (optional)

Width >= 0
Composition string (optional)

128 character limit
ThicknessId double (optional)

Must be a valid Thickness
WeatheringId Guid (optional)

Must be a valid Weathering
HardnessId Guid (optional)

Must be a valid Hardness
HealingId Guid (optional)

HealingId can be found using the /api/v1/project/{id}/boreholes
RoughnessId Guid (optional)

Must correspond to a valid Roughness

GET

To get a fracture condition you need to make a GET call to the following url:
/api/v1/fracture-condition/{id}

PUT

    ## PUT BODY example
    {
        "SampleTypeId: "bfe38763-863e-486a-91a8-aece9c79d693",
        "Depth": 5.0
    }
                    

To modify an existing fracture condition, make a PUT call to the following url:
/api/v1/fracture-condition/{id}

BODY PARAMETERS

Field Type Description
Code string Id of the fracture condition type

128 character limit
Dip double Depth of the sample

0 < Depth < borehole.Depth
Depth < To
Spacing string (optional)

128 character limit
Width double (optional)

Width >= 0
Composition string (optional)
ThicknessId double (optional)

Must be a valid Thickness
WeatheringId Guid (optional)

Must be a valid Weathering
HardnessId Guid (optional)

Must be a valid Hardness
HealingId Guid (optional)

HealingId can be found using the /api/v1/project/{id}/boreholes
RoughnessId Guid (optional)

Must correspond to a valid Roughness

Drilling Observations

POST


    ## Here is an example POST BODY
    {
        "BoreholeId": "60FFD87C-F87D-4DCC-89A2-653205CDB0A1",
        "SampleTypeId: "bfe38763-863e-486a-91a8-aece9c79d693",
        "Depth": 5.0
    }
    

To create a new drilling observation you need to make a POST call to the following url:
/api/v1/drilling-observation



    ## Result example :

    {
        "from": 3,
        "to": 1,
        "nestedPiezometerId": "cf37290d-ff4d-bdb3-016a-3a14d4cec63d",
        "pipeTypeId": null,
        "agsPipeTypeId": null,
        "lastModificationTime": null,
        "lastModifierId": null,
        "creationTime": "2024-09-16T09:45:26.0161668-04:00",
        "creatorId": "bf3b8e7e-8bb9-6d1a-d4eb-3a019a190b58",
        "id": "ab24c234-6f94-9971-e277-3a150d4194bc"
    }
    

BODY PARAMETERS

Field Type Description
StratigraphyId Guid ID of the StratigraphyId this drilling observation belongs to

StratigraphyId can be found using the /api/v1/project/{id}/StratigraphyId
ClassificationSystem Enum ClassificationSystem that the drilling observation uses

ClassificationSystem must be other "USCS" or "ROCK"
Depth double Depth of the sample

0 < Depth < borehole.Depth
Observation String Observations of Drilling

2000 character limit

GET

To get a drilling observation you need to make a GET call to the following url:
/api/v1/drilling-observation/{id}

PUT

To modify an existing drilling observation, make a PUT call to the following url:
/api/v1/drilling-observation/{id}

BODY PARAMETERS

Field Type Description
StratigraphyId Guid ID of the StratigraphyId this drilling observation belongs to

StratigraphyId can be found using the /api/v1/project/{id}/StratigraphyId
ClassificationSystem Enum ClassificationSystem that the drilling observation uses

ClassificationSystem must be other "USCS" or "ROCK"
Depth double Depth of the sample

0 < Depth < borehole.Depth
Observation String Observations of Drilling

2000 character limit
    ## PUT BODY example
    {
        "SampleTypeId: "bfe38763-863e-486a-91a8-aece9c79d693",
        "Depth": 5.0
    }
                    

Drill Runs

POST


    ## Here is an example POST BODY
    {
        "BoreholeId": "60FFD87C-F87D-4DCC-89A2-653205CDB0A1",
        "SampleTypeId: "bfe38763-863e-486a-91a8-aece9c79d693",
        "Depth": 5.0
    }
    

To create a new drill run you need to make a POST call to the following url:
/api/v1/drill-run



    ## Result example :

    {
        "from": 3,
        "to": 1,
        "nestedPiezometerId": "cf37290d-ff4d-bdb3-016a-3a14d4cec63d",
        "pipeTypeId": null,
        "agsPipeTypeId": null,
        "lastModificationTime": null,
        "lastModifierId": null,
        "creationTime": "2024-09-16T09:45:26.0161668-04:00",
        "creatorId": "bf3b8e7e-8bb9-6d1a-d4eb-3a019a190b58",
        "id": "ab24c234-6f94-9971-e277-3a150d4194bc"
    }
    

BODY PARAMETERS

Field Type Description
BoreholeId Guid Unique identifier for the borehole

Guid value
From double Starting depth of the core run

Double value
To double Ending depth of the core run

Double value
Run string Identifier for the core run

128 character limit
CoreBox string (optional) Identifier for the core box

128 character limit
TotalCoreRecovered double (optional) Total length of core recovered

Double value
TotalLength double (optional) Total length of the core run

Double value
Rmr double (optional) Rock Mass Rating

Double value
Recovery double (optional) Core recovery percentage

Double value
Scr double (optional) Solid Core Recovery

Double value
Tmr double (optional) Total Material Recovery

Double value
RQD_rmu double (optional) Rock Quality Designation (RMU method)

Double value
RQD_cr double (optional) Rock Quality Designation (CR method)

Double value
JointSpacing double (optional) Spacing between joints

Double value
RockStrength string (optional) Description of rock strength

128 character limit
Joint_Cond double (optional) Joint condition rating

Double value
RockAlteration string (optional) Description of rock alteration

128 character limit
Fractures double (optional) Number or measure of fractures

Double value
RockWeathering string (optional) Description of rock weathering

128 character limit

GET

To get a drill run you need to make a GET call to the following url:
/api/v1/drill-run/{id}

PUT

To modify an existing drill run, make a PUT call to the following url:
/api/v1/drill-run/{id}

BODY PARAMETERS

Field Type Description
From double Starting depth of the core run

0 < From < borehole.Depth
From < To
To double Ending depth of the core run

0 < To < borehole.Depth
To > From
Run string Identifier for the core run

128 character limit
CoreBox string (optional) Identifier for the core box

128 character limit
TotalCoreRecovered double (optional) Total length of core recovered

TotalCoreRecovered >= 0
TotalCoreRecovered > TotalLength
TotalLength double (optional) Total length of the core run

TotalLength >= 0
TotalLength <= TotalCoreRecovered
Rmr double (optional) Rock Mass Rating

0 <= Rmr <= 100
Recovery double (optional) Core recovery percentage

0 <= Recovery <= 100
Scr double (optional) Solid Core Recovery

0 <= Scr <= 100
Tmr double (optional) Total Material Recovery

0 <= Tmr <= 100
RQD_rmu double (optional) Rock Quality Designation (RMU method)

0 <= RQD_rmu <= 100
RQD_cr double (optional) Rock Quality Designation (CR method)

0 <= RQD_cr <= 100
JointSpacing double (optional) Spacing between joints

JointSpacing >= 0
RockStrength string (optional) Description of rock strength

128 character limit
Joint_Cond double (optional) Joint condition rating

Joint_Cond >= 0
RockAlteration string (optional) Description of rock alteration

128 character limit
Fractures double (optional) Number or measure of fractures

Fractures >= 0
RockWeathering string (optional) Description of rock weathering

128 character limit
    ## PUT BODY example
    {
        "SampleTypeId: "bfe38763-863e-486a-91a8-aece9c79d693",
        "Depth": 5.0
    }
                    

Discontinuities

POST


    ## Here is an example POST BODY
    {
        "boreholeId" : "7ffe5d5c-5b5b-61c1-7343-3a14459594c9",
        "depth": 0,
        "alpha": 5,
        "beta": 2,
        "joinTypeId": "A1C67532-90CD-449F-AD25-BFB8D1F0BE59",
        "shapeId": "ABE2E317-9567-4FC6-8D06-D37787053898",
        "roughnessId": "5D3DD1F7-A1A0-4302-850C-7361C3F0443B",
        "infillTypeId": "3E4CDF32-39DE-4D2F-A015-44D749993807",
        "infillCharacterId": "CA8F37B7-CA1B-4BC9-85D7-16DC2DB735CD",
        "infillThicknessId": "C13CEF8A-52B6-4840-9FE5-D6077A7C1A88"
    }
    

To create a new discontinuity you need to make a POST call to the following url:
/api/v1/discontinuity


BODY PARAMETERS

Field Type Description
BoreholeId Guid Unique identifier for the borehole

Guid value
Depth double Depth measurement

0 < Depth < borehole.Depth
Alpha double (optional) Alpha angle measurement

0 <= Alpha <= 360
Beta double (optional) Beta angle measurement

0 <= Beta <= 360
JconRMR76 string (optional) Joint condition rating for RMR76

Max character limit (65535)
JoinTypeId Guid (optional) Defect Guid

Must correspond to a valid Defect
ShapeId Guid (optional) Defect shape Guid

Must correspond to a valid Defect Shape
RoughnessId Guid (optional) Roughness Guid

Must correspond to a valid Roughness
InfillTypeId Guid (optional) Identifier for the infill type

Must correspond to a valid Infill Type
InfillCharacterId Guid (optional) Identifier for the infill character

Must correspond to a valid Infill Character
InfillThicknessId Guid (optional) Identifier for the infill thickness

Must correspond to a valid Infill Thickness

GET

To get a discontinuity you need to make a GET call to the following url:
/api/v1/discontinuity/{id}

PUT

To modify an existing discontinuity, make a PUT call to the following url:
/api/v1/discontinuity/{id}

BODY PARAMETERS

Field Type Description
Depth double Depth measurement

0 < Depth < borehole.Depth
Alpha double (optional) Alpha angle measurement

0 <= Alpha <= 360
Beta double (optional) Beta angle measurement

0 <= Beta <= 360
JconRMR76 string (optional) Joint condition rating for RMR76

Max character limit (65535)
JoinTypeId Guid (optional) Defect Type Guid

Must correspond to a valid Defect
ShapeId Guid (optional) Defect Guid for the Shape

Must correspond to a valid Defect Shape
RoughnessId Guid (optional) Roughness Guid

Must correspond to a valid Roughness
InfillTypeId Guid (optional) Identifier for the infill type

Must correspond to a valid Infill Type
InfillCharacterId Guid (optional) Identifier for the infill character

Must correspond to a valid Infill Character
InfillThicknessId Guid (optional) Identifier for the infill thickness

Must correspond to a valid Infill Thickness
    ## PUT BODY example
    {
        "SampleTypeId: "bfe38763-863e-486a-91a8-aece9c79d693",
        "Depth": 5.0
    }
                    

Groundwater Measurement

POST


    ## Here is an example POST BODY
    {
        "NestedPiezometerId": "CF37290D-FF4D-BDB3-016A-3A14D4CEC63D",
        "Depth": 1,
        "WaterLevelPresent": true,
        "Date": "2024-09-17T10:30:00Z"
    }
    

To create a new groundwater measurement you need to make a POST call to the following url:
/api/v1/groundwater-measurement



    ## Result example :
    {
        "date": "2024-09-17T10:30:00Z",
        "dateString": null,
        "time": null,
        "depth": 1,
        "weatherCondition": null,
        "nestedPiezometerId": "cf37290d-ff4d-bdb3-016a-3a14d4cec63d",
        "boreholeId": "00000000-0000-0000-0000-000000000000",
        "borehole": null,
        "waterLevelPresent": true,
        "lastModificationTime": null,
        "lastModifierId": null,
        "creationTime": "2024-09-18T11:58:44.5998326-04:00",
        "creatorId": "bf3b8e7e-8bb9-6d1a-d4eb-3a019a190b58",
        "id": "ebfafebf-b590-c676-5747-3a1518085956"
    }
    

BODY PARAMETERS

Field Type Description
NestedPiezometerId Guid ID of the piezometer this groundwater measurement belongs to

NestedPiezometerId can be found using the /api/v1/borehole/{id}/piezometers
WaterLevelPresent bool Whether there is water in the groundwater measurement
Date DateTime Date of grounwater measurement
Depth double (optional) Depth of the groundwater measurement

0 < Depth < borehole.Depth
If WaterLEvelPresent == false, Depth = 0
Time TimeSpan (optional) Timespan of the groundwater measurement
WeatherCondition String (optional) Description of weather conditions

255 character limit

GET

To get a groundwater measurement you need to make a GET call to the following url:
/api/v1/groundwater-measurement/{id}

PUT

    ## PUT BODY example
    {
        "Depth": 1,
        "waterLevelPresent": true,
        "Date": "2024-09-17T10:30:00Z"
    }
                    

To modify an existing backfill detail, make a PUT call to the following url:
/api/v1/groundwater-measurement/{id}

BODY PARAMETERS

Field Type Description
WaterLevelPresent bool Whether there is water in the groundwater measurement
Date DateTime Date of grounwater measurement
Depth double (optional) Depth of the groundwater measurement

0 < Depth < borehole.Depth
If WaterLEvelPresent == false, Depth = 0
Time TimeSpan (optional) Timespan of the groundwater measurement
WeatherCondition String (optional) Description of weather conditions

255 character limit

Pipe Segments

POST


    ## Here is an example POST BODY
    {
        "From": 1.0,
        "To": 3.0,
        "NestedPiezometerId": "CF37290D-FF4D-BDB3-016A-3A14D4CEC63D"
    }
    

To create a new pipe segment you need to make a POST call to the following url:
/api/v1/pipe-segment



    ## Result example :

    {
        "from": 3,
        "to": 1,
        "nestedPiezometerId": "cf37290d-ff4d-bdb3-016a-3a14d4cec63d",
        "pipeTypeId": null,
        "agsPipeTypeId": null,
        "lastModificationTime": null,
        "lastModifierId": null,
        "creationTime": "2024-09-16T09:45:26.0161668-04:00",
        "creatorId": "bf3b8e7e-8bb9-6d1a-d4eb-3a019a190b58",
        "id": "ab24c234-6f94-9971-e277-3a150d4194bc"
    }
    

BODY PARAMETERS

Field Type Description
NestedPiezometerId Guid ID of the piezometer this pipe segment belongs to

NestedPiezometerId can be found using the /api/v1/borehole/{id}/piezometers
From double Starting depth of the pipe segment detail

0 < From < borehole.Depth
From < To
To double Ending depth of the pipe segment detail

0 < To < borehole.Depth
To > From
PipeTypeId Guid (optional) ID of the pipe type of this pipe segment

Must correspond to an existing pipe type in the database
AGSPipeTypeId Guid (optional)

AGSPipeTypeId can be found using the GET /api/v1/agspipe-types

GET

To get a pipe segment you need to make a GET call to the following url:
/api/v1/pipe-segment/{id}

PUT

    ## PUT BODY example
    {
        "From": 3.0
        "To": 5.0
    }
                    

To modify an existing pipe segment, make a PUT call to the following url:
/api/v1/pipe-segment/{id}

BODY PARAMETERS

Field Type Description
From double Starting depth of the pipe segment detail

0 < From < borehole.Depth
From < To
To double Ending depth of the pipe segment detail

0 < To < borehole.Depth
To > From
PipeTypeId Guid (optional) ID of the pipe type of this pipe segment

Must correspond to an existing pipe type in the database
AGSPipeTypeId Guid (optional)

AGSPipeTypeId can be found using the GET /api/v1/agspipe-types

Piezometers

POST


    # Here is a POST example
    {
      "piezometer": {
        "BoreholeId": "675145F2-2F6A-4CFE-98BE-097AEBA1EFEF"
      },
      "pipeSegmentList": [
        {
            "From": 1.0,
            "To": 3.0
        },
        {
            "From": 3.0,
            "To": 5.0
        }
      ],
      "groundwaterList": [
        {
            "WaterLevelPresent": true,
            "Date": "2024-09-17T10:30:00Z"
        }
      ]
    }
                    

To create a new piezometer you need to make a POST call to the following url:
/api/v1/piezometer



    Result example :

    {

    }
                    

BODY PARAMETERS

Note: For the POST request, the input data has 3 components: piezometer, pipeSegmentList, groundwaterList.

Field Type Description
APICreateUpdateNestedPiezometerDto JSON object for piezometer parameters.
APICreateUpdatePiezometerPipeDto (optional) List of Pipe Segments.
APICreateUpdateGroundwaterDto (optional) List of Groundwater Measurements.

Piezometer Object

Field Type Description
PiezometerNo String (optional) Your API key.

Max character limit (65535)
PiezoTypeId Guid ID of the piezometer type

Must correspond to an existing piezometer type in the database
BoreholeId Guid ID of the Borehole this piezometer belongs to

BoreholeId can be found using the /api/v1/project/{id}/boreholes
PlugTypeId Guid ID of the plug type of this piezometer

Must correspond to an existing plug type in the database
EndCapType String (optional) a string representing the type of end cap of the piezometer
m: male
f: female

Max character limit (65535)
PipeDia string (optional)

Max character limit (65535)
InstalledStickup bool (optional - default: 10) A limit on the number of objects to be returned, between 1 and 100.
InstalledStickupValue double (optional - default: 10) A limit on the number of objects to be returned, between 1 and 100.

PipeSegmentList:

A list of pipe-segments, for reference Pipe Segments

GroundwaterList:

A list of groundwater measurements, for reference Groundwater Measurements

GET

To get a piezometer you need to make a GET call to the following url:
/api/v1/piezometer/{id}

PUT

    ## PUT BODY example
    {
        "Depth": 1,
        "waterLevelPresent": true,
        "Date": "2024-09-17T10:30:00Z"
    }
                    

To modify an existing piezometer, make a PUT call to the following url:
/api/v1/piezometer/{id}

Note: For the PUT request, the input data just has the piezometer component.

Piezometer Object

Field Type Description
PiezoTypeId Guid ID of the piezometer type

Must correspond to an existing piezometer type in the database
BoreholeId Guid ID of the Borehole this piezometer belongs to

BoreholeId can be found using the /api/v1/project/{id}/boreholes
PlugTypeId Guid ID of the plug type of this piezometer

Must correspond to an existing plug type in the database
EndCapType String (optional) a string representing the type of end cap of the piezometer
m: male
f: female

Max character limit (65535)
PipeDia string (optional)

Max character limit (65535)
InstalledStickup bool (optional - default: 10) A limit on the number of objects to be returned, between 1 and 100.
InstalledStickupValue double (optional - default: 10) A limit on the number of objects to be returned, between 1 and 100.

PipeSegmentList:

A list of pipe-segments, for reference Pipe Segments

GroundwaterList:

A list of groundwater measurements, for reference Groundwater Measurements

GET Pipe Segments

To get the pipe segments from a piezometer, make a GET requrest to:
/api/v1/piezometer/{id}/pipe-segments

GET Groundwater Measurements

To get the groundwater measurements from a piezometer, make a GET requrest to:
/api/v1/piezometer/{id}/groundwater-measurements

GUID Get Endpoints

Below is a list of endpoints for getting the GUIDs used in above API calls

Coordinate Systems

GET

To get a list of coordinate systems, make a GET call to the following url:
/api/v1/coordinate-systems

Project Statuses

GET

To get a list of project statuses, make a GET call to the following url:
/api/v1/project-statuses

Unit Systems

GET

To get a list of unit systems, make a GET call to the following url:
/api/v1/unit-systems

SPC Coordinate Codes

GET

To get a list of SPC coordinate codes, make a GET call to the following url:
/api/v1/spc-coordinate-codes

Munsell Colors

GET

To get a list of munsell colors, make a GET call to the following url:
/api/v1/munsell-colors

Munsell Soil Color Descriptors

GET

To get a list of munsell soil color descriptors, make a GET call to the following url:
/api/v1/munsell-soil-color-descriptors

Contacts

GET

To get a list of contacts, make a GET call to the following url:
/api/v1/contacts

Borehole Statuses

GET

To get a list of borehole statuses, make a GET call to the following url:
/api/v1/borehole-statuses

Sample Types

GET

To get a list of sample types, make a GET call to the following url:
/api/v1/sample-types

Moisture Descriptors

GET

To get a list of moisture descriptors, make a GET call to the following url:
/api/v1/moisture-descriptors

Defects

GET

To get a list of defects, make a GET call to the following url:
/api/v1/defects

Defect Shapes

GET

To get a list of defect shapes, make a GET call to the following url:
/api/v1/defect-shapes

Roughnesses

GET

To get a list of roughnesses, make a GET call to the following url:
/api/v1/roughnesses

Infill Types

GET

To get a list of infill types, make a GET call to the following url:
/api/v1/infill-types

Infill Characters

GET

To get a list of infill characters, make a GET call to the following url:
/api/v1/infill-characters

Infill Thicknesses

GET

To get a list of infill thicknesses, make a GET call to the following url:
/api/v1/infill-thicknesses

USCS Major Types

GET

To get a list of USCS major types, make a GET call to the following url:
/api/v1/uscs-major-types

USCS Group Names

GET

To get a list of USCS group names for a specific major type, make a GET call to the following url:
/api/v1/{uscsMajorTypeID}/uscs-group-names

USCS Group Symbols

GET

To get a list of USCS group symbols for a specific group name, make a GET call to the following url:
/api/v1/{uscsGroupNameID}/uscs-group-symbols

AASHTO Major Types

GET

To get a list of AASHTO major types, make a GET call to the following url:
/api/v1/aashto-major-types

AASHTO Significant Constituents

GET

To get a list of AASHTO significant constituents for a specific major type, make a GET call to the following url:
/api/v1/{aashtoMajorTypeID}/aashto-significant-constituents

AASHTO Characteristics

GET

To get a list of AASHTO characteristics for a specific significant constituent, make a GET call to the following url:
/api/v1/{aashtoSignificantConstituentID}/aashto-characteristics

AASHTO Group Symbols

GET

To get a list of AASHTO group symbols for specific characteristics, make a GET call to the following url:
/api/v1/{aashtoCharacteristicsID}/aashto-group-symbols

AGS Major Types

GET

To get a list of AGS major types, make a GET call to the following url:
/api/v1/ags-major-types

AGS Material Descriptions

GET

To get a list of AGS material descriptions for a specific major type, make a GET call to the following url:
/api/v1/{agsMajorTypeID}/ags-material-descriptions

Soil Symbols

GET

To get a list of soil symbols, make a GET call to the following url:
/api/v1/soil-symbols

Munsell Color Terms

GET

To get a list of Munsell color terms, make a GET call to the following url:
/api/v1/munsell-color-terms

Munsell Joiner Terms

GET

To get a list of Munsell joiner terms, make a GET call to the following url:
/api/v1/munsell-joiner-terms

Consistency Descriptors

GET

To get a list of consistency descriptors, make a GET call to the following url:
/api/v1/consistency-descriptors

Relative Densities

GET

To get a list of relative densities, make a GET call to the following url:
/api/v1/relative-densities

Structures

GET

To get a list of structures, make a GET call to the following url:
/api/v1/structures

Line Styles

GET

To get a list of line styles, make a GET call to the following url:
/api/v1/line-styles

Thicknesses

GET

To get a list of thicknesses, make a GET call to the following url:
/api/v1/thicknesses

Proportions

GET

To get a list of proportions, make a GET call to the following url:
/api/v1/proportions

Plasticities

GET

To get a list of plasticities, make a GET call to the following url:
/api/v1/plasticities

Dry Strengths

GET

To get a list of dry strengths, make a GET call to the following url:
/api/v1/dry-strengths

Dilatancies

GET

To get a list of dilatancies, make a GET call to the following url:
/api/v1/dilatancies

Toughnesses

GET

To get a list of toughnesses, make a GET call to the following url:
/api/v1/toughnesses

Sand Particle Sizes

GET

To get a list of sand particle sizes, make a GET call to the following url:
/api/v1/sand-particle-sizes

Particle Angularities

GET

To get a list of particle angularities, make a GET call to the following url:
/api/v1/particle-angularities

Cementations

GET

To get a list of cementations, make a GET call to the following url:
/api/v1/cementations

Sand Particle Sizes

GET

To get a list of gravel particle sizes, make a GET call to the following url:
/api/v1/gravel-particle-sizes

Particle Shapes

GET

To get a list of particle shapes, make a GET call to the following url:
/api/v1/particle-shapes

Soil Constituents

GET

To get a list of soil constituents, make a GET call to the following url:
/api/v1/soil-constituents

Weatherings

GET

To get a list of weatherings, make a GET call to the following url:
/api/v1/weatherings

Hardnesses

GET

To get a list of hardnesses, make a GET call to the following url:
/api/v1/hardnesses

Grain Sizes

GET

To get a list of grain sizes, make a GET call to the following url:
/api/v1/grain-sizes

Bedding Thicknesses

GET

To get a list of bedding thicknesses, make a GET call to the following url:
/api/v1/bedding-thicknesses

Slakings

GET

To get a list of slakings, make a GET call to the following url:
/api/v1/slakings

Fracture Densities

GET

To get a list of fracture densities, make a GET call to the following url:
/api/v1/fracture-densities

Strengths

GET

To get a list of strengths, make a GET call to the following url:
/api/v1/strengths

Interbed Joiners

GET

To get a list of interbed joiners, make a GET call to the following url:
/api/v1/interbed-joiners

Drill Methods

GET

To get a list of drill methods, make a GET call to the following url:
/api/v1/drill-methods

AGS Drill Methods

GET

To get a list of AGS drill methods, make a GET call to the following url:
/api/v1/ags-drill-methods

Rig Types

GET

To get a list of rig types, make a GET call to the following url:
/api/v1/rig-types

Bit Types

GET

To get a list of bit types, make a GET call to the following url:
/api/v1/bit-types

Hole Casing Types

GET

To get a list of hole casting types, make a GET call to the following url:
/api/v1/hole-casting-types

Plug Types

GET

To get a list of plug types, make a GET call to the following url:
/api/v1/plug-types

Piezometer Types

GET

To get a list of piezometer types, make a GET call to the following url:
/api/v1/piezometer-types

Pipe Types

GET

To get a list of pipe types, make a GET call to the following url:
/api/v1/pipes-types

Errors

The RSLog API uses the following error codes:

Error Code Meaning
400BadRequest Some parameters are missing or parameters are not valid.
401Unauthorized The request lacks valid authentication credentials or the user doesn't have permissions to perform the requested action.
403Forbidden The server understood the request but refuses to authorize it. This is similar to 401, but re-authenticating won't make any difference.
404NotFound The server can't find the requested resource. This often occurs when the URL is mistyped or the resource has been deleted or moved.
500InternalServerError General Error