Skip to content

HydroServer Data Model Data Dictionary

This document describes the entities and attributes within the HydroServer data model.

User

A registered HydroServer user with identifying details and access metadata.

RequiredAttributeDefinitionData Type
MidA primary key unique identifier for the User.Integer
MemailA unique email address identifying the User.String
MfirstNameThe User’s first name.String
MlastNameThe User’s last name.String
OmiddleNameThe User’s middle name.String
OphoneA contact phone number for the User.String
OaddressThe User’s mailing or physical address.String
OlinkA URL associated with the User (e.g., profile or homepage).URL
MuserTypeA descriptor for the type or role of the User.String
OorganizationIdA reference to the Organization the User is affiliated with.Integer
MisOwnershipAllowedIndicates whether the User is allowed to own Workspaces.Boolean
MisSuperuserIndicates whether the User is a superuser (admin).Boolean
MisStaffIndicates whether the User has a staff account.Boolean
MisActiveIndicates whether the User's account is active.Boolean
MdateJoinedThe date and time the User created their HydroServer account.DateTime
MlastLoginThe date and time of the User's last login.DateTime

Organization

An entity such as an institution, agency, or company that is associated with a User.

RequiredAttributeDefinitionData Type
MidA primary key unique identifier for the Organization.Integer
McodeA short, unique code identifying the Organization.String
MnameThe full name of the Organization.String
OdescriptionA brief textual description of the Organization.String
OlinkA URL linking to the Organization’s homepage or relevant web presence.URL
MtypeA classification or descriptor of the Organization (e.g., university, NGO).String

Workspace

Workspaces in HydroServer are used to organize and manage access to user-managed data. All user-managed resources in HydroServer are created within the context of a workspace. Each workspace has one owner and can have any number of collaborators with varying levels of access to resources within the workspace.

RequiredAttributeDefinitionData Type
MidA primary key unique identifier for the Workspace.UUID
MnameA name for the Workspace.String
MownerIdA foreign key identifier for the User who owns the Workspace.Integer
MisPrivateA boolean indicating whether the Workspace is private or publicly visible.Boolean

Role

A set of permissions or access level definitions assigned to collaborators within a Workspace. HydroServer's default roles are 'Viewer' and 'Editor'.

RequiredAttributeDefinitionData Type
MidA primary key unique identifier for the Role.UUID
OworkspaceIdA foreign key identifier for the Workspace to which the Role belongs.UUID
MnameA name for the Role.String
OdescriptionA text description of the Role.String

Permission

Defines a specific permission granted to a Role for a particular type of resource.

RequiredAttributeDefinitionData Type
MroleIdA foreign key identifier for the Role to which this permission belongs.UUID
MpermissionTypeThe type of permission (e.g., view, create, etc) granted to the Role.String
MresourceTypeThe type of resource the permission applies to (e.g., Datastream, Thing, etc).String

Collaborator

Associates a User with a Role in a specific Workspace.

RequiredAttributeDefinitionData Type
MworkspaceIdA foreign key identifier for the Workspace the user collaborates on.UUID
MuserIdA foreign key identifier for the User who is a collaborator.Integer
MroleIdA foreign key identifier for the Role assigned to the User in the Workspace.UUID

Thing

A thing is an object of the physical world (physical things) or the information world (virtual things) that is capable of being identified and integrated into communication networks. In the context of environmental monitoring and HydroServer, a Thing is a monitoring station or "Site" (e.g., a streamflow gage, water quality station, weather station, diversion measurement location, etc.).

RequiredAttributeDefinitionData Type
MidA primary key unique identifier for the Thing.UUID
MworkspaceIdA foreign key identifier for the Workspace that the Thing belongs to.UUID
MnameA text string giving a name for the Thing.String
MdescriptionA text string giving a description for the Thing.String
MsamplingFeatureTypeA text string specifying the type of sampling feature - usually "Site".String
MsamplingFeatureCodeA text string specifying a shortened code identifying the Thing.String
MsiteTypeA text string specifying the type of Site represented by the Thing - e.g., "Streamflow Gage", "Water Quality Station", "Weather Station", "Diversion Station", etc.String
OisPrivateIndicates whether the Thing is private to the owning Workspace.Boolean
OdataDisclaimerA text string displayed on the HydroServer landing page for the Thing (Site) that specifies a data disclaimer for data at that site.String

Location

The Location entity locates the Thing. A Thing’s Location entity is defined as the last known location of the Thing. In the context of Things that are monitoring sites, this is the physical location of the monitoring site.

RequiredAttributeDefinitionData Type
MidA primary key unique identifier for the Location.UUID
MthingIdA foreign key identifier for the Thing to which this Location belongs.UUID
MnameA text string name for the Location. Can be the same as the name of the Thing.String
MdescriptionA text string description of the Location.String
MencodingTypeThe encoding type of the Location - usually "GeoJSON".String
MlatitudeA floating point number representing the latitude of the location using WGS84 coordinates.Decimal
MlongitudeA floating point number representing the longitude of the location using WGS84 coordinates.Decimal
Oelevation_mA floating point number representing the elevation of the location in meters.Decimal
OelevationDatumA string indicating the elevation datum used by the site to specify the elevation.String
OstateThe state in which the Location resides.String
OcountyThe county in which the Location resides.String
OcountryThe ISO 3166-1 alpha-2 country code (e.g., "US").String

HistoricalLocation

The HistoricalLocation entity describes where a Thing has been located in the past. Note: Currently unused in HydroServer.

RequiredAttributeDefinitionData Type
MidA primary key unique identifier for the HistoricalLocation.Integer
MthingIdA foreign key identifier for the Thing to which this HistoricalLocation belongs.UUID
MlocationIdA foreign key identifier for the Location this HistoricalLocation represents.UUID
MtimeA timestamp representing the last time the Thing was at the Location.UUID

Tag

A key-value metadata pair associated with a Thing, used to provide additional descriptive or categorical information.

RequiredAttributeDefinitionData Type
MthingIdA foreign key identifier for the Thing to which the tag applies.UUID
MkeyThe tag key or name.String
MvalueThe tag value associated with the key.String

Photo

A photo of a Thing - e.g., photos of a monitoring site/location.

RequiredAttributeDefinitionData Type
MthingIdA foreign key identifier for the Thing to which the photo is linked.UUID
MnameA descriptive name for the photo.String
MphotoA file path reference to the uploaded photo file.String

ObservedProperty

An ObservedProperty specifies the phenomenon of an Observation (e.g., flow, temperature, pH, dissolved oxygen concentration, etc.).

RequiredAttributeDefinitionData Type
MidA primary key unique identifier for the ObservedProperty.UUID
OworkspaceIdA foreign key identifier for the Workspace the ObservedProperty belongs to.UUID
MnameA descriptive name for the ObservedProperty - preferably chosen from a controlled vocabulary.String
MdefinitionA text string providing a definition of the ObservedProperty or a URL pointing to a definition of the ObservedProperty - e.g., a URL pointing to the controlled vocabulary that defines the observed property.String
MdescriptionA text description of the ObservedProperty. May be the same as the definition of the ObservedProperty.String
MobservedPropertyTypeThe type of ObservedProperty - preferably selected from a controlled vocabulary (e.g., Hydrology, Instrumentation, Climate, Soil, Water Quality, etc.).String
McodeA brief text code identifying the ObservedProperty.String

ProcessingLevel

The degree of quality control or processing to which a Datastream has been subjected. For example, raw versus quality controlled data.

RequiredAttributeDefinitionData Type
MidA primary key unique identifier for the ProcessingLevel.UUID
OworkspaceIdA foreign key identifier for the Workspace the ProcessingLevel belongs to.UUID
McodeA brief text code identifying the Processing level - e.g., "0" for "Raw data", "1" for "Quality controlled data."String
OdefinitionA text definition of the ProcessingLevel.String
OexplanationA longer text explanation of the ProcessingLevel.String

ResultQualifier

Data qualifying comments added to individual data values to qualify their interpretation or use.

RequiredAttributeDefinitionData Type
MidA primary key unique identifier for the ResultQualifier.UUID
OworkspaceIdA foreign key identifier for the Workspace the ResultQualifier belongs to.UUID
McodeA brief text code identifying the ResultQualifier.String
MdescriptionA longer text description or explanation of the ResultQualifier.String

Sensor

A Sensor is an instrument that observes a property or phenomenon with the goal of producing an estimate of the value of the property.

RequiredAttributeDefinitionData Type
MidA primary key unique identifier for the Sensor.UUID
OworkspaceIdA foreign key identifier for the Workspace the Sensor belongs to.UUID
MnameA descriptive name for the Sensor.String
MdescriptionA longer text description of the Sensor.String
MencodingTypeA string indicating how the Sensor information is encoded by the API - "application/json"String
OmanufacturerThe name of the Sensor's manufacturer.String
OmodelThe name of the Sensor model.String
OmodelLinkA URL linking to more information about the Sensor model.String
MmethodTypeA string indicating the type of Sensor or Method - preferably chosen from a controlled vocabulary (e.g., "Instrument deployment").String
OmethodLinkA URL pointing to a website that defines or describes the Sensor/Method.String
OmethodCodeA brief text code identifying the Sensor/Method.String

Unit

The unit of measure associated with the Observations within a Datastream.

RequiredAttributeDefinitionData Type
MidA primary key unique identifier for the Unit.UUID
OworkspaceIdA foreign key identifier for the Workspace the Unit belongs to.UUID
MnameA descriptive name for the Unit.String
MsymbolAn abbreviation or symbol used for the unit.String
MdefinitionA URL pointing to a website or controlled vocabulary that defines the Unit.String
MunitTypeThe type of Unit (e.g., Flow, Concentration, Volume, Length, Mass, etc.)String

Datastream

A Datastream groups a collection of Observations measuring the same ObservedProperty and produced by the same Sensor. Each instance of a Datastream represents the properties for a time series of Observations.

RequiredAttributeDefinitionData Type
MidA primary key unique identifier for the Datastream.UUID
MnameA text name for the datastream. Can be auto generated.String
MdescriptionA text description for the datastream. Can be auto generated.Text
MthingIdForeign key referencing the associated Thing.UUID
MsensorIdForeign key referencing the Sensor that collected the data.UUID
MobservedPropertyIdForeign key referencing the ObservedProperty being measured.UUID
MprocessingLevelIdForeign key referencing the ProcessingLevel of the data.UUID
MunitIdForeign key referencing the Unit of measurement.UUID
MobservationTypeThe type of Observation derived from a list of observation types - "Field Observation" or "Derived Value"String
MresultTypeThe specific type of result represented by the Datastream. All time series are of type "Time series coverage".String
OstatusA string value indicating the status of data collection/creation for the Datastream.String
MsampledMediumThe environmental media that is sampled by the Datastream (e.g., air, water, snow, etc.).String
OvalueCountTotal number of recorded observations.Integer
MnoDataValueA numeric value stored to indicate the absence of data (e.g., -9999).Float
OintendedTimeSpacingIntended spacing between observations.Float
OintendedTimeSpacingUnitUnit for the intended time spacing.String
MaggregationStatisticStatistical method used to aggregate data (e.g., mean, max).String
MtimeAggregationIntervalTime interval over which aggregation occurs.Float
MtimeAggregationIntervalUnitUnit for the aggregation interval.String
OphenomenonBeginTimeTimestamp of the earliest recorded phenomenon.DateTime
OphenomenonEndTimeTimestamp of the latest recorded phenomenon.DateTime
MisPrivateWhether the datastream is private.Boolean
MisVisibleWhether the datastream observations are visible in applications.Boolean
OdataSourceIdForeign key linking to the source from which data was obtained.UUID
OobservedAreaThe spatial area containing all FeaturesOfInterest observed by this Datastream.Object
OresultBeginTimeTimestamp representing when the first observation was recorded.Datetime
OresultEndTimeTimestamp representing when the most recnt observation was recorded.Datetime

Observation

An Observation is the act of measuring or otherwise determining the value of a property, including its numeric result and the date/time at which it was observed.

RequiredAttributeDefinitionData Type
MidA unique identifier for the Observation.UUID
MdatastreamIdA foreign key identifier for the Datastream to which the Observation belongs.UUID
OfeatureOfInterestIdA foreign key identifier for the FeatureOfInterest the Observation represents.UUID
MphenomenonTimeThe time when the observation occurred or was measured.DateTime
MresultThe measured or observed value.Float
OresultTimeThe time when the result was generated or recorded.DateTime
OqualityCodeA text code or string indicating the quality of the Observation.String
OvalidBeginTimeA timestamp representing when the observation is valid.Datetime
OvalidEndTimeA timestamp representing when the observation is valid.Datetime

FeatureOfInterest

The geographic feature being observed, if different from the location of the Thing. Note: Currently unused in HydroServer.

RequiredAttributeDefinitionData Type
MidA unique identifier for the FeatureOfInterest.UUID
MnameA descriptive name for the FeatureOfInterest.String
MdescriptionA longer text description of the FeatureOfInterest.String
MencodingTypeA string indicating how the FeatureOfInterest information is encoded by the API - "application/json"String
MfeatureAn object representing the FeatureOfInterest.Object

OrchestrationSystem

An external system that manages and coordinates various processes or operations within a Workspace.

RequiredAttributeDefinitionData Type
MidA unique identifier for the OrchestrationSystem.UUID
OworkspaceIdA foreign key identifier for the Workspace to which the system belongs.UUID
MnameThe name of the OrchestrationSystem.String
MtypeThe type or classification of the OrchestrationSystem (e.g., "SDL", "Airflow", etc).String

DataSource

Represents the source of data for one or more Datastreams, and is linked to an OrchestrationSystem and Workspace, containing configuration settings.

RequiredAttributeDefinitionData Type
MidA primary key unique identifier for the DataSource.UUID
MworkspaceIdA foreign key referencing the Workspace to which the DataSource belongs.UUID
MorchestrationSystemIdA foreign key referencing the OrchestrationSystem that manages the data source.UUID
MnameThe name of the data source.String
OsettingsA JSON field storing configuration settings for the data source.JSON
OintervalThe time interval (in numerical form) between orchestration runs.Integer
OintervalUnitsThe units for the interval (e.g., "hours", "days").String
OcrontabThe cron expression specifying when the orchestration should run.String
OstartTimeThe time the orchestration should begin.DateTime
OendTimeThe time the orchestration should end.DateTime
OpausedA flag indicating whether the orchestration is paused.Boolean
OlastRunSuccessfulA flag indicating whether the last orchestration run was successful.Boolean
OlastRunMessageA message about the last orchestration run (e.g., success or failure details).String
OlastRunThe timestamp of when the last orchestration run occurred.DateTime
OnextRunThe timestamp of the next scheduled orchestration run.DateTime

DataArchive

Represents an external location one or more Datastreams is archived or exported to, and is linked to an OrchestrationSystem and Workspace, containing configuration settings.

RequiredAttributeDefinitionData Type
MidA primary key unique identifier for the DataArchive.UUID
MworkspaceIdA foreign key referencing the Workspace to which the DataArchive belongs.UUID
MorchestrationSystemIdA foreign key referencing the OrchestrationSystem that manages the data archive.UUID
MnameThe name of the data archive.String
OsettingsA JSON field storing configuration settings for the data archive.JSON
OintervalThe time interval (in numerical form) between orchestration runs.Integer
OintervalUnitsThe units for the interval (e.g., "hours", "days").String
OcrontabThe cron expression specifying when the orchestration should run.String
OstartTimeThe time the orchestration should begin.DateTime
OendTimeThe time the orchestration should end.DateTime
OpausedA flag indicating whether the orchestration is paused.Boolean
OlastRunSuccessfulA flag indicating whether the last orchestration run was successful.Boolean
OlastRunMessageA message about the last orchestration run (e.g., success or failure details).String
OlastRunThe timestamp of when the last orchestration run occurred.DateTime
OnextRunThe timestamp of the next scheduled orchestration run.DateTime