diff --git a/csharp/.gitignore b/csharp/.gitignore
new file mode 100644
index 0000000..1ee5385
--- /dev/null
+++ b/csharp/.gitignore
@@ -0,0 +1,362 @@
+## Ignore Visual Studio temporary files, build results, and
+## files generated by popular Visual Studio add-ons.
+##
+## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
+
+# User-specific files
+*.rsuser
+*.suo
+*.user
+*.userosscache
+*.sln.docstates
+
+# User-specific files (MonoDevelop/Xamarin Studio)
+*.userprefs
+
+# Mono auto generated files
+mono_crash.*
+
+# Build results
+[Dd]ebug/
+[Dd]ebugPublic/
+[Rr]elease/
+[Rr]eleases/
+x64/
+x86/
+[Ww][Ii][Nn]32/
+[Aa][Rr][Mm]/
+[Aa][Rr][Mm]64/
+bld/
+[Bb]in/
+[Oo]bj/
+[Ll]og/
+[Ll]ogs/
+
+# Visual Studio 2015/2017 cache/options directory
+.vs/
+# Uncomment if you have tasks that create the project's static files in wwwroot
+#wwwroot/
+
+# Visual Studio 2017 auto generated files
+Generated\ Files/
+
+# MSTest test Results
+[Tt]est[Rr]esult*/
+[Bb]uild[Ll]og.*
+
+# NUnit
+*.VisualState.xml
+TestResult.xml
+nunit-*.xml
+
+# Build Results of an ATL Project
+[Dd]ebugPS/
+[Rr]eleasePS/
+dlldata.c
+
+# Benchmark Results
+BenchmarkDotNet.Artifacts/
+
+# .NET Core
+project.lock.json
+project.fragment.lock.json
+artifacts/
+
+# ASP.NET Scaffolding
+ScaffoldingReadMe.txt
+
+# StyleCop
+StyleCopReport.xml
+
+# Files built by Visual Studio
+*_i.c
+*_p.c
+*_h.h
+*.ilk
+*.meta
+*.obj
+*.iobj
+*.pch
+*.pdb
+*.ipdb
+*.pgc
+*.pgd
+*.rsp
+*.sbr
+*.tlb
+*.tli
+*.tlh
+*.tmp
+*.tmp_proj
+*_wpftmp.csproj
+*.log
+*.vspscc
+*.vssscc
+.builds
+*.pidb
+*.svclog
+*.scc
+
+# Chutzpah Test files
+_Chutzpah*
+
+# Visual C++ cache files
+ipch/
+*.aps
+*.ncb
+*.opendb
+*.opensdf
+*.sdf
+*.cachefile
+*.VC.db
+*.VC.VC.opendb
+
+# Visual Studio profiler
+*.psess
+*.vsp
+*.vspx
+*.sap
+
+# Visual Studio Trace Files
+*.e2e
+
+# TFS 2012 Local Workspace
+$tf/
+
+# Guidance Automation Toolkit
+*.gpState
+
+# ReSharper is a .NET coding add-in
+_ReSharper*/
+*.[Rr]e[Ss]harper
+*.DotSettings.user
+
+# TeamCity is a build add-in
+_TeamCity*
+
+# DotCover is a Code Coverage Tool
+*.dotCover
+
+# AxoCover is a Code Coverage Tool
+.axoCover/*
+!.axoCover/settings.json
+
+# Coverlet is a free, cross platform Code Coverage Tool
+coverage*.json
+coverage*.xml
+coverage*.info
+
+# Visual Studio code coverage results
+*.coverage
+*.coveragexml
+
+# NCrunch
+_NCrunch_*
+.*crunch*.local.xml
+nCrunchTemp_*
+
+# MightyMoose
+*.mm.*
+AutoTest.Net/
+
+# Web workbench (sass)
+.sass-cache/
+
+# Installshield output folder
+[Ee]xpress/
+
+# DocProject is a documentation generator add-in
+DocProject/buildhelp/
+DocProject/Help/*.HxT
+DocProject/Help/*.HxC
+DocProject/Help/*.hhc
+DocProject/Help/*.hhk
+DocProject/Help/*.hhp
+DocProject/Help/Html2
+DocProject/Help/html
+
+# Click-Once directory
+publish/
+
+# Publish Web Output
+*.[Pp]ublish.xml
+*.azurePubxml
+# Note: Comment the next line if you want to checkin your web deploy settings,
+# but database connection strings (with potential passwords) will be unencrypted
+*.pubxml
+*.publishproj
+
+# Microsoft Azure Web App publish settings. Comment the next line if you want to
+# checkin your Azure Web App publish settings, but sensitive information contained
+# in these scripts will be unencrypted
+PublishScripts/
+
+# NuGet Packages
+*.nupkg
+# NuGet Symbol Packages
+*.snupkg
+# The packages folder can be ignored because of Package Restore
+**/[Pp]ackages/*
+# except build/, which is used as an MSBuild target.
+!**/[Pp]ackages/build/
+# Uncomment if necessary however generally it will be regenerated when needed
+#!**/[Pp]ackages/repositories.config
+# NuGet v3's project.json files produces more ignorable files
+*.nuget.props
+*.nuget.targets
+
+# Microsoft Azure Build Output
+csx/
+*.build.csdef
+
+# Microsoft Azure Emulator
+ecf/
+rcf/
+
+# Windows Store app package directories and files
+AppPackages/
+BundleArtifacts/
+Package.StoreAssociation.xml
+_pkginfo.txt
+*.appx
+*.appxbundle
+*.appxupload
+
+# Visual Studio cache files
+# files ending in .cache can be ignored
+*.[Cc]ache
+# but keep track of directories ending in .cache
+!?*.[Cc]ache/
+
+# Others
+ClientBin/
+~$*
+*~
+*.dbmdl
+*.dbproj.schemaview
+*.jfm
+*.pfx
+*.publishsettings
+orleans.codegen.cs
+
+# Including strong name files can present a security risk
+# (https://github.com/github/gitignore/pull/2483#issue-259490424)
+#*.snk
+
+# Since there are multiple workflows, uncomment next line to ignore bower_components
+# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
+#bower_components/
+
+# RIA/Silverlight projects
+Generated_Code/
+
+# Backup & report files from converting an old project file
+# to a newer Visual Studio version. Backup files are not needed,
+# because we have git ;-)
+_UpgradeReport_Files/
+Backup*/
+UpgradeLog*.XML
+UpgradeLog*.htm
+ServiceFabricBackup/
+*.rptproj.bak
+
+# SQL Server files
+*.mdf
+*.ldf
+*.ndf
+
+# Business Intelligence projects
+*.rdl.data
+*.bim.layout
+*.bim_*.settings
+*.rptproj.rsuser
+*- [Bb]ackup.rdl
+*- [Bb]ackup ([0-9]).rdl
+*- [Bb]ackup ([0-9][0-9]).rdl
+
+# Microsoft Fakes
+FakesAssemblies/
+
+# GhostDoc plugin setting file
+*.GhostDoc.xml
+
+# Node.js Tools for Visual Studio
+.ntvs_analysis.dat
+node_modules/
+
+# Visual Studio 6 build log
+*.plg
+
+# Visual Studio 6 workspace options file
+*.opt
+
+# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
+*.vbw
+
+# Visual Studio LightSwitch build output
+**/*.HTMLClient/GeneratedArtifacts
+**/*.DesktopClient/GeneratedArtifacts
+**/*.DesktopClient/ModelManifest.xml
+**/*.Server/GeneratedArtifacts
+**/*.Server/ModelManifest.xml
+_Pvt_Extensions
+
+# Paket dependency manager
+.paket/paket.exe
+paket-files/
+
+# FAKE - F# Make
+.fake/
+
+# CodeRush personal settings
+.cr/personal
+
+# Python Tools for Visual Studio (PTVS)
+__pycache__/
+*.pyc
+
+# Cake - Uncomment if you are using it
+# tools/**
+# !tools/packages.config
+
+# Tabs Studio
+*.tss
+
+# Telerik's JustMock configuration file
+*.jmconfig
+
+# BizTalk build output
+*.btp.cs
+*.btm.cs
+*.odx.cs
+*.xsd.cs
+
+# OpenCover UI analysis results
+OpenCover/
+
+# Azure Stream Analytics local run output
+ASALocalRun/
+
+# MSBuild Binary and Structured Log
+*.binlog
+
+# NVidia Nsight GPU debugger configuration file
+*.nvuser
+
+# MFractors (Xamarin productivity tool) working folder
+.mfractor/
+
+# Local History for Visual Studio
+.localhistory/
+
+# BeatPulse healthcheck temp database
+healthchecksdb
+
+# Backup folder for Package Reference Convert tool in Visual Studio 2017
+MigrationBackup/
+
+# Ionide (cross platform F# VS Code tools) working folder
+.ionide/
+
+# Fody - auto-generated XML schema
+FodyWeavers.xsd
diff --git a/csharp/README.md b/csharp/README.md
new file mode 100644
index 0000000..903ee8b
--- /dev/null
+++ b/csharp/README.md
@@ -0,0 +1,121 @@
+# aisStream - the C# library for the Ais-Stream WebsocketObjects
+
+OpenAPI 3.0 definitions for the data models used by aisstream.io.
+
+This C# SDK is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
+
+- API version: 1.0.0
+- SDK version: 1.0.0
+- Build package: org.openapitools.codegen.languages.CSharpClientCodegen
+
+
+## Frameworks supported
+The library was generated and customised for NET Standard 2.1.
+
+
+## Dependencies
+
+- [Json.NET](https://www.nuget.org/packages/Newtonsoft.Json/) - 13.0.3 or later
+- [System.ComponentModel.Annotations](https://www.nuget.org/packages/System.ComponentModel.Annotations) - 5.0.0 or later
+
+The DLLs included in the package may not be the latest version. We recommend using [NuGet](https://docs.nuget.org/consume/installing-nuget) to obtain the latest version of the packages:
+```
+Install-Package Newtonsoft.Json
+Install-Package System.ComponentModel.Annotations
+```
+
+
+## Usage
+
+To use the API client with a HTTP proxy, setup a `System.Net.WebProxy`
+```csharp
+Configuration c = new Configuration();
+System.Net.WebProxy webProxy = new System.Net.WebProxy("http://myProxyUrl:80/");
+webProxy.Credentials = System.Net.CredentialCache.DefaultCredentials;
+c.Proxy = webProxy;
+```
+
+
+## Getting Started
+
+```csharp
+using System;
+
+namespace aisStream.ModelExample
+{
+ internal class Program
+ {
+ static void Main(string[] args)
+ {
+ using (var client = new Client.WebsocketClient("", new Client.GeoBoundingBox(new Client.GeoCoordinate(-11.0, 178.0), new Client.GeoCoordinate(30.0, 74.0))))
+ {
+ client.AisReceived += Client_AisReceived;
+ client.Start();
+
+ Console.WriteLine("Press any key to close ...");
+ Console.ReadKey();
+ }
+ }
+
+ private static void Client_AisReceived(object sender, Client.AisReceivedEventArgs e)
+ {
+ Console.WriteLine(e.AIS);
+ }
+ }
+}
+```
+
+
+## Documentation for API Endpoints
+
+See: https://aisstream.io/documentation
+
+
+
+## Documentation for Models
+
+ - [Model.AddressedBinaryMessage](docs/AddressedBinaryMessage.md)
+ - [Model.AddressedBinaryMessageApplicationID](docs/AddressedBinaryMessageApplicationID.md)
+ - [Model.AddressedSafetyMessage](docs/AddressedSafetyMessage.md)
+ - [Model.AidsToNavigationReport](docs/AidsToNavigationReport.md)
+ - [Model.AisMessageTypes](docs/AisMessageTypes.md)
+ - [Model.AisStreamMessage](docs/AisStreamMessage.md)
+ - [Model.AisStreamMessageMessage](docs/AisStreamMessageMessage.md)
+ - [Model.AssignedModeCommand](docs/AssignedModeCommand.md)
+ - [Model.AssignedModeCommandCommands](docs/AssignedModeCommandCommands.md)
+ - [Model.AssignedModeCommandCommands0](docs/AssignedModeCommandCommands0.md)
+ - [Model.BaseStationReport](docs/BaseStationReport.md)
+ - [Model.BinaryAcknowledge](docs/BinaryAcknowledge.md)
+ - [Model.BinaryAcknowledgeDestinations](docs/BinaryAcknowledgeDestinations.md)
+ - [Model.BinaryAcknowledgeDestinations0](docs/BinaryAcknowledgeDestinations0.md)
+ - [Model.BinaryBroadcastMessage](docs/BinaryBroadcastMessage.md)
+ - [Model.ChannelManagement](docs/ChannelManagement.md)
+ - [Model.ChannelManagementArea](docs/ChannelManagementArea.md)
+ - [Model.ChannelManagementUnicast](docs/ChannelManagementUnicast.md)
+ - [Model.CoordinatedUTCInquiry](docs/CoordinatedUTCInquiry.md)
+ - [Model.DataLinkManagementMessage](docs/DataLinkManagementMessage.md)
+ - [Model.DataLinkManagementMessageData](docs/DataLinkManagementMessageData.md)
+ - [Model.DataLinkManagementMessageData0](docs/DataLinkManagementMessageData0.md)
+ - [Model.Error](docs/Error.md)
+ - [Model.ExtendedClassBPositionReport](docs/ExtendedClassBPositionReport.md)
+ - [Model.GnssBroadcastBinaryMessage](docs/GnssBroadcastBinaryMessage.md)
+ - [Model.GroupAssignmentCommand](docs/GroupAssignmentCommand.md)
+ - [Model.Interrogation](docs/Interrogation.md)
+ - [Model.InterrogationStation1Msg1](docs/InterrogationStation1Msg1.md)
+ - [Model.InterrogationStation1Msg2](docs/InterrogationStation1Msg2.md)
+ - [Model.InterrogationStation2](docs/InterrogationStation2.md)
+ - [Model.LongRangeAisBroadcastMessage](docs/LongRangeAisBroadcastMessage.md)
+ - [Model.MultiSlotBinaryMessage](docs/MultiSlotBinaryMessage.md)
+ - [Model.PositionReport](docs/PositionReport.md)
+ - [Model.SafetyBroadcastMessage](docs/SafetyBroadcastMessage.md)
+ - [Model.ShipStaticData](docs/ShipStaticData.md)
+ - [Model.ShipStaticDataDimension](docs/ShipStaticDataDimension.md)
+ - [Model.ShipStaticDataEta](docs/ShipStaticDataEta.md)
+ - [Model.SingleSlotBinaryMessage](docs/SingleSlotBinaryMessage.md)
+ - [Model.StandardClassBPositionReport](docs/StandardClassBPositionReport.md)
+ - [Model.StandardSearchAndRescueAircraftReport](docs/StandardSearchAndRescueAircraftReport.md)
+ - [Model.StaticDataReport](docs/StaticDataReport.md)
+ - [Model.StaticDataReportReportA](docs/StaticDataReportReportA.md)
+ - [Model.StaticDataReportReportB](docs/StaticDataReportReportB.md)
+ - [Model.SubscriptionMessage](docs/SubscriptionMessage.md)
+ - [Model.UnknownMessage](docs/UnknownMessage.md)
diff --git a/csharp/aisStream.sln b/csharp/aisStream.sln
new file mode 100644
index 0000000..7d69faa
--- /dev/null
+++ b/csharp/aisStream.sln
@@ -0,0 +1,48 @@
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.8.34330.188
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "aisStream", "src\aisStream\aisStream.csproj", "{CFC33882-2196-422F-8A8C-306335E24AD1}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "aisStream.Test", "src\aisStream.Test\aisStream.Test.csproj", "{BACFF3D9-AB66-4071-8E4D-1E9047583AEE}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "examples", "examples", "{3D0BFC3C-12B6-44AB-BFE2-100732DF5F0D}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "aisStream.SimpleExample", "examples\simple\aisStream.SimpleExample.csproj", "{ED188B29-D8D4-48DE-B4BE-8C5421085B50}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "aisStream.ModelExample", "examples\model\aisStream.ModelExample.csproj", "{A62E5DD9-47C9-4376-B374-81BC8B15E6B4}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {CFC33882-2196-422F-8A8C-306335E24AD1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {CFC33882-2196-422F-8A8C-306335E24AD1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CFC33882-2196-422F-8A8C-306335E24AD1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {CFC33882-2196-422F-8A8C-306335E24AD1}.Release|Any CPU.Build.0 = Release|Any CPU
+ {BACFF3D9-AB66-4071-8E4D-1E9047583AEE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {BACFF3D9-AB66-4071-8E4D-1E9047583AEE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BACFF3D9-AB66-4071-8E4D-1E9047583AEE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {BACFF3D9-AB66-4071-8E4D-1E9047583AEE}.Release|Any CPU.Build.0 = Release|Any CPU
+ {ED188B29-D8D4-48DE-B4BE-8C5421085B50}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {ED188B29-D8D4-48DE-B4BE-8C5421085B50}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {ED188B29-D8D4-48DE-B4BE-8C5421085B50}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {ED188B29-D8D4-48DE-B4BE-8C5421085B50}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A62E5DD9-47C9-4376-B374-81BC8B15E6B4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A62E5DD9-47C9-4376-B374-81BC8B15E6B4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A62E5DD9-47C9-4376-B374-81BC8B15E6B4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A62E5DD9-47C9-4376-B374-81BC8B15E6B4}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {ED188B29-D8D4-48DE-B4BE-8C5421085B50} = {3D0BFC3C-12B6-44AB-BFE2-100732DF5F0D}
+ {A62E5DD9-47C9-4376-B374-81BC8B15E6B4} = {3D0BFC3C-12B6-44AB-BFE2-100732DF5F0D}
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {AD7FBC58-469D-40FD-AA50-99942AF8A74E}
+ EndGlobalSection
+EndGlobal
diff --git a/csharp/docs/AddressedBinaryMessage.md b/csharp/docs/AddressedBinaryMessage.md
new file mode 100644
index 0000000..6bcdb13
--- /dev/null
+++ b/csharp/docs/AddressedBinaryMessage.md
@@ -0,0 +1,19 @@
+# aisStream.Model.AddressedBinaryMessage
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**MessageID** | **int** | |
+**RepeatIndicator** | **int** | |
+**UserID** | **int** | |
+**Valid** | **bool** | |
+**Sequenceinteger** | **int** | |
+**DestinationID** | **int** | |
+**Retransmission** | **bool** | |
+**Spare** | **bool** | |
+**ApplicationID** | [**AddressedBinaryMessageApplicationID**](AddressedBinaryMessageApplicationID.md) | |
+**BinaryData** | **string** | |
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
diff --git a/csharp/docs/AddressedBinaryMessageApplicationID.md b/csharp/docs/AddressedBinaryMessageApplicationID.md
new file mode 100644
index 0000000..6077206
--- /dev/null
+++ b/csharp/docs/AddressedBinaryMessageApplicationID.md
@@ -0,0 +1,12 @@
+# aisStream.Model.AddressedBinaryMessageApplicationID
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**Valid** | **bool** | |
+**DesignatedAreaCode** | **int** | |
+**FunctionIdentifier** | **int** | |
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
diff --git a/csharp/docs/AddressedSafetyMessage.md b/csharp/docs/AddressedSafetyMessage.md
new file mode 100644
index 0000000..52bd288
--- /dev/null
+++ b/csharp/docs/AddressedSafetyMessage.md
@@ -0,0 +1,18 @@
+# aisStream.Model.AddressedSafetyMessage
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**MessageID** | **int** | |
+**RepeatIndicator** | **int** | |
+**UserID** | **int** | |
+**Valid** | **bool** | |
+**Sequenceinteger** | **int** | |
+**DestinationID** | **int** | |
+**Retransmission** | **bool** | |
+**Spare** | **bool** | |
+**Text** | **string** | |
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
diff --git a/csharp/docs/AidsToNavigationReport.md b/csharp/docs/AidsToNavigationReport.md
new file mode 100644
index 0000000..a42929b
--- /dev/null
+++ b/csharp/docs/AidsToNavigationReport.md
@@ -0,0 +1,28 @@
+# aisStream.Model.AidsToNavigationReport
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**MessageID** | **int** | |
+**RepeatIndicator** | **int** | |
+**UserID** | **int** | |
+**Valid** | **bool** | |
+**Type** | **int** | |
+**Name** | **string** | |
+**PositionAccuracy** | **bool** | |
+**Longitude** | **double** | |
+**Latitude** | **double** | |
+**Dimension** | [**ShipStaticDataDimension**](ShipStaticDataDimension.md) | |
+**Fixtype** | **int** | |
+**Timestamp** | **int** | |
+**OffPosition** | **bool** | |
+**AtoN** | **int** | |
+**Raim** | **bool** | |
+**VirtualAtoN** | **bool** | |
+**AssignedMode** | **bool** | |
+**Spare** | **bool** | |
+**NameExtension** | **string** | |
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
diff --git a/csharp/docs/AisMessageTypes.md b/csharp/docs/AisMessageTypes.md
new file mode 100644
index 0000000..7dc5eb0
--- /dev/null
+++ b/csharp/docs/AisMessageTypes.md
@@ -0,0 +1,9 @@
+# aisStream.Model.AisMessageTypes
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
diff --git a/csharp/docs/AisStreamMessage.md b/csharp/docs/AisStreamMessage.md
new file mode 100644
index 0000000..74e574d
--- /dev/null
+++ b/csharp/docs/AisStreamMessage.md
@@ -0,0 +1,12 @@
+# aisStream.Model.AisStreamMessage
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**MetaData** | **Object** | |
+**MessageType** | **AisMessageTypes** | |
+**Message** | [**AisStreamMessageMessage**](AisStreamMessageMessage.md) | |
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
diff --git a/csharp/docs/AisStreamMessageMessage.md b/csharp/docs/AisStreamMessageMessage.md
new file mode 100644
index 0000000..1d9a163
--- /dev/null
+++ b/csharp/docs/AisStreamMessageMessage.md
@@ -0,0 +1,34 @@
+# aisStream.Model.AisStreamMessageMessage
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**PositionReport** | [**PositionReport**](PositionReport.md) | | [optional]
+**UnknownMessage** | [**UnknownMessage**](UnknownMessage.md) | | [optional]
+**AddressedSafetyMessage** | [**AddressedSafetyMessage**](AddressedSafetyMessage.md) | | [optional]
+**AddressedBinaryMessage** | [**AddressedBinaryMessage**](AddressedBinaryMessage.md) | | [optional]
+**AidsToNavigationReport** | [**AidsToNavigationReport**](AidsToNavigationReport.md) | | [optional]
+**AssignedModeCommand** | [**AssignedModeCommand**](AssignedModeCommand.md) | | [optional]
+**BaseStationReport** | [**BaseStationReport**](BaseStationReport.md) | | [optional]
+**BinaryAcknowledge** | [**BinaryAcknowledge**](BinaryAcknowledge.md) | | [optional]
+**BinaryBroadcastMessage** | [**BinaryBroadcastMessage**](BinaryBroadcastMessage.md) | | [optional]
+**ChannelManagement** | [**ChannelManagement**](ChannelManagement.md) | | [optional]
+**CoordinatedUTCInquiry** | [**CoordinatedUTCInquiry**](CoordinatedUTCInquiry.md) | | [optional]
+**DataLinkManagementMessage** | [**DataLinkManagementMessage**](DataLinkManagementMessage.md) | | [optional]
+**DataLinkManagementMessageData** | [**DataLinkManagementMessageData**](DataLinkManagementMessageData.md) | | [optional]
+**ExtendedClassBPositionReport** | [**ExtendedClassBPositionReport**](ExtendedClassBPositionReport.md) | | [optional]
+**GnssBroadcastBinaryMessage** | [**GnssBroadcastBinaryMessage**](GnssBroadcastBinaryMessage.md) | | [optional]
+**GroupAssignmentCommand** | [**GroupAssignmentCommand**](GroupAssignmentCommand.md) | | [optional]
+**Interrogation** | [**Interrogation**](Interrogation.md) | | [optional]
+**LongRangeAisBroadcastMessage** | [**LongRangeAisBroadcastMessage**](LongRangeAisBroadcastMessage.md) | | [optional]
+**MultiSlotBinaryMessage** | [**MultiSlotBinaryMessage**](MultiSlotBinaryMessage.md) | | [optional]
+**SafetyBroadcastMessage** | [**SafetyBroadcastMessage**](SafetyBroadcastMessage.md) | | [optional]
+**ShipStaticData** | [**ShipStaticData**](ShipStaticData.md) | | [optional]
+**SingleSlotBinaryMessage** | [**SingleSlotBinaryMessage**](SingleSlotBinaryMessage.md) | | [optional]
+**StandardClassBPositionReport** | [**StandardClassBPositionReport**](StandardClassBPositionReport.md) | | [optional]
+**StandardSearchAndRescueAircraftReport** | [**StandardSearchAndRescueAircraftReport**](StandardSearchAndRescueAircraftReport.md) | | [optional]
+**StaticDataReport** | [**StaticDataReport**](StaticDataReport.md) | | [optional]
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
diff --git a/csharp/docs/AssignedModeCommand.md b/csharp/docs/AssignedModeCommand.md
new file mode 100644
index 0000000..d2832f7
--- /dev/null
+++ b/csharp/docs/AssignedModeCommand.md
@@ -0,0 +1,15 @@
+# aisStream.Model.AssignedModeCommand
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**MessageID** | **int** | |
+**RepeatIndicator** | **int** | |
+**UserID** | **int** | |
+**Valid** | **bool** | |
+**Spare** | **int** | |
+**Commands** | [**AssignedModeCommandCommands**](AssignedModeCommandCommands.md) | |
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
diff --git a/csharp/docs/AssignedModeCommandCommands.md b/csharp/docs/AssignedModeCommandCommands.md
new file mode 100644
index 0000000..d6d80da
--- /dev/null
+++ b/csharp/docs/AssignedModeCommandCommands.md
@@ -0,0 +1,11 @@
+# aisStream.Model.AssignedModeCommandCommands
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**Var0** | [**AssignedModeCommandCommands0**](AssignedModeCommandCommands0.md) | |
+**Var1** | [**AssignedModeCommandCommands0**](AssignedModeCommandCommands0.md) | |
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
diff --git a/csharp/docs/AssignedModeCommandCommands0.md b/csharp/docs/AssignedModeCommandCommands0.md
new file mode 100644
index 0000000..0be5972
--- /dev/null
+++ b/csharp/docs/AssignedModeCommandCommands0.md
@@ -0,0 +1,13 @@
+# aisStream.Model.AssignedModeCommandCommands0
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**Valid** | **bool** | |
+**DestinationID** | **int** | |
+**Offset** | **int** | |
+**Increment** | **int** | |
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
diff --git a/csharp/docs/BaseStationReport.md b/csharp/docs/BaseStationReport.md
new file mode 100644
index 0000000..e1efd1c
--- /dev/null
+++ b/csharp/docs/BaseStationReport.md
@@ -0,0 +1,27 @@
+# aisStream.Model.BaseStationReport
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**MessageID** | **int** | |
+**RepeatIndicator** | **int** | |
+**UserID** | **int** | |
+**Valid** | **bool** | |
+**UtcYear** | **int** | |
+**UtcMonth** | **int** | |
+**UtcDay** | **int** | |
+**UtcHour** | **int** | |
+**UtcMinute** | **int** | |
+**UtcSecond** | **int** | |
+**PositionAccuracy** | **bool** | |
+**Longitude** | **double** | |
+**Latitude** | **double** | |
+**FixType** | **int** | |
+**LongRangeEnable** | **bool** | |
+**Spare** | **int** | |
+**Raim** | **bool** | |
+**CommunicationState** | **int** | |
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
diff --git a/csharp/docs/BinaryAcknowledge.md b/csharp/docs/BinaryAcknowledge.md
new file mode 100644
index 0000000..1664a7e
--- /dev/null
+++ b/csharp/docs/BinaryAcknowledge.md
@@ -0,0 +1,15 @@
+# aisStream.Model.BinaryAcknowledge
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**MessageID** | **int** | |
+**RepeatIndicator** | **int** | |
+**UserID** | **int** | |
+**Valid** | **bool** | |
+**Spare** | **int** | |
+**Destinations** | [**BinaryAcknowledgeDestinations**](BinaryAcknowledgeDestinations.md) | |
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
diff --git a/csharp/docs/BinaryAcknowledgeDestinations.md b/csharp/docs/BinaryAcknowledgeDestinations.md
new file mode 100644
index 0000000..2befd07
--- /dev/null
+++ b/csharp/docs/BinaryAcknowledgeDestinations.md
@@ -0,0 +1,13 @@
+# aisStream.Model.BinaryAcknowledgeDestinations
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**Var0** | [**BinaryAcknowledgeDestinations0**](BinaryAcknowledgeDestinations0.md) | |
+**Var1** | [**BinaryAcknowledgeDestinations0**](BinaryAcknowledgeDestinations0.md) | |
+**Var2** | [**BinaryAcknowledgeDestinations0**](BinaryAcknowledgeDestinations0.md) | |
+**Var3** | [**BinaryAcknowledgeDestinations0**](BinaryAcknowledgeDestinations0.md) | |
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
diff --git a/csharp/docs/BinaryAcknowledgeDestinations0.md b/csharp/docs/BinaryAcknowledgeDestinations0.md
new file mode 100644
index 0000000..eb4bc7e
--- /dev/null
+++ b/csharp/docs/BinaryAcknowledgeDestinations0.md
@@ -0,0 +1,12 @@
+# aisStream.Model.BinaryAcknowledgeDestinations0
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**Valid** | **bool** | |
+**DestinationID** | **int** | |
+**Sequenceinteger** | **int** | |
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
diff --git a/csharp/docs/BinaryBroadcastMessage.md b/csharp/docs/BinaryBroadcastMessage.md
new file mode 100644
index 0000000..7d53b1a
--- /dev/null
+++ b/csharp/docs/BinaryBroadcastMessage.md
@@ -0,0 +1,16 @@
+# aisStream.Model.BinaryBroadcastMessage
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**MessageID** | **int** | |
+**RepeatIndicator** | **int** | |
+**UserID** | **int** | |
+**Valid** | **bool** | |
+**Spare** | **int** | |
+**ApplicationID** | [**AddressedBinaryMessageApplicationID**](AddressedBinaryMessageApplicationID.md) | |
+**BinaryData** | **string** | |
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
diff --git a/csharp/docs/ChannelManagement.md b/csharp/docs/ChannelManagement.md
new file mode 100644
index 0000000..8af7a81
--- /dev/null
+++ b/csharp/docs/ChannelManagement.md
@@ -0,0 +1,25 @@
+# aisStream.Model.ChannelManagement
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**MessageID** | **int** | |
+**RepeatIndicator** | **int** | |
+**UserID** | **int** | |
+**Valid** | **bool** | |
+**Spare1** | **int** | |
+**ChannelA** | **int** | |
+**ChannelB** | **int** | |
+**TxRxMode** | **int** | |
+**LowPower** | **bool** | |
+**Area** | [**ChannelManagementArea**](ChannelManagementArea.md) | |
+**Unicast** | [**ChannelManagementUnicast**](ChannelManagementUnicast.md) | |
+**IsAddressed** | **bool** | |
+**BwA** | **bool** | |
+**BwB** | **bool** | |
+**TransitionalZoneSize** | **int** | |
+**Spare4** | **int** | |
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
diff --git a/csharp/docs/ChannelManagementArea.md b/csharp/docs/ChannelManagementArea.md
new file mode 100644
index 0000000..8c9cfdb
--- /dev/null
+++ b/csharp/docs/ChannelManagementArea.md
@@ -0,0 +1,13 @@
+# aisStream.Model.ChannelManagementArea
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**Longitude1** | **double** | |
+**Latitude1** | **double** | |
+**Longitude2** | **double** | |
+**Latitude2** | **double** | |
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
diff --git a/csharp/docs/ChannelManagementUnicast.md b/csharp/docs/ChannelManagementUnicast.md
new file mode 100644
index 0000000..7335803
--- /dev/null
+++ b/csharp/docs/ChannelManagementUnicast.md
@@ -0,0 +1,13 @@
+# aisStream.Model.ChannelManagementUnicast
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**AddressStation1** | **int** | |
+**Spare2** | **int** | |
+**AddressStation2** | **int** | |
+**Spare3** | **int** | |
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
diff --git a/csharp/docs/CoordinatedUTCInquiry.md b/csharp/docs/CoordinatedUTCInquiry.md
new file mode 100644
index 0000000..5e2421f
--- /dev/null
+++ b/csharp/docs/CoordinatedUTCInquiry.md
@@ -0,0 +1,16 @@
+# aisStream.Model.CoordinatedUTCInquiry
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**MessageID** | **int** | |
+**RepeatIndicator** | **int** | |
+**UserID** | **int** | |
+**Valid** | **bool** | |
+**Spare1** | **int** | |
+**DestinationID** | **int** | |
+**Spare2** | **int** | |
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
diff --git a/csharp/docs/DataLinkManagementMessage.md b/csharp/docs/DataLinkManagementMessage.md
new file mode 100644
index 0000000..7374297
--- /dev/null
+++ b/csharp/docs/DataLinkManagementMessage.md
@@ -0,0 +1,15 @@
+# aisStream.Model.DataLinkManagementMessage
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**MessageID** | **int** | |
+**RepeatIndicator** | **int** | |
+**UserID** | **int** | |
+**Valid** | **bool** | |
+**Spare** | **int** | |
+**Data** | [**DataLinkManagementMessageData**](DataLinkManagementMessageData.md) | |
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
diff --git a/csharp/docs/DataLinkManagementMessageData.md b/csharp/docs/DataLinkManagementMessageData.md
new file mode 100644
index 0000000..3b1666a
--- /dev/null
+++ b/csharp/docs/DataLinkManagementMessageData.md
@@ -0,0 +1,13 @@
+# aisStream.Model.DataLinkManagementMessageData
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**Var0** | [**DataLinkManagementMessageData0**](DataLinkManagementMessageData0.md) | |
+**Var1** | [**DataLinkManagementMessageData0**](DataLinkManagementMessageData0.md) | |
+**Var2** | [**DataLinkManagementMessageData0**](DataLinkManagementMessageData0.md) | |
+**Var3** | [**DataLinkManagementMessageData0**](DataLinkManagementMessageData0.md) | |
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
diff --git a/csharp/docs/DataLinkManagementMessageData0.md b/csharp/docs/DataLinkManagementMessageData0.md
new file mode 100644
index 0000000..fb44457
--- /dev/null
+++ b/csharp/docs/DataLinkManagementMessageData0.md
@@ -0,0 +1,14 @@
+# aisStream.Model.DataLinkManagementMessageData0
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**Valid** | **bool** | |
+**Offset** | **int** | |
+**IntegerOfSlots** | **int** | |
+**TimeOut** | **int** | |
+**Increment** | **int** | |
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
diff --git a/csharp/docs/Error.md b/csharp/docs/Error.md
new file mode 100644
index 0000000..e8ff45c
--- /dev/null
+++ b/csharp/docs/Error.md
@@ -0,0 +1,10 @@
+# aisStream.Model.Error
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**VarError** | **string** | |
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
diff --git a/csharp/docs/ExtendedClassBPositionReport.md b/csharp/docs/ExtendedClassBPositionReport.md
new file mode 100644
index 0000000..c9c0e35
--- /dev/null
+++ b/csharp/docs/ExtendedClassBPositionReport.md
@@ -0,0 +1,30 @@
+# aisStream.Model.ExtendedClassBPositionReport
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**MessageID** | **int** | |
+**RepeatIndicator** | **int** | |
+**UserID** | **int** | |
+**Valid** | **bool** | |
+**Spare1** | **int** | |
+**Sog** | **double** | |
+**PositionAccuracy** | **bool** | |
+**Longitude** | **double** | |
+**Latitude** | **double** | |
+**Cog** | **double** | |
+**TrueHeading** | **int** | |
+**Timestamp** | **int** | |
+**Spare2** | **int** | |
+**Name** | **string** | |
+**Type** | **int** | |
+**Dimension** | [**ShipStaticDataDimension**](ShipStaticDataDimension.md) | |
+**FixType** | **int** | |
+**Raim** | **bool** | |
+**Dte** | **bool** | |
+**AssignedMode** | **bool** | |
+**Spare3** | **int** | |
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
diff --git a/csharp/docs/GnssBroadcastBinaryMessage.md b/csharp/docs/GnssBroadcastBinaryMessage.md
new file mode 100644
index 0000000..721e909
--- /dev/null
+++ b/csharp/docs/GnssBroadcastBinaryMessage.md
@@ -0,0 +1,18 @@
+# aisStream.Model.GnssBroadcastBinaryMessage
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**MessageID** | **int** | |
+**RepeatIndicator** | **int** | |
+**UserID** | **int** | |
+**Valid** | **bool** | |
+**Spare1** | **int** | |
+**Longitude** | **double** | |
+**Latitude** | **double** | |
+**Spare2** | **int** | |
+**Data** | **string** | |
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
diff --git a/csharp/docs/GroupAssignmentCommand.md b/csharp/docs/GroupAssignmentCommand.md
new file mode 100644
index 0000000..30b72b2
--- /dev/null
+++ b/csharp/docs/GroupAssignmentCommand.md
@@ -0,0 +1,25 @@
+# aisStream.Model.GroupAssignmentCommand
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**MessageID** | **int** | |
+**RepeatIndicator** | **int** | |
+**UserID** | **int** | |
+**Valid** | **bool** | |
+**Spare1** | **int** | |
+**Longitude1** | **double** | |
+**Latitude1** | **double** | |
+**Longitude2** | **double** | |
+**Latitude2** | **double** | |
+**StationType** | **int** | |
+**ShipType** | **int** | |
+**Spare2** | **int** | |
+**TxRxMode** | **int** | |
+**ReportingInterval** | **int** | |
+**QuietTime** | **int** | |
+**Spare3** | **int** | |
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
diff --git a/csharp/docs/Interrogation.md b/csharp/docs/Interrogation.md
new file mode 100644
index 0000000..03b20fd
--- /dev/null
+++ b/csharp/docs/Interrogation.md
@@ -0,0 +1,17 @@
+# aisStream.Model.Interrogation
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**MessageID** | **int** | |
+**RepeatIndicator** | **int** | |
+**UserID** | **int** | |
+**Valid** | **bool** | |
+**Spare** | **int** | |
+**Station1Msg1** | [**InterrogationStation1Msg1**](InterrogationStation1Msg1.md) | |
+**Station1Msg2** | [**InterrogationStation1Msg2**](InterrogationStation1Msg2.md) | |
+**Station2** | [**InterrogationStation2**](InterrogationStation2.md) | |
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
diff --git a/csharp/docs/InterrogationStation1Msg1.md b/csharp/docs/InterrogationStation1Msg1.md
new file mode 100644
index 0000000..4319b8d
--- /dev/null
+++ b/csharp/docs/InterrogationStation1Msg1.md
@@ -0,0 +1,13 @@
+# aisStream.Model.InterrogationStation1Msg1
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**Valid** | **bool** | |
+**StationID** | **int** | |
+**MessageID** | **int** | |
+**SlotOffset** | **int** | |
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
diff --git a/csharp/docs/InterrogationStation1Msg2.md b/csharp/docs/InterrogationStation1Msg2.md
new file mode 100644
index 0000000..e5fa6cc
--- /dev/null
+++ b/csharp/docs/InterrogationStation1Msg2.md
@@ -0,0 +1,13 @@
+# aisStream.Model.InterrogationStation1Msg2
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**Valid** | **bool** | |
+**Spare** | **int** | |
+**MessageID** | **int** | |
+**SlotOffset** | **int** | |
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
diff --git a/csharp/docs/InterrogationStation2.md b/csharp/docs/InterrogationStation2.md
new file mode 100644
index 0000000..1c824d9
--- /dev/null
+++ b/csharp/docs/InterrogationStation2.md
@@ -0,0 +1,15 @@
+# aisStream.Model.InterrogationStation2
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**Valid** | **bool** | |
+**Spare1** | **int** | |
+**StationID** | **int** | |
+**MessageID** | **int** | |
+**SlotOffset** | **int** | |
+**Spare2** | **int** | |
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
diff --git a/csharp/docs/LongRangeAisBroadcastMessage.md b/csharp/docs/LongRangeAisBroadcastMessage.md
new file mode 100644
index 0000000..dc4967d
--- /dev/null
+++ b/csharp/docs/LongRangeAisBroadcastMessage.md
@@ -0,0 +1,22 @@
+# aisStream.Model.LongRangeAisBroadcastMessage
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**MessageID** | **int** | |
+**RepeatIndicator** | **int** | |
+**UserID** | **int** | |
+**Valid** | **bool** | |
+**PositionAccuracy** | **bool** | |
+**Raim** | **bool** | |
+**NavigationalStatus** | **int** | |
+**Longitude** | **double** | |
+**Latitude** | **double** | |
+**Sog** | **double** | |
+**Cog** | **double** | |
+**PositionLatency** | **bool** | |
+**Spare** | **bool** | |
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
diff --git a/csharp/docs/MultiSlotBinaryMessage.md b/csharp/docs/MultiSlotBinaryMessage.md
new file mode 100644
index 0000000..a40015d
--- /dev/null
+++ b/csharp/docs/MultiSlotBinaryMessage.md
@@ -0,0 +1,22 @@
+# aisStream.Model.MultiSlotBinaryMessage
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**MessageID** | **int** | |
+**RepeatIndicator** | **int** | |
+**UserID** | **int** | |
+**Valid** | **bool** | |
+**DestinationIDValid** | **bool** | |
+**ApplicationIDValid** | **bool** | |
+**DestinationID** | **int** | |
+**Spare1** | **int** | |
+**ApplicationID** | [**AddressedBinaryMessageApplicationID**](AddressedBinaryMessageApplicationID.md) | |
+**Payload** | **string** | |
+**Spare2** | **int** | |
+**CommunicationStateIsItdma** | **bool** | |
+**CommunicationState** | **int** | |
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
diff --git a/csharp/docs/PositionReport.md b/csharp/docs/PositionReport.md
new file mode 100644
index 0000000..138d699
--- /dev/null
+++ b/csharp/docs/PositionReport.md
@@ -0,0 +1,26 @@
+# aisStream.Model.PositionReport
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**MessageID** | **int** | |
+**RepeatIndicator** | **int** | |
+**UserID** | **int** | |
+**Valid** | **bool** | |
+**NavigationalStatus** | **int** | |
+**RateOfTurn** | **int** | |
+**Sog** | **double** | |
+**PositionAccuracy** | **bool** | |
+**Longitude** | **double** | |
+**Latitude** | **double** | |
+**Cog** | **double** | |
+**TrueHeading** | **int** | |
+**Timestamp** | **int** | |
+**SpecialManoeuvreIndicator** | **int** | |
+**Spare** | **int** | |
+**Raim** | **bool** | |
+**CommunicationState** | **int** | |
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
diff --git a/csharp/docs/SafetyBroadcastMessage.md b/csharp/docs/SafetyBroadcastMessage.md
new file mode 100644
index 0000000..242c83c
--- /dev/null
+++ b/csharp/docs/SafetyBroadcastMessage.md
@@ -0,0 +1,15 @@
+# aisStream.Model.SafetyBroadcastMessage
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**MessageID** | **int** | |
+**RepeatIndicator** | **int** | |
+**UserID** | **int** | |
+**Valid** | **bool** | |
+**Spare** | **int** | |
+**Text** | **string** | |
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
diff --git a/csharp/docs/ShipStaticData.md b/csharp/docs/ShipStaticData.md
new file mode 100644
index 0000000..063332f
--- /dev/null
+++ b/csharp/docs/ShipStaticData.md
@@ -0,0 +1,25 @@
+# aisStream.Model.ShipStaticData
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**MessageID** | **int** | |
+**RepeatIndicator** | **int** | |
+**UserID** | **int** | |
+**Valid** | **bool** | |
+**AisVersion** | **int** | |
+**ImoNumber** | **int** | |
+**CallSign** | **string** | |
+**Name** | **string** | |
+**Type** | **int** | |
+**Dimension** | [**ShipStaticDataDimension**](ShipStaticDataDimension.md) | |
+**FixType** | **int** | |
+**Eta** | [**ShipStaticDataEta**](ShipStaticDataEta.md) | |
+**MaximumStaticDraught** | **double** | |
+**Destination** | **string** | |
+**Dte** | **bool** | |
+**Spare** | **bool** | |
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
diff --git a/csharp/docs/ShipStaticDataDimension.md b/csharp/docs/ShipStaticDataDimension.md
new file mode 100644
index 0000000..8fefda2
--- /dev/null
+++ b/csharp/docs/ShipStaticDataDimension.md
@@ -0,0 +1,13 @@
+# aisStream.Model.ShipStaticDataDimension
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**A** | **int** | |
+**B** | **int** | |
+**C** | **int** | |
+**D** | **int** | |
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
diff --git a/csharp/docs/ShipStaticDataEta.md b/csharp/docs/ShipStaticDataEta.md
new file mode 100644
index 0000000..6c005bd
--- /dev/null
+++ b/csharp/docs/ShipStaticDataEta.md
@@ -0,0 +1,13 @@
+# aisStream.Model.ShipStaticDataEta
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**Month** | **int** | |
+**Day** | **int** | |
+**Hour** | **int** | |
+**Minute** | **int** | |
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
diff --git a/csharp/docs/SingleSlotBinaryMessage.md b/csharp/docs/SingleSlotBinaryMessage.md
new file mode 100644
index 0000000..ffc75b9
--- /dev/null
+++ b/csharp/docs/SingleSlotBinaryMessage.md
@@ -0,0 +1,19 @@
+# aisStream.Model.SingleSlotBinaryMessage
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**MessageID** | **int** | |
+**RepeatIndicator** | **int** | |
+**UserID** | **int** | |
+**Valid** | **bool** | |
+**DestinationIDValid** | **bool** | |
+**ApplicationIDValid** | **bool** | |
+**DestinationID** | **int** | |
+**Spare** | **int** | |
+**ApplicationID** | [**AddressedBinaryMessageApplicationID**](AddressedBinaryMessageApplicationID.md) | |
+**Payload** | **string** | |
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
diff --git a/csharp/docs/StandardClassBPositionReport.md b/csharp/docs/StandardClassBPositionReport.md
new file mode 100644
index 0000000..d2184f3
--- /dev/null
+++ b/csharp/docs/StandardClassBPositionReport.md
@@ -0,0 +1,31 @@
+# aisStream.Model.StandardClassBPositionReport
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**MessageID** | **int** | |
+**RepeatIndicator** | **int** | |
+**UserID** | **int** | |
+**Valid** | **bool** | |
+**Spare1** | **int** | |
+**Sog** | **double** | |
+**PositionAccuracy** | **bool** | |
+**Longitude** | **double** | |
+**Latitude** | **double** | |
+**Cog** | **double** | |
+**TrueHeading** | **int** | |
+**Timestamp** | **int** | |
+**Spare2** | **int** | |
+**ClassBUnit** | **bool** | |
+**ClassBDisplay** | **bool** | |
+**ClassBDsc** | **bool** | |
+**ClassBBand** | **bool** | |
+**ClassBMsg22** | **bool** | |
+**AssignedMode** | **bool** | |
+**Raim** | **bool** | |
+**CommunicationStateIsItdma** | **bool** | |
+**CommunicationState** | **int** | |
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
diff --git a/csharp/docs/StandardSearchAndRescueAircraftReport.md b/csharp/docs/StandardSearchAndRescueAircraftReport.md
new file mode 100644
index 0000000..3ec0db7
--- /dev/null
+++ b/csharp/docs/StandardSearchAndRescueAircraftReport.md
@@ -0,0 +1,28 @@
+# aisStream.Model.StandardSearchAndRescueAircraftReport
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**MessageID** | **int** | |
+**RepeatIndicator** | **int** | |
+**UserID** | **int** | |
+**Valid** | **bool** | |
+**Altitude** | **int** | |
+**Sog** | **double** | |
+**PositionAccuracy** | **bool** | |
+**Longitude** | **double** | |
+**Latitude** | **double** | |
+**Cog** | **double** | |
+**Timestamp** | **int** | |
+**AltFromBaro** | **bool** | |
+**Spare1** | **int** | |
+**Dte** | **bool** | |
+**Spare2** | **int** | |
+**AssignedMode** | **bool** | |
+**Raim** | **bool** | |
+**CommunicationStateIsItdma** | **bool** | |
+**CommunicationState** | **int** | |
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
diff --git a/csharp/docs/StaticDataReport.md b/csharp/docs/StaticDataReport.md
new file mode 100644
index 0000000..2cc20c2
--- /dev/null
+++ b/csharp/docs/StaticDataReport.md
@@ -0,0 +1,17 @@
+# aisStream.Model.StaticDataReport
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**MessageID** | **int** | |
+**RepeatIndicator** | **int** | |
+**UserID** | **int** | |
+**Valid** | **bool** | |
+**Reserved** | **int** | |
+**PartNumber** | **bool** | |
+**ReportA** | [**StaticDataReportReportA**](StaticDataReportReportA.md) | |
+**ReportB** | [**StaticDataReportReportB**](StaticDataReportReportB.md) | |
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
diff --git a/csharp/docs/StaticDataReportReportA.md b/csharp/docs/StaticDataReportReportA.md
new file mode 100644
index 0000000..e6d16b1
--- /dev/null
+++ b/csharp/docs/StaticDataReportReportA.md
@@ -0,0 +1,11 @@
+# aisStream.Model.StaticDataReportReportA
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**Valid** | **bool** | |
+**Name** | **string** | |
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
diff --git a/csharp/docs/StaticDataReportReportB.md b/csharp/docs/StaticDataReportReportB.md
new file mode 100644
index 0000000..21a8cc1
--- /dev/null
+++ b/csharp/docs/StaticDataReportReportB.md
@@ -0,0 +1,18 @@
+# aisStream.Model.StaticDataReportReportB
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**Valid** | **bool** | |
+**ShipType** | **int** | |
+**VendorIDName** | **string** | |
+**VenderIDModel** | **int** | |
+**VenderIDSerial** | **int** | |
+**CallSign** | **string** | |
+**Dimension** | [**ShipStaticDataDimension**](ShipStaticDataDimension.md) | |
+**FixType** | **int** | |
+**Spare** | **int** | |
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
diff --git a/csharp/docs/SubscriptionMessage.md b/csharp/docs/SubscriptionMessage.md
new file mode 100644
index 0000000..649d12c
--- /dev/null
+++ b/csharp/docs/SubscriptionMessage.md
@@ -0,0 +1,13 @@
+# aisStream.Model.SubscriptionMessage
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**APIKey** | **string** | |
+**BoundingBoxes** | **List<List<List<double>>>** | |
+**FiltersShipMMSI** | **List<string>** | | [optional]
+**FilterMessageTypes** | [**List<AisMessageTypes>**](AisMessageTypes.md) | | [optional]
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
diff --git a/csharp/docs/UnknownMessage.md b/csharp/docs/UnknownMessage.md
new file mode 100644
index 0000000..86eea4c
--- /dev/null
+++ b/csharp/docs/UnknownMessage.md
@@ -0,0 +1,10 @@
+# aisStream.Model.UnknownMessage
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**Error** | **string** | | [optional]
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
diff --git a/csharp/examples/model/Program.cs b/csharp/examples/model/Program.cs
new file mode 100644
index 0000000..9fcc0c8
--- /dev/null
+++ b/csharp/examples/model/Program.cs
@@ -0,0 +1,24 @@
+using System;
+
+namespace aisStream.ModelExample
+{
+ internal class Program
+ {
+ static void Main(string[] args)
+ {
+ using (var client = new Client.WebsocketClient("", new Client.GeoBoundingBox(new Client.GeoCoordinate(-11.0, 178.0), new Client.GeoCoordinate(30.0, 74.0))))
+ {
+ client.AisReceived += Client_AisReceived;
+ client.Start();
+
+ Console.WriteLine("Press any key to close ...");
+ Console.ReadKey();
+ }
+ }
+
+ private static void Client_AisReceived(object sender, Client.AisReceivedEventArgs e)
+ {
+ Console.WriteLine(e.AIS);
+ }
+ }
+}
diff --git a/csharp/examples/model/aisStream.ModelExample.csproj b/csharp/examples/model/aisStream.ModelExample.csproj
new file mode 100644
index 0000000..d135abd
--- /dev/null
+++ b/csharp/examples/model/aisStream.ModelExample.csproj
@@ -0,0 +1,12 @@
+
+
+
+ Exe
+ net8.0
+
+
+
+
+
+
+
diff --git a/csharp/examples/simple/Program.cs b/csharp/examples/simple/Program.cs
new file mode 100644
index 0000000..bd555f2
--- /dev/null
+++ b/csharp/examples/simple/Program.cs
@@ -0,0 +1,35 @@
+using System;
+using System.Net.WebSockets;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace aisStream.SimpleExample
+{
+ internal class Program
+ {
+ public static async Task Main(string[] args)
+ {
+ CancellationTokenSource source = new CancellationTokenSource();
+ CancellationToken token = source.Token;
+ using (var ws = new ClientWebSocket())
+ {
+ await ws.ConnectAsync(new Uri("wss://stream.aisstream.io/v0/stream"), token);
+ await ws.SendAsync(new ArraySegment(Encoding.UTF8.GetBytes("{ \"APIKey\": \"\", \"BoundingBoxes\": [[[-11.0, 178.0], [30.0, 74.0]]]}")), WebSocketMessageType.Text, true, token);
+ byte[] buffer = new byte[4096];
+ while (ws.State == WebSocketState.Open)
+ {
+ var result = await ws.ReceiveAsync(new ArraySegment(buffer), token);
+ if (result.MessageType == WebSocketMessageType.Close)
+ {
+ await ws.CloseAsync(WebSocketCloseStatus.NormalClosure, string.Empty, token);
+ }
+ else
+ {
+ Console.WriteLine($"Received {Encoding.Default.GetString(buffer, 0, result.Count)}");
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/csharp/examples/simple/aisStream.SimpleExample.csproj b/csharp/examples/simple/aisStream.SimpleExample.csproj
new file mode 100644
index 0000000..21114b1
--- /dev/null
+++ b/csharp/examples/simple/aisStream.SimpleExample.csproj
@@ -0,0 +1,8 @@
+
+
+
+ Exe
+ net8.0
+
+
+
diff --git a/csharp/src/aisStream.Test/Model/AddressedBinaryMessageApplicationIDTests.cs b/csharp/src/aisStream.Test/Model/AddressedBinaryMessageApplicationIDTests.cs
new file mode 100644
index 0000000..67b3c85
--- /dev/null
+++ b/csharp/src/aisStream.Test/Model/AddressedBinaryMessageApplicationIDTests.cs
@@ -0,0 +1,76 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using System;
+using Xunit;
+
+namespace aisStream.Test.Model
+{
+ ///
+ /// Class for testing AddressedBinaryMessageApplicationID
+ ///
+ ///
+ /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
+ /// Please update the test case below to test the model.
+ ///
+ public class AddressedBinaryMessageApplicationIDTests : IDisposable
+ {
+ // TODO uncomment below to declare an instance variable for AddressedBinaryMessageApplicationID
+ //private AddressedBinaryMessageApplicationID instance;
+
+ public AddressedBinaryMessageApplicationIDTests()
+ {
+ // TODO uncomment below to create an instance of AddressedBinaryMessageApplicationID
+ //instance = new AddressedBinaryMessageApplicationID();
+ }
+
+ public void Dispose()
+ {
+ // Cleanup when everything is done.
+ }
+
+ ///
+ /// Test an instance of AddressedBinaryMessageApplicationID
+ ///
+ [Fact]
+ public void AddressedBinaryMessageApplicationIDInstanceTest()
+ {
+ // TODO uncomment below to test "IsType" AddressedBinaryMessageApplicationID
+ //Assert.IsType(instance);
+ }
+
+ ///
+ /// Test the property 'Valid'
+ ///
+ [Fact]
+ public void ValidTest()
+ {
+ // TODO unit test for the property 'Valid'
+ }
+
+ ///
+ /// Test the property 'DesignatedAreaCode'
+ ///
+ [Fact]
+ public void DesignatedAreaCodeTest()
+ {
+ // TODO unit test for the property 'DesignatedAreaCode'
+ }
+
+ ///
+ /// Test the property 'FunctionIdentifier'
+ ///
+ [Fact]
+ public void FunctionIdentifierTest()
+ {
+ // TODO unit test for the property 'FunctionIdentifier'
+ }
+ }
+}
diff --git a/csharp/src/aisStream.Test/Model/AddressedBinaryMessageTests.cs b/csharp/src/aisStream.Test/Model/AddressedBinaryMessageTests.cs
new file mode 100644
index 0000000..fa5ba7d
--- /dev/null
+++ b/csharp/src/aisStream.Test/Model/AddressedBinaryMessageTests.cs
@@ -0,0 +1,139 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using System;
+using Xunit;
+
+namespace aisStream.Test.Model
+{
+ ///
+ /// Class for testing AddressedBinaryMessage
+ ///
+ ///
+ /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
+ /// Please update the test case below to test the model.
+ ///
+ public class AddressedBinaryMessageTests : IDisposable
+ {
+ // TODO uncomment below to declare an instance variable for AddressedBinaryMessage
+ //private AddressedBinaryMessage instance;
+
+ public AddressedBinaryMessageTests()
+ {
+ // TODO uncomment below to create an instance of AddressedBinaryMessage
+ //instance = new AddressedBinaryMessage();
+ }
+
+ public void Dispose()
+ {
+ // Cleanup when everything is done.
+ }
+
+ ///
+ /// Test an instance of AddressedBinaryMessage
+ ///
+ [Fact]
+ public void AddressedBinaryMessageInstanceTest()
+ {
+ // TODO uncomment below to test "IsType" AddressedBinaryMessage
+ //Assert.IsType(instance);
+ }
+
+ ///
+ /// Test the property 'MessageID'
+ ///
+ [Fact]
+ public void MessageIDTest()
+ {
+ // TODO unit test for the property 'MessageID'
+ }
+
+ ///
+ /// Test the property 'RepeatIndicator'
+ ///
+ [Fact]
+ public void RepeatIndicatorTest()
+ {
+ // TODO unit test for the property 'RepeatIndicator'
+ }
+
+ ///
+ /// Test the property 'UserID'
+ ///
+ [Fact]
+ public void UserIDTest()
+ {
+ // TODO unit test for the property 'UserID'
+ }
+
+ ///
+ /// Test the property 'Valid'
+ ///
+ [Fact]
+ public void ValidTest()
+ {
+ // TODO unit test for the property 'Valid'
+ }
+
+ ///
+ /// Test the property 'Sequenceinteger'
+ ///
+ [Fact]
+ public void SequenceintegerTest()
+ {
+ // TODO unit test for the property 'Sequenceinteger'
+ }
+
+ ///
+ /// Test the property 'DestinationID'
+ ///
+ [Fact]
+ public void DestinationIDTest()
+ {
+ // TODO unit test for the property 'DestinationID'
+ }
+
+ ///
+ /// Test the property 'Retransmission'
+ ///
+ [Fact]
+ public void RetransmissionTest()
+ {
+ // TODO unit test for the property 'Retransmission'
+ }
+
+ ///
+ /// Test the property 'Spare'
+ ///
+ [Fact]
+ public void SpareTest()
+ {
+ // TODO unit test for the property 'Spare'
+ }
+
+ ///
+ /// Test the property 'ApplicationID'
+ ///
+ [Fact]
+ public void ApplicationIDTest()
+ {
+ // TODO unit test for the property 'ApplicationID'
+ }
+
+ ///
+ /// Test the property 'BinaryData'
+ ///
+ [Fact]
+ public void BinaryDataTest()
+ {
+ // TODO unit test for the property 'BinaryData'
+ }
+ }
+}
diff --git a/csharp/src/aisStream.Test/Model/AddressedSafetyMessageTests.cs b/csharp/src/aisStream.Test/Model/AddressedSafetyMessageTests.cs
new file mode 100644
index 0000000..7ccb512
--- /dev/null
+++ b/csharp/src/aisStream.Test/Model/AddressedSafetyMessageTests.cs
@@ -0,0 +1,130 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using System;
+using Xunit;
+
+namespace aisStream.Test.Model
+{
+ ///
+ /// Class for testing AddressedSafetyMessage
+ ///
+ ///
+ /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
+ /// Please update the test case below to test the model.
+ ///
+ public class AddressedSafetyMessageTests : IDisposable
+ {
+ // TODO uncomment below to declare an instance variable for AddressedSafetyMessage
+ //private AddressedSafetyMessage instance;
+
+ public AddressedSafetyMessageTests()
+ {
+ // TODO uncomment below to create an instance of AddressedSafetyMessage
+ //instance = new AddressedSafetyMessage();
+ }
+
+ public void Dispose()
+ {
+ // Cleanup when everything is done.
+ }
+
+ ///
+ /// Test an instance of AddressedSafetyMessage
+ ///
+ [Fact]
+ public void AddressedSafetyMessageInstanceTest()
+ {
+ // TODO uncomment below to test "IsType" AddressedSafetyMessage
+ //Assert.IsType(instance);
+ }
+
+ ///
+ /// Test the property 'MessageID'
+ ///
+ [Fact]
+ public void MessageIDTest()
+ {
+ // TODO unit test for the property 'MessageID'
+ }
+
+ ///
+ /// Test the property 'RepeatIndicator'
+ ///
+ [Fact]
+ public void RepeatIndicatorTest()
+ {
+ // TODO unit test for the property 'RepeatIndicator'
+ }
+
+ ///
+ /// Test the property 'UserID'
+ ///
+ [Fact]
+ public void UserIDTest()
+ {
+ // TODO unit test for the property 'UserID'
+ }
+
+ ///
+ /// Test the property 'Valid'
+ ///
+ [Fact]
+ public void ValidTest()
+ {
+ // TODO unit test for the property 'Valid'
+ }
+
+ ///
+ /// Test the property 'Sequenceinteger'
+ ///
+ [Fact]
+ public void SequenceintegerTest()
+ {
+ // TODO unit test for the property 'Sequenceinteger'
+ }
+
+ ///
+ /// Test the property 'DestinationID'
+ ///
+ [Fact]
+ public void DestinationIDTest()
+ {
+ // TODO unit test for the property 'DestinationID'
+ }
+
+ ///
+ /// Test the property 'Retransmission'
+ ///
+ [Fact]
+ public void RetransmissionTest()
+ {
+ // TODO unit test for the property 'Retransmission'
+ }
+
+ ///
+ /// Test the property 'Spare'
+ ///
+ [Fact]
+ public void SpareTest()
+ {
+ // TODO unit test for the property 'Spare'
+ }
+
+ ///
+ /// Test the property 'Text'
+ ///
+ [Fact]
+ public void TextTest()
+ {
+ // TODO unit test for the property 'Text'
+ }
+ }
+}
diff --git a/csharp/src/aisStream.Test/Model/AidsToNavigationReportTests.cs b/csharp/src/aisStream.Test/Model/AidsToNavigationReportTests.cs
new file mode 100644
index 0000000..18eb52f
--- /dev/null
+++ b/csharp/src/aisStream.Test/Model/AidsToNavigationReportTests.cs
@@ -0,0 +1,220 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using System;
+using Xunit;
+
+namespace aisStream.Test.Model
+{
+ ///
+ /// Class for testing AidsToNavigationReport
+ ///
+ ///
+ /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
+ /// Please update the test case below to test the model.
+ ///
+ public class AidsToNavigationReportTests : IDisposable
+ {
+ // TODO uncomment below to declare an instance variable for AidsToNavigationReport
+ //private AidsToNavigationReport instance;
+
+ public AidsToNavigationReportTests()
+ {
+ // TODO uncomment below to create an instance of AidsToNavigationReport
+ //instance = new AidsToNavigationReport();
+ }
+
+ public void Dispose()
+ {
+ // Cleanup when everything is done.
+ }
+
+ ///
+ /// Test an instance of AidsToNavigationReport
+ ///
+ [Fact]
+ public void AidsToNavigationReportInstanceTest()
+ {
+ // TODO uncomment below to test "IsType" AidsToNavigationReport
+ //Assert.IsType(instance);
+ }
+
+ ///
+ /// Test the property 'MessageID'
+ ///
+ [Fact]
+ public void MessageIDTest()
+ {
+ // TODO unit test for the property 'MessageID'
+ }
+
+ ///
+ /// Test the property 'RepeatIndicator'
+ ///
+ [Fact]
+ public void RepeatIndicatorTest()
+ {
+ // TODO unit test for the property 'RepeatIndicator'
+ }
+
+ ///
+ /// Test the property 'UserID'
+ ///
+ [Fact]
+ public void UserIDTest()
+ {
+ // TODO unit test for the property 'UserID'
+ }
+
+ ///
+ /// Test the property 'Valid'
+ ///
+ [Fact]
+ public void ValidTest()
+ {
+ // TODO unit test for the property 'Valid'
+ }
+
+ ///
+ /// Test the property 'Type'
+ ///
+ [Fact]
+ public void TypeTest()
+ {
+ // TODO unit test for the property 'Type'
+ }
+
+ ///
+ /// Test the property 'Name'
+ ///
+ [Fact]
+ public void NameTest()
+ {
+ // TODO unit test for the property 'Name'
+ }
+
+ ///
+ /// Test the property 'PositionAccuracy'
+ ///
+ [Fact]
+ public void PositionAccuracyTest()
+ {
+ // TODO unit test for the property 'PositionAccuracy'
+ }
+
+ ///
+ /// Test the property 'Longitude'
+ ///
+ [Fact]
+ public void LongitudeTest()
+ {
+ // TODO unit test for the property 'Longitude'
+ }
+
+ ///
+ /// Test the property 'Latitude'
+ ///
+ [Fact]
+ public void LatitudeTest()
+ {
+ // TODO unit test for the property 'Latitude'
+ }
+
+ ///
+ /// Test the property 'Dimension'
+ ///
+ [Fact]
+ public void DimensionTest()
+ {
+ // TODO unit test for the property 'Dimension'
+ }
+
+ ///
+ /// Test the property 'Fixtype'
+ ///
+ [Fact]
+ public void FixtypeTest()
+ {
+ // TODO unit test for the property 'Fixtype'
+ }
+
+ ///
+ /// Test the property 'Timestamp'
+ ///
+ [Fact]
+ public void TimestampTest()
+ {
+ // TODO unit test for the property 'Timestamp'
+ }
+
+ ///
+ /// Test the property 'OffPosition'
+ ///
+ [Fact]
+ public void OffPositionTest()
+ {
+ // TODO unit test for the property 'OffPosition'
+ }
+
+ ///
+ /// Test the property 'AtoN'
+ ///
+ [Fact]
+ public void AtoNTest()
+ {
+ // TODO unit test for the property 'AtoN'
+ }
+
+ ///
+ /// Test the property 'Raim'
+ ///
+ [Fact]
+ public void RaimTest()
+ {
+ // TODO unit test for the property 'Raim'
+ }
+
+ ///
+ /// Test the property 'VirtualAtoN'
+ ///
+ [Fact]
+ public void VirtualAtoNTest()
+ {
+ // TODO unit test for the property 'VirtualAtoN'
+ }
+
+ ///
+ /// Test the property 'AssignedMode'
+ ///
+ [Fact]
+ public void AssignedModeTest()
+ {
+ // TODO unit test for the property 'AssignedMode'
+ }
+
+ ///
+ /// Test the property 'Spare'
+ ///
+ [Fact]
+ public void SpareTest()
+ {
+ // TODO unit test for the property 'Spare'
+ }
+
+ ///
+ /// Test the property 'NameExtension'
+ ///
+ [Fact]
+ public void NameExtensionTest()
+ {
+ // TODO unit test for the property 'NameExtension'
+ }
+ }
+}
diff --git a/csharp/src/aisStream.Test/Model/AisMessageTypesTests.cs b/csharp/src/aisStream.Test/Model/AisMessageTypesTests.cs
new file mode 100644
index 0000000..6de06b2
--- /dev/null
+++ b/csharp/src/aisStream.Test/Model/AisMessageTypesTests.cs
@@ -0,0 +1,49 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using System;
+using Xunit;
+
+namespace aisStream.Test.Model
+{
+ ///
+ /// Class for testing AisMessageTypes
+ ///
+ ///
+ /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
+ /// Please update the test case below to test the model.
+ ///
+ public class AisMessageTypesTests : IDisposable
+ {
+ // TODO uncomment below to declare an instance variable for AisMessageTypes
+ //private AisMessageTypes instance;
+
+ public AisMessageTypesTests()
+ {
+ // TODO uncomment below to create an instance of AisMessageTypes
+ //instance = new AisMessageTypes();
+ }
+
+ public void Dispose()
+ {
+ // Cleanup when everything is done.
+ }
+
+ ///
+ /// Test an instance of AisMessageTypes
+ ///
+ [Fact]
+ public void AisMessageTypesInstanceTest()
+ {
+ // TODO uncomment below to test "IsType" AisMessageTypes
+ //Assert.IsType(instance);
+ }
+ }
+}
diff --git a/csharp/src/aisStream.Test/Model/AisStreamMessageMessageTests.cs b/csharp/src/aisStream.Test/Model/AisStreamMessageMessageTests.cs
new file mode 100644
index 0000000..3488600
--- /dev/null
+++ b/csharp/src/aisStream.Test/Model/AisStreamMessageMessageTests.cs
@@ -0,0 +1,274 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using System;
+using Xunit;
+
+namespace aisStream.Test.Model
+{
+ ///
+ /// Class for testing AisStreamMessageMessage
+ ///
+ ///
+ /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
+ /// Please update the test case below to test the model.
+ ///
+ public class AisStreamMessageMessageTests : IDisposable
+ {
+ // TODO uncomment below to declare an instance variable for AisStreamMessageMessage
+ //private AisStreamMessageMessage instance;
+
+ public AisStreamMessageMessageTests()
+ {
+ // TODO uncomment below to create an instance of AisStreamMessageMessage
+ //instance = new AisStreamMessageMessage();
+ }
+
+ public void Dispose()
+ {
+ // Cleanup when everything is done.
+ }
+
+ ///
+ /// Test an instance of AisStreamMessageMessage
+ ///
+ [Fact]
+ public void AisStreamMessageMessageInstanceTest()
+ {
+ // TODO uncomment below to test "IsType" AisStreamMessageMessage
+ //Assert.IsType(instance);
+ }
+
+ ///
+ /// Test the property 'PositionReport'
+ ///
+ [Fact]
+ public void PositionReportTest()
+ {
+ // TODO unit test for the property 'PositionReport'
+ }
+
+ ///
+ /// Test the property 'UnknownMessage'
+ ///
+ [Fact]
+ public void UnknownMessageTest()
+ {
+ // TODO unit test for the property 'UnknownMessage'
+ }
+
+ ///
+ /// Test the property 'AddressedSafetyMessage'
+ ///
+ [Fact]
+ public void AddressedSafetyMessageTest()
+ {
+ // TODO unit test for the property 'AddressedSafetyMessage'
+ }
+
+ ///
+ /// Test the property 'AddressedBinaryMessage'
+ ///
+ [Fact]
+ public void AddressedBinaryMessageTest()
+ {
+ // TODO unit test for the property 'AddressedBinaryMessage'
+ }
+
+ ///
+ /// Test the property 'AidsToNavigationReport'
+ ///
+ [Fact]
+ public void AidsToNavigationReportTest()
+ {
+ // TODO unit test for the property 'AidsToNavigationReport'
+ }
+
+ ///
+ /// Test the property 'AssignedModeCommand'
+ ///
+ [Fact]
+ public void AssignedModeCommandTest()
+ {
+ // TODO unit test for the property 'AssignedModeCommand'
+ }
+
+ ///
+ /// Test the property 'BaseStationReport'
+ ///
+ [Fact]
+ public void BaseStationReportTest()
+ {
+ // TODO unit test for the property 'BaseStationReport'
+ }
+
+ ///
+ /// Test the property 'BinaryAcknowledge'
+ ///
+ [Fact]
+ public void BinaryAcknowledgeTest()
+ {
+ // TODO unit test for the property 'BinaryAcknowledge'
+ }
+
+ ///
+ /// Test the property 'BinaryBroadcastMessage'
+ ///
+ [Fact]
+ public void BinaryBroadcastMessageTest()
+ {
+ // TODO unit test for the property 'BinaryBroadcastMessage'
+ }
+
+ ///
+ /// Test the property 'ChannelManagement'
+ ///
+ [Fact]
+ public void ChannelManagementTest()
+ {
+ // TODO unit test for the property 'ChannelManagement'
+ }
+
+ ///
+ /// Test the property 'CoordinatedUTCInquiry'
+ ///
+ [Fact]
+ public void CoordinatedUTCInquiryTest()
+ {
+ // TODO unit test for the property 'CoordinatedUTCInquiry'
+ }
+
+ ///
+ /// Test the property 'DataLinkManagementMessage'
+ ///
+ [Fact]
+ public void DataLinkManagementMessageTest()
+ {
+ // TODO unit test for the property 'DataLinkManagementMessage'
+ }
+
+ ///
+ /// Test the property 'DataLinkManagementMessageData'
+ ///
+ [Fact]
+ public void DataLinkManagementMessageDataTest()
+ {
+ // TODO unit test for the property 'DataLinkManagementMessageData'
+ }
+
+ ///
+ /// Test the property 'ExtendedClassBPositionReport'
+ ///
+ [Fact]
+ public void ExtendedClassBPositionReportTest()
+ {
+ // TODO unit test for the property 'ExtendedClassBPositionReport'
+ }
+
+ ///
+ /// Test the property 'GnssBroadcastBinaryMessage'
+ ///
+ [Fact]
+ public void GnssBroadcastBinaryMessageTest()
+ {
+ // TODO unit test for the property 'GnssBroadcastBinaryMessage'
+ }
+
+ ///
+ /// Test the property 'GroupAssignmentCommand'
+ ///
+ [Fact]
+ public void GroupAssignmentCommandTest()
+ {
+ // TODO unit test for the property 'GroupAssignmentCommand'
+ }
+
+ ///
+ /// Test the property 'Interrogation'
+ ///
+ [Fact]
+ public void InterrogationTest()
+ {
+ // TODO unit test for the property 'Interrogation'
+ }
+
+ ///
+ /// Test the property 'LongRangeAisBroadcastMessage'
+ ///
+ [Fact]
+ public void LongRangeAisBroadcastMessageTest()
+ {
+ // TODO unit test for the property 'LongRangeAisBroadcastMessage'
+ }
+
+ ///
+ /// Test the property 'MultiSlotBinaryMessage'
+ ///
+ [Fact]
+ public void MultiSlotBinaryMessageTest()
+ {
+ // TODO unit test for the property 'MultiSlotBinaryMessage'
+ }
+
+ ///
+ /// Test the property 'SafetyBroadcastMessage'
+ ///
+ [Fact]
+ public void SafetyBroadcastMessageTest()
+ {
+ // TODO unit test for the property 'SafetyBroadcastMessage'
+ }
+
+ ///
+ /// Test the property 'ShipStaticData'
+ ///
+ [Fact]
+ public void ShipStaticDataTest()
+ {
+ // TODO unit test for the property 'ShipStaticData'
+ }
+
+ ///
+ /// Test the property 'SingleSlotBinaryMessage'
+ ///
+ [Fact]
+ public void SingleSlotBinaryMessageTest()
+ {
+ // TODO unit test for the property 'SingleSlotBinaryMessage'
+ }
+
+ ///
+ /// Test the property 'StandardClassBPositionReport'
+ ///
+ [Fact]
+ public void StandardClassBPositionReportTest()
+ {
+ // TODO unit test for the property 'StandardClassBPositionReport'
+ }
+
+ ///
+ /// Test the property 'StandardSearchAndRescueAircraftReport'
+ ///
+ [Fact]
+ public void StandardSearchAndRescueAircraftReportTest()
+ {
+ // TODO unit test for the property 'StandardSearchAndRescueAircraftReport'
+ }
+
+ ///
+ /// Test the property 'StaticDataReport'
+ ///
+ [Fact]
+ public void StaticDataReportTest()
+ {
+ // TODO unit test for the property 'StaticDataReport'
+ }
+ }
+}
diff --git a/csharp/src/aisStream.Test/Model/AisStreamMessageTests.cs b/csharp/src/aisStream.Test/Model/AisStreamMessageTests.cs
new file mode 100644
index 0000000..c01fa1c
--- /dev/null
+++ b/csharp/src/aisStream.Test/Model/AisStreamMessageTests.cs
@@ -0,0 +1,76 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using System;
+using Xunit;
+
+namespace aisStream.Test.Model
+{
+ ///
+ /// Class for testing AisStreamMessage
+ ///
+ ///
+ /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
+ /// Please update the test case below to test the model.
+ ///
+ public class AisStreamMessageTests : IDisposable
+ {
+ // TODO uncomment below to declare an instance variable for AisStreamMessage
+ //private AisStreamMessage instance;
+
+ public AisStreamMessageTests()
+ {
+ // TODO uncomment below to create an instance of AisStreamMessage
+ //instance = new AisStreamMessage();
+ }
+
+ public void Dispose()
+ {
+ // Cleanup when everything is done.
+ }
+
+ ///
+ /// Test an instance of AisStreamMessage
+ ///
+ [Fact]
+ public void AisStreamMessageInstanceTest()
+ {
+ // TODO uncomment below to test "IsType" AisStreamMessage
+ //Assert.IsType(instance);
+ }
+
+ ///
+ /// Test the property 'MetaData'
+ ///
+ [Fact]
+ public void MetaDataTest()
+ {
+ // TODO unit test for the property 'MetaData'
+ }
+
+ ///
+ /// Test the property 'MessageType'
+ ///
+ [Fact]
+ public void MessageTypeTest()
+ {
+ // TODO unit test for the property 'MessageType'
+ }
+
+ ///
+ /// Test the property 'Message'
+ ///
+ [Fact]
+ public void MessageTest()
+ {
+ // TODO unit test for the property 'Message'
+ }
+ }
+}
diff --git a/csharp/src/aisStream.Test/Model/AssignedModeCommandCommands0Tests.cs b/csharp/src/aisStream.Test/Model/AssignedModeCommandCommands0Tests.cs
new file mode 100644
index 0000000..10387dd
--- /dev/null
+++ b/csharp/src/aisStream.Test/Model/AssignedModeCommandCommands0Tests.cs
@@ -0,0 +1,85 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using System;
+using Xunit;
+
+namespace aisStream.Test.Model
+{
+ ///
+ /// Class for testing AssignedModeCommandCommands0
+ ///
+ ///
+ /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
+ /// Please update the test case below to test the model.
+ ///
+ public class AssignedModeCommandCommands0Tests : IDisposable
+ {
+ // TODO uncomment below to declare an instance variable for AssignedModeCommandCommands0
+ //private AssignedModeCommandCommands0 instance;
+
+ public AssignedModeCommandCommands0Tests()
+ {
+ // TODO uncomment below to create an instance of AssignedModeCommandCommands0
+ //instance = new AssignedModeCommandCommands0();
+ }
+
+ public void Dispose()
+ {
+ // Cleanup when everything is done.
+ }
+
+ ///
+ /// Test an instance of AssignedModeCommandCommands0
+ ///
+ [Fact]
+ public void AssignedModeCommandCommands0InstanceTest()
+ {
+ // TODO uncomment below to test "IsType" AssignedModeCommandCommands0
+ //Assert.IsType(instance);
+ }
+
+ ///
+ /// Test the property 'Valid'
+ ///
+ [Fact]
+ public void ValidTest()
+ {
+ // TODO unit test for the property 'Valid'
+ }
+
+ ///
+ /// Test the property 'DestinationID'
+ ///
+ [Fact]
+ public void DestinationIDTest()
+ {
+ // TODO unit test for the property 'DestinationID'
+ }
+
+ ///
+ /// Test the property 'Offset'
+ ///
+ [Fact]
+ public void OffsetTest()
+ {
+ // TODO unit test for the property 'Offset'
+ }
+
+ ///
+ /// Test the property 'Increment'
+ ///
+ [Fact]
+ public void IncrementTest()
+ {
+ // TODO unit test for the property 'Increment'
+ }
+ }
+}
diff --git a/csharp/src/aisStream.Test/Model/AssignedModeCommandCommandsTests.cs b/csharp/src/aisStream.Test/Model/AssignedModeCommandCommandsTests.cs
new file mode 100644
index 0000000..f53cfaf
--- /dev/null
+++ b/csharp/src/aisStream.Test/Model/AssignedModeCommandCommandsTests.cs
@@ -0,0 +1,67 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using System;
+using Xunit;
+
+namespace aisStream.Test.Model
+{
+ ///
+ /// Class for testing AssignedModeCommandCommands
+ ///
+ ///
+ /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
+ /// Please update the test case below to test the model.
+ ///
+ public class AssignedModeCommandCommandsTests : IDisposable
+ {
+ // TODO uncomment below to declare an instance variable for AssignedModeCommandCommands
+ //private AssignedModeCommandCommands instance;
+
+ public AssignedModeCommandCommandsTests()
+ {
+ // TODO uncomment below to create an instance of AssignedModeCommandCommands
+ //instance = new AssignedModeCommandCommands();
+ }
+
+ public void Dispose()
+ {
+ // Cleanup when everything is done.
+ }
+
+ ///
+ /// Test an instance of AssignedModeCommandCommands
+ ///
+ [Fact]
+ public void AssignedModeCommandCommandsInstanceTest()
+ {
+ // TODO uncomment below to test "IsType" AssignedModeCommandCommands
+ //Assert.IsType(instance);
+ }
+
+ ///
+ /// Test the property 'Var0'
+ ///
+ [Fact]
+ public void Var0Test()
+ {
+ // TODO unit test for the property 'Var0'
+ }
+
+ ///
+ /// Test the property 'Var1'
+ ///
+ [Fact]
+ public void Var1Test()
+ {
+ // TODO unit test for the property 'Var1'
+ }
+ }
+}
diff --git a/csharp/src/aisStream.Test/Model/AssignedModeCommandTests.cs b/csharp/src/aisStream.Test/Model/AssignedModeCommandTests.cs
new file mode 100644
index 0000000..cd1cb1e
--- /dev/null
+++ b/csharp/src/aisStream.Test/Model/AssignedModeCommandTests.cs
@@ -0,0 +1,103 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using System;
+using Xunit;
+
+namespace aisStream.Test.Model
+{
+ ///
+ /// Class for testing AssignedModeCommand
+ ///
+ ///
+ /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
+ /// Please update the test case below to test the model.
+ ///
+ public class AssignedModeCommandTests : IDisposable
+ {
+ // TODO uncomment below to declare an instance variable for AssignedModeCommand
+ //private AssignedModeCommand instance;
+
+ public AssignedModeCommandTests()
+ {
+ // TODO uncomment below to create an instance of AssignedModeCommand
+ //instance = new AssignedModeCommand();
+ }
+
+ public void Dispose()
+ {
+ // Cleanup when everything is done.
+ }
+
+ ///
+ /// Test an instance of AssignedModeCommand
+ ///
+ [Fact]
+ public void AssignedModeCommandInstanceTest()
+ {
+ // TODO uncomment below to test "IsType" AssignedModeCommand
+ //Assert.IsType(instance);
+ }
+
+ ///
+ /// Test the property 'MessageID'
+ ///
+ [Fact]
+ public void MessageIDTest()
+ {
+ // TODO unit test for the property 'MessageID'
+ }
+
+ ///
+ /// Test the property 'RepeatIndicator'
+ ///
+ [Fact]
+ public void RepeatIndicatorTest()
+ {
+ // TODO unit test for the property 'RepeatIndicator'
+ }
+
+ ///
+ /// Test the property 'UserID'
+ ///
+ [Fact]
+ public void UserIDTest()
+ {
+ // TODO unit test for the property 'UserID'
+ }
+
+ ///
+ /// Test the property 'Valid'
+ ///
+ [Fact]
+ public void ValidTest()
+ {
+ // TODO unit test for the property 'Valid'
+ }
+
+ ///
+ /// Test the property 'Spare'
+ ///
+ [Fact]
+ public void SpareTest()
+ {
+ // TODO unit test for the property 'Spare'
+ }
+
+ ///
+ /// Test the property 'Commands'
+ ///
+ [Fact]
+ public void CommandsTest()
+ {
+ // TODO unit test for the property 'Commands'
+ }
+ }
+}
diff --git a/csharp/src/aisStream.Test/Model/BaseStationReportTests.cs b/csharp/src/aisStream.Test/Model/BaseStationReportTests.cs
new file mode 100644
index 0000000..0b7c9e6
--- /dev/null
+++ b/csharp/src/aisStream.Test/Model/BaseStationReportTests.cs
@@ -0,0 +1,211 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using System;
+using Xunit;
+
+namespace aisStream.Test.Model
+{
+ ///
+ /// Class for testing BaseStationReport
+ ///
+ ///
+ /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
+ /// Please update the test case below to test the model.
+ ///
+ public class BaseStationReportTests : IDisposable
+ {
+ // TODO uncomment below to declare an instance variable for BaseStationReport
+ //private BaseStationReport instance;
+
+ public BaseStationReportTests()
+ {
+ // TODO uncomment below to create an instance of BaseStationReport
+ //instance = new BaseStationReport();
+ }
+
+ public void Dispose()
+ {
+ // Cleanup when everything is done.
+ }
+
+ ///
+ /// Test an instance of BaseStationReport
+ ///
+ [Fact]
+ public void BaseStationReportInstanceTest()
+ {
+ // TODO uncomment below to test "IsType" BaseStationReport
+ //Assert.IsType(instance);
+ }
+
+ ///
+ /// Test the property 'MessageID'
+ ///
+ [Fact]
+ public void MessageIDTest()
+ {
+ // TODO unit test for the property 'MessageID'
+ }
+
+ ///
+ /// Test the property 'RepeatIndicator'
+ ///
+ [Fact]
+ public void RepeatIndicatorTest()
+ {
+ // TODO unit test for the property 'RepeatIndicator'
+ }
+
+ ///
+ /// Test the property 'UserID'
+ ///
+ [Fact]
+ public void UserIDTest()
+ {
+ // TODO unit test for the property 'UserID'
+ }
+
+ ///
+ /// Test the property 'Valid'
+ ///
+ [Fact]
+ public void ValidTest()
+ {
+ // TODO unit test for the property 'Valid'
+ }
+
+ ///
+ /// Test the property 'UtcYear'
+ ///
+ [Fact]
+ public void UtcYearTest()
+ {
+ // TODO unit test for the property 'UtcYear'
+ }
+
+ ///
+ /// Test the property 'UtcMonth'
+ ///
+ [Fact]
+ public void UtcMonthTest()
+ {
+ // TODO unit test for the property 'UtcMonth'
+ }
+
+ ///
+ /// Test the property 'UtcDay'
+ ///
+ [Fact]
+ public void UtcDayTest()
+ {
+ // TODO unit test for the property 'UtcDay'
+ }
+
+ ///
+ /// Test the property 'UtcHour'
+ ///
+ [Fact]
+ public void UtcHourTest()
+ {
+ // TODO unit test for the property 'UtcHour'
+ }
+
+ ///
+ /// Test the property 'UtcMinute'
+ ///
+ [Fact]
+ public void UtcMinuteTest()
+ {
+ // TODO unit test for the property 'UtcMinute'
+ }
+
+ ///
+ /// Test the property 'UtcSecond'
+ ///
+ [Fact]
+ public void UtcSecondTest()
+ {
+ // TODO unit test for the property 'UtcSecond'
+ }
+
+ ///
+ /// Test the property 'PositionAccuracy'
+ ///
+ [Fact]
+ public void PositionAccuracyTest()
+ {
+ // TODO unit test for the property 'PositionAccuracy'
+ }
+
+ ///
+ /// Test the property 'Longitude'
+ ///
+ [Fact]
+ public void LongitudeTest()
+ {
+ // TODO unit test for the property 'Longitude'
+ }
+
+ ///
+ /// Test the property 'Latitude'
+ ///
+ [Fact]
+ public void LatitudeTest()
+ {
+ // TODO unit test for the property 'Latitude'
+ }
+
+ ///
+ /// Test the property 'FixType'
+ ///
+ [Fact]
+ public void FixTypeTest()
+ {
+ // TODO unit test for the property 'FixType'
+ }
+
+ ///
+ /// Test the property 'LongRangeEnable'
+ ///
+ [Fact]
+ public void LongRangeEnableTest()
+ {
+ // TODO unit test for the property 'LongRangeEnable'
+ }
+
+ ///
+ /// Test the property 'Spare'
+ ///
+ [Fact]
+ public void SpareTest()
+ {
+ // TODO unit test for the property 'Spare'
+ }
+
+ ///
+ /// Test the property 'Raim'
+ ///
+ [Fact]
+ public void RaimTest()
+ {
+ // TODO unit test for the property 'Raim'
+ }
+
+ ///
+ /// Test the property 'CommunicationState'
+ ///
+ [Fact]
+ public void CommunicationStateTest()
+ {
+ // TODO unit test for the property 'CommunicationState'
+ }
+ }
+}
diff --git a/csharp/src/aisStream.Test/Model/BinaryAcknowledgeDestinations0Tests.cs b/csharp/src/aisStream.Test/Model/BinaryAcknowledgeDestinations0Tests.cs
new file mode 100644
index 0000000..8374137
--- /dev/null
+++ b/csharp/src/aisStream.Test/Model/BinaryAcknowledgeDestinations0Tests.cs
@@ -0,0 +1,76 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using System;
+using Xunit;
+
+namespace aisStream.Test.Model
+{
+ ///
+ /// Class for testing BinaryAcknowledgeDestinations0
+ ///
+ ///
+ /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
+ /// Please update the test case below to test the model.
+ ///
+ public class BinaryAcknowledgeDestinations0Tests : IDisposable
+ {
+ // TODO uncomment below to declare an instance variable for BinaryAcknowledgeDestinations0
+ //private BinaryAcknowledgeDestinations0 instance;
+
+ public BinaryAcknowledgeDestinations0Tests()
+ {
+ // TODO uncomment below to create an instance of BinaryAcknowledgeDestinations0
+ //instance = new BinaryAcknowledgeDestinations0();
+ }
+
+ public void Dispose()
+ {
+ // Cleanup when everything is done.
+ }
+
+ ///
+ /// Test an instance of BinaryAcknowledgeDestinations0
+ ///
+ [Fact]
+ public void BinaryAcknowledgeDestinations0InstanceTest()
+ {
+ // TODO uncomment below to test "IsType" BinaryAcknowledgeDestinations0
+ //Assert.IsType(instance);
+ }
+
+ ///
+ /// Test the property 'Valid'
+ ///
+ [Fact]
+ public void ValidTest()
+ {
+ // TODO unit test for the property 'Valid'
+ }
+
+ ///
+ /// Test the property 'DestinationID'
+ ///
+ [Fact]
+ public void DestinationIDTest()
+ {
+ // TODO unit test for the property 'DestinationID'
+ }
+
+ ///
+ /// Test the property 'Sequenceinteger'
+ ///
+ [Fact]
+ public void SequenceintegerTest()
+ {
+ // TODO unit test for the property 'Sequenceinteger'
+ }
+ }
+}
diff --git a/csharp/src/aisStream.Test/Model/BinaryAcknowledgeDestinationsTests.cs b/csharp/src/aisStream.Test/Model/BinaryAcknowledgeDestinationsTests.cs
new file mode 100644
index 0000000..845ff25
--- /dev/null
+++ b/csharp/src/aisStream.Test/Model/BinaryAcknowledgeDestinationsTests.cs
@@ -0,0 +1,85 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using System;
+using Xunit;
+
+namespace aisStream.Test.Model
+{
+ ///
+ /// Class for testing BinaryAcknowledgeDestinations
+ ///
+ ///
+ /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
+ /// Please update the test case below to test the model.
+ ///
+ public class BinaryAcknowledgeDestinationsTests : IDisposable
+ {
+ // TODO uncomment below to declare an instance variable for BinaryAcknowledgeDestinations
+ //private BinaryAcknowledgeDestinations instance;
+
+ public BinaryAcknowledgeDestinationsTests()
+ {
+ // TODO uncomment below to create an instance of BinaryAcknowledgeDestinations
+ //instance = new BinaryAcknowledgeDestinations();
+ }
+
+ public void Dispose()
+ {
+ // Cleanup when everything is done.
+ }
+
+ ///
+ /// Test an instance of BinaryAcknowledgeDestinations
+ ///
+ [Fact]
+ public void BinaryAcknowledgeDestinationsInstanceTest()
+ {
+ // TODO uncomment below to test "IsType" BinaryAcknowledgeDestinations
+ //Assert.IsType(instance);
+ }
+
+ ///
+ /// Test the property 'Var0'
+ ///
+ [Fact]
+ public void Var0Test()
+ {
+ // TODO unit test for the property 'Var0'
+ }
+
+ ///
+ /// Test the property 'Var1'
+ ///
+ [Fact]
+ public void Var1Test()
+ {
+ // TODO unit test for the property 'Var1'
+ }
+
+ ///
+ /// Test the property 'Var2'
+ ///
+ [Fact]
+ public void Var2Test()
+ {
+ // TODO unit test for the property 'Var2'
+ }
+
+ ///
+ /// Test the property 'Var3'
+ ///
+ [Fact]
+ public void Var3Test()
+ {
+ // TODO unit test for the property 'Var3'
+ }
+ }
+}
diff --git a/csharp/src/aisStream.Test/Model/BinaryAcknowledgeTests.cs b/csharp/src/aisStream.Test/Model/BinaryAcknowledgeTests.cs
new file mode 100644
index 0000000..313a63f
--- /dev/null
+++ b/csharp/src/aisStream.Test/Model/BinaryAcknowledgeTests.cs
@@ -0,0 +1,103 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using System;
+using Xunit;
+
+namespace aisStream.Test.Model
+{
+ ///
+ /// Class for testing BinaryAcknowledge
+ ///
+ ///
+ /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
+ /// Please update the test case below to test the model.
+ ///
+ public class BinaryAcknowledgeTests : IDisposable
+ {
+ // TODO uncomment below to declare an instance variable for BinaryAcknowledge
+ //private BinaryAcknowledge instance;
+
+ public BinaryAcknowledgeTests()
+ {
+ // TODO uncomment below to create an instance of BinaryAcknowledge
+ //instance = new BinaryAcknowledge();
+ }
+
+ public void Dispose()
+ {
+ // Cleanup when everything is done.
+ }
+
+ ///
+ /// Test an instance of BinaryAcknowledge
+ ///
+ [Fact]
+ public void BinaryAcknowledgeInstanceTest()
+ {
+ // TODO uncomment below to test "IsType" BinaryAcknowledge
+ //Assert.IsType(instance);
+ }
+
+ ///
+ /// Test the property 'MessageID'
+ ///
+ [Fact]
+ public void MessageIDTest()
+ {
+ // TODO unit test for the property 'MessageID'
+ }
+
+ ///
+ /// Test the property 'RepeatIndicator'
+ ///
+ [Fact]
+ public void RepeatIndicatorTest()
+ {
+ // TODO unit test for the property 'RepeatIndicator'
+ }
+
+ ///
+ /// Test the property 'UserID'
+ ///
+ [Fact]
+ public void UserIDTest()
+ {
+ // TODO unit test for the property 'UserID'
+ }
+
+ ///
+ /// Test the property 'Valid'
+ ///
+ [Fact]
+ public void ValidTest()
+ {
+ // TODO unit test for the property 'Valid'
+ }
+
+ ///
+ /// Test the property 'Spare'
+ ///
+ [Fact]
+ public void SpareTest()
+ {
+ // TODO unit test for the property 'Spare'
+ }
+
+ ///
+ /// Test the property 'Destinations'
+ ///
+ [Fact]
+ public void DestinationsTest()
+ {
+ // TODO unit test for the property 'Destinations'
+ }
+ }
+}
diff --git a/csharp/src/aisStream.Test/Model/BinaryBroadcastMessageTests.cs b/csharp/src/aisStream.Test/Model/BinaryBroadcastMessageTests.cs
new file mode 100644
index 0000000..2c4624a
--- /dev/null
+++ b/csharp/src/aisStream.Test/Model/BinaryBroadcastMessageTests.cs
@@ -0,0 +1,112 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using System;
+using Xunit;
+
+namespace aisStream.Test.Model
+{
+ ///
+ /// Class for testing BinaryBroadcastMessage
+ ///
+ ///
+ /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
+ /// Please update the test case below to test the model.
+ ///
+ public class BinaryBroadcastMessageTests : IDisposable
+ {
+ // TODO uncomment below to declare an instance variable for BinaryBroadcastMessage
+ //private BinaryBroadcastMessage instance;
+
+ public BinaryBroadcastMessageTests()
+ {
+ // TODO uncomment below to create an instance of BinaryBroadcastMessage
+ //instance = new BinaryBroadcastMessage();
+ }
+
+ public void Dispose()
+ {
+ // Cleanup when everything is done.
+ }
+
+ ///
+ /// Test an instance of BinaryBroadcastMessage
+ ///
+ [Fact]
+ public void BinaryBroadcastMessageInstanceTest()
+ {
+ // TODO uncomment below to test "IsType" BinaryBroadcastMessage
+ //Assert.IsType(instance);
+ }
+
+ ///
+ /// Test the property 'MessageID'
+ ///
+ [Fact]
+ public void MessageIDTest()
+ {
+ // TODO unit test for the property 'MessageID'
+ }
+
+ ///
+ /// Test the property 'RepeatIndicator'
+ ///
+ [Fact]
+ public void RepeatIndicatorTest()
+ {
+ // TODO unit test for the property 'RepeatIndicator'
+ }
+
+ ///
+ /// Test the property 'UserID'
+ ///
+ [Fact]
+ public void UserIDTest()
+ {
+ // TODO unit test for the property 'UserID'
+ }
+
+ ///
+ /// Test the property 'Valid'
+ ///
+ [Fact]
+ public void ValidTest()
+ {
+ // TODO unit test for the property 'Valid'
+ }
+
+ ///
+ /// Test the property 'Spare'
+ ///
+ [Fact]
+ public void SpareTest()
+ {
+ // TODO unit test for the property 'Spare'
+ }
+
+ ///
+ /// Test the property 'ApplicationID'
+ ///
+ [Fact]
+ public void ApplicationIDTest()
+ {
+ // TODO unit test for the property 'ApplicationID'
+ }
+
+ ///
+ /// Test the property 'BinaryData'
+ ///
+ [Fact]
+ public void BinaryDataTest()
+ {
+ // TODO unit test for the property 'BinaryData'
+ }
+ }
+}
diff --git a/csharp/src/aisStream.Test/Model/ChannelManagementAreaTests.cs b/csharp/src/aisStream.Test/Model/ChannelManagementAreaTests.cs
new file mode 100644
index 0000000..082aa46
--- /dev/null
+++ b/csharp/src/aisStream.Test/Model/ChannelManagementAreaTests.cs
@@ -0,0 +1,85 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using System;
+using Xunit;
+
+namespace aisStream.Test.Model
+{
+ ///
+ /// Class for testing ChannelManagementArea
+ ///
+ ///
+ /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
+ /// Please update the test case below to test the model.
+ ///
+ public class ChannelManagementAreaTests : IDisposable
+ {
+ // TODO uncomment below to declare an instance variable for ChannelManagementArea
+ //private ChannelManagementArea instance;
+
+ public ChannelManagementAreaTests()
+ {
+ // TODO uncomment below to create an instance of ChannelManagementArea
+ //instance = new ChannelManagementArea();
+ }
+
+ public void Dispose()
+ {
+ // Cleanup when everything is done.
+ }
+
+ ///
+ /// Test an instance of ChannelManagementArea
+ ///
+ [Fact]
+ public void ChannelManagementAreaInstanceTest()
+ {
+ // TODO uncomment below to test "IsType" ChannelManagementArea
+ //Assert.IsType(instance);
+ }
+
+ ///
+ /// Test the property 'Longitude1'
+ ///
+ [Fact]
+ public void Longitude1Test()
+ {
+ // TODO unit test for the property 'Longitude1'
+ }
+
+ ///
+ /// Test the property 'Latitude1'
+ ///
+ [Fact]
+ public void Latitude1Test()
+ {
+ // TODO unit test for the property 'Latitude1'
+ }
+
+ ///
+ /// Test the property 'Longitude2'
+ ///
+ [Fact]
+ public void Longitude2Test()
+ {
+ // TODO unit test for the property 'Longitude2'
+ }
+
+ ///
+ /// Test the property 'Latitude2'
+ ///
+ [Fact]
+ public void Latitude2Test()
+ {
+ // TODO unit test for the property 'Latitude2'
+ }
+ }
+}
diff --git a/csharp/src/aisStream.Test/Model/ChannelManagementTests.cs b/csharp/src/aisStream.Test/Model/ChannelManagementTests.cs
new file mode 100644
index 0000000..9053c9c
--- /dev/null
+++ b/csharp/src/aisStream.Test/Model/ChannelManagementTests.cs
@@ -0,0 +1,193 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using System;
+using Xunit;
+
+namespace aisStream.Test.Model
+{
+ ///
+ /// Class for testing ChannelManagement
+ ///
+ ///
+ /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
+ /// Please update the test case below to test the model.
+ ///
+ public class ChannelManagementTests : IDisposable
+ {
+ // TODO uncomment below to declare an instance variable for ChannelManagement
+ //private ChannelManagement instance;
+
+ public ChannelManagementTests()
+ {
+ // TODO uncomment below to create an instance of ChannelManagement
+ //instance = new ChannelManagement();
+ }
+
+ public void Dispose()
+ {
+ // Cleanup when everything is done.
+ }
+
+ ///
+ /// Test an instance of ChannelManagement
+ ///
+ [Fact]
+ public void ChannelManagementInstanceTest()
+ {
+ // TODO uncomment below to test "IsType" ChannelManagement
+ //Assert.IsType(instance);
+ }
+
+ ///
+ /// Test the property 'MessageID'
+ ///
+ [Fact]
+ public void MessageIDTest()
+ {
+ // TODO unit test for the property 'MessageID'
+ }
+
+ ///
+ /// Test the property 'RepeatIndicator'
+ ///
+ [Fact]
+ public void RepeatIndicatorTest()
+ {
+ // TODO unit test for the property 'RepeatIndicator'
+ }
+
+ ///
+ /// Test the property 'UserID'
+ ///
+ [Fact]
+ public void UserIDTest()
+ {
+ // TODO unit test for the property 'UserID'
+ }
+
+ ///
+ /// Test the property 'Valid'
+ ///
+ [Fact]
+ public void ValidTest()
+ {
+ // TODO unit test for the property 'Valid'
+ }
+
+ ///
+ /// Test the property 'Spare1'
+ ///
+ [Fact]
+ public void Spare1Test()
+ {
+ // TODO unit test for the property 'Spare1'
+ }
+
+ ///
+ /// Test the property 'ChannelA'
+ ///
+ [Fact]
+ public void ChannelATest()
+ {
+ // TODO unit test for the property 'ChannelA'
+ }
+
+ ///
+ /// Test the property 'ChannelB'
+ ///
+ [Fact]
+ public void ChannelBTest()
+ {
+ // TODO unit test for the property 'ChannelB'
+ }
+
+ ///
+ /// Test the property 'TxRxMode'
+ ///
+ [Fact]
+ public void TxRxModeTest()
+ {
+ // TODO unit test for the property 'TxRxMode'
+ }
+
+ ///
+ /// Test the property 'LowPower'
+ ///
+ [Fact]
+ public void LowPowerTest()
+ {
+ // TODO unit test for the property 'LowPower'
+ }
+
+ ///
+ /// Test the property 'Area'
+ ///
+ [Fact]
+ public void AreaTest()
+ {
+ // TODO unit test for the property 'Area'
+ }
+
+ ///
+ /// Test the property 'Unicast'
+ ///
+ [Fact]
+ public void UnicastTest()
+ {
+ // TODO unit test for the property 'Unicast'
+ }
+
+ ///
+ /// Test the property 'IsAddressed'
+ ///
+ [Fact]
+ public void IsAddressedTest()
+ {
+ // TODO unit test for the property 'IsAddressed'
+ }
+
+ ///
+ /// Test the property 'BwA'
+ ///
+ [Fact]
+ public void BwATest()
+ {
+ // TODO unit test for the property 'BwA'
+ }
+
+ ///
+ /// Test the property 'BwB'
+ ///
+ [Fact]
+ public void BwBTest()
+ {
+ // TODO unit test for the property 'BwB'
+ }
+
+ ///
+ /// Test the property 'TransitionalZoneSize'
+ ///
+ [Fact]
+ public void TransitionalZoneSizeTest()
+ {
+ // TODO unit test for the property 'TransitionalZoneSize'
+ }
+
+ ///
+ /// Test the property 'Spare4'
+ ///
+ [Fact]
+ public void Spare4Test()
+ {
+ // TODO unit test for the property 'Spare4'
+ }
+ }
+}
diff --git a/csharp/src/aisStream.Test/Model/ChannelManagementUnicastTests.cs b/csharp/src/aisStream.Test/Model/ChannelManagementUnicastTests.cs
new file mode 100644
index 0000000..2b1b43b
--- /dev/null
+++ b/csharp/src/aisStream.Test/Model/ChannelManagementUnicastTests.cs
@@ -0,0 +1,85 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using System;
+using Xunit;
+
+namespace aisStream.Test.Model
+{
+ ///
+ /// Class for testing ChannelManagementUnicast
+ ///
+ ///
+ /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
+ /// Please update the test case below to test the model.
+ ///
+ public class ChannelManagementUnicastTests : IDisposable
+ {
+ // TODO uncomment below to declare an instance variable for ChannelManagementUnicast
+ //private ChannelManagementUnicast instance;
+
+ public ChannelManagementUnicastTests()
+ {
+ // TODO uncomment below to create an instance of ChannelManagementUnicast
+ //instance = new ChannelManagementUnicast();
+ }
+
+ public void Dispose()
+ {
+ // Cleanup when everything is done.
+ }
+
+ ///
+ /// Test an instance of ChannelManagementUnicast
+ ///
+ [Fact]
+ public void ChannelManagementUnicastInstanceTest()
+ {
+ // TODO uncomment below to test "IsType" ChannelManagementUnicast
+ //Assert.IsType(instance);
+ }
+
+ ///
+ /// Test the property 'AddressStation1'
+ ///
+ [Fact]
+ public void AddressStation1Test()
+ {
+ // TODO unit test for the property 'AddressStation1'
+ }
+
+ ///
+ /// Test the property 'Spare2'
+ ///
+ [Fact]
+ public void Spare2Test()
+ {
+ // TODO unit test for the property 'Spare2'
+ }
+
+ ///
+ /// Test the property 'AddressStation2'
+ ///
+ [Fact]
+ public void AddressStation2Test()
+ {
+ // TODO unit test for the property 'AddressStation2'
+ }
+
+ ///
+ /// Test the property 'Spare3'
+ ///
+ [Fact]
+ public void Spare3Test()
+ {
+ // TODO unit test for the property 'Spare3'
+ }
+ }
+}
diff --git a/csharp/src/aisStream.Test/Model/CoordinatedUTCInquiryTests.cs b/csharp/src/aisStream.Test/Model/CoordinatedUTCInquiryTests.cs
new file mode 100644
index 0000000..a8f8da3
--- /dev/null
+++ b/csharp/src/aisStream.Test/Model/CoordinatedUTCInquiryTests.cs
@@ -0,0 +1,112 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using System;
+using Xunit;
+
+namespace aisStream.Test.Model
+{
+ ///
+ /// Class for testing CoordinatedUTCInquiry
+ ///
+ ///
+ /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
+ /// Please update the test case below to test the model.
+ ///
+ public class CoordinatedUTCInquiryTests : IDisposable
+ {
+ // TODO uncomment below to declare an instance variable for CoordinatedUTCInquiry
+ //private CoordinatedUTCInquiry instance;
+
+ public CoordinatedUTCInquiryTests()
+ {
+ // TODO uncomment below to create an instance of CoordinatedUTCInquiry
+ //instance = new CoordinatedUTCInquiry();
+ }
+
+ public void Dispose()
+ {
+ // Cleanup when everything is done.
+ }
+
+ ///
+ /// Test an instance of CoordinatedUTCInquiry
+ ///
+ [Fact]
+ public void CoordinatedUTCInquiryInstanceTest()
+ {
+ // TODO uncomment below to test "IsType" CoordinatedUTCInquiry
+ //Assert.IsType(instance);
+ }
+
+ ///
+ /// Test the property 'MessageID'
+ ///
+ [Fact]
+ public void MessageIDTest()
+ {
+ // TODO unit test for the property 'MessageID'
+ }
+
+ ///
+ /// Test the property 'RepeatIndicator'
+ ///
+ [Fact]
+ public void RepeatIndicatorTest()
+ {
+ // TODO unit test for the property 'RepeatIndicator'
+ }
+
+ ///
+ /// Test the property 'UserID'
+ ///
+ [Fact]
+ public void UserIDTest()
+ {
+ // TODO unit test for the property 'UserID'
+ }
+
+ ///
+ /// Test the property 'Valid'
+ ///
+ [Fact]
+ public void ValidTest()
+ {
+ // TODO unit test for the property 'Valid'
+ }
+
+ ///
+ /// Test the property 'Spare1'
+ ///
+ [Fact]
+ public void Spare1Test()
+ {
+ // TODO unit test for the property 'Spare1'
+ }
+
+ ///
+ /// Test the property 'DestinationID'
+ ///
+ [Fact]
+ public void DestinationIDTest()
+ {
+ // TODO unit test for the property 'DestinationID'
+ }
+
+ ///
+ /// Test the property 'Spare2'
+ ///
+ [Fact]
+ public void Spare2Test()
+ {
+ // TODO unit test for the property 'Spare2'
+ }
+ }
+}
diff --git a/csharp/src/aisStream.Test/Model/DataLinkManagementMessageData0Tests.cs b/csharp/src/aisStream.Test/Model/DataLinkManagementMessageData0Tests.cs
new file mode 100644
index 0000000..747ce8b
--- /dev/null
+++ b/csharp/src/aisStream.Test/Model/DataLinkManagementMessageData0Tests.cs
@@ -0,0 +1,94 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using System;
+using Xunit;
+
+namespace aisStream.Test.Model
+{
+ ///
+ /// Class for testing DataLinkManagementMessageData0
+ ///
+ ///
+ /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
+ /// Please update the test case below to test the model.
+ ///
+ public class DataLinkManagementMessageData0Tests : IDisposable
+ {
+ // TODO uncomment below to declare an instance variable for DataLinkManagementMessageData0
+ //private DataLinkManagementMessageData0 instance;
+
+ public DataLinkManagementMessageData0Tests()
+ {
+ // TODO uncomment below to create an instance of DataLinkManagementMessageData0
+ //instance = new DataLinkManagementMessageData0();
+ }
+
+ public void Dispose()
+ {
+ // Cleanup when everything is done.
+ }
+
+ ///
+ /// Test an instance of DataLinkManagementMessageData0
+ ///
+ [Fact]
+ public void DataLinkManagementMessageData0InstanceTest()
+ {
+ // TODO uncomment below to test "IsType" DataLinkManagementMessageData0
+ //Assert.IsType(instance);
+ }
+
+ ///
+ /// Test the property 'Valid'
+ ///
+ [Fact]
+ public void ValidTest()
+ {
+ // TODO unit test for the property 'Valid'
+ }
+
+ ///
+ /// Test the property 'Offset'
+ ///
+ [Fact]
+ public void OffsetTest()
+ {
+ // TODO unit test for the property 'Offset'
+ }
+
+ ///
+ /// Test the property 'IntegerOfSlots'
+ ///
+ [Fact]
+ public void IntegerOfSlotsTest()
+ {
+ // TODO unit test for the property 'IntegerOfSlots'
+ }
+
+ ///
+ /// Test the property 'TimeOut'
+ ///
+ [Fact]
+ public void TimeOutTest()
+ {
+ // TODO unit test for the property 'TimeOut'
+ }
+
+ ///
+ /// Test the property 'Increment'
+ ///
+ [Fact]
+ public void IncrementTest()
+ {
+ // TODO unit test for the property 'Increment'
+ }
+ }
+}
diff --git a/csharp/src/aisStream.Test/Model/DataLinkManagementMessageDataTests.cs b/csharp/src/aisStream.Test/Model/DataLinkManagementMessageDataTests.cs
new file mode 100644
index 0000000..19eea92
--- /dev/null
+++ b/csharp/src/aisStream.Test/Model/DataLinkManagementMessageDataTests.cs
@@ -0,0 +1,85 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using System;
+using Xunit;
+
+namespace aisStream.Test.Model
+{
+ ///
+ /// Class for testing DataLinkManagementMessageData
+ ///
+ ///
+ /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
+ /// Please update the test case below to test the model.
+ ///
+ public class DataLinkManagementMessageDataTests : IDisposable
+ {
+ // TODO uncomment below to declare an instance variable for DataLinkManagementMessageData
+ //private DataLinkManagementMessageData instance;
+
+ public DataLinkManagementMessageDataTests()
+ {
+ // TODO uncomment below to create an instance of DataLinkManagementMessageData
+ //instance = new DataLinkManagementMessageData();
+ }
+
+ public void Dispose()
+ {
+ // Cleanup when everything is done.
+ }
+
+ ///
+ /// Test an instance of DataLinkManagementMessageData
+ ///
+ [Fact]
+ public void DataLinkManagementMessageDataInstanceTest()
+ {
+ // TODO uncomment below to test "IsType" DataLinkManagementMessageData
+ //Assert.IsType(instance);
+ }
+
+ ///
+ /// Test the property 'Var0'
+ ///
+ [Fact]
+ public void Var0Test()
+ {
+ // TODO unit test for the property 'Var0'
+ }
+
+ ///
+ /// Test the property 'Var1'
+ ///
+ [Fact]
+ public void Var1Test()
+ {
+ // TODO unit test for the property 'Var1'
+ }
+
+ ///
+ /// Test the property 'Var2'
+ ///
+ [Fact]
+ public void Var2Test()
+ {
+ // TODO unit test for the property 'Var2'
+ }
+
+ ///
+ /// Test the property 'Var3'
+ ///
+ [Fact]
+ public void Var3Test()
+ {
+ // TODO unit test for the property 'Var3'
+ }
+ }
+}
diff --git a/csharp/src/aisStream.Test/Model/DataLinkManagementMessageTests.cs b/csharp/src/aisStream.Test/Model/DataLinkManagementMessageTests.cs
new file mode 100644
index 0000000..ca47805
--- /dev/null
+++ b/csharp/src/aisStream.Test/Model/DataLinkManagementMessageTests.cs
@@ -0,0 +1,103 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using System;
+using Xunit;
+
+namespace aisStream.Test.Model
+{
+ ///
+ /// Class for testing DataLinkManagementMessage
+ ///
+ ///
+ /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
+ /// Please update the test case below to test the model.
+ ///
+ public class DataLinkManagementMessageTests : IDisposable
+ {
+ // TODO uncomment below to declare an instance variable for DataLinkManagementMessage
+ //private DataLinkManagementMessage instance;
+
+ public DataLinkManagementMessageTests()
+ {
+ // TODO uncomment below to create an instance of DataLinkManagementMessage
+ //instance = new DataLinkManagementMessage();
+ }
+
+ public void Dispose()
+ {
+ // Cleanup when everything is done.
+ }
+
+ ///
+ /// Test an instance of DataLinkManagementMessage
+ ///
+ [Fact]
+ public void DataLinkManagementMessageInstanceTest()
+ {
+ // TODO uncomment below to test "IsType" DataLinkManagementMessage
+ //Assert.IsType(instance);
+ }
+
+ ///
+ /// Test the property 'MessageID'
+ ///
+ [Fact]
+ public void MessageIDTest()
+ {
+ // TODO unit test for the property 'MessageID'
+ }
+
+ ///
+ /// Test the property 'RepeatIndicator'
+ ///
+ [Fact]
+ public void RepeatIndicatorTest()
+ {
+ // TODO unit test for the property 'RepeatIndicator'
+ }
+
+ ///
+ /// Test the property 'UserID'
+ ///
+ [Fact]
+ public void UserIDTest()
+ {
+ // TODO unit test for the property 'UserID'
+ }
+
+ ///
+ /// Test the property 'Valid'
+ ///
+ [Fact]
+ public void ValidTest()
+ {
+ // TODO unit test for the property 'Valid'
+ }
+
+ ///
+ /// Test the property 'Spare'
+ ///
+ [Fact]
+ public void SpareTest()
+ {
+ // TODO unit test for the property 'Spare'
+ }
+
+ ///
+ /// Test the property 'Data'
+ ///
+ [Fact]
+ public void DataTest()
+ {
+ // TODO unit test for the property 'Data'
+ }
+ }
+}
diff --git a/csharp/src/aisStream.Test/Model/ErrorTests.cs b/csharp/src/aisStream.Test/Model/ErrorTests.cs
new file mode 100644
index 0000000..04a3389
--- /dev/null
+++ b/csharp/src/aisStream.Test/Model/ErrorTests.cs
@@ -0,0 +1,58 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using System;
+using Xunit;
+
+namespace aisStream.Test.Model
+{
+ ///
+ /// Class for testing Error
+ ///
+ ///
+ /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
+ /// Please update the test case below to test the model.
+ ///
+ public class ErrorTests : IDisposable
+ {
+ // TODO uncomment below to declare an instance variable for Error
+ //private Error instance;
+
+ public ErrorTests()
+ {
+ // TODO uncomment below to create an instance of Error
+ //instance = new Error();
+ }
+
+ public void Dispose()
+ {
+ // Cleanup when everything is done.
+ }
+
+ ///
+ /// Test an instance of Error
+ ///
+ [Fact]
+ public void ErrorInstanceTest()
+ {
+ // TODO uncomment below to test "IsType" Error
+ //Assert.IsType(instance);
+ }
+
+ ///
+ /// Test the property 'VarError'
+ ///
+ [Fact]
+ public void VarErrorTest()
+ {
+ // TODO unit test for the property 'VarError'
+ }
+ }
+}
diff --git a/csharp/src/aisStream.Test/Model/ExtendedClassBPositionReportTests.cs b/csharp/src/aisStream.Test/Model/ExtendedClassBPositionReportTests.cs
new file mode 100644
index 0000000..81ef552
--- /dev/null
+++ b/csharp/src/aisStream.Test/Model/ExtendedClassBPositionReportTests.cs
@@ -0,0 +1,238 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using System;
+using Xunit;
+
+namespace aisStream.Test.Model
+{
+ ///
+ /// Class for testing ExtendedClassBPositionReport
+ ///
+ ///
+ /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
+ /// Please update the test case below to test the model.
+ ///
+ public class ExtendedClassBPositionReportTests : IDisposable
+ {
+ // TODO uncomment below to declare an instance variable for ExtendedClassBPositionReport
+ //private ExtendedClassBPositionReport instance;
+
+ public ExtendedClassBPositionReportTests()
+ {
+ // TODO uncomment below to create an instance of ExtendedClassBPositionReport
+ //instance = new ExtendedClassBPositionReport();
+ }
+
+ public void Dispose()
+ {
+ // Cleanup when everything is done.
+ }
+
+ ///
+ /// Test an instance of ExtendedClassBPositionReport
+ ///
+ [Fact]
+ public void ExtendedClassBPositionReportInstanceTest()
+ {
+ // TODO uncomment below to test "IsType" ExtendedClassBPositionReport
+ //Assert.IsType(instance);
+ }
+
+ ///
+ /// Test the property 'MessageID'
+ ///
+ [Fact]
+ public void MessageIDTest()
+ {
+ // TODO unit test for the property 'MessageID'
+ }
+
+ ///
+ /// Test the property 'RepeatIndicator'
+ ///
+ [Fact]
+ public void RepeatIndicatorTest()
+ {
+ // TODO unit test for the property 'RepeatIndicator'
+ }
+
+ ///
+ /// Test the property 'UserID'
+ ///
+ [Fact]
+ public void UserIDTest()
+ {
+ // TODO unit test for the property 'UserID'
+ }
+
+ ///
+ /// Test the property 'Valid'
+ ///
+ [Fact]
+ public void ValidTest()
+ {
+ // TODO unit test for the property 'Valid'
+ }
+
+ ///
+ /// Test the property 'Spare1'
+ ///
+ [Fact]
+ public void Spare1Test()
+ {
+ // TODO unit test for the property 'Spare1'
+ }
+
+ ///
+ /// Test the property 'Sog'
+ ///
+ [Fact]
+ public void SogTest()
+ {
+ // TODO unit test for the property 'Sog'
+ }
+
+ ///
+ /// Test the property 'PositionAccuracy'
+ ///
+ [Fact]
+ public void PositionAccuracyTest()
+ {
+ // TODO unit test for the property 'PositionAccuracy'
+ }
+
+ ///
+ /// Test the property 'Longitude'
+ ///
+ [Fact]
+ public void LongitudeTest()
+ {
+ // TODO unit test for the property 'Longitude'
+ }
+
+ ///
+ /// Test the property 'Latitude'
+ ///
+ [Fact]
+ public void LatitudeTest()
+ {
+ // TODO unit test for the property 'Latitude'
+ }
+
+ ///
+ /// Test the property 'Cog'
+ ///
+ [Fact]
+ public void CogTest()
+ {
+ // TODO unit test for the property 'Cog'
+ }
+
+ ///
+ /// Test the property 'TrueHeading'
+ ///
+ [Fact]
+ public void TrueHeadingTest()
+ {
+ // TODO unit test for the property 'TrueHeading'
+ }
+
+ ///
+ /// Test the property 'Timestamp'
+ ///
+ [Fact]
+ public void TimestampTest()
+ {
+ // TODO unit test for the property 'Timestamp'
+ }
+
+ ///
+ /// Test the property 'Spare2'
+ ///
+ [Fact]
+ public void Spare2Test()
+ {
+ // TODO unit test for the property 'Spare2'
+ }
+
+ ///
+ /// Test the property 'Name'
+ ///
+ [Fact]
+ public void NameTest()
+ {
+ // TODO unit test for the property 'Name'
+ }
+
+ ///
+ /// Test the property 'Type'
+ ///
+ [Fact]
+ public void TypeTest()
+ {
+ // TODO unit test for the property 'Type'
+ }
+
+ ///
+ /// Test the property 'Dimension'
+ ///
+ [Fact]
+ public void DimensionTest()
+ {
+ // TODO unit test for the property 'Dimension'
+ }
+
+ ///
+ /// Test the property 'FixType'
+ ///
+ [Fact]
+ public void FixTypeTest()
+ {
+ // TODO unit test for the property 'FixType'
+ }
+
+ ///
+ /// Test the property 'Raim'
+ ///
+ [Fact]
+ public void RaimTest()
+ {
+ // TODO unit test for the property 'Raim'
+ }
+
+ ///
+ /// Test the property 'Dte'
+ ///
+ [Fact]
+ public void DteTest()
+ {
+ // TODO unit test for the property 'Dte'
+ }
+
+ ///
+ /// Test the property 'AssignedMode'
+ ///
+ [Fact]
+ public void AssignedModeTest()
+ {
+ // TODO unit test for the property 'AssignedMode'
+ }
+
+ ///
+ /// Test the property 'Spare3'
+ ///
+ [Fact]
+ public void Spare3Test()
+ {
+ // TODO unit test for the property 'Spare3'
+ }
+ }
+}
diff --git a/csharp/src/aisStream.Test/Model/GnssBroadcastBinaryMessageTests.cs b/csharp/src/aisStream.Test/Model/GnssBroadcastBinaryMessageTests.cs
new file mode 100644
index 0000000..775c166
--- /dev/null
+++ b/csharp/src/aisStream.Test/Model/GnssBroadcastBinaryMessageTests.cs
@@ -0,0 +1,130 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using System;
+using Xunit;
+
+namespace aisStream.Test.Model
+{
+ ///
+ /// Class for testing GnssBroadcastBinaryMessage
+ ///
+ ///
+ /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
+ /// Please update the test case below to test the model.
+ ///
+ public class GnssBroadcastBinaryMessageTests : IDisposable
+ {
+ // TODO uncomment below to declare an instance variable for GnssBroadcastBinaryMessage
+ //private GnssBroadcastBinaryMessage instance;
+
+ public GnssBroadcastBinaryMessageTests()
+ {
+ // TODO uncomment below to create an instance of GnssBroadcastBinaryMessage
+ //instance = new GnssBroadcastBinaryMessage();
+ }
+
+ public void Dispose()
+ {
+ // Cleanup when everything is done.
+ }
+
+ ///
+ /// Test an instance of GnssBroadcastBinaryMessage
+ ///
+ [Fact]
+ public void GnssBroadcastBinaryMessageInstanceTest()
+ {
+ // TODO uncomment below to test "IsType" GnssBroadcastBinaryMessage
+ //Assert.IsType(instance);
+ }
+
+ ///
+ /// Test the property 'MessageID'
+ ///
+ [Fact]
+ public void MessageIDTest()
+ {
+ // TODO unit test for the property 'MessageID'
+ }
+
+ ///
+ /// Test the property 'RepeatIndicator'
+ ///
+ [Fact]
+ public void RepeatIndicatorTest()
+ {
+ // TODO unit test for the property 'RepeatIndicator'
+ }
+
+ ///
+ /// Test the property 'UserID'
+ ///
+ [Fact]
+ public void UserIDTest()
+ {
+ // TODO unit test for the property 'UserID'
+ }
+
+ ///
+ /// Test the property 'Valid'
+ ///
+ [Fact]
+ public void ValidTest()
+ {
+ // TODO unit test for the property 'Valid'
+ }
+
+ ///
+ /// Test the property 'Spare1'
+ ///
+ [Fact]
+ public void Spare1Test()
+ {
+ // TODO unit test for the property 'Spare1'
+ }
+
+ ///
+ /// Test the property 'Longitude'
+ ///
+ [Fact]
+ public void LongitudeTest()
+ {
+ // TODO unit test for the property 'Longitude'
+ }
+
+ ///
+ /// Test the property 'Latitude'
+ ///
+ [Fact]
+ public void LatitudeTest()
+ {
+ // TODO unit test for the property 'Latitude'
+ }
+
+ ///
+ /// Test the property 'Spare2'
+ ///
+ [Fact]
+ public void Spare2Test()
+ {
+ // TODO unit test for the property 'Spare2'
+ }
+
+ ///
+ /// Test the property 'Data'
+ ///
+ [Fact]
+ public void DataTest()
+ {
+ // TODO unit test for the property 'Data'
+ }
+ }
+}
diff --git a/csharp/src/aisStream.Test/Model/GroupAssignmentCommandTests.cs b/csharp/src/aisStream.Test/Model/GroupAssignmentCommandTests.cs
new file mode 100644
index 0000000..32965cd
--- /dev/null
+++ b/csharp/src/aisStream.Test/Model/GroupAssignmentCommandTests.cs
@@ -0,0 +1,193 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using System;
+using Xunit;
+
+namespace aisStream.Test.Model
+{
+ ///
+ /// Class for testing GroupAssignmentCommand
+ ///
+ ///
+ /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
+ /// Please update the test case below to test the model.
+ ///
+ public class GroupAssignmentCommandTests : IDisposable
+ {
+ // TODO uncomment below to declare an instance variable for GroupAssignmentCommand
+ //private GroupAssignmentCommand instance;
+
+ public GroupAssignmentCommandTests()
+ {
+ // TODO uncomment below to create an instance of GroupAssignmentCommand
+ //instance = new GroupAssignmentCommand();
+ }
+
+ public void Dispose()
+ {
+ // Cleanup when everything is done.
+ }
+
+ ///
+ /// Test an instance of GroupAssignmentCommand
+ ///
+ [Fact]
+ public void GroupAssignmentCommandInstanceTest()
+ {
+ // TODO uncomment below to test "IsType" GroupAssignmentCommand
+ //Assert.IsType(instance);
+ }
+
+ ///
+ /// Test the property 'MessageID'
+ ///
+ [Fact]
+ public void MessageIDTest()
+ {
+ // TODO unit test for the property 'MessageID'
+ }
+
+ ///
+ /// Test the property 'RepeatIndicator'
+ ///
+ [Fact]
+ public void RepeatIndicatorTest()
+ {
+ // TODO unit test for the property 'RepeatIndicator'
+ }
+
+ ///
+ /// Test the property 'UserID'
+ ///
+ [Fact]
+ public void UserIDTest()
+ {
+ // TODO unit test for the property 'UserID'
+ }
+
+ ///
+ /// Test the property 'Valid'
+ ///
+ [Fact]
+ public void ValidTest()
+ {
+ // TODO unit test for the property 'Valid'
+ }
+
+ ///
+ /// Test the property 'Spare1'
+ ///
+ [Fact]
+ public void Spare1Test()
+ {
+ // TODO unit test for the property 'Spare1'
+ }
+
+ ///
+ /// Test the property 'Longitude1'
+ ///
+ [Fact]
+ public void Longitude1Test()
+ {
+ // TODO unit test for the property 'Longitude1'
+ }
+
+ ///
+ /// Test the property 'Latitude1'
+ ///
+ [Fact]
+ public void Latitude1Test()
+ {
+ // TODO unit test for the property 'Latitude1'
+ }
+
+ ///
+ /// Test the property 'Longitude2'
+ ///
+ [Fact]
+ public void Longitude2Test()
+ {
+ // TODO unit test for the property 'Longitude2'
+ }
+
+ ///
+ /// Test the property 'Latitude2'
+ ///
+ [Fact]
+ public void Latitude2Test()
+ {
+ // TODO unit test for the property 'Latitude2'
+ }
+
+ ///
+ /// Test the property 'StationType'
+ ///
+ [Fact]
+ public void StationTypeTest()
+ {
+ // TODO unit test for the property 'StationType'
+ }
+
+ ///
+ /// Test the property 'ShipType'
+ ///
+ [Fact]
+ public void ShipTypeTest()
+ {
+ // TODO unit test for the property 'ShipType'
+ }
+
+ ///
+ /// Test the property 'Spare2'
+ ///
+ [Fact]
+ public void Spare2Test()
+ {
+ // TODO unit test for the property 'Spare2'
+ }
+
+ ///
+ /// Test the property 'TxRxMode'
+ ///
+ [Fact]
+ public void TxRxModeTest()
+ {
+ // TODO unit test for the property 'TxRxMode'
+ }
+
+ ///
+ /// Test the property 'ReportingInterval'
+ ///
+ [Fact]
+ public void ReportingIntervalTest()
+ {
+ // TODO unit test for the property 'ReportingInterval'
+ }
+
+ ///
+ /// Test the property 'QuietTime'
+ ///
+ [Fact]
+ public void QuietTimeTest()
+ {
+ // TODO unit test for the property 'QuietTime'
+ }
+
+ ///
+ /// Test the property 'Spare3'
+ ///
+ [Fact]
+ public void Spare3Test()
+ {
+ // TODO unit test for the property 'Spare3'
+ }
+ }
+}
diff --git a/csharp/src/aisStream.Test/Model/InterrogationStation1Msg1Tests.cs b/csharp/src/aisStream.Test/Model/InterrogationStation1Msg1Tests.cs
new file mode 100644
index 0000000..5e00bf1
--- /dev/null
+++ b/csharp/src/aisStream.Test/Model/InterrogationStation1Msg1Tests.cs
@@ -0,0 +1,85 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using System;
+using Xunit;
+
+namespace aisStream.Test.Model
+{
+ ///
+ /// Class for testing InterrogationStation1Msg1
+ ///
+ ///
+ /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
+ /// Please update the test case below to test the model.
+ ///
+ public class InterrogationStation1Msg1Tests : IDisposable
+ {
+ // TODO uncomment below to declare an instance variable for InterrogationStation1Msg1
+ //private InterrogationStation1Msg1 instance;
+
+ public InterrogationStation1Msg1Tests()
+ {
+ // TODO uncomment below to create an instance of InterrogationStation1Msg1
+ //instance = new InterrogationStation1Msg1();
+ }
+
+ public void Dispose()
+ {
+ // Cleanup when everything is done.
+ }
+
+ ///
+ /// Test an instance of InterrogationStation1Msg1
+ ///
+ [Fact]
+ public void InterrogationStation1Msg1InstanceTest()
+ {
+ // TODO uncomment below to test "IsType" InterrogationStation1Msg1
+ //Assert.IsType(instance);
+ }
+
+ ///
+ /// Test the property 'Valid'
+ ///
+ [Fact]
+ public void ValidTest()
+ {
+ // TODO unit test for the property 'Valid'
+ }
+
+ ///
+ /// Test the property 'StationID'
+ ///
+ [Fact]
+ public void StationIDTest()
+ {
+ // TODO unit test for the property 'StationID'
+ }
+
+ ///
+ /// Test the property 'MessageID'
+ ///
+ [Fact]
+ public void MessageIDTest()
+ {
+ // TODO unit test for the property 'MessageID'
+ }
+
+ ///
+ /// Test the property 'SlotOffset'
+ ///
+ [Fact]
+ public void SlotOffsetTest()
+ {
+ // TODO unit test for the property 'SlotOffset'
+ }
+ }
+}
diff --git a/csharp/src/aisStream.Test/Model/InterrogationStation1Msg2Tests.cs b/csharp/src/aisStream.Test/Model/InterrogationStation1Msg2Tests.cs
new file mode 100644
index 0000000..aa3e9d0
--- /dev/null
+++ b/csharp/src/aisStream.Test/Model/InterrogationStation1Msg2Tests.cs
@@ -0,0 +1,85 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using System;
+using Xunit;
+
+namespace aisStream.Test.Model
+{
+ ///
+ /// Class for testing InterrogationStation1Msg2
+ ///
+ ///
+ /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
+ /// Please update the test case below to test the model.
+ ///
+ public class InterrogationStation1Msg2Tests : IDisposable
+ {
+ // TODO uncomment below to declare an instance variable for InterrogationStation1Msg2
+ //private InterrogationStation1Msg2 instance;
+
+ public InterrogationStation1Msg2Tests()
+ {
+ // TODO uncomment below to create an instance of InterrogationStation1Msg2
+ //instance = new InterrogationStation1Msg2();
+ }
+
+ public void Dispose()
+ {
+ // Cleanup when everything is done.
+ }
+
+ ///
+ /// Test an instance of InterrogationStation1Msg2
+ ///
+ [Fact]
+ public void InterrogationStation1Msg2InstanceTest()
+ {
+ // TODO uncomment below to test "IsType" InterrogationStation1Msg2
+ //Assert.IsType(instance);
+ }
+
+ ///
+ /// Test the property 'Valid'
+ ///
+ [Fact]
+ public void ValidTest()
+ {
+ // TODO unit test for the property 'Valid'
+ }
+
+ ///
+ /// Test the property 'Spare'
+ ///
+ [Fact]
+ public void SpareTest()
+ {
+ // TODO unit test for the property 'Spare'
+ }
+
+ ///
+ /// Test the property 'MessageID'
+ ///
+ [Fact]
+ public void MessageIDTest()
+ {
+ // TODO unit test for the property 'MessageID'
+ }
+
+ ///
+ /// Test the property 'SlotOffset'
+ ///
+ [Fact]
+ public void SlotOffsetTest()
+ {
+ // TODO unit test for the property 'SlotOffset'
+ }
+ }
+}
diff --git a/csharp/src/aisStream.Test/Model/InterrogationStation2Tests.cs b/csharp/src/aisStream.Test/Model/InterrogationStation2Tests.cs
new file mode 100644
index 0000000..8408916
--- /dev/null
+++ b/csharp/src/aisStream.Test/Model/InterrogationStation2Tests.cs
@@ -0,0 +1,103 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using System;
+using Xunit;
+
+namespace aisStream.Test.Model
+{
+ ///
+ /// Class for testing InterrogationStation2
+ ///
+ ///
+ /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
+ /// Please update the test case below to test the model.
+ ///
+ public class InterrogationStation2Tests : IDisposable
+ {
+ // TODO uncomment below to declare an instance variable for InterrogationStation2
+ //private InterrogationStation2 instance;
+
+ public InterrogationStation2Tests()
+ {
+ // TODO uncomment below to create an instance of InterrogationStation2
+ //instance = new InterrogationStation2();
+ }
+
+ public void Dispose()
+ {
+ // Cleanup when everything is done.
+ }
+
+ ///
+ /// Test an instance of InterrogationStation2
+ ///
+ [Fact]
+ public void InterrogationStation2InstanceTest()
+ {
+ // TODO uncomment below to test "IsType" InterrogationStation2
+ //Assert.IsType(instance);
+ }
+
+ ///
+ /// Test the property 'Valid'
+ ///
+ [Fact]
+ public void ValidTest()
+ {
+ // TODO unit test for the property 'Valid'
+ }
+
+ ///
+ /// Test the property 'Spare1'
+ ///
+ [Fact]
+ public void Spare1Test()
+ {
+ // TODO unit test for the property 'Spare1'
+ }
+
+ ///
+ /// Test the property 'StationID'
+ ///
+ [Fact]
+ public void StationIDTest()
+ {
+ // TODO unit test for the property 'StationID'
+ }
+
+ ///
+ /// Test the property 'MessageID'
+ ///
+ [Fact]
+ public void MessageIDTest()
+ {
+ // TODO unit test for the property 'MessageID'
+ }
+
+ ///
+ /// Test the property 'SlotOffset'
+ ///
+ [Fact]
+ public void SlotOffsetTest()
+ {
+ // TODO unit test for the property 'SlotOffset'
+ }
+
+ ///
+ /// Test the property 'Spare2'
+ ///
+ [Fact]
+ public void Spare2Test()
+ {
+ // TODO unit test for the property 'Spare2'
+ }
+ }
+}
diff --git a/csharp/src/aisStream.Test/Model/InterrogationTests.cs b/csharp/src/aisStream.Test/Model/InterrogationTests.cs
new file mode 100644
index 0000000..dcde478
--- /dev/null
+++ b/csharp/src/aisStream.Test/Model/InterrogationTests.cs
@@ -0,0 +1,121 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using System;
+using Xunit;
+
+namespace aisStream.Test.Model
+{
+ ///
+ /// Class for testing Interrogation
+ ///
+ ///
+ /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
+ /// Please update the test case below to test the model.
+ ///
+ public class InterrogationTests : IDisposable
+ {
+ // TODO uncomment below to declare an instance variable for Interrogation
+ //private Interrogation instance;
+
+ public InterrogationTests()
+ {
+ // TODO uncomment below to create an instance of Interrogation
+ //instance = new Interrogation();
+ }
+
+ public void Dispose()
+ {
+ // Cleanup when everything is done.
+ }
+
+ ///
+ /// Test an instance of Interrogation
+ ///
+ [Fact]
+ public void InterrogationInstanceTest()
+ {
+ // TODO uncomment below to test "IsType" Interrogation
+ //Assert.IsType(instance);
+ }
+
+ ///
+ /// Test the property 'MessageID'
+ ///
+ [Fact]
+ public void MessageIDTest()
+ {
+ // TODO unit test for the property 'MessageID'
+ }
+
+ ///
+ /// Test the property 'RepeatIndicator'
+ ///
+ [Fact]
+ public void RepeatIndicatorTest()
+ {
+ // TODO unit test for the property 'RepeatIndicator'
+ }
+
+ ///
+ /// Test the property 'UserID'
+ ///
+ [Fact]
+ public void UserIDTest()
+ {
+ // TODO unit test for the property 'UserID'
+ }
+
+ ///
+ /// Test the property 'Valid'
+ ///
+ [Fact]
+ public void ValidTest()
+ {
+ // TODO unit test for the property 'Valid'
+ }
+
+ ///
+ /// Test the property 'Spare'
+ ///
+ [Fact]
+ public void SpareTest()
+ {
+ // TODO unit test for the property 'Spare'
+ }
+
+ ///
+ /// Test the property 'Station1Msg1'
+ ///
+ [Fact]
+ public void Station1Msg1Test()
+ {
+ // TODO unit test for the property 'Station1Msg1'
+ }
+
+ ///
+ /// Test the property 'Station1Msg2'
+ ///
+ [Fact]
+ public void Station1Msg2Test()
+ {
+ // TODO unit test for the property 'Station1Msg2'
+ }
+
+ ///
+ /// Test the property 'Station2'
+ ///
+ [Fact]
+ public void Station2Test()
+ {
+ // TODO unit test for the property 'Station2'
+ }
+ }
+}
diff --git a/csharp/src/aisStream.Test/Model/LongRangeAisBroadcastMessageTests.cs b/csharp/src/aisStream.Test/Model/LongRangeAisBroadcastMessageTests.cs
new file mode 100644
index 0000000..e14d66a
--- /dev/null
+++ b/csharp/src/aisStream.Test/Model/LongRangeAisBroadcastMessageTests.cs
@@ -0,0 +1,166 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using System;
+using Xunit;
+
+namespace aisStream.Test.Model
+{
+ ///
+ /// Class for testing LongRangeAisBroadcastMessage
+ ///
+ ///
+ /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
+ /// Please update the test case below to test the model.
+ ///
+ public class LongRangeAisBroadcastMessageTests : IDisposable
+ {
+ // TODO uncomment below to declare an instance variable for LongRangeAisBroadcastMessage
+ //private LongRangeAisBroadcastMessage instance;
+
+ public LongRangeAisBroadcastMessageTests()
+ {
+ // TODO uncomment below to create an instance of LongRangeAisBroadcastMessage
+ //instance = new LongRangeAisBroadcastMessage();
+ }
+
+ public void Dispose()
+ {
+ // Cleanup when everything is done.
+ }
+
+ ///
+ /// Test an instance of LongRangeAisBroadcastMessage
+ ///
+ [Fact]
+ public void LongRangeAisBroadcastMessageInstanceTest()
+ {
+ // TODO uncomment below to test "IsType" LongRangeAisBroadcastMessage
+ //Assert.IsType(instance);
+ }
+
+ ///
+ /// Test the property 'MessageID'
+ ///
+ [Fact]
+ public void MessageIDTest()
+ {
+ // TODO unit test for the property 'MessageID'
+ }
+
+ ///
+ /// Test the property 'RepeatIndicator'
+ ///
+ [Fact]
+ public void RepeatIndicatorTest()
+ {
+ // TODO unit test for the property 'RepeatIndicator'
+ }
+
+ ///
+ /// Test the property 'UserID'
+ ///
+ [Fact]
+ public void UserIDTest()
+ {
+ // TODO unit test for the property 'UserID'
+ }
+
+ ///
+ /// Test the property 'Valid'
+ ///
+ [Fact]
+ public void ValidTest()
+ {
+ // TODO unit test for the property 'Valid'
+ }
+
+ ///
+ /// Test the property 'PositionAccuracy'
+ ///
+ [Fact]
+ public void PositionAccuracyTest()
+ {
+ // TODO unit test for the property 'PositionAccuracy'
+ }
+
+ ///
+ /// Test the property 'Raim'
+ ///
+ [Fact]
+ public void RaimTest()
+ {
+ // TODO unit test for the property 'Raim'
+ }
+
+ ///
+ /// Test the property 'NavigationalStatus'
+ ///
+ [Fact]
+ public void NavigationalStatusTest()
+ {
+ // TODO unit test for the property 'NavigationalStatus'
+ }
+
+ ///
+ /// Test the property 'Longitude'
+ ///
+ [Fact]
+ public void LongitudeTest()
+ {
+ // TODO unit test for the property 'Longitude'
+ }
+
+ ///
+ /// Test the property 'Latitude'
+ ///
+ [Fact]
+ public void LatitudeTest()
+ {
+ // TODO unit test for the property 'Latitude'
+ }
+
+ ///
+ /// Test the property 'Sog'
+ ///
+ [Fact]
+ public void SogTest()
+ {
+ // TODO unit test for the property 'Sog'
+ }
+
+ ///
+ /// Test the property 'Cog'
+ ///
+ [Fact]
+ public void CogTest()
+ {
+ // TODO unit test for the property 'Cog'
+ }
+
+ ///
+ /// Test the property 'PositionLatency'
+ ///
+ [Fact]
+ public void PositionLatencyTest()
+ {
+ // TODO unit test for the property 'PositionLatency'
+ }
+
+ ///
+ /// Test the property 'Spare'
+ ///
+ [Fact]
+ public void SpareTest()
+ {
+ // TODO unit test for the property 'Spare'
+ }
+ }
+}
diff --git a/csharp/src/aisStream.Test/Model/MultiSlotBinaryMessageTests.cs b/csharp/src/aisStream.Test/Model/MultiSlotBinaryMessageTests.cs
new file mode 100644
index 0000000..7e684e5
--- /dev/null
+++ b/csharp/src/aisStream.Test/Model/MultiSlotBinaryMessageTests.cs
@@ -0,0 +1,166 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using System;
+using Xunit;
+
+namespace aisStream.Test.Model
+{
+ ///
+ /// Class for testing MultiSlotBinaryMessage
+ ///
+ ///
+ /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
+ /// Please update the test case below to test the model.
+ ///
+ public class MultiSlotBinaryMessageTests : IDisposable
+ {
+ // TODO uncomment below to declare an instance variable for MultiSlotBinaryMessage
+ //private MultiSlotBinaryMessage instance;
+
+ public MultiSlotBinaryMessageTests()
+ {
+ // TODO uncomment below to create an instance of MultiSlotBinaryMessage
+ //instance = new MultiSlotBinaryMessage();
+ }
+
+ public void Dispose()
+ {
+ // Cleanup when everything is done.
+ }
+
+ ///
+ /// Test an instance of MultiSlotBinaryMessage
+ ///
+ [Fact]
+ public void MultiSlotBinaryMessageInstanceTest()
+ {
+ // TODO uncomment below to test "IsType" MultiSlotBinaryMessage
+ //Assert.IsType(instance);
+ }
+
+ ///
+ /// Test the property 'MessageID'
+ ///
+ [Fact]
+ public void MessageIDTest()
+ {
+ // TODO unit test for the property 'MessageID'
+ }
+
+ ///
+ /// Test the property 'RepeatIndicator'
+ ///
+ [Fact]
+ public void RepeatIndicatorTest()
+ {
+ // TODO unit test for the property 'RepeatIndicator'
+ }
+
+ ///
+ /// Test the property 'UserID'
+ ///
+ [Fact]
+ public void UserIDTest()
+ {
+ // TODO unit test for the property 'UserID'
+ }
+
+ ///
+ /// Test the property 'Valid'
+ ///
+ [Fact]
+ public void ValidTest()
+ {
+ // TODO unit test for the property 'Valid'
+ }
+
+ ///
+ /// Test the property 'DestinationIDValid'
+ ///
+ [Fact]
+ public void DestinationIDValidTest()
+ {
+ // TODO unit test for the property 'DestinationIDValid'
+ }
+
+ ///
+ /// Test the property 'ApplicationIDValid'
+ ///
+ [Fact]
+ public void ApplicationIDValidTest()
+ {
+ // TODO unit test for the property 'ApplicationIDValid'
+ }
+
+ ///
+ /// Test the property 'DestinationID'
+ ///
+ [Fact]
+ public void DestinationIDTest()
+ {
+ // TODO unit test for the property 'DestinationID'
+ }
+
+ ///
+ /// Test the property 'Spare1'
+ ///
+ [Fact]
+ public void Spare1Test()
+ {
+ // TODO unit test for the property 'Spare1'
+ }
+
+ ///
+ /// Test the property 'ApplicationID'
+ ///
+ [Fact]
+ public void ApplicationIDTest()
+ {
+ // TODO unit test for the property 'ApplicationID'
+ }
+
+ ///
+ /// Test the property 'Payload'
+ ///
+ [Fact]
+ public void PayloadTest()
+ {
+ // TODO unit test for the property 'Payload'
+ }
+
+ ///
+ /// Test the property 'Spare2'
+ ///
+ [Fact]
+ public void Spare2Test()
+ {
+ // TODO unit test for the property 'Spare2'
+ }
+
+ ///
+ /// Test the property 'CommunicationStateIsItdma'
+ ///
+ [Fact]
+ public void CommunicationStateIsItdmaTest()
+ {
+ // TODO unit test for the property 'CommunicationStateIsItdma'
+ }
+
+ ///
+ /// Test the property 'CommunicationState'
+ ///
+ [Fact]
+ public void CommunicationStateTest()
+ {
+ // TODO unit test for the property 'CommunicationState'
+ }
+ }
+}
diff --git a/csharp/src/aisStream.Test/Model/PositionReportTests.cs b/csharp/src/aisStream.Test/Model/PositionReportTests.cs
new file mode 100644
index 0000000..1fe2324
--- /dev/null
+++ b/csharp/src/aisStream.Test/Model/PositionReportTests.cs
@@ -0,0 +1,202 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using System;
+using Xunit;
+
+namespace aisStream.Test.Model
+{
+ ///
+ /// Class for testing PositionReport
+ ///
+ ///
+ /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
+ /// Please update the test case below to test the model.
+ ///
+ public class PositionReportTests : IDisposable
+ {
+ // TODO uncomment below to declare an instance variable for PositionReport
+ //private PositionReport instance;
+
+ public PositionReportTests()
+ {
+ // TODO uncomment below to create an instance of PositionReport
+ //instance = new PositionReport();
+ }
+
+ public void Dispose()
+ {
+ // Cleanup when everything is done.
+ }
+
+ ///
+ /// Test an instance of PositionReport
+ ///
+ [Fact]
+ public void PositionReportInstanceTest()
+ {
+ // TODO uncomment below to test "IsType" PositionReport
+ //Assert.IsType(instance);
+ }
+
+ ///
+ /// Test the property 'MessageID'
+ ///
+ [Fact]
+ public void MessageIDTest()
+ {
+ // TODO unit test for the property 'MessageID'
+ }
+
+ ///
+ /// Test the property 'RepeatIndicator'
+ ///
+ [Fact]
+ public void RepeatIndicatorTest()
+ {
+ // TODO unit test for the property 'RepeatIndicator'
+ }
+
+ ///
+ /// Test the property 'UserID'
+ ///
+ [Fact]
+ public void UserIDTest()
+ {
+ // TODO unit test for the property 'UserID'
+ }
+
+ ///
+ /// Test the property 'Valid'
+ ///
+ [Fact]
+ public void ValidTest()
+ {
+ // TODO unit test for the property 'Valid'
+ }
+
+ ///
+ /// Test the property 'NavigationalStatus'
+ ///
+ [Fact]
+ public void NavigationalStatusTest()
+ {
+ // TODO unit test for the property 'NavigationalStatus'
+ }
+
+ ///
+ /// Test the property 'RateOfTurn'
+ ///
+ [Fact]
+ public void RateOfTurnTest()
+ {
+ // TODO unit test for the property 'RateOfTurn'
+ }
+
+ ///
+ /// Test the property 'Sog'
+ ///
+ [Fact]
+ public void SogTest()
+ {
+ // TODO unit test for the property 'Sog'
+ }
+
+ ///
+ /// Test the property 'PositionAccuracy'
+ ///
+ [Fact]
+ public void PositionAccuracyTest()
+ {
+ // TODO unit test for the property 'PositionAccuracy'
+ }
+
+ ///
+ /// Test the property 'Longitude'
+ ///
+ [Fact]
+ public void LongitudeTest()
+ {
+ // TODO unit test for the property 'Longitude'
+ }
+
+ ///
+ /// Test the property 'Latitude'
+ ///
+ [Fact]
+ public void LatitudeTest()
+ {
+ // TODO unit test for the property 'Latitude'
+ }
+
+ ///
+ /// Test the property 'Cog'
+ ///
+ [Fact]
+ public void CogTest()
+ {
+ // TODO unit test for the property 'Cog'
+ }
+
+ ///
+ /// Test the property 'TrueHeading'
+ ///
+ [Fact]
+ public void TrueHeadingTest()
+ {
+ // TODO unit test for the property 'TrueHeading'
+ }
+
+ ///
+ /// Test the property 'Timestamp'
+ ///
+ [Fact]
+ public void TimestampTest()
+ {
+ // TODO unit test for the property 'Timestamp'
+ }
+
+ ///
+ /// Test the property 'SpecialManoeuvreIndicator'
+ ///
+ [Fact]
+ public void SpecialManoeuvreIndicatorTest()
+ {
+ // TODO unit test for the property 'SpecialManoeuvreIndicator'
+ }
+
+ ///
+ /// Test the property 'Spare'
+ ///
+ [Fact]
+ public void SpareTest()
+ {
+ // TODO unit test for the property 'Spare'
+ }
+
+ ///
+ /// Test the property 'Raim'
+ ///
+ [Fact]
+ public void RaimTest()
+ {
+ // TODO unit test for the property 'Raim'
+ }
+
+ ///
+ /// Test the property 'CommunicationState'
+ ///
+ [Fact]
+ public void CommunicationStateTest()
+ {
+ // TODO unit test for the property 'CommunicationState'
+ }
+ }
+}
diff --git a/csharp/src/aisStream.Test/Model/SafetyBroadcastMessageTests.cs b/csharp/src/aisStream.Test/Model/SafetyBroadcastMessageTests.cs
new file mode 100644
index 0000000..339e8cb
--- /dev/null
+++ b/csharp/src/aisStream.Test/Model/SafetyBroadcastMessageTests.cs
@@ -0,0 +1,103 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using System;
+using Xunit;
+
+namespace aisStream.Test.Model
+{
+ ///
+ /// Class for testing SafetyBroadcastMessage
+ ///
+ ///
+ /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
+ /// Please update the test case below to test the model.
+ ///
+ public class SafetyBroadcastMessageTests : IDisposable
+ {
+ // TODO uncomment below to declare an instance variable for SafetyBroadcastMessage
+ //private SafetyBroadcastMessage instance;
+
+ public SafetyBroadcastMessageTests()
+ {
+ // TODO uncomment below to create an instance of SafetyBroadcastMessage
+ //instance = new SafetyBroadcastMessage();
+ }
+
+ public void Dispose()
+ {
+ // Cleanup when everything is done.
+ }
+
+ ///
+ /// Test an instance of SafetyBroadcastMessage
+ ///
+ [Fact]
+ public void SafetyBroadcastMessageInstanceTest()
+ {
+ // TODO uncomment below to test "IsType" SafetyBroadcastMessage
+ //Assert.IsType(instance);
+ }
+
+ ///
+ /// Test the property 'MessageID'
+ ///
+ [Fact]
+ public void MessageIDTest()
+ {
+ // TODO unit test for the property 'MessageID'
+ }
+
+ ///
+ /// Test the property 'RepeatIndicator'
+ ///
+ [Fact]
+ public void RepeatIndicatorTest()
+ {
+ // TODO unit test for the property 'RepeatIndicator'
+ }
+
+ ///
+ /// Test the property 'UserID'
+ ///
+ [Fact]
+ public void UserIDTest()
+ {
+ // TODO unit test for the property 'UserID'
+ }
+
+ ///
+ /// Test the property 'Valid'
+ ///
+ [Fact]
+ public void ValidTest()
+ {
+ // TODO unit test for the property 'Valid'
+ }
+
+ ///
+ /// Test the property 'Spare'
+ ///
+ [Fact]
+ public void SpareTest()
+ {
+ // TODO unit test for the property 'Spare'
+ }
+
+ ///
+ /// Test the property 'Text'
+ ///
+ [Fact]
+ public void TextTest()
+ {
+ // TODO unit test for the property 'Text'
+ }
+ }
+}
diff --git a/csharp/src/aisStream.Test/Model/ShipStaticDataDimensionTests.cs b/csharp/src/aisStream.Test/Model/ShipStaticDataDimensionTests.cs
new file mode 100644
index 0000000..76ea6ee
--- /dev/null
+++ b/csharp/src/aisStream.Test/Model/ShipStaticDataDimensionTests.cs
@@ -0,0 +1,85 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using System;
+using Xunit;
+
+namespace aisStream.Test.Model
+{
+ ///
+ /// Class for testing ShipStaticDataDimension
+ ///
+ ///
+ /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
+ /// Please update the test case below to test the model.
+ ///
+ public class ShipStaticDataDimensionTests : IDisposable
+ {
+ // TODO uncomment below to declare an instance variable for ShipStaticDataDimension
+ //private ShipStaticDataDimension instance;
+
+ public ShipStaticDataDimensionTests()
+ {
+ // TODO uncomment below to create an instance of ShipStaticDataDimension
+ //instance = new ShipStaticDataDimension();
+ }
+
+ public void Dispose()
+ {
+ // Cleanup when everything is done.
+ }
+
+ ///
+ /// Test an instance of ShipStaticDataDimension
+ ///
+ [Fact]
+ public void ShipStaticDataDimensionInstanceTest()
+ {
+ // TODO uncomment below to test "IsType" ShipStaticDataDimension
+ //Assert.IsType(instance);
+ }
+
+ ///
+ /// Test the property 'A'
+ ///
+ [Fact]
+ public void ATest()
+ {
+ // TODO unit test for the property 'A'
+ }
+
+ ///
+ /// Test the property 'B'
+ ///
+ [Fact]
+ public void BTest()
+ {
+ // TODO unit test for the property 'B'
+ }
+
+ ///
+ /// Test the property 'C'
+ ///
+ [Fact]
+ public void CTest()
+ {
+ // TODO unit test for the property 'C'
+ }
+
+ ///
+ /// Test the property 'D'
+ ///
+ [Fact]
+ public void DTest()
+ {
+ // TODO unit test for the property 'D'
+ }
+ }
+}
diff --git a/csharp/src/aisStream.Test/Model/ShipStaticDataEtaTests.cs b/csharp/src/aisStream.Test/Model/ShipStaticDataEtaTests.cs
new file mode 100644
index 0000000..b8c0131
--- /dev/null
+++ b/csharp/src/aisStream.Test/Model/ShipStaticDataEtaTests.cs
@@ -0,0 +1,85 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using System;
+using Xunit;
+
+namespace aisStream.Test.Model
+{
+ ///
+ /// Class for testing ShipStaticDataEta
+ ///
+ ///
+ /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
+ /// Please update the test case below to test the model.
+ ///
+ public class ShipStaticDataEtaTests : IDisposable
+ {
+ // TODO uncomment below to declare an instance variable for ShipStaticDataEta
+ //private ShipStaticDataEta instance;
+
+ public ShipStaticDataEtaTests()
+ {
+ // TODO uncomment below to create an instance of ShipStaticDataEta
+ //instance = new ShipStaticDataEta();
+ }
+
+ public void Dispose()
+ {
+ // Cleanup when everything is done.
+ }
+
+ ///
+ /// Test an instance of ShipStaticDataEta
+ ///
+ [Fact]
+ public void ShipStaticDataEtaInstanceTest()
+ {
+ // TODO uncomment below to test "IsType" ShipStaticDataEta
+ //Assert.IsType(instance);
+ }
+
+ ///
+ /// Test the property 'Month'
+ ///
+ [Fact]
+ public void MonthTest()
+ {
+ // TODO unit test for the property 'Month'
+ }
+
+ ///
+ /// Test the property 'Day'
+ ///
+ [Fact]
+ public void DayTest()
+ {
+ // TODO unit test for the property 'Day'
+ }
+
+ ///
+ /// Test the property 'Hour'
+ ///
+ [Fact]
+ public void HourTest()
+ {
+ // TODO unit test for the property 'Hour'
+ }
+
+ ///
+ /// Test the property 'Minute'
+ ///
+ [Fact]
+ public void MinuteTest()
+ {
+ // TODO unit test for the property 'Minute'
+ }
+ }
+}
diff --git a/csharp/src/aisStream.Test/Model/ShipStaticDataTests.cs b/csharp/src/aisStream.Test/Model/ShipStaticDataTests.cs
new file mode 100644
index 0000000..4e6582f
--- /dev/null
+++ b/csharp/src/aisStream.Test/Model/ShipStaticDataTests.cs
@@ -0,0 +1,193 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using System;
+using Xunit;
+
+namespace aisStream.Test.Model
+{
+ ///
+ /// Class for testing ShipStaticData
+ ///
+ ///
+ /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
+ /// Please update the test case below to test the model.
+ ///
+ public class ShipStaticDataTests : IDisposable
+ {
+ // TODO uncomment below to declare an instance variable for ShipStaticData
+ //private ShipStaticData instance;
+
+ public ShipStaticDataTests()
+ {
+ // TODO uncomment below to create an instance of ShipStaticData
+ //instance = new ShipStaticData();
+ }
+
+ public void Dispose()
+ {
+ // Cleanup when everything is done.
+ }
+
+ ///
+ /// Test an instance of ShipStaticData
+ ///
+ [Fact]
+ public void ShipStaticDataInstanceTest()
+ {
+ // TODO uncomment below to test "IsType" ShipStaticData
+ //Assert.IsType(instance);
+ }
+
+ ///
+ /// Test the property 'MessageID'
+ ///
+ [Fact]
+ public void MessageIDTest()
+ {
+ // TODO unit test for the property 'MessageID'
+ }
+
+ ///
+ /// Test the property 'RepeatIndicator'
+ ///
+ [Fact]
+ public void RepeatIndicatorTest()
+ {
+ // TODO unit test for the property 'RepeatIndicator'
+ }
+
+ ///
+ /// Test the property 'UserID'
+ ///
+ [Fact]
+ public void UserIDTest()
+ {
+ // TODO unit test for the property 'UserID'
+ }
+
+ ///
+ /// Test the property 'Valid'
+ ///
+ [Fact]
+ public void ValidTest()
+ {
+ // TODO unit test for the property 'Valid'
+ }
+
+ ///
+ /// Test the property 'AisVersion'
+ ///
+ [Fact]
+ public void AisVersionTest()
+ {
+ // TODO unit test for the property 'AisVersion'
+ }
+
+ ///
+ /// Test the property 'ImoNumber'
+ ///
+ [Fact]
+ public void ImoNumberTest()
+ {
+ // TODO unit test for the property 'ImoNumber'
+ }
+
+ ///
+ /// Test the property 'CallSign'
+ ///
+ [Fact]
+ public void CallSignTest()
+ {
+ // TODO unit test for the property 'CallSign'
+ }
+
+ ///
+ /// Test the property 'Name'
+ ///
+ [Fact]
+ public void NameTest()
+ {
+ // TODO unit test for the property 'Name'
+ }
+
+ ///
+ /// Test the property 'Type'
+ ///
+ [Fact]
+ public void TypeTest()
+ {
+ // TODO unit test for the property 'Type'
+ }
+
+ ///
+ /// Test the property 'Dimension'
+ ///
+ [Fact]
+ public void DimensionTest()
+ {
+ // TODO unit test for the property 'Dimension'
+ }
+
+ ///
+ /// Test the property 'FixType'
+ ///
+ [Fact]
+ public void FixTypeTest()
+ {
+ // TODO unit test for the property 'FixType'
+ }
+
+ ///
+ /// Test the property 'Eta'
+ ///
+ [Fact]
+ public void EtaTest()
+ {
+ // TODO unit test for the property 'Eta'
+ }
+
+ ///
+ /// Test the property 'MaximumStaticDraught'
+ ///
+ [Fact]
+ public void MaximumStaticDraughtTest()
+ {
+ // TODO unit test for the property 'MaximumStaticDraught'
+ }
+
+ ///
+ /// Test the property 'Destination'
+ ///
+ [Fact]
+ public void DestinationTest()
+ {
+ // TODO unit test for the property 'Destination'
+ }
+
+ ///
+ /// Test the property 'Dte'
+ ///
+ [Fact]
+ public void DteTest()
+ {
+ // TODO unit test for the property 'Dte'
+ }
+
+ ///
+ /// Test the property 'Spare'
+ ///
+ [Fact]
+ public void SpareTest()
+ {
+ // TODO unit test for the property 'Spare'
+ }
+ }
+}
diff --git a/csharp/src/aisStream.Test/Model/SingleSlotBinaryMessageTests.cs b/csharp/src/aisStream.Test/Model/SingleSlotBinaryMessageTests.cs
new file mode 100644
index 0000000..7450479
--- /dev/null
+++ b/csharp/src/aisStream.Test/Model/SingleSlotBinaryMessageTests.cs
@@ -0,0 +1,139 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using System;
+using Xunit;
+
+namespace aisStream.Test.Model
+{
+ ///
+ /// Class for testing SingleSlotBinaryMessage
+ ///
+ ///
+ /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
+ /// Please update the test case below to test the model.
+ ///
+ public class SingleSlotBinaryMessageTests : IDisposable
+ {
+ // TODO uncomment below to declare an instance variable for SingleSlotBinaryMessage
+ //private SingleSlotBinaryMessage instance;
+
+ public SingleSlotBinaryMessageTests()
+ {
+ // TODO uncomment below to create an instance of SingleSlotBinaryMessage
+ //instance = new SingleSlotBinaryMessage();
+ }
+
+ public void Dispose()
+ {
+ // Cleanup when everything is done.
+ }
+
+ ///
+ /// Test an instance of SingleSlotBinaryMessage
+ ///
+ [Fact]
+ public void SingleSlotBinaryMessageInstanceTest()
+ {
+ // TODO uncomment below to test "IsType" SingleSlotBinaryMessage
+ //Assert.IsType(instance);
+ }
+
+ ///
+ /// Test the property 'MessageID'
+ ///
+ [Fact]
+ public void MessageIDTest()
+ {
+ // TODO unit test for the property 'MessageID'
+ }
+
+ ///
+ /// Test the property 'RepeatIndicator'
+ ///
+ [Fact]
+ public void RepeatIndicatorTest()
+ {
+ // TODO unit test for the property 'RepeatIndicator'
+ }
+
+ ///
+ /// Test the property 'UserID'
+ ///
+ [Fact]
+ public void UserIDTest()
+ {
+ // TODO unit test for the property 'UserID'
+ }
+
+ ///
+ /// Test the property 'Valid'
+ ///
+ [Fact]
+ public void ValidTest()
+ {
+ // TODO unit test for the property 'Valid'
+ }
+
+ ///
+ /// Test the property 'DestinationIDValid'
+ ///
+ [Fact]
+ public void DestinationIDValidTest()
+ {
+ // TODO unit test for the property 'DestinationIDValid'
+ }
+
+ ///
+ /// Test the property 'ApplicationIDValid'
+ ///
+ [Fact]
+ public void ApplicationIDValidTest()
+ {
+ // TODO unit test for the property 'ApplicationIDValid'
+ }
+
+ ///
+ /// Test the property 'DestinationID'
+ ///
+ [Fact]
+ public void DestinationIDTest()
+ {
+ // TODO unit test for the property 'DestinationID'
+ }
+
+ ///
+ /// Test the property 'Spare'
+ ///
+ [Fact]
+ public void SpareTest()
+ {
+ // TODO unit test for the property 'Spare'
+ }
+
+ ///
+ /// Test the property 'ApplicationID'
+ ///
+ [Fact]
+ public void ApplicationIDTest()
+ {
+ // TODO unit test for the property 'ApplicationID'
+ }
+
+ ///
+ /// Test the property 'Payload'
+ ///
+ [Fact]
+ public void PayloadTest()
+ {
+ // TODO unit test for the property 'Payload'
+ }
+ }
+}
diff --git a/csharp/src/aisStream.Test/Model/StandardClassBPositionReportTests.cs b/csharp/src/aisStream.Test/Model/StandardClassBPositionReportTests.cs
new file mode 100644
index 0000000..81fc3cc
--- /dev/null
+++ b/csharp/src/aisStream.Test/Model/StandardClassBPositionReportTests.cs
@@ -0,0 +1,247 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using System;
+using Xunit;
+
+namespace aisStream.Test.Model
+{
+ ///
+ /// Class for testing StandardClassBPositionReport
+ ///
+ ///
+ /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
+ /// Please update the test case below to test the model.
+ ///
+ public class StandardClassBPositionReportTests : IDisposable
+ {
+ // TODO uncomment below to declare an instance variable for StandardClassBPositionReport
+ //private StandardClassBPositionReport instance;
+
+ public StandardClassBPositionReportTests()
+ {
+ // TODO uncomment below to create an instance of StandardClassBPositionReport
+ //instance = new StandardClassBPositionReport();
+ }
+
+ public void Dispose()
+ {
+ // Cleanup when everything is done.
+ }
+
+ ///
+ /// Test an instance of StandardClassBPositionReport
+ ///
+ [Fact]
+ public void StandardClassBPositionReportInstanceTest()
+ {
+ // TODO uncomment below to test "IsType" StandardClassBPositionReport
+ //Assert.IsType(instance);
+ }
+
+ ///
+ /// Test the property 'MessageID'
+ ///
+ [Fact]
+ public void MessageIDTest()
+ {
+ // TODO unit test for the property 'MessageID'
+ }
+
+ ///
+ /// Test the property 'RepeatIndicator'
+ ///
+ [Fact]
+ public void RepeatIndicatorTest()
+ {
+ // TODO unit test for the property 'RepeatIndicator'
+ }
+
+ ///
+ /// Test the property 'UserID'
+ ///
+ [Fact]
+ public void UserIDTest()
+ {
+ // TODO unit test for the property 'UserID'
+ }
+
+ ///
+ /// Test the property 'Valid'
+ ///
+ [Fact]
+ public void ValidTest()
+ {
+ // TODO unit test for the property 'Valid'
+ }
+
+ ///
+ /// Test the property 'Spare1'
+ ///
+ [Fact]
+ public void Spare1Test()
+ {
+ // TODO unit test for the property 'Spare1'
+ }
+
+ ///
+ /// Test the property 'Sog'
+ ///
+ [Fact]
+ public void SogTest()
+ {
+ // TODO unit test for the property 'Sog'
+ }
+
+ ///
+ /// Test the property 'PositionAccuracy'
+ ///
+ [Fact]
+ public void PositionAccuracyTest()
+ {
+ // TODO unit test for the property 'PositionAccuracy'
+ }
+
+ ///
+ /// Test the property 'Longitude'
+ ///
+ [Fact]
+ public void LongitudeTest()
+ {
+ // TODO unit test for the property 'Longitude'
+ }
+
+ ///
+ /// Test the property 'Latitude'
+ ///
+ [Fact]
+ public void LatitudeTest()
+ {
+ // TODO unit test for the property 'Latitude'
+ }
+
+ ///
+ /// Test the property 'Cog'
+ ///
+ [Fact]
+ public void CogTest()
+ {
+ // TODO unit test for the property 'Cog'
+ }
+
+ ///
+ /// Test the property 'TrueHeading'
+ ///
+ [Fact]
+ public void TrueHeadingTest()
+ {
+ // TODO unit test for the property 'TrueHeading'
+ }
+
+ ///
+ /// Test the property 'Timestamp'
+ ///
+ [Fact]
+ public void TimestampTest()
+ {
+ // TODO unit test for the property 'Timestamp'
+ }
+
+ ///
+ /// Test the property 'Spare2'
+ ///
+ [Fact]
+ public void Spare2Test()
+ {
+ // TODO unit test for the property 'Spare2'
+ }
+
+ ///
+ /// Test the property 'ClassBUnit'
+ ///
+ [Fact]
+ public void ClassBUnitTest()
+ {
+ // TODO unit test for the property 'ClassBUnit'
+ }
+
+ ///
+ /// Test the property 'ClassBDisplay'
+ ///
+ [Fact]
+ public void ClassBDisplayTest()
+ {
+ // TODO unit test for the property 'ClassBDisplay'
+ }
+
+ ///
+ /// Test the property 'ClassBDsc'
+ ///
+ [Fact]
+ public void ClassBDscTest()
+ {
+ // TODO unit test for the property 'ClassBDsc'
+ }
+
+ ///
+ /// Test the property 'ClassBBand'
+ ///
+ [Fact]
+ public void ClassBBandTest()
+ {
+ // TODO unit test for the property 'ClassBBand'
+ }
+
+ ///
+ /// Test the property 'ClassBMsg22'
+ ///
+ [Fact]
+ public void ClassBMsg22Test()
+ {
+ // TODO unit test for the property 'ClassBMsg22'
+ }
+
+ ///
+ /// Test the property 'AssignedMode'
+ ///
+ [Fact]
+ public void AssignedModeTest()
+ {
+ // TODO unit test for the property 'AssignedMode'
+ }
+
+ ///
+ /// Test the property 'Raim'
+ ///
+ [Fact]
+ public void RaimTest()
+ {
+ // TODO unit test for the property 'Raim'
+ }
+
+ ///
+ /// Test the property 'CommunicationStateIsItdma'
+ ///
+ [Fact]
+ public void CommunicationStateIsItdmaTest()
+ {
+ // TODO unit test for the property 'CommunicationStateIsItdma'
+ }
+
+ ///
+ /// Test the property 'CommunicationState'
+ ///
+ [Fact]
+ public void CommunicationStateTest()
+ {
+ // TODO unit test for the property 'CommunicationState'
+ }
+ }
+}
diff --git a/csharp/src/aisStream.Test/Model/StandardSearchAndRescueAircraftReportTests.cs b/csharp/src/aisStream.Test/Model/StandardSearchAndRescueAircraftReportTests.cs
new file mode 100644
index 0000000..9aebede
--- /dev/null
+++ b/csharp/src/aisStream.Test/Model/StandardSearchAndRescueAircraftReportTests.cs
@@ -0,0 +1,220 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using System;
+using Xunit;
+
+namespace aisStream.Test.Model
+{
+ ///
+ /// Class for testing StandardSearchAndRescueAircraftReport
+ ///
+ ///
+ /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
+ /// Please update the test case below to test the model.
+ ///
+ public class StandardSearchAndRescueAircraftReportTests : IDisposable
+ {
+ // TODO uncomment below to declare an instance variable for StandardSearchAndRescueAircraftReport
+ //private StandardSearchAndRescueAircraftReport instance;
+
+ public StandardSearchAndRescueAircraftReportTests()
+ {
+ // TODO uncomment below to create an instance of StandardSearchAndRescueAircraftReport
+ //instance = new StandardSearchAndRescueAircraftReport();
+ }
+
+ public void Dispose()
+ {
+ // Cleanup when everything is done.
+ }
+
+ ///
+ /// Test an instance of StandardSearchAndRescueAircraftReport
+ ///
+ [Fact]
+ public void StandardSearchAndRescueAircraftReportInstanceTest()
+ {
+ // TODO uncomment below to test "IsType" StandardSearchAndRescueAircraftReport
+ //Assert.IsType(instance);
+ }
+
+ ///
+ /// Test the property 'MessageID'
+ ///
+ [Fact]
+ public void MessageIDTest()
+ {
+ // TODO unit test for the property 'MessageID'
+ }
+
+ ///
+ /// Test the property 'RepeatIndicator'
+ ///
+ [Fact]
+ public void RepeatIndicatorTest()
+ {
+ // TODO unit test for the property 'RepeatIndicator'
+ }
+
+ ///
+ /// Test the property 'UserID'
+ ///
+ [Fact]
+ public void UserIDTest()
+ {
+ // TODO unit test for the property 'UserID'
+ }
+
+ ///
+ /// Test the property 'Valid'
+ ///
+ [Fact]
+ public void ValidTest()
+ {
+ // TODO unit test for the property 'Valid'
+ }
+
+ ///
+ /// Test the property 'Altitude'
+ ///
+ [Fact]
+ public void AltitudeTest()
+ {
+ // TODO unit test for the property 'Altitude'
+ }
+
+ ///
+ /// Test the property 'Sog'
+ ///
+ [Fact]
+ public void SogTest()
+ {
+ // TODO unit test for the property 'Sog'
+ }
+
+ ///
+ /// Test the property 'PositionAccuracy'
+ ///
+ [Fact]
+ public void PositionAccuracyTest()
+ {
+ // TODO unit test for the property 'PositionAccuracy'
+ }
+
+ ///
+ /// Test the property 'Longitude'
+ ///
+ [Fact]
+ public void LongitudeTest()
+ {
+ // TODO unit test for the property 'Longitude'
+ }
+
+ ///
+ /// Test the property 'Latitude'
+ ///
+ [Fact]
+ public void LatitudeTest()
+ {
+ // TODO unit test for the property 'Latitude'
+ }
+
+ ///
+ /// Test the property 'Cog'
+ ///
+ [Fact]
+ public void CogTest()
+ {
+ // TODO unit test for the property 'Cog'
+ }
+
+ ///
+ /// Test the property 'Timestamp'
+ ///
+ [Fact]
+ public void TimestampTest()
+ {
+ // TODO unit test for the property 'Timestamp'
+ }
+
+ ///
+ /// Test the property 'AltFromBaro'
+ ///
+ [Fact]
+ public void AltFromBaroTest()
+ {
+ // TODO unit test for the property 'AltFromBaro'
+ }
+
+ ///
+ /// Test the property 'Spare1'
+ ///
+ [Fact]
+ public void Spare1Test()
+ {
+ // TODO unit test for the property 'Spare1'
+ }
+
+ ///
+ /// Test the property 'Dte'
+ ///
+ [Fact]
+ public void DteTest()
+ {
+ // TODO unit test for the property 'Dte'
+ }
+
+ ///
+ /// Test the property 'Spare2'
+ ///
+ [Fact]
+ public void Spare2Test()
+ {
+ // TODO unit test for the property 'Spare2'
+ }
+
+ ///
+ /// Test the property 'AssignedMode'
+ ///
+ [Fact]
+ public void AssignedModeTest()
+ {
+ // TODO unit test for the property 'AssignedMode'
+ }
+
+ ///
+ /// Test the property 'Raim'
+ ///
+ [Fact]
+ public void RaimTest()
+ {
+ // TODO unit test for the property 'Raim'
+ }
+
+ ///
+ /// Test the property 'CommunicationStateIsItdma'
+ ///
+ [Fact]
+ public void CommunicationStateIsItdmaTest()
+ {
+ // TODO unit test for the property 'CommunicationStateIsItdma'
+ }
+
+ ///
+ /// Test the property 'CommunicationState'
+ ///
+ [Fact]
+ public void CommunicationStateTest()
+ {
+ // TODO unit test for the property 'CommunicationState'
+ }
+ }
+}
diff --git a/csharp/src/aisStream.Test/Model/StaticDataReportReportATests.cs b/csharp/src/aisStream.Test/Model/StaticDataReportReportATests.cs
new file mode 100644
index 0000000..b828351
--- /dev/null
+++ b/csharp/src/aisStream.Test/Model/StaticDataReportReportATests.cs
@@ -0,0 +1,67 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using System;
+using Xunit;
+
+namespace aisStream.Test.Model
+{
+ ///
+ /// Class for testing StaticDataReportReportA
+ ///
+ ///
+ /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
+ /// Please update the test case below to test the model.
+ ///
+ public class StaticDataReportReportATests : IDisposable
+ {
+ // TODO uncomment below to declare an instance variable for StaticDataReportReportA
+ //private StaticDataReportReportA instance;
+
+ public StaticDataReportReportATests()
+ {
+ // TODO uncomment below to create an instance of StaticDataReportReportA
+ //instance = new StaticDataReportReportA();
+ }
+
+ public void Dispose()
+ {
+ // Cleanup when everything is done.
+ }
+
+ ///
+ /// Test an instance of StaticDataReportReportA
+ ///
+ [Fact]
+ public void StaticDataReportReportAInstanceTest()
+ {
+ // TODO uncomment below to test "IsType" StaticDataReportReportA
+ //Assert.IsType(instance);
+ }
+
+ ///
+ /// Test the property 'Valid'
+ ///
+ [Fact]
+ public void ValidTest()
+ {
+ // TODO unit test for the property 'Valid'
+ }
+
+ ///
+ /// Test the property 'Name'
+ ///
+ [Fact]
+ public void NameTest()
+ {
+ // TODO unit test for the property 'Name'
+ }
+ }
+}
diff --git a/csharp/src/aisStream.Test/Model/StaticDataReportReportBTests.cs b/csharp/src/aisStream.Test/Model/StaticDataReportReportBTests.cs
new file mode 100644
index 0000000..9cacf84
--- /dev/null
+++ b/csharp/src/aisStream.Test/Model/StaticDataReportReportBTests.cs
@@ -0,0 +1,130 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using System;
+using Xunit;
+
+namespace aisStream.Test.Model
+{
+ ///
+ /// Class for testing StaticDataReportReportB
+ ///
+ ///
+ /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
+ /// Please update the test case below to test the model.
+ ///
+ public class StaticDataReportReportBTests : IDisposable
+ {
+ // TODO uncomment below to declare an instance variable for StaticDataReportReportB
+ //private StaticDataReportReportB instance;
+
+ public StaticDataReportReportBTests()
+ {
+ // TODO uncomment below to create an instance of StaticDataReportReportB
+ //instance = new StaticDataReportReportB();
+ }
+
+ public void Dispose()
+ {
+ // Cleanup when everything is done.
+ }
+
+ ///
+ /// Test an instance of StaticDataReportReportB
+ ///
+ [Fact]
+ public void StaticDataReportReportBInstanceTest()
+ {
+ // TODO uncomment below to test "IsType" StaticDataReportReportB
+ //Assert.IsType(instance);
+ }
+
+ ///
+ /// Test the property 'Valid'
+ ///
+ [Fact]
+ public void ValidTest()
+ {
+ // TODO unit test for the property 'Valid'
+ }
+
+ ///
+ /// Test the property 'ShipType'
+ ///
+ [Fact]
+ public void ShipTypeTest()
+ {
+ // TODO unit test for the property 'ShipType'
+ }
+
+ ///
+ /// Test the property 'VendorIDName'
+ ///
+ [Fact]
+ public void VendorIDNameTest()
+ {
+ // TODO unit test for the property 'VendorIDName'
+ }
+
+ ///
+ /// Test the property 'VenderIDModel'
+ ///
+ [Fact]
+ public void VenderIDModelTest()
+ {
+ // TODO unit test for the property 'VenderIDModel'
+ }
+
+ ///
+ /// Test the property 'VenderIDSerial'
+ ///
+ [Fact]
+ public void VenderIDSerialTest()
+ {
+ // TODO unit test for the property 'VenderIDSerial'
+ }
+
+ ///
+ /// Test the property 'CallSign'
+ ///
+ [Fact]
+ public void CallSignTest()
+ {
+ // TODO unit test for the property 'CallSign'
+ }
+
+ ///
+ /// Test the property 'Dimension'
+ ///
+ [Fact]
+ public void DimensionTest()
+ {
+ // TODO unit test for the property 'Dimension'
+ }
+
+ ///
+ /// Test the property 'FixType'
+ ///
+ [Fact]
+ public void FixTypeTest()
+ {
+ // TODO unit test for the property 'FixType'
+ }
+
+ ///
+ /// Test the property 'Spare'
+ ///
+ [Fact]
+ public void SpareTest()
+ {
+ // TODO unit test for the property 'Spare'
+ }
+ }
+}
diff --git a/csharp/src/aisStream.Test/Model/StaticDataReportTests.cs b/csharp/src/aisStream.Test/Model/StaticDataReportTests.cs
new file mode 100644
index 0000000..5e05f1a
--- /dev/null
+++ b/csharp/src/aisStream.Test/Model/StaticDataReportTests.cs
@@ -0,0 +1,121 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using System;
+using Xunit;
+
+namespace aisStream.Test.Model
+{
+ ///
+ /// Class for testing StaticDataReport
+ ///
+ ///
+ /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
+ /// Please update the test case below to test the model.
+ ///
+ public class StaticDataReportTests : IDisposable
+ {
+ // TODO uncomment below to declare an instance variable for StaticDataReport
+ //private StaticDataReport instance;
+
+ public StaticDataReportTests()
+ {
+ // TODO uncomment below to create an instance of StaticDataReport
+ //instance = new StaticDataReport();
+ }
+
+ public void Dispose()
+ {
+ // Cleanup when everything is done.
+ }
+
+ ///
+ /// Test an instance of StaticDataReport
+ ///
+ [Fact]
+ public void StaticDataReportInstanceTest()
+ {
+ // TODO uncomment below to test "IsType" StaticDataReport
+ //Assert.IsType(instance);
+ }
+
+ ///
+ /// Test the property 'MessageID'
+ ///
+ [Fact]
+ public void MessageIDTest()
+ {
+ // TODO unit test for the property 'MessageID'
+ }
+
+ ///
+ /// Test the property 'RepeatIndicator'
+ ///
+ [Fact]
+ public void RepeatIndicatorTest()
+ {
+ // TODO unit test for the property 'RepeatIndicator'
+ }
+
+ ///
+ /// Test the property 'UserID'
+ ///
+ [Fact]
+ public void UserIDTest()
+ {
+ // TODO unit test for the property 'UserID'
+ }
+
+ ///
+ /// Test the property 'Valid'
+ ///
+ [Fact]
+ public void ValidTest()
+ {
+ // TODO unit test for the property 'Valid'
+ }
+
+ ///
+ /// Test the property 'Reserved'
+ ///
+ [Fact]
+ public void ReservedTest()
+ {
+ // TODO unit test for the property 'Reserved'
+ }
+
+ ///
+ /// Test the property 'PartNumber'
+ ///
+ [Fact]
+ public void PartNumberTest()
+ {
+ // TODO unit test for the property 'PartNumber'
+ }
+
+ ///
+ /// Test the property 'ReportA'
+ ///
+ [Fact]
+ public void ReportATest()
+ {
+ // TODO unit test for the property 'ReportA'
+ }
+
+ ///
+ /// Test the property 'ReportB'
+ ///
+ [Fact]
+ public void ReportBTest()
+ {
+ // TODO unit test for the property 'ReportB'
+ }
+ }
+}
diff --git a/csharp/src/aisStream.Test/Model/SubscriptionMessageTests.cs b/csharp/src/aisStream.Test/Model/SubscriptionMessageTests.cs
new file mode 100644
index 0000000..6c8af50
--- /dev/null
+++ b/csharp/src/aisStream.Test/Model/SubscriptionMessageTests.cs
@@ -0,0 +1,85 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using System;
+using Xunit;
+
+namespace aisStream.Test.Model
+{
+ ///
+ /// Class for testing SubscriptionMessage
+ ///
+ ///
+ /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
+ /// Please update the test case below to test the model.
+ ///
+ public class SubscriptionMessageTests : IDisposable
+ {
+ // TODO uncomment below to declare an instance variable for SubscriptionMessage
+ //private SubscriptionMessage instance;
+
+ public SubscriptionMessageTests()
+ {
+ // TODO uncomment below to create an instance of SubscriptionMessage
+ //instance = new SubscriptionMessage();
+ }
+
+ public void Dispose()
+ {
+ // Cleanup when everything is done.
+ }
+
+ ///
+ /// Test an instance of SubscriptionMessage
+ ///
+ [Fact]
+ public void SubscriptionMessageInstanceTest()
+ {
+ // TODO uncomment below to test "IsType" SubscriptionMessage
+ //Assert.IsType(instance);
+ }
+
+ ///
+ /// Test the property 'APIKey'
+ ///
+ [Fact]
+ public void APIKeyTest()
+ {
+ // TODO unit test for the property 'APIKey'
+ }
+
+ ///
+ /// Test the property 'BoundingBoxes'
+ ///
+ [Fact]
+ public void BoundingBoxesTest()
+ {
+ // TODO unit test for the property 'BoundingBoxes'
+ }
+
+ ///
+ /// Test the property 'FiltersShipMMSI'
+ ///
+ [Fact]
+ public void FiltersShipMMSITest()
+ {
+ // TODO unit test for the property 'FiltersShipMMSI'
+ }
+
+ ///
+ /// Test the property 'FilterMessageTypes'
+ ///
+ [Fact]
+ public void FilterMessageTypesTest()
+ {
+ // TODO unit test for the property 'FilterMessageTypes'
+ }
+ }
+}
diff --git a/csharp/src/aisStream.Test/Model/UnknownMessageTests.cs b/csharp/src/aisStream.Test/Model/UnknownMessageTests.cs
new file mode 100644
index 0000000..300de79
--- /dev/null
+++ b/csharp/src/aisStream.Test/Model/UnknownMessageTests.cs
@@ -0,0 +1,58 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using System;
+using Xunit;
+
+namespace aisStream.Test.Model
+{
+ ///
+ /// Class for testing UnknownMessage
+ ///
+ ///
+ /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
+ /// Please update the test case below to test the model.
+ ///
+ public class UnknownMessageTests : IDisposable
+ {
+ // TODO uncomment below to declare an instance variable for UnknownMessage
+ //private UnknownMessage instance;
+
+ public UnknownMessageTests()
+ {
+ // TODO uncomment below to create an instance of UnknownMessage
+ //instance = new UnknownMessage();
+ }
+
+ public void Dispose()
+ {
+ // Cleanup when everything is done.
+ }
+
+ ///
+ /// Test an instance of UnknownMessage
+ ///
+ [Fact]
+ public void UnknownMessageInstanceTest()
+ {
+ // TODO uncomment below to test "IsType" UnknownMessage
+ //Assert.IsType(instance);
+ }
+
+ ///
+ /// Test the property 'Error'
+ ///
+ [Fact]
+ public void ErrorTest()
+ {
+ // TODO unit test for the property 'Error'
+ }
+ }
+}
diff --git a/csharp/src/aisStream.Test/aisStream.Test.csproj b/csharp/src/aisStream.Test/aisStream.Test.csproj
new file mode 100644
index 0000000..29c3a31
--- /dev/null
+++ b/csharp/src/aisStream.Test/aisStream.Test.csproj
@@ -0,0 +1,15 @@
+
+
+ net8.0
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/csharp/src/aisStream/Client/AisReceivedEventArgs.cs b/csharp/src/aisStream/Client/AisReceivedEventArgs.cs
new file mode 100644
index 0000000..4d25964
--- /dev/null
+++ b/csharp/src/aisStream/Client/AisReceivedEventArgs.cs
@@ -0,0 +1,14 @@
+namespace aisStream.Client
+{
+ public class AisReceivedEventArgs
+ {
+ public AisReceivedEventArgs(object ais, object meta)
+ {
+ AIS = ais;
+ Meta = meta;
+ }
+
+ public object AIS { get; }
+ public object Meta { get; }
+ }
+}
diff --git a/csharp/src/aisStream/Client/Client.cs b/csharp/src/aisStream/Client/Client.cs
new file mode 100644
index 0000000..d3c5b1a
--- /dev/null
+++ b/csharp/src/aisStream/Client/Client.cs
@@ -0,0 +1,265 @@
+using aisStream.Model;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Net.WebSockets;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace aisStream.Client
+{
+ public partial class WebsocketClient : IDisposable
+ {
+ private bool _disposing;
+ private bool _stopping;
+ private ClientWebSocket? _client;
+ private CancellationTokenSource? _cancellation;
+ private CancellationTokenSource? _cancellationTotal;
+ private GeoBoundingBox _boundingBox;
+ private string _apiKey;
+
+ public event EventHandler AisReceived;
+
+ public WebsocketClient(string apiKey, GeoBoundingBox boundingBox = null)
+ {
+ _apiKey = apiKey;
+ _boundingBox = boundingBox == null ? new GeoBoundingBox() : boundingBox;
+ }
+
+ public Uri Url
+ {
+ get => new Uri("wss://stream.aisstream.io/v0/stream");
+ }
+
+ public bool IsStarted { get; private set; }
+
+ public bool IsRunning { get; private set; }
+
+ public ClientWebSocket? NativeClient
+ {
+ get
+ {
+ if (_client == null)
+ return null;
+ var specific = _client as ClientWebSocket;
+ if (specific == null)
+ throw new Exception("Cannot cast 'WebSocket' client to 'ClientWebSocket', provide correct type via factory or don't use this property at all.");
+ return specific;
+ }
+ }
+
+ public void Dispose()
+ {
+ _disposing = true;
+ try
+ {
+ _cancellation?.Cancel();
+ _cancellationTotal?.Cancel();
+ _client?.Abort();
+ _client?.Dispose();
+ _cancellation?.Dispose();
+ _cancellationTotal?.Dispose();
+ }
+ catch (Exception e)
+ {
+ }
+ if (IsRunning)
+ IsRunning = false;
+ IsStarted = false;
+ }
+
+ public Task Start()
+ {
+ return StartInternal();
+ }
+
+ public async Task Stop(WebSocketCloseStatus status, string statusDescription)
+ {
+ var result = await StopInternal(_client, status, statusDescription, null, false, false).ConfigureAwait(false);
+ return result;
+ }
+
+ public async Task StopOrFail(WebSocketCloseStatus status, string statusDescription)
+ {
+ var result = await StopInternal(_client, status, statusDescription, null, true, false).ConfigureAwait(false);
+ return result;
+ }
+
+ private async Task StartInternal()
+ {
+ if (_disposing)
+ {
+ throw new Exception("Client is already disposed, starting not possible");
+ }
+
+ if (IsStarted) return;
+ IsStarted = true;
+
+ _cancellation = new CancellationTokenSource();
+ _cancellationTotal = new CancellationTokenSource();
+ await StartClient(_cancellation.Token).ConfigureAwait(false);
+ }
+
+ private async Task StopInternal(WebSocket? client, WebSocketCloseStatus status, string statusDescription, CancellationToken? cancellation, bool failFast, bool byServer)
+ {
+ if (_disposing)
+ {
+ throw new Exception("Client is already disposed, stopping not possible");
+ }
+
+ if (client == null)
+ {
+ IsStarted = false;
+ IsRunning = false;
+ return false;
+ }
+
+ if (!IsRunning)
+ {
+ IsStarted = false;
+ return false;
+ }
+
+ var result = false;
+ try
+ {
+ var cancellationToken = cancellation ?? CancellationToken.None;
+ _stopping = true;
+ if (byServer)
+ await client.CloseOutputAsync(status, statusDescription, cancellationToken);
+ else
+ await client.CloseAsync(status, statusDescription, cancellationToken);
+ result = true;
+ }
+ catch (Exception e)
+ {
+ if (failFast)
+ {
+ throw new Exception($"Failed to stop Websocket client, error: '{e.Message}'", e);
+ }
+ }
+ finally
+ {
+ IsRunning = false;
+ _stopping = false;
+ if (!byServer) IsStarted = false;
+ }
+
+ return result;
+ }
+
+ private async Task StartClient(CancellationToken token)
+ {
+ try
+ {
+ _client = new ClientWebSocket();
+ await _client.ConnectAsync(Url, token).ConfigureAwait(false);
+ var sub = new Model.SubscriptionMessage(_apiKey, new List>>(new List>[] { _boundingBox.ToList() }));
+ await _client.SendAsync(new ArraySegment(Encoding.UTF8.GetBytes(sub.ToJson())), WebSocketMessageType.Text, true, token);
+ _ = Listen(_client, token);
+ IsRunning = true;
+ IsStarted = true;
+ }
+ catch
+ {
+ IsRunning = false;
+ IsStarted = false;
+ }
+ }
+
+ private async Task Listen(WebSocket client, CancellationToken token)
+ {
+ try
+ {
+ var buffer = new ArraySegment(new byte[4096]);
+ do
+ {
+ WebSocketReceiveResult result;
+ byte[]? resultArrayWithTrailing = null;
+ var resultArraySize = 0;
+ var isResultArrayCloned = false;
+ MemoryStream? ms = null;
+
+ while (true)
+ {
+ result = await client.ReceiveAsync(buffer, token);
+ var currentChunk = buffer.Array;
+ var currentChunkSize = result.Count;
+
+ var isFirstChunk = resultArrayWithTrailing == null;
+ if (isFirstChunk)
+ {
+ resultArraySize += currentChunkSize;
+ resultArrayWithTrailing = currentChunk;
+ isResultArrayCloned = false;
+ }
+ else if (currentChunk == null)
+ {
+ }
+ else
+ {
+ if (ms == null)
+ {
+ ms = new MemoryStream();
+ ms.Write(resultArrayWithTrailing!, 0, resultArraySize);
+ }
+ ms.Write(currentChunk, buffer.Offset, currentChunkSize);
+ }
+
+ if (result.EndOfMessage)
+ {
+ break;
+ }
+
+ if (isResultArrayCloned)
+ continue;
+
+ resultArrayWithTrailing = resultArrayWithTrailing?.ToArray();
+ isResultArrayCloned = true;
+ }
+
+ ms?.Seek(0, SeekOrigin.Begin);
+
+ if (result.MessageType == WebSocketMessageType.Close)
+ {
+ if (!IsStarted || _stopping)
+ {
+ return;
+ }
+ await StopInternal(client, WebSocketCloseStatus.NormalClosure, "Closing", token, false, true);
+ return;
+ }
+ else
+ {
+ var json = ms != null ? Encoding.UTF8.GetString(ms.ToArray()) : resultArrayWithTrailing != null ? Encoding.UTF8.GetString(resultArrayWithTrailing, 0, resultArraySize) : null;
+ if (json != null && AisReceived != null)
+ {
+ try
+ {
+ AisStreamMessage aisStreamMessage = JsonConvert.DeserializeObject(json);
+ object ais = null;
+ string mt = Enum.GetName(typeof(AisMessageTypes), aisStreamMessage.MessageType);
+ System.Reflection.PropertyInfo prop = typeof(AisStreamMessageMessage).GetProperty(mt);
+ if (prop != null)
+ {
+ ais = prop.GetValue(aisStreamMessage.Message, null);
+ AisReceived(this, new AisReceivedEventArgs(ais, aisStreamMessage.MetaData));
+ }
+ }
+ catch
+ {
+ }
+ }
+ }
+ ms?.Dispose();
+ } while (client.State == WebSocketState.Open && !token.IsCancellationRequested);
+ }
+ catch
+ {
+ }
+ }
+ }
+}
diff --git a/csharp/src/aisStream/Client/GeoBoundingBox.cs b/csharp/src/aisStream/Client/GeoBoundingBox.cs
new file mode 100644
index 0000000..7c27cee
--- /dev/null
+++ b/csharp/src/aisStream/Client/GeoBoundingBox.cs
@@ -0,0 +1,53 @@
+using System;
+
+namespace aisStream.Client
+{
+ public class GeoBoundingBox : IEquatable
+ {
+ private readonly GeoCoordinate _corner1;
+ private readonly GeoCoordinate _corner2;
+
+ public GeoCoordinate Corner1 { get => _corner1; }
+ public GeoCoordinate Corner2 { get => _corner2; }
+
+ public GeoBoundingBox()
+ {
+ this._corner1 = new GeoCoordinate(-90, -180);
+ this._corner2 = new GeoCoordinate(90, 180);
+ }
+
+ public GeoBoundingBox(GeoCoordinate corner1, GeoCoordinate corner2)
+ {
+ this._corner1 = corner1;
+ this._corner2 = corner2;
+ }
+
+ public override string ToString()
+ {
+ return string.Format("{0}/{1}", Corner1, Corner2);
+ }
+
+ public override bool Equals(Object other)
+ {
+ return other is GeoBoundingBox && Equals((GeoBoundingBox)other);
+ }
+
+ public bool Equals(GeoBoundingBox other)
+ {
+ return Corner1 == other.Corner1 && Corner2 == other.Corner2;
+ }
+
+ public override int GetHashCode()
+ {
+ return Corner1.GetHashCode() ^ Corner2.GetHashCode();
+ }
+
+ internal System.Collections.Generic.List> ToList()
+ {
+ System.Collections.Generic.List> result = new System.Collections.Generic.List>();
+ result.Add(Corner1.ToList());
+ result.Add(Corner2.ToList());
+ return result;
+ }
+ }
+}
diff --git a/csharp/src/aisStream/Client/GeoCoordinate.cs b/csharp/src/aisStream/Client/GeoCoordinate.cs
new file mode 100644
index 0000000..f3986b2
--- /dev/null
+++ b/csharp/src/aisStream/Client/GeoCoordinate.cs
@@ -0,0 +1,47 @@
+using System;
+
+namespace aisStream.Client
+{
+ public class GeoCoordinate : IEquatable
+ {
+ private readonly double _latitude;
+ private readonly double _longitude;
+
+ public double Latitude { get => _latitude; }
+ public double Longitude { get => _longitude; }
+
+ public GeoCoordinate(double latitude, double longitude)
+ {
+ this._latitude = latitude;
+ this._longitude = longitude;
+ }
+
+ public override string ToString()
+ {
+ return string.Format("{0},{1}", Latitude, Longitude);
+ }
+
+ public override bool Equals(Object other)
+ {
+ return other is GeoCoordinate && Equals((GeoCoordinate)other);
+ }
+
+ public bool Equals(GeoCoordinate other)
+ {
+ return Latitude == other.Latitude && Longitude == other.Longitude;
+ }
+
+ public override int GetHashCode()
+ {
+ return Latitude.GetHashCode() ^ Longitude.GetHashCode();
+ }
+
+ internal System.Collections.Generic.List ToList()
+ {
+ System.Collections.Generic.List result = new System.Collections.Generic.List();
+ result.Add(Latitude);
+ result.Add(Longitude);
+ return result;
+ }
+ }
+}
diff --git a/csharp/src/aisStream/Model/AddressedBinaryMessage.cs b/csharp/src/aisStream/Model/AddressedBinaryMessage.cs
new file mode 100644
index 0000000..607d3b0
--- /dev/null
+++ b/csharp/src/aisStream/Model/AddressedBinaryMessage.cs
@@ -0,0 +1,170 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Runtime.Serialization;
+using System.Text;
+
+namespace aisStream.Model
+{
+ ///
+ /// AddressedBinaryMessage
+ ///
+ [DataContract(Name = "AddressedBinaryMessage")]
+ public partial class AddressedBinaryMessage : IValidatableObject
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ [JsonConstructorAttribute]
+ protected AddressedBinaryMessage() { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// messageID (required).
+ /// repeatIndicator (required).
+ /// userID (required).
+ /// valid (required).
+ /// sequenceinteger (required).
+ /// destinationID (required).
+ /// retransmission (required).
+ /// spare (required).
+ /// applicationID (required).
+ /// binaryData (required).
+ public AddressedBinaryMessage(int messageID = default(int), int repeatIndicator = default(int), int userID = default(int), bool valid = default(bool), int sequenceinteger = default(int), int destinationID = default(int), bool retransmission = default(bool), bool spare = default(bool), AddressedBinaryMessageApplicationID applicationID = default(AddressedBinaryMessageApplicationID), string binaryData = default(string))
+ {
+ this.MessageID = messageID;
+ this.RepeatIndicator = repeatIndicator;
+ this.UserID = userID;
+ this.Valid = valid;
+ this.Sequenceinteger = sequenceinteger;
+ this.DestinationID = destinationID;
+ this.Retransmission = retransmission;
+ this.Spare = spare;
+ // to ensure "applicationID" is required (not null)
+ if (applicationID == null)
+ {
+ throw new ArgumentNullException("applicationID is a required property for AddressedBinaryMessage and cannot be null");
+ }
+ this.ApplicationID = applicationID;
+ // to ensure "binaryData" is required (not null)
+ if (binaryData == null)
+ {
+ throw new ArgumentNullException("binaryData is a required property for AddressedBinaryMessage and cannot be null");
+ }
+ this.BinaryData = binaryData;
+ }
+
+ ///
+ /// Gets or Sets MessageID
+ ///
+ [DataMember(Name = "MessageID", IsRequired = true, EmitDefaultValue = true)]
+ public int MessageID { get; set; }
+
+ ///
+ /// Gets or Sets RepeatIndicator
+ ///
+ [DataMember(Name = "RepeatIndicator", IsRequired = true, EmitDefaultValue = true)]
+ public int RepeatIndicator { get; set; }
+
+ ///
+ /// Gets or Sets UserID
+ ///
+ [DataMember(Name = "UserID", IsRequired = true, EmitDefaultValue = true)]
+ public int UserID { get; set; }
+
+ ///
+ /// Gets or Sets Valid
+ ///
+ [DataMember(Name = "Valid", IsRequired = true, EmitDefaultValue = true)]
+ public bool Valid { get; set; }
+
+ ///
+ /// Gets or Sets Sequenceinteger
+ ///
+ [DataMember(Name = "Sequenceinteger", IsRequired = true, EmitDefaultValue = true)]
+ public int Sequenceinteger { get; set; }
+
+ ///
+ /// Gets or Sets DestinationID
+ ///
+ [DataMember(Name = "DestinationID", IsRequired = true, EmitDefaultValue = true)]
+ public int DestinationID { get; set; }
+
+ ///
+ /// Gets or Sets Retransmission
+ ///
+ [DataMember(Name = "Retransmission", IsRequired = true, EmitDefaultValue = true)]
+ public bool Retransmission { get; set; }
+
+ ///
+ /// Gets or Sets Spare
+ ///
+ [DataMember(Name = "Spare", IsRequired = true, EmitDefaultValue = true)]
+ public bool Spare { get; set; }
+
+ ///
+ /// Gets or Sets ApplicationID
+ ///
+ [DataMember(Name = "ApplicationID", IsRequired = true, EmitDefaultValue = true)]
+ public AddressedBinaryMessageApplicationID ApplicationID { get; set; }
+
+ ///
+ /// Gets or Sets BinaryData
+ ///
+ [DataMember(Name = "BinaryData", IsRequired = true, EmitDefaultValue = true)]
+ public string BinaryData { get; set; }
+
+ ///
+ /// Returns the string presentation of the object
+ ///
+ /// String presentation of the object
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.Append("class AddressedBinaryMessage {\n");
+ sb.Append(" MessageID: ").Append(MessageID).Append("\n");
+ sb.Append(" RepeatIndicator: ").Append(RepeatIndicator).Append("\n");
+ sb.Append(" UserID: ").Append(UserID).Append("\n");
+ sb.Append(" Valid: ").Append(Valid).Append("\n");
+ sb.Append(" Sequenceinteger: ").Append(Sequenceinteger).Append("\n");
+ sb.Append(" DestinationID: ").Append(DestinationID).Append("\n");
+ sb.Append(" Retransmission: ").Append(Retransmission).Append("\n");
+ sb.Append(" Spare: ").Append(Spare).Append("\n");
+ sb.Append(" ApplicationID: ").Append(ApplicationID).Append("\n");
+ sb.Append(" BinaryData: ").Append(BinaryData).Append("\n");
+ sb.Append("}\n");
+ return sb.ToString();
+ }
+
+ ///
+ /// Returns the JSON string presentation of the object
+ ///
+ /// JSON string presentation of the object
+ public virtual string ToJson()
+ {
+ return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
+ }
+
+ ///
+ /// To validate all properties of the instance
+ ///
+ /// Validation context
+ /// Validation Result
+ IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ {
+ yield break;
+ }
+ }
+
+}
diff --git a/csharp/src/aisStream/Model/AddressedBinaryMessageApplicationID.cs b/csharp/src/aisStream/Model/AddressedBinaryMessageApplicationID.cs
new file mode 100644
index 0000000..c66394c
--- /dev/null
+++ b/csharp/src/aisStream/Model/AddressedBinaryMessageApplicationID.cs
@@ -0,0 +1,96 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using Newtonsoft.Json;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Runtime.Serialization;
+using System.Text;
+
+namespace aisStream.Model
+{
+ ///
+ /// AddressedBinaryMessageApplicationID
+ ///
+ [DataContract(Name = "AddressedBinaryMessage_ApplicationID")]
+ public partial class AddressedBinaryMessageApplicationID : IValidatableObject
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ [JsonConstructorAttribute]
+ protected AddressedBinaryMessageApplicationID() { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// valid (required).
+ /// designatedAreaCode (required).
+ /// functionIdentifier (required).
+ public AddressedBinaryMessageApplicationID(bool valid = default(bool), int designatedAreaCode = default(int), int functionIdentifier = default(int))
+ {
+ this.Valid = valid;
+ this.DesignatedAreaCode = designatedAreaCode;
+ this.FunctionIdentifier = functionIdentifier;
+ }
+
+ ///
+ /// Gets or Sets Valid
+ ///
+ [DataMember(Name = "Valid", IsRequired = true, EmitDefaultValue = true)]
+ public bool Valid { get; set; }
+
+ ///
+ /// Gets or Sets DesignatedAreaCode
+ ///
+ [DataMember(Name = "DesignatedAreaCode", IsRequired = true, EmitDefaultValue = true)]
+ public int DesignatedAreaCode { get; set; }
+
+ ///
+ /// Gets or Sets FunctionIdentifier
+ ///
+ [DataMember(Name = "FunctionIdentifier", IsRequired = true, EmitDefaultValue = true)]
+ public int FunctionIdentifier { get; set; }
+
+ ///
+ /// Returns the string presentation of the object
+ ///
+ /// String presentation of the object
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.Append("class AddressedBinaryMessageApplicationID {\n");
+ sb.Append(" Valid: ").Append(Valid).Append("\n");
+ sb.Append(" DesignatedAreaCode: ").Append(DesignatedAreaCode).Append("\n");
+ sb.Append(" FunctionIdentifier: ").Append(FunctionIdentifier).Append("\n");
+ sb.Append("}\n");
+ return sb.ToString();
+ }
+
+ ///
+ /// Returns the JSON string presentation of the object
+ ///
+ /// JSON string presentation of the object
+ public virtual string ToJson()
+ {
+ return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
+ }
+
+ ///
+ /// To validate all properties of the instance
+ ///
+ /// Validation context
+ /// Validation Result
+ IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ {
+ yield break;
+ }
+ }
+
+}
diff --git a/csharp/src/aisStream/Model/AddressedSafetyMessage.cs b/csharp/src/aisStream/Model/AddressedSafetyMessage.cs
new file mode 100644
index 0000000..12eb0cd
--- /dev/null
+++ b/csharp/src/aisStream/Model/AddressedSafetyMessage.cs
@@ -0,0 +1,156 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Runtime.Serialization;
+using System.Text;
+
+namespace aisStream.Model
+{
+ ///
+ /// AddressedSafetyMessage
+ ///
+ [DataContract(Name = "AddressedSafetyMessage")]
+ public partial class AddressedSafetyMessage : IValidatableObject
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ [JsonConstructorAttribute]
+ protected AddressedSafetyMessage() { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// messageID (required).
+ /// repeatIndicator (required).
+ /// userID (required).
+ /// valid (required).
+ /// sequenceinteger (required).
+ /// destinationID (required).
+ /// retransmission (required).
+ /// spare (required).
+ /// text (required).
+ public AddressedSafetyMessage(int messageID = default(int), int repeatIndicator = default(int), int userID = default(int), bool valid = default(bool), int sequenceinteger = default(int), int destinationID = default(int), bool retransmission = default(bool), bool spare = default(bool), string text = default(string))
+ {
+ this.MessageID = messageID;
+ this.RepeatIndicator = repeatIndicator;
+ this.UserID = userID;
+ this.Valid = valid;
+ this.Sequenceinteger = sequenceinteger;
+ this.DestinationID = destinationID;
+ this.Retransmission = retransmission;
+ this.Spare = spare;
+ // to ensure "text" is required (not null)
+ if (text == null)
+ {
+ throw new ArgumentNullException("text is a required property for AddressedSafetyMessage and cannot be null");
+ }
+ this.Text = text;
+ }
+
+ ///
+ /// Gets or Sets MessageID
+ ///
+ [DataMember(Name = "MessageID", IsRequired = true, EmitDefaultValue = true)]
+ public int MessageID { get; set; }
+
+ ///
+ /// Gets or Sets RepeatIndicator
+ ///
+ [DataMember(Name = "RepeatIndicator", IsRequired = true, EmitDefaultValue = true)]
+ public int RepeatIndicator { get; set; }
+
+ ///
+ /// Gets or Sets UserID
+ ///
+ [DataMember(Name = "UserID", IsRequired = true, EmitDefaultValue = true)]
+ public int UserID { get; set; }
+
+ ///
+ /// Gets or Sets Valid
+ ///
+ [DataMember(Name = "Valid", IsRequired = true, EmitDefaultValue = true)]
+ public bool Valid { get; set; }
+
+ ///
+ /// Gets or Sets Sequenceinteger
+ ///
+ [DataMember(Name = "Sequenceinteger", IsRequired = true, EmitDefaultValue = true)]
+ public int Sequenceinteger { get; set; }
+
+ ///
+ /// Gets or Sets DestinationID
+ ///
+ [DataMember(Name = "DestinationID", IsRequired = true, EmitDefaultValue = true)]
+ public int DestinationID { get; set; }
+
+ ///
+ /// Gets or Sets Retransmission
+ ///
+ [DataMember(Name = "Retransmission", IsRequired = true, EmitDefaultValue = true)]
+ public bool Retransmission { get; set; }
+
+ ///
+ /// Gets or Sets Spare
+ ///
+ [DataMember(Name = "Spare", IsRequired = true, EmitDefaultValue = true)]
+ public bool Spare { get; set; }
+
+ ///
+ /// Gets or Sets Text
+ ///
+ [DataMember(Name = "Text", IsRequired = true, EmitDefaultValue = true)]
+ public string Text { get; set; }
+
+ ///
+ /// Returns the string presentation of the object
+ ///
+ /// String presentation of the object
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.Append("class AddressedSafetyMessage {\n");
+ sb.Append(" MessageID: ").Append(MessageID).Append("\n");
+ sb.Append(" RepeatIndicator: ").Append(RepeatIndicator).Append("\n");
+ sb.Append(" UserID: ").Append(UserID).Append("\n");
+ sb.Append(" Valid: ").Append(Valid).Append("\n");
+ sb.Append(" Sequenceinteger: ").Append(Sequenceinteger).Append("\n");
+ sb.Append(" DestinationID: ").Append(DestinationID).Append("\n");
+ sb.Append(" Retransmission: ").Append(Retransmission).Append("\n");
+ sb.Append(" Spare: ").Append(Spare).Append("\n");
+ sb.Append(" Text: ").Append(Text).Append("\n");
+ sb.Append("}\n");
+ return sb.ToString();
+ }
+
+ ///
+ /// Returns the JSON string presentation of the object
+ ///
+ /// JSON string presentation of the object
+ public virtual string ToJson()
+ {
+ return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
+ }
+
+ ///
+ /// To validate all properties of the instance
+ ///
+ /// Validation context
+ /// Validation Result
+ IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ {
+ yield break;
+ }
+ }
+
+}
diff --git a/csharp/src/aisStream/Model/AidsToNavigationReport.cs b/csharp/src/aisStream/Model/AidsToNavigationReport.cs
new file mode 100644
index 0000000..fd51814
--- /dev/null
+++ b/csharp/src/aisStream/Model/AidsToNavigationReport.cs
@@ -0,0 +1,256 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Runtime.Serialization;
+using System.Text;
+
+namespace aisStream.Model
+{
+ ///
+ /// AidsToNavigationReport
+ ///
+ [DataContract(Name = "AidsToNavigationReport")]
+ public partial class AidsToNavigationReport : IValidatableObject
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ [JsonConstructorAttribute]
+ protected AidsToNavigationReport() { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// messageID (required).
+ /// repeatIndicator (required).
+ /// userID (required).
+ /// valid (required).
+ /// type (required).
+ /// name (required).
+ /// positionAccuracy (required).
+ /// longitude (required).
+ /// latitude (required).
+ /// dimension (required).
+ /// fixtype (required).
+ /// timestamp (required).
+ /// offPosition (required).
+ /// atoN (required).
+ /// raim (required).
+ /// virtualAtoN (required).
+ /// assignedMode (required).
+ /// spare (required).
+ /// nameExtension (required).
+ public AidsToNavigationReport(int messageID = default(int), int repeatIndicator = default(int), int userID = default(int), bool valid = default(bool), int type = default(int), string name = default(string), bool positionAccuracy = default(bool), double longitude = default(double), double latitude = default(double), ShipStaticDataDimension dimension = default(ShipStaticDataDimension), int fixtype = default(int), int timestamp = default(int), bool offPosition = default(bool), int atoN = default(int), bool raim = default(bool), bool virtualAtoN = default(bool), bool assignedMode = default(bool), bool spare = default(bool), string nameExtension = default(string))
+ {
+ this.MessageID = messageID;
+ this.RepeatIndicator = repeatIndicator;
+ this.UserID = userID;
+ this.Valid = valid;
+ this.Type = type;
+ // to ensure "name" is required (not null)
+ if (name == null)
+ {
+ throw new ArgumentNullException("name is a required property for AidsToNavigationReport and cannot be null");
+ }
+ this.Name = name;
+ this.PositionAccuracy = positionAccuracy;
+ this.Longitude = longitude;
+ this.Latitude = latitude;
+ // to ensure "dimension" is required (not null)
+ if (dimension == null)
+ {
+ throw new ArgumentNullException("dimension is a required property for AidsToNavigationReport and cannot be null");
+ }
+ this.Dimension = dimension;
+ this.Fixtype = fixtype;
+ this.Timestamp = timestamp;
+ this.OffPosition = offPosition;
+ this.AtoN = atoN;
+ this.Raim = raim;
+ this.VirtualAtoN = virtualAtoN;
+ this.AssignedMode = assignedMode;
+ this.Spare = spare;
+ // to ensure "nameExtension" is required (not null)
+ if (nameExtension == null)
+ {
+ throw new ArgumentNullException("nameExtension is a required property for AidsToNavigationReport and cannot be null");
+ }
+ this.NameExtension = nameExtension;
+ }
+
+ ///
+ /// Gets or Sets MessageID
+ ///
+ [DataMember(Name = "MessageID", IsRequired = true, EmitDefaultValue = true)]
+ public int MessageID { get; set; }
+
+ ///
+ /// Gets or Sets RepeatIndicator
+ ///
+ [DataMember(Name = "RepeatIndicator", IsRequired = true, EmitDefaultValue = true)]
+ public int RepeatIndicator { get; set; }
+
+ ///
+ /// Gets or Sets UserID
+ ///
+ [DataMember(Name = "UserID", IsRequired = true, EmitDefaultValue = true)]
+ public int UserID { get; set; }
+
+ ///
+ /// Gets or Sets Valid
+ ///
+ [DataMember(Name = "Valid", IsRequired = true, EmitDefaultValue = true)]
+ public bool Valid { get; set; }
+
+ ///
+ /// Gets or Sets Type
+ ///
+ [DataMember(Name = "Type", IsRequired = true, EmitDefaultValue = true)]
+ public int Type { get; set; }
+
+ ///
+ /// Gets or Sets Name
+ ///
+ [DataMember(Name = "Name", IsRequired = true, EmitDefaultValue = true)]
+ public string Name { get; set; }
+
+ ///
+ /// Gets or Sets PositionAccuracy
+ ///
+ [DataMember(Name = "PositionAccuracy", IsRequired = true, EmitDefaultValue = true)]
+ public bool PositionAccuracy { get; set; }
+
+ ///
+ /// Gets or Sets Longitude
+ ///
+ [DataMember(Name = "Longitude", IsRequired = true, EmitDefaultValue = true)]
+ public double Longitude { get; set; }
+
+ ///
+ /// Gets or Sets Latitude
+ ///
+ [DataMember(Name = "Latitude", IsRequired = true, EmitDefaultValue = true)]
+ public double Latitude { get; set; }
+
+ ///
+ /// Gets or Sets Dimension
+ ///
+ [DataMember(Name = "Dimension", IsRequired = true, EmitDefaultValue = true)]
+ public ShipStaticDataDimension Dimension { get; set; }
+
+ ///
+ /// Gets or Sets Fixtype
+ ///
+ [DataMember(Name = "Fixtype", IsRequired = true, EmitDefaultValue = true)]
+ public int Fixtype { get; set; }
+
+ ///
+ /// Gets or Sets Timestamp
+ ///
+ [DataMember(Name = "Timestamp", IsRequired = true, EmitDefaultValue = true)]
+ public int Timestamp { get; set; }
+
+ ///
+ /// Gets or Sets OffPosition
+ ///
+ [DataMember(Name = "OffPosition", IsRequired = true, EmitDefaultValue = true)]
+ public bool OffPosition { get; set; }
+
+ ///
+ /// Gets or Sets AtoN
+ ///
+ [DataMember(Name = "AtoN", IsRequired = true, EmitDefaultValue = true)]
+ public int AtoN { get; set; }
+
+ ///
+ /// Gets or Sets Raim
+ ///
+ [DataMember(Name = "Raim", IsRequired = true, EmitDefaultValue = true)]
+ public bool Raim { get; set; }
+
+ ///
+ /// Gets or Sets VirtualAtoN
+ ///
+ [DataMember(Name = "VirtualAtoN", IsRequired = true, EmitDefaultValue = true)]
+ public bool VirtualAtoN { get; set; }
+
+ ///
+ /// Gets or Sets AssignedMode
+ ///
+ [DataMember(Name = "AssignedMode", IsRequired = true, EmitDefaultValue = true)]
+ public bool AssignedMode { get; set; }
+
+ ///
+ /// Gets or Sets Spare
+ ///
+ [DataMember(Name = "Spare", IsRequired = true, EmitDefaultValue = true)]
+ public bool Spare { get; set; }
+
+ ///
+ /// Gets or Sets NameExtension
+ ///
+ [DataMember(Name = "NameExtension", IsRequired = true, EmitDefaultValue = true)]
+ public string NameExtension { get; set; }
+
+ ///
+ /// Returns the string presentation of the object
+ ///
+ /// String presentation of the object
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.Append("class AidsToNavigationReport {\n");
+ sb.Append(" MessageID: ").Append(MessageID).Append("\n");
+ sb.Append(" RepeatIndicator: ").Append(RepeatIndicator).Append("\n");
+ sb.Append(" UserID: ").Append(UserID).Append("\n");
+ sb.Append(" Valid: ").Append(Valid).Append("\n");
+ sb.Append(" Type: ").Append(Type).Append("\n");
+ sb.Append(" Name: ").Append(Name).Append("\n");
+ sb.Append(" PositionAccuracy: ").Append(PositionAccuracy).Append("\n");
+ sb.Append(" Longitude: ").Append(Longitude).Append("\n");
+ sb.Append(" Latitude: ").Append(Latitude).Append("\n");
+ sb.Append(" Dimension: ").Append(Dimension).Append("\n");
+ sb.Append(" Fixtype: ").Append(Fixtype).Append("\n");
+ sb.Append(" Timestamp: ").Append(Timestamp).Append("\n");
+ sb.Append(" OffPosition: ").Append(OffPosition).Append("\n");
+ sb.Append(" AtoN: ").Append(AtoN).Append("\n");
+ sb.Append(" Raim: ").Append(Raim).Append("\n");
+ sb.Append(" VirtualAtoN: ").Append(VirtualAtoN).Append("\n");
+ sb.Append(" AssignedMode: ").Append(AssignedMode).Append("\n");
+ sb.Append(" Spare: ").Append(Spare).Append("\n");
+ sb.Append(" NameExtension: ").Append(NameExtension).Append("\n");
+ sb.Append("}\n");
+ return sb.ToString();
+ }
+
+ ///
+ /// Returns the JSON string presentation of the object
+ ///
+ /// JSON string presentation of the object
+ public virtual string ToJson()
+ {
+ return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
+ }
+
+ ///
+ /// To validate all properties of the instance
+ ///
+ /// Validation context
+ /// Validation Result
+ IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ {
+ yield break;
+ }
+ }
+
+}
diff --git a/csharp/src/aisStream/Model/AisMessageTypes.cs b/csharp/src/aisStream/Model/AisMessageTypes.cs
new file mode 100644
index 0000000..37cb6b9
--- /dev/null
+++ b/csharp/src/aisStream/Model/AisMessageTypes.cs
@@ -0,0 +1,174 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using Newtonsoft.Json;
+using Newtonsoft.Json.Converters;
+using System.Runtime.Serialization;
+
+namespace aisStream.Model
+{
+ ///
+ /// Defines AisMessageTypes
+ ///
+ [JsonConverter(typeof(StringEnumConverter))]
+ public enum AisMessageTypes
+ {
+ ///
+ /// Enum PositionReport for value: PositionReport
+ ///
+ [EnumMember(Value = "PositionReport")]
+ PositionReport = 1,
+
+ ///
+ /// Enum UnknownMessage for value: UnknownMessage
+ ///
+ [EnumMember(Value = "UnknownMessage")]
+ UnknownMessage = 2,
+
+ ///
+ /// Enum AddressedSafetyMessage for value: AddressedSafetyMessage
+ ///
+ [EnumMember(Value = "AddressedSafetyMessage")]
+ AddressedSafetyMessage = 3,
+
+ ///
+ /// Enum AddressedBinaryMessage for value: AddressedBinaryMessage
+ ///
+ [EnumMember(Value = "AddressedBinaryMessage")]
+ AddressedBinaryMessage = 4,
+
+ ///
+ /// Enum AidsToNavigationReport for value: AidsToNavigationReport
+ ///
+ [EnumMember(Value = "AidsToNavigationReport")]
+ AidsToNavigationReport = 5,
+
+ ///
+ /// Enum AssignedModeCommand for value: AssignedModeCommand
+ ///
+ [EnumMember(Value = "AssignedModeCommand")]
+ AssignedModeCommand = 6,
+
+ ///
+ /// Enum BaseStationReport for value: BaseStationReport
+ ///
+ [EnumMember(Value = "BaseStationReport")]
+ BaseStationReport = 7,
+
+ ///
+ /// Enum BinaryAcknowledge for value: BinaryAcknowledge
+ ///
+ [EnumMember(Value = "BinaryAcknowledge")]
+ BinaryAcknowledge = 8,
+
+ ///
+ /// Enum BinaryBroadcastMessage for value: BinaryBroadcastMessage
+ ///
+ [EnumMember(Value = "BinaryBroadcastMessage")]
+ BinaryBroadcastMessage = 9,
+
+ ///
+ /// Enum ChannelManagement for value: ChannelManagement
+ ///
+ [EnumMember(Value = "ChannelManagement")]
+ ChannelManagement = 10,
+
+ ///
+ /// Enum CoordinatedUTCInquiry for value: CoordinatedUTCInquiry
+ ///
+ [EnumMember(Value = "CoordinatedUTCInquiry")]
+ CoordinatedUTCInquiry = 11,
+
+ ///
+ /// Enum DataLinkManagementMessage for value: DataLinkManagementMessage
+ ///
+ [EnumMember(Value = "DataLinkManagementMessage")]
+ DataLinkManagementMessage = 12,
+
+ ///
+ /// Enum DataLinkManagementMessageData for value: DataLinkManagementMessageData
+ ///
+ [EnumMember(Value = "DataLinkManagementMessageData")]
+ DataLinkManagementMessageData = 13,
+
+ ///
+ /// Enum ExtendedClassBPositionReport for value: ExtendedClassBPositionReport
+ ///
+ [EnumMember(Value = "ExtendedClassBPositionReport")]
+ ExtendedClassBPositionReport = 14,
+
+ ///
+ /// Enum GroupAssignmentCommand for value: GroupAssignmentCommand
+ ///
+ [EnumMember(Value = "GroupAssignmentCommand")]
+ GroupAssignmentCommand = 15,
+
+ ///
+ /// Enum GnssBroadcastBinaryMessage for value: GnssBroadcastBinaryMessage
+ ///
+ [EnumMember(Value = "GnssBroadcastBinaryMessage")]
+ GnssBroadcastBinaryMessage = 16,
+
+ ///
+ /// Enum Interrogation for value: Interrogation
+ ///
+ [EnumMember(Value = "Interrogation")]
+ Interrogation = 17,
+
+ ///
+ /// Enum LongRangeAisBroadcastMessage for value: LongRangeAisBroadcastMessage
+ ///
+ [EnumMember(Value = "LongRangeAisBroadcastMessage")]
+ LongRangeAisBroadcastMessage = 18,
+
+ ///
+ /// Enum MultiSlotBinaryMessage for value: MultiSlotBinaryMessage
+ ///
+ [EnumMember(Value = "MultiSlotBinaryMessage")]
+ MultiSlotBinaryMessage = 19,
+
+ ///
+ /// Enum SafetyBroadcastMessage for value: SafetyBroadcastMessage
+ ///
+ [EnumMember(Value = "SafetyBroadcastMessage")]
+ SafetyBroadcastMessage = 20,
+
+ ///
+ /// Enum ShipStaticData for value: ShipStaticData
+ ///
+ [EnumMember(Value = "ShipStaticData")]
+ ShipStaticData = 21,
+
+ ///
+ /// Enum SingleSlotBinaryMessage for value: SingleSlotBinaryMessage
+ ///
+ [EnumMember(Value = "SingleSlotBinaryMessage")]
+ SingleSlotBinaryMessage = 22,
+
+ ///
+ /// Enum StandardClassBPositionReport for value: StandardClassBPositionReport
+ ///
+ [EnumMember(Value = "StandardClassBPositionReport")]
+ StandardClassBPositionReport = 23,
+
+ ///
+ /// Enum StandardSearchAndRescueAircraftReport for value: StandardSearchAndRescueAircraftReport
+ ///
+ [EnumMember(Value = "StandardSearchAndRescueAircraftReport")]
+ StandardSearchAndRescueAircraftReport = 24,
+
+ ///
+ /// Enum StaticDataReport for value: StaticDataReport
+ ///
+ [EnumMember(Value = "StaticDataReport")]
+ StaticDataReport = 25
+ }
+
+}
diff --git a/csharp/src/aisStream/Model/AisStreamMessage.cs b/csharp/src/aisStream/Model/AisStreamMessage.cs
new file mode 100644
index 0000000..773722e
--- /dev/null
+++ b/csharp/src/aisStream/Model/AisStreamMessage.cs
@@ -0,0 +1,107 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Runtime.Serialization;
+using System.Text;
+
+namespace aisStream.Model
+{
+ ///
+ /// AisStreamMessage
+ ///
+ [DataContract(Name = "AisStreamMessage")]
+ public partial class AisStreamMessage : IValidatableObject
+ {
+
+ ///
+ /// Gets or Sets MessageType
+ ///
+ [DataMember(Name = "MessageType", IsRequired = true, EmitDefaultValue = true)]
+ public AisMessageTypes MessageType { get; set; }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ [JsonConstructorAttribute]
+ protected AisStreamMessage() { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// metaData (required).
+ /// messageType (required).
+ /// message (required).
+ public AisStreamMessage(Object metaData = default(Object), AisMessageTypes messageType = default(AisMessageTypes), AisStreamMessageMessage message = default(AisStreamMessageMessage))
+ {
+ // to ensure "metaData" is required (not null)
+ if (metaData == null)
+ {
+ throw new ArgumentNullException("metaData is a required property for AisStreamMessage and cannot be null");
+ }
+ this.MetaData = metaData;
+ this.MessageType = messageType;
+ // to ensure "message" is required (not null)
+ if (message == null)
+ {
+ throw new ArgumentNullException("message is a required property for AisStreamMessage and cannot be null");
+ }
+ this.Message = message;
+ }
+
+ ///
+ /// Gets or Sets MetaData
+ ///
+ [DataMember(Name = "MetaData", IsRequired = true, EmitDefaultValue = true)]
+ public Object MetaData { get; set; }
+
+ ///
+ /// Gets or Sets Message
+ ///
+ [DataMember(Name = "Message", IsRequired = true, EmitDefaultValue = true)]
+ public AisStreamMessageMessage Message { get; set; }
+
+ ///
+ /// Returns the string presentation of the object
+ ///
+ /// String presentation of the object
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.Append("class AisStreamMessage {\n");
+ sb.Append(" MetaData: ").Append(MetaData).Append("\n");
+ sb.Append(" MessageType: ").Append(MessageType).Append("\n");
+ sb.Append(" Message: ").Append(Message).Append("\n");
+ sb.Append("}\n");
+ return sb.ToString();
+ }
+
+ ///
+ /// Returns the JSON string presentation of the object
+ ///
+ /// JSON string presentation of the object
+ public virtual string ToJson()
+ {
+ return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
+ }
+
+ ///
+ /// To validate all properties of the instance
+ ///
+ /// Validation context
+ /// Validation Result
+ IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ {
+ yield break;
+ }
+ }
+
+}
diff --git a/csharp/src/aisStream/Model/AisStreamMessageMessage.cs b/csharp/src/aisStream/Model/AisStreamMessageMessage.cs
new file mode 100644
index 0000000..0cd5206
--- /dev/null
+++ b/csharp/src/aisStream/Model/AisStreamMessageMessage.cs
@@ -0,0 +1,288 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Runtime.Serialization;
+using System.Text;
+
+namespace aisStream.Model
+{
+ ///
+ /// AisStreamMessageMessage
+ ///
+ [DataContract(Name = "AisStreamMessage_Message")]
+ public partial class AisStreamMessageMessage : IValidatableObject
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// positionReport.
+ /// unknownMessage.
+ /// addressedSafetyMessage.
+ /// addressedBinaryMessage.
+ /// aidsToNavigationReport.
+ /// assignedModeCommand.
+ /// baseStationReport.
+ /// binaryAcknowledge.
+ /// binaryBroadcastMessage.
+ /// channelManagement.
+ /// coordinatedUTCInquiry.
+ /// dataLinkManagementMessage.
+ /// dataLinkManagementMessageData.
+ /// extendedClassBPositionReport.
+ /// gnssBroadcastBinaryMessage.
+ /// groupAssignmentCommand.
+ /// interrogation.
+ /// longRangeAisBroadcastMessage.
+ /// multiSlotBinaryMessage.
+ /// safetyBroadcastMessage.
+ /// shipStaticData.
+ /// singleSlotBinaryMessage.
+ /// standardClassBPositionReport.
+ /// standardSearchAndRescueAircraftReport.
+ /// staticDataReport.
+ public AisStreamMessageMessage(PositionReport positionReport = default(PositionReport), UnknownMessage unknownMessage = default(UnknownMessage), AddressedSafetyMessage addressedSafetyMessage = default(AddressedSafetyMessage), AddressedBinaryMessage addressedBinaryMessage = default(AddressedBinaryMessage), AidsToNavigationReport aidsToNavigationReport = default(AidsToNavigationReport), AssignedModeCommand assignedModeCommand = default(AssignedModeCommand), BaseStationReport baseStationReport = default(BaseStationReport), BinaryAcknowledge binaryAcknowledge = default(BinaryAcknowledge), BinaryBroadcastMessage binaryBroadcastMessage = default(BinaryBroadcastMessage), ChannelManagement channelManagement = default(ChannelManagement), CoordinatedUTCInquiry coordinatedUTCInquiry = default(CoordinatedUTCInquiry), DataLinkManagementMessage dataLinkManagementMessage = default(DataLinkManagementMessage), DataLinkManagementMessageData dataLinkManagementMessageData = default(DataLinkManagementMessageData), ExtendedClassBPositionReport extendedClassBPositionReport = default(ExtendedClassBPositionReport), GnssBroadcastBinaryMessage gnssBroadcastBinaryMessage = default(GnssBroadcastBinaryMessage), GroupAssignmentCommand groupAssignmentCommand = default(GroupAssignmentCommand), Interrogation interrogation = default(Interrogation), LongRangeAisBroadcastMessage longRangeAisBroadcastMessage = default(LongRangeAisBroadcastMessage), MultiSlotBinaryMessage multiSlotBinaryMessage = default(MultiSlotBinaryMessage), SafetyBroadcastMessage safetyBroadcastMessage = default(SafetyBroadcastMessage), ShipStaticData shipStaticData = default(ShipStaticData), SingleSlotBinaryMessage singleSlotBinaryMessage = default(SingleSlotBinaryMessage), StandardClassBPositionReport standardClassBPositionReport = default(StandardClassBPositionReport), StandardSearchAndRescueAircraftReport standardSearchAndRescueAircraftReport = default(StandardSearchAndRescueAircraftReport), StaticDataReport staticDataReport = default(StaticDataReport))
+ {
+ this.PositionReport = positionReport;
+ this.UnknownMessage = unknownMessage;
+ this.AddressedSafetyMessage = addressedSafetyMessage;
+ this.AddressedBinaryMessage = addressedBinaryMessage;
+ this.AidsToNavigationReport = aidsToNavigationReport;
+ this.AssignedModeCommand = assignedModeCommand;
+ this.BaseStationReport = baseStationReport;
+ this.BinaryAcknowledge = binaryAcknowledge;
+ this.BinaryBroadcastMessage = binaryBroadcastMessage;
+ this.ChannelManagement = channelManagement;
+ this.CoordinatedUTCInquiry = coordinatedUTCInquiry;
+ this.DataLinkManagementMessage = dataLinkManagementMessage;
+ this.DataLinkManagementMessageData = dataLinkManagementMessageData;
+ this.ExtendedClassBPositionReport = extendedClassBPositionReport;
+ this.GnssBroadcastBinaryMessage = gnssBroadcastBinaryMessage;
+ this.GroupAssignmentCommand = groupAssignmentCommand;
+ this.Interrogation = interrogation;
+ this.LongRangeAisBroadcastMessage = longRangeAisBroadcastMessage;
+ this.MultiSlotBinaryMessage = multiSlotBinaryMessage;
+ this.SafetyBroadcastMessage = safetyBroadcastMessage;
+ this.ShipStaticData = shipStaticData;
+ this.SingleSlotBinaryMessage = singleSlotBinaryMessage;
+ this.StandardClassBPositionReport = standardClassBPositionReport;
+ this.StandardSearchAndRescueAircraftReport = standardSearchAndRescueAircraftReport;
+ this.StaticDataReport = staticDataReport;
+ }
+
+ ///
+ /// Gets or Sets PositionReport
+ ///
+ [DataMember(Name = "PositionReport", EmitDefaultValue = false)]
+ public PositionReport PositionReport { get; set; }
+
+ ///
+ /// Gets or Sets UnknownMessage
+ ///
+ [DataMember(Name = "UnknownMessage", EmitDefaultValue = false)]
+ public UnknownMessage UnknownMessage { get; set; }
+
+ ///
+ /// Gets or Sets AddressedSafetyMessage
+ ///
+ [DataMember(Name = "AddressedSafetyMessage", EmitDefaultValue = false)]
+ public AddressedSafetyMessage AddressedSafetyMessage { get; set; }
+
+ ///
+ /// Gets or Sets AddressedBinaryMessage
+ ///
+ [DataMember(Name = "AddressedBinaryMessage", EmitDefaultValue = false)]
+ public AddressedBinaryMessage AddressedBinaryMessage { get; set; }
+
+ ///
+ /// Gets or Sets AidsToNavigationReport
+ ///
+ [DataMember(Name = "AidsToNavigationReport", EmitDefaultValue = false)]
+ public AidsToNavigationReport AidsToNavigationReport { get; set; }
+
+ ///
+ /// Gets or Sets AssignedModeCommand
+ ///
+ [DataMember(Name = "AssignedModeCommand", EmitDefaultValue = false)]
+ public AssignedModeCommand AssignedModeCommand { get; set; }
+
+ ///
+ /// Gets or Sets BaseStationReport
+ ///
+ [DataMember(Name = "BaseStationReport", EmitDefaultValue = false)]
+ public BaseStationReport BaseStationReport { get; set; }
+
+ ///
+ /// Gets or Sets BinaryAcknowledge
+ ///
+ [DataMember(Name = "BinaryAcknowledge", EmitDefaultValue = false)]
+ public BinaryAcknowledge BinaryAcknowledge { get; set; }
+
+ ///
+ /// Gets or Sets BinaryBroadcastMessage
+ ///
+ [DataMember(Name = "BinaryBroadcastMessage", EmitDefaultValue = false)]
+ public BinaryBroadcastMessage BinaryBroadcastMessage { get; set; }
+
+ ///
+ /// Gets or Sets ChannelManagement
+ ///
+ [DataMember(Name = "ChannelManagement", EmitDefaultValue = false)]
+ public ChannelManagement ChannelManagement { get; set; }
+
+ ///
+ /// Gets or Sets CoordinatedUTCInquiry
+ ///
+ [DataMember(Name = "CoordinatedUTCInquiry", EmitDefaultValue = false)]
+ public CoordinatedUTCInquiry CoordinatedUTCInquiry { get; set; }
+
+ ///
+ /// Gets or Sets DataLinkManagementMessage
+ ///
+ [DataMember(Name = "DataLinkManagementMessage", EmitDefaultValue = false)]
+ public DataLinkManagementMessage DataLinkManagementMessage { get; set; }
+
+ ///
+ /// Gets or Sets DataLinkManagementMessageData
+ ///
+ [DataMember(Name = "DataLinkManagementMessageData", EmitDefaultValue = false)]
+ public DataLinkManagementMessageData DataLinkManagementMessageData { get; set; }
+
+ ///
+ /// Gets or Sets ExtendedClassBPositionReport
+ ///
+ [DataMember(Name = "ExtendedClassBPositionReport", EmitDefaultValue = false)]
+ public ExtendedClassBPositionReport ExtendedClassBPositionReport { get; set; }
+
+ ///
+ /// Gets or Sets GnssBroadcastBinaryMessage
+ ///
+ [DataMember(Name = "GnssBroadcastBinaryMessage", EmitDefaultValue = false)]
+ public GnssBroadcastBinaryMessage GnssBroadcastBinaryMessage { get; set; }
+
+ ///
+ /// Gets or Sets GroupAssignmentCommand
+ ///
+ [DataMember(Name = "GroupAssignmentCommand", EmitDefaultValue = false)]
+ public GroupAssignmentCommand GroupAssignmentCommand { get; set; }
+
+ ///
+ /// Gets or Sets Interrogation
+ ///
+ [DataMember(Name = "Interrogation", EmitDefaultValue = false)]
+ public Interrogation Interrogation { get; set; }
+
+ ///
+ /// Gets or Sets LongRangeAisBroadcastMessage
+ ///
+ [DataMember(Name = "LongRangeAisBroadcastMessage", EmitDefaultValue = false)]
+ public LongRangeAisBroadcastMessage LongRangeAisBroadcastMessage { get; set; }
+
+ ///
+ /// Gets or Sets MultiSlotBinaryMessage
+ ///
+ [DataMember(Name = "MultiSlotBinaryMessage", EmitDefaultValue = false)]
+ public MultiSlotBinaryMessage MultiSlotBinaryMessage { get; set; }
+
+ ///
+ /// Gets or Sets SafetyBroadcastMessage
+ ///
+ [DataMember(Name = "SafetyBroadcastMessage", EmitDefaultValue = false)]
+ public SafetyBroadcastMessage SafetyBroadcastMessage { get; set; }
+
+ ///
+ /// Gets or Sets ShipStaticData
+ ///
+ [DataMember(Name = "ShipStaticData", EmitDefaultValue = false)]
+ public ShipStaticData ShipStaticData { get; set; }
+
+ ///
+ /// Gets or Sets SingleSlotBinaryMessage
+ ///
+ [DataMember(Name = "SingleSlotBinaryMessage", EmitDefaultValue = false)]
+ public SingleSlotBinaryMessage SingleSlotBinaryMessage { get; set; }
+
+ ///
+ /// Gets or Sets StandardClassBPositionReport
+ ///
+ [DataMember(Name = "StandardClassBPositionReport", EmitDefaultValue = false)]
+ public StandardClassBPositionReport StandardClassBPositionReport { get; set; }
+
+ ///
+ /// Gets or Sets StandardSearchAndRescueAircraftReport
+ ///
+ [DataMember(Name = "StandardSearchAndRescueAircraftReport", EmitDefaultValue = false)]
+ public StandardSearchAndRescueAircraftReport StandardSearchAndRescueAircraftReport { get; set; }
+
+ ///
+ /// Gets or Sets StaticDataReport
+ ///
+ [DataMember(Name = "StaticDataReport", EmitDefaultValue = false)]
+ public StaticDataReport StaticDataReport { get; set; }
+
+ ///
+ /// Returns the string presentation of the object
+ ///
+ /// String presentation of the object
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.Append("class AisStreamMessageMessage {\n");
+ sb.Append(" PositionReport: ").Append(PositionReport).Append("\n");
+ sb.Append(" UnknownMessage: ").Append(UnknownMessage).Append("\n");
+ sb.Append(" AddressedSafetyMessage: ").Append(AddressedSafetyMessage).Append("\n");
+ sb.Append(" AddressedBinaryMessage: ").Append(AddressedBinaryMessage).Append("\n");
+ sb.Append(" AidsToNavigationReport: ").Append(AidsToNavigationReport).Append("\n");
+ sb.Append(" AssignedModeCommand: ").Append(AssignedModeCommand).Append("\n");
+ sb.Append(" BaseStationReport: ").Append(BaseStationReport).Append("\n");
+ sb.Append(" BinaryAcknowledge: ").Append(BinaryAcknowledge).Append("\n");
+ sb.Append(" BinaryBroadcastMessage: ").Append(BinaryBroadcastMessage).Append("\n");
+ sb.Append(" ChannelManagement: ").Append(ChannelManagement).Append("\n");
+ sb.Append(" CoordinatedUTCInquiry: ").Append(CoordinatedUTCInquiry).Append("\n");
+ sb.Append(" DataLinkManagementMessage: ").Append(DataLinkManagementMessage).Append("\n");
+ sb.Append(" DataLinkManagementMessageData: ").Append(DataLinkManagementMessageData).Append("\n");
+ sb.Append(" ExtendedClassBPositionReport: ").Append(ExtendedClassBPositionReport).Append("\n");
+ sb.Append(" GnssBroadcastBinaryMessage: ").Append(GnssBroadcastBinaryMessage).Append("\n");
+ sb.Append(" GroupAssignmentCommand: ").Append(GroupAssignmentCommand).Append("\n");
+ sb.Append(" Interrogation: ").Append(Interrogation).Append("\n");
+ sb.Append(" LongRangeAisBroadcastMessage: ").Append(LongRangeAisBroadcastMessage).Append("\n");
+ sb.Append(" MultiSlotBinaryMessage: ").Append(MultiSlotBinaryMessage).Append("\n");
+ sb.Append(" SafetyBroadcastMessage: ").Append(SafetyBroadcastMessage).Append("\n");
+ sb.Append(" ShipStaticData: ").Append(ShipStaticData).Append("\n");
+ sb.Append(" SingleSlotBinaryMessage: ").Append(SingleSlotBinaryMessage).Append("\n");
+ sb.Append(" StandardClassBPositionReport: ").Append(StandardClassBPositionReport).Append("\n");
+ sb.Append(" StandardSearchAndRescueAircraftReport: ").Append(StandardSearchAndRescueAircraftReport).Append("\n");
+ sb.Append(" StaticDataReport: ").Append(StaticDataReport).Append("\n");
+ sb.Append("}\n");
+ return sb.ToString();
+ }
+
+ ///
+ /// Returns the JSON string presentation of the object
+ ///
+ /// JSON string presentation of the object
+ public virtual string ToJson()
+ {
+ return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
+ }
+
+ ///
+ /// To validate all properties of the instance
+ ///
+ /// Validation context
+ /// Validation Result
+ IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ {
+ yield break;
+ }
+ }
+
+}
diff --git a/csharp/src/aisStream/Model/AssignedModeCommand.cs b/csharp/src/aisStream/Model/AssignedModeCommand.cs
new file mode 100644
index 0000000..4c91e3a
--- /dev/null
+++ b/csharp/src/aisStream/Model/AssignedModeCommand.cs
@@ -0,0 +1,129 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Runtime.Serialization;
+using System.Text;
+
+namespace aisStream.Model
+{
+ ///
+ /// AssignedModeCommand
+ ///
+ [DataContract(Name = "AssignedModeCommand")]
+ public partial class AssignedModeCommand : IValidatableObject
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ [JsonConstructorAttribute]
+ protected AssignedModeCommand() { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// messageID (required).
+ /// repeatIndicator (required).
+ /// userID (required).
+ /// valid (required).
+ /// spare (required).
+ /// commands (required).
+ public AssignedModeCommand(int messageID = default(int), int repeatIndicator = default(int), int userID = default(int), bool valid = default(bool), int spare = default(int), AssignedModeCommandCommands commands = default(AssignedModeCommandCommands))
+ {
+ this.MessageID = messageID;
+ this.RepeatIndicator = repeatIndicator;
+ this.UserID = userID;
+ this.Valid = valid;
+ this.Spare = spare;
+ // to ensure "commands" is required (not null)
+ if (commands == null)
+ {
+ throw new ArgumentNullException("commands is a required property for AssignedModeCommand and cannot be null");
+ }
+ this.Commands = commands;
+ }
+
+ ///
+ /// Gets or Sets MessageID
+ ///
+ [DataMember(Name = "MessageID", IsRequired = true, EmitDefaultValue = true)]
+ public int MessageID { get; set; }
+
+ ///
+ /// Gets or Sets RepeatIndicator
+ ///
+ [DataMember(Name = "RepeatIndicator", IsRequired = true, EmitDefaultValue = true)]
+ public int RepeatIndicator { get; set; }
+
+ ///
+ /// Gets or Sets UserID
+ ///
+ [DataMember(Name = "UserID", IsRequired = true, EmitDefaultValue = true)]
+ public int UserID { get; set; }
+
+ ///
+ /// Gets or Sets Valid
+ ///
+ [DataMember(Name = "Valid", IsRequired = true, EmitDefaultValue = true)]
+ public bool Valid { get; set; }
+
+ ///
+ /// Gets or Sets Spare
+ ///
+ [DataMember(Name = "Spare", IsRequired = true, EmitDefaultValue = true)]
+ public int Spare { get; set; }
+
+ ///
+ /// Gets or Sets Commands
+ ///
+ [DataMember(Name = "Commands", IsRequired = true, EmitDefaultValue = true)]
+ public AssignedModeCommandCommands Commands { get; set; }
+
+ ///
+ /// Returns the string presentation of the object
+ ///
+ /// String presentation of the object
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.Append("class AssignedModeCommand {\n");
+ sb.Append(" MessageID: ").Append(MessageID).Append("\n");
+ sb.Append(" RepeatIndicator: ").Append(RepeatIndicator).Append("\n");
+ sb.Append(" UserID: ").Append(UserID).Append("\n");
+ sb.Append(" Valid: ").Append(Valid).Append("\n");
+ sb.Append(" Spare: ").Append(Spare).Append("\n");
+ sb.Append(" Commands: ").Append(Commands).Append("\n");
+ sb.Append("}\n");
+ return sb.ToString();
+ }
+
+ ///
+ /// Returns the JSON string presentation of the object
+ ///
+ /// JSON string presentation of the object
+ public virtual string ToJson()
+ {
+ return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
+ }
+
+ ///
+ /// To validate all properties of the instance
+ ///
+ /// Validation context
+ /// Validation Result
+ IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ {
+ yield break;
+ }
+ }
+
+}
diff --git a/csharp/src/aisStream/Model/AssignedModeCommandCommands.cs b/csharp/src/aisStream/Model/AssignedModeCommandCommands.cs
new file mode 100644
index 0000000..ea7c7c3
--- /dev/null
+++ b/csharp/src/aisStream/Model/AssignedModeCommandCommands.cs
@@ -0,0 +1,98 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Runtime.Serialization;
+using System.Text;
+
+namespace aisStream.Model
+{
+ ///
+ /// AssignedModeCommandCommands
+ ///
+ [DataContract(Name = "AssignedModeCommand_Commands")]
+ public partial class AssignedModeCommandCommands : IValidatableObject
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ [JsonConstructorAttribute]
+ protected AssignedModeCommandCommands() { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// var0 (required).
+ /// var1 (required).
+ public AssignedModeCommandCommands(AssignedModeCommandCommands0 var0 = default(AssignedModeCommandCommands0), AssignedModeCommandCommands0 var1 = default(AssignedModeCommandCommands0))
+ {
+ // to ensure "var0" is required (not null)
+ if (var0 == null)
+ {
+ throw new ArgumentNullException("var0 is a required property for AssignedModeCommandCommands and cannot be null");
+ }
+ this.Var0 = var0;
+ // to ensure "var1" is required (not null)
+ if (var1 == null)
+ {
+ throw new ArgumentNullException("var1 is a required property for AssignedModeCommandCommands and cannot be null");
+ }
+ this.Var1 = var1;
+ }
+
+ ///
+ /// Gets or Sets Var0
+ ///
+ [DataMember(Name = "0", IsRequired = true, EmitDefaultValue = true)]
+ public AssignedModeCommandCommands0 Var0 { get; set; }
+
+ ///
+ /// Gets or Sets Var1
+ ///
+ [DataMember(Name = "1", IsRequired = true, EmitDefaultValue = true)]
+ public AssignedModeCommandCommands0 Var1 { get; set; }
+
+ ///
+ /// Returns the string presentation of the object
+ ///
+ /// String presentation of the object
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.Append("class AssignedModeCommandCommands {\n");
+ sb.Append(" Var0: ").Append(Var0).Append("\n");
+ sb.Append(" Var1: ").Append(Var1).Append("\n");
+ sb.Append("}\n");
+ return sb.ToString();
+ }
+
+ ///
+ /// Returns the JSON string presentation of the object
+ ///
+ /// JSON string presentation of the object
+ public virtual string ToJson()
+ {
+ return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
+ }
+
+ ///
+ /// To validate all properties of the instance
+ ///
+ /// Validation context
+ /// Validation Result
+ IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ {
+ yield break;
+ }
+ }
+
+}
diff --git a/csharp/src/aisStream/Model/AssignedModeCommandCommands0.cs b/csharp/src/aisStream/Model/AssignedModeCommandCommands0.cs
new file mode 100644
index 0000000..2a65c2a
--- /dev/null
+++ b/csharp/src/aisStream/Model/AssignedModeCommandCommands0.cs
@@ -0,0 +1,105 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using Newtonsoft.Json;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Runtime.Serialization;
+using System.Text;
+
+namespace aisStream.Model
+{
+ ///
+ /// AssignedModeCommandCommands0
+ ///
+ [DataContract(Name = "AssignedModeCommand_Commands_0")]
+ public partial class AssignedModeCommandCommands0 : IValidatableObject
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ [JsonConstructorAttribute]
+ protected AssignedModeCommandCommands0() { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// valid (required).
+ /// destinationID (required).
+ /// offset (required).
+ /// increment (required).
+ public AssignedModeCommandCommands0(bool valid = default(bool), int destinationID = default(int), int offset = default(int), int increment = default(int))
+ {
+ this.Valid = valid;
+ this.DestinationID = destinationID;
+ this.Offset = offset;
+ this.Increment = increment;
+ }
+
+ ///
+ /// Gets or Sets Valid
+ ///
+ [DataMember(Name = "Valid", IsRequired = true, EmitDefaultValue = true)]
+ public bool Valid { get; set; }
+
+ ///
+ /// Gets or Sets DestinationID
+ ///
+ [DataMember(Name = "DestinationID", IsRequired = true, EmitDefaultValue = true)]
+ public int DestinationID { get; set; }
+
+ ///
+ /// Gets or Sets Offset
+ ///
+ [DataMember(Name = "Offset", IsRequired = true, EmitDefaultValue = true)]
+ public int Offset { get; set; }
+
+ ///
+ /// Gets or Sets Increment
+ ///
+ [DataMember(Name = "Increment", IsRequired = true, EmitDefaultValue = true)]
+ public int Increment { get; set; }
+
+ ///
+ /// Returns the string presentation of the object
+ ///
+ /// String presentation of the object
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.Append("class AssignedModeCommandCommands0 {\n");
+ sb.Append(" Valid: ").Append(Valid).Append("\n");
+ sb.Append(" DestinationID: ").Append(DestinationID).Append("\n");
+ sb.Append(" Offset: ").Append(Offset).Append("\n");
+ sb.Append(" Increment: ").Append(Increment).Append("\n");
+ sb.Append("}\n");
+ return sb.ToString();
+ }
+
+ ///
+ /// Returns the JSON string presentation of the object
+ ///
+ /// JSON string presentation of the object
+ public virtual string ToJson()
+ {
+ return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
+ }
+
+ ///
+ /// To validate all properties of the instance
+ ///
+ /// Validation context
+ /// Validation Result
+ IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ {
+ yield break;
+ }
+ }
+
+}
diff --git a/csharp/src/aisStream/Model/BaseStationReport.cs b/csharp/src/aisStream/Model/BaseStationReport.cs
new file mode 100644
index 0000000..98fc0bf
--- /dev/null
+++ b/csharp/src/aisStream/Model/BaseStationReport.cs
@@ -0,0 +1,231 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using Newtonsoft.Json;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Runtime.Serialization;
+using System.Text;
+
+namespace aisStream.Model
+{
+ ///
+ /// BaseStationReport
+ ///
+ [DataContract(Name = "BaseStationReport")]
+ public partial class BaseStationReport : IValidatableObject
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ [JsonConstructorAttribute]
+ protected BaseStationReport() { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// messageID (required).
+ /// repeatIndicator (required).
+ /// userID (required).
+ /// valid (required).
+ /// utcYear (required).
+ /// utcMonth (required).
+ /// utcDay (required).
+ /// utcHour (required).
+ /// utcMinute (required).
+ /// utcSecond (required).
+ /// positionAccuracy (required).
+ /// longitude (required).
+ /// latitude (required).
+ /// fixType (required).
+ /// longRangeEnable (required).
+ /// spare (required).
+ /// raim (required).
+ /// communicationState (required).
+ public BaseStationReport(int messageID = default(int), int repeatIndicator = default(int), int userID = default(int), bool valid = default(bool), int utcYear = default(int), int utcMonth = default(int), int utcDay = default(int), int utcHour = default(int), int utcMinute = default(int), int utcSecond = default(int), bool positionAccuracy = default(bool), double longitude = default(double), double latitude = default(double), int fixType = default(int), bool longRangeEnable = default(bool), int spare = default(int), bool raim = default(bool), int communicationState = default(int))
+ {
+ this.MessageID = messageID;
+ this.RepeatIndicator = repeatIndicator;
+ this.UserID = userID;
+ this.Valid = valid;
+ this.UtcYear = utcYear;
+ this.UtcMonth = utcMonth;
+ this.UtcDay = utcDay;
+ this.UtcHour = utcHour;
+ this.UtcMinute = utcMinute;
+ this.UtcSecond = utcSecond;
+ this.PositionAccuracy = positionAccuracy;
+ this.Longitude = longitude;
+ this.Latitude = latitude;
+ this.FixType = fixType;
+ this.LongRangeEnable = longRangeEnable;
+ this.Spare = spare;
+ this.Raim = raim;
+ this.CommunicationState = communicationState;
+ }
+
+ ///
+ /// Gets or Sets MessageID
+ ///
+ [DataMember(Name = "MessageID", IsRequired = true, EmitDefaultValue = true)]
+ public int MessageID { get; set; }
+
+ ///
+ /// Gets or Sets RepeatIndicator
+ ///
+ [DataMember(Name = "RepeatIndicator", IsRequired = true, EmitDefaultValue = true)]
+ public int RepeatIndicator { get; set; }
+
+ ///
+ /// Gets or Sets UserID
+ ///
+ [DataMember(Name = "UserID", IsRequired = true, EmitDefaultValue = true)]
+ public int UserID { get; set; }
+
+ ///
+ /// Gets or Sets Valid
+ ///
+ [DataMember(Name = "Valid", IsRequired = true, EmitDefaultValue = true)]
+ public bool Valid { get; set; }
+
+ ///
+ /// Gets or Sets UtcYear
+ ///
+ [DataMember(Name = "UtcYear", IsRequired = true, EmitDefaultValue = true)]
+ public int UtcYear { get; set; }
+
+ ///
+ /// Gets or Sets UtcMonth
+ ///
+ [DataMember(Name = "UtcMonth", IsRequired = true, EmitDefaultValue = true)]
+ public int UtcMonth { get; set; }
+
+ ///
+ /// Gets or Sets UtcDay
+ ///
+ [DataMember(Name = "UtcDay", IsRequired = true, EmitDefaultValue = true)]
+ public int UtcDay { get; set; }
+
+ ///
+ /// Gets or Sets UtcHour
+ ///
+ [DataMember(Name = "UtcHour", IsRequired = true, EmitDefaultValue = true)]
+ public int UtcHour { get; set; }
+
+ ///
+ /// Gets or Sets UtcMinute
+ ///
+ [DataMember(Name = "UtcMinute", IsRequired = true, EmitDefaultValue = true)]
+ public int UtcMinute { get; set; }
+
+ ///
+ /// Gets or Sets UtcSecond
+ ///
+ [DataMember(Name = "UtcSecond", IsRequired = true, EmitDefaultValue = true)]
+ public int UtcSecond { get; set; }
+
+ ///
+ /// Gets or Sets PositionAccuracy
+ ///
+ [DataMember(Name = "PositionAccuracy", IsRequired = true, EmitDefaultValue = true)]
+ public bool PositionAccuracy { get; set; }
+
+ ///
+ /// Gets or Sets Longitude
+ ///
+ [DataMember(Name = "Longitude", IsRequired = true, EmitDefaultValue = true)]
+ public double Longitude { get; set; }
+
+ ///
+ /// Gets or Sets Latitude
+ ///
+ [DataMember(Name = "Latitude", IsRequired = true, EmitDefaultValue = true)]
+ public double Latitude { get; set; }
+
+ ///
+ /// Gets or Sets FixType
+ ///
+ [DataMember(Name = "FixType", IsRequired = true, EmitDefaultValue = true)]
+ public int FixType { get; set; }
+
+ ///
+ /// Gets or Sets LongRangeEnable
+ ///
+ [DataMember(Name = "LongRangeEnable", IsRequired = true, EmitDefaultValue = true)]
+ public bool LongRangeEnable { get; set; }
+
+ ///
+ /// Gets or Sets Spare
+ ///
+ [DataMember(Name = "Spare", IsRequired = true, EmitDefaultValue = true)]
+ public int Spare { get; set; }
+
+ ///
+ /// Gets or Sets Raim
+ ///
+ [DataMember(Name = "Raim", IsRequired = true, EmitDefaultValue = true)]
+ public bool Raim { get; set; }
+
+ ///
+ /// Gets or Sets CommunicationState
+ ///
+ [DataMember(Name = "CommunicationState", IsRequired = true, EmitDefaultValue = true)]
+ public int CommunicationState { get; set; }
+
+ ///
+ /// Returns the string presentation of the object
+ ///
+ /// String presentation of the object
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.Append("class BaseStationReport {\n");
+ sb.Append(" MessageID: ").Append(MessageID).Append("\n");
+ sb.Append(" RepeatIndicator: ").Append(RepeatIndicator).Append("\n");
+ sb.Append(" UserID: ").Append(UserID).Append("\n");
+ sb.Append(" Valid: ").Append(Valid).Append("\n");
+ sb.Append(" UtcYear: ").Append(UtcYear).Append("\n");
+ sb.Append(" UtcMonth: ").Append(UtcMonth).Append("\n");
+ sb.Append(" UtcDay: ").Append(UtcDay).Append("\n");
+ sb.Append(" UtcHour: ").Append(UtcHour).Append("\n");
+ sb.Append(" UtcMinute: ").Append(UtcMinute).Append("\n");
+ sb.Append(" UtcSecond: ").Append(UtcSecond).Append("\n");
+ sb.Append(" PositionAccuracy: ").Append(PositionAccuracy).Append("\n");
+ sb.Append(" Longitude: ").Append(Longitude).Append("\n");
+ sb.Append(" Latitude: ").Append(Latitude).Append("\n");
+ sb.Append(" FixType: ").Append(FixType).Append("\n");
+ sb.Append(" LongRangeEnable: ").Append(LongRangeEnable).Append("\n");
+ sb.Append(" Spare: ").Append(Spare).Append("\n");
+ sb.Append(" Raim: ").Append(Raim).Append("\n");
+ sb.Append(" CommunicationState: ").Append(CommunicationState).Append("\n");
+ sb.Append("}\n");
+ return sb.ToString();
+ }
+
+ ///
+ /// Returns the JSON string presentation of the object
+ ///
+ /// JSON string presentation of the object
+ public virtual string ToJson()
+ {
+ return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
+ }
+
+ ///
+ /// To validate all properties of the instance
+ ///
+ /// Validation context
+ /// Validation Result
+ IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ {
+ yield break;
+ }
+ }
+
+}
diff --git a/csharp/src/aisStream/Model/BinaryAcknowledge.cs b/csharp/src/aisStream/Model/BinaryAcknowledge.cs
new file mode 100644
index 0000000..d3b4cdd
--- /dev/null
+++ b/csharp/src/aisStream/Model/BinaryAcknowledge.cs
@@ -0,0 +1,129 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Runtime.Serialization;
+using System.Text;
+
+namespace aisStream.Model
+{
+ ///
+ /// BinaryAcknowledge
+ ///
+ [DataContract(Name = "BinaryAcknowledge")]
+ public partial class BinaryAcknowledge : IValidatableObject
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ [JsonConstructorAttribute]
+ protected BinaryAcknowledge() { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// messageID (required).
+ /// repeatIndicator (required).
+ /// userID (required).
+ /// valid (required).
+ /// spare (required).
+ /// destinations (required).
+ public BinaryAcknowledge(int messageID = default(int), int repeatIndicator = default(int), int userID = default(int), bool valid = default(bool), int spare = default(int), BinaryAcknowledgeDestinations destinations = default(BinaryAcknowledgeDestinations))
+ {
+ this.MessageID = messageID;
+ this.RepeatIndicator = repeatIndicator;
+ this.UserID = userID;
+ this.Valid = valid;
+ this.Spare = spare;
+ // to ensure "destinations" is required (not null)
+ if (destinations == null)
+ {
+ throw new ArgumentNullException("destinations is a required property for BinaryAcknowledge and cannot be null");
+ }
+ this.Destinations = destinations;
+ }
+
+ ///
+ /// Gets or Sets MessageID
+ ///
+ [DataMember(Name = "MessageID", IsRequired = true, EmitDefaultValue = true)]
+ public int MessageID { get; set; }
+
+ ///
+ /// Gets or Sets RepeatIndicator
+ ///
+ [DataMember(Name = "RepeatIndicator", IsRequired = true, EmitDefaultValue = true)]
+ public int RepeatIndicator { get; set; }
+
+ ///
+ /// Gets or Sets UserID
+ ///
+ [DataMember(Name = "UserID", IsRequired = true, EmitDefaultValue = true)]
+ public int UserID { get; set; }
+
+ ///
+ /// Gets or Sets Valid
+ ///
+ [DataMember(Name = "Valid", IsRequired = true, EmitDefaultValue = true)]
+ public bool Valid { get; set; }
+
+ ///
+ /// Gets or Sets Spare
+ ///
+ [DataMember(Name = "Spare", IsRequired = true, EmitDefaultValue = true)]
+ public int Spare { get; set; }
+
+ ///
+ /// Gets or Sets Destinations
+ ///
+ [DataMember(Name = "Destinations", IsRequired = true, EmitDefaultValue = true)]
+ public BinaryAcknowledgeDestinations Destinations { get; set; }
+
+ ///
+ /// Returns the string presentation of the object
+ ///
+ /// String presentation of the object
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.Append("class BinaryAcknowledge {\n");
+ sb.Append(" MessageID: ").Append(MessageID).Append("\n");
+ sb.Append(" RepeatIndicator: ").Append(RepeatIndicator).Append("\n");
+ sb.Append(" UserID: ").Append(UserID).Append("\n");
+ sb.Append(" Valid: ").Append(Valid).Append("\n");
+ sb.Append(" Spare: ").Append(Spare).Append("\n");
+ sb.Append(" Destinations: ").Append(Destinations).Append("\n");
+ sb.Append("}\n");
+ return sb.ToString();
+ }
+
+ ///
+ /// Returns the JSON string presentation of the object
+ ///
+ /// JSON string presentation of the object
+ public virtual string ToJson()
+ {
+ return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
+ }
+
+ ///
+ /// To validate all properties of the instance
+ ///
+ /// Validation context
+ /// Validation Result
+ IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ {
+ yield break;
+ }
+ }
+
+}
diff --git a/csharp/src/aisStream/Model/BinaryAcknowledgeDestinations.cs b/csharp/src/aisStream/Model/BinaryAcknowledgeDestinations.cs
new file mode 100644
index 0000000..c094748
--- /dev/null
+++ b/csharp/src/aisStream/Model/BinaryAcknowledgeDestinations.cs
@@ -0,0 +1,126 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Runtime.Serialization;
+using System.Text;
+
+namespace aisStream.Model
+{
+ ///
+ /// BinaryAcknowledgeDestinations
+ ///
+ [DataContract(Name = "BinaryAcknowledge_Destinations")]
+ public partial class BinaryAcknowledgeDestinations : IValidatableObject
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ [JsonConstructorAttribute]
+ protected BinaryAcknowledgeDestinations() { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// var0 (required).
+ /// var1 (required).
+ /// var2 (required).
+ /// var3 (required).
+ public BinaryAcknowledgeDestinations(BinaryAcknowledgeDestinations0 var0 = default(BinaryAcknowledgeDestinations0), BinaryAcknowledgeDestinations0 var1 = default(BinaryAcknowledgeDestinations0), BinaryAcknowledgeDestinations0 var2 = default(BinaryAcknowledgeDestinations0), BinaryAcknowledgeDestinations0 var3 = default(BinaryAcknowledgeDestinations0))
+ {
+ // to ensure "var0" is required (not null)
+ if (var0 == null)
+ {
+ throw new ArgumentNullException("var0 is a required property for BinaryAcknowledgeDestinations and cannot be null");
+ }
+ this.Var0 = var0;
+ // to ensure "var1" is required (not null)
+ if (var1 == null)
+ {
+ throw new ArgumentNullException("var1 is a required property for BinaryAcknowledgeDestinations and cannot be null");
+ }
+ this.Var1 = var1;
+ // to ensure "var2" is required (not null)
+ if (var2 == null)
+ {
+ throw new ArgumentNullException("var2 is a required property for BinaryAcknowledgeDestinations and cannot be null");
+ }
+ this.Var2 = var2;
+ // to ensure "var3" is required (not null)
+ if (var3 == null)
+ {
+ throw new ArgumentNullException("var3 is a required property for BinaryAcknowledgeDestinations and cannot be null");
+ }
+ this.Var3 = var3;
+ }
+
+ ///
+ /// Gets or Sets Var0
+ ///
+ [DataMember(Name = "0", IsRequired = true, EmitDefaultValue = true)]
+ public BinaryAcknowledgeDestinations0 Var0 { get; set; }
+
+ ///
+ /// Gets or Sets Var1
+ ///
+ [DataMember(Name = "1", IsRequired = true, EmitDefaultValue = true)]
+ public BinaryAcknowledgeDestinations0 Var1 { get; set; }
+
+ ///
+ /// Gets or Sets Var2
+ ///
+ [DataMember(Name = "2", IsRequired = true, EmitDefaultValue = true)]
+ public BinaryAcknowledgeDestinations0 Var2 { get; set; }
+
+ ///
+ /// Gets or Sets Var3
+ ///
+ [DataMember(Name = "3", IsRequired = true, EmitDefaultValue = true)]
+ public BinaryAcknowledgeDestinations0 Var3 { get; set; }
+
+ ///
+ /// Returns the string presentation of the object
+ ///
+ /// String presentation of the object
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.Append("class BinaryAcknowledgeDestinations {\n");
+ sb.Append(" Var0: ").Append(Var0).Append("\n");
+ sb.Append(" Var1: ").Append(Var1).Append("\n");
+ sb.Append(" Var2: ").Append(Var2).Append("\n");
+ sb.Append(" Var3: ").Append(Var3).Append("\n");
+ sb.Append("}\n");
+ return sb.ToString();
+ }
+
+ ///
+ /// Returns the JSON string presentation of the object
+ ///
+ /// JSON string presentation of the object
+ public virtual string ToJson()
+ {
+ return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
+ }
+
+ ///
+ /// To validate all properties of the instance
+ ///
+ /// Validation context
+ /// Validation Result
+ IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ {
+ yield break;
+ }
+ }
+
+}
diff --git a/csharp/src/aisStream/Model/BinaryAcknowledgeDestinations0.cs b/csharp/src/aisStream/Model/BinaryAcknowledgeDestinations0.cs
new file mode 100644
index 0000000..470ae96
--- /dev/null
+++ b/csharp/src/aisStream/Model/BinaryAcknowledgeDestinations0.cs
@@ -0,0 +1,96 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using Newtonsoft.Json;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Runtime.Serialization;
+using System.Text;
+
+namespace aisStream.Model
+{
+ ///
+ /// BinaryAcknowledgeDestinations0
+ ///
+ [DataContract(Name = "BinaryAcknowledge_Destinations_0")]
+ public partial class BinaryAcknowledgeDestinations0 : IValidatableObject
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ [JsonConstructorAttribute]
+ protected BinaryAcknowledgeDestinations0() { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// valid (required).
+ /// destinationID (required).
+ /// sequenceinteger (required).
+ public BinaryAcknowledgeDestinations0(bool valid = default(bool), int destinationID = default(int), int sequenceinteger = default(int))
+ {
+ this.Valid = valid;
+ this.DestinationID = destinationID;
+ this.Sequenceinteger = sequenceinteger;
+ }
+
+ ///
+ /// Gets or Sets Valid
+ ///
+ [DataMember(Name = "Valid", IsRequired = true, EmitDefaultValue = true)]
+ public bool Valid { get; set; }
+
+ ///
+ /// Gets or Sets DestinationID
+ ///
+ [DataMember(Name = "DestinationID", IsRequired = true, EmitDefaultValue = true)]
+ public int DestinationID { get; set; }
+
+ ///
+ /// Gets or Sets Sequenceinteger
+ ///
+ [DataMember(Name = "Sequenceinteger", IsRequired = true, EmitDefaultValue = true)]
+ public int Sequenceinteger { get; set; }
+
+ ///
+ /// Returns the string presentation of the object
+ ///
+ /// String presentation of the object
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.Append("class BinaryAcknowledgeDestinations0 {\n");
+ sb.Append(" Valid: ").Append(Valid).Append("\n");
+ sb.Append(" DestinationID: ").Append(DestinationID).Append("\n");
+ sb.Append(" Sequenceinteger: ").Append(Sequenceinteger).Append("\n");
+ sb.Append("}\n");
+ return sb.ToString();
+ }
+
+ ///
+ /// Returns the JSON string presentation of the object
+ ///
+ /// JSON string presentation of the object
+ public virtual string ToJson()
+ {
+ return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
+ }
+
+ ///
+ /// To validate all properties of the instance
+ ///
+ /// Validation context
+ /// Validation Result
+ IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ {
+ yield break;
+ }
+ }
+
+}
diff --git a/csharp/src/aisStream/Model/BinaryBroadcastMessage.cs b/csharp/src/aisStream/Model/BinaryBroadcastMessage.cs
new file mode 100644
index 0000000..e8a31f7
--- /dev/null
+++ b/csharp/src/aisStream/Model/BinaryBroadcastMessage.cs
@@ -0,0 +1,143 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Runtime.Serialization;
+using System.Text;
+
+namespace aisStream.Model
+{
+ ///
+ /// BinaryBroadcastMessage
+ ///
+ [DataContract(Name = "BinaryBroadcastMessage")]
+ public partial class BinaryBroadcastMessage : IValidatableObject
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ [JsonConstructorAttribute]
+ protected BinaryBroadcastMessage() { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// messageID (required).
+ /// repeatIndicator (required).
+ /// userID (required).
+ /// valid (required).
+ /// spare (required).
+ /// applicationID (required).
+ /// binaryData (required).
+ public BinaryBroadcastMessage(int messageID = default(int), int repeatIndicator = default(int), int userID = default(int), bool valid = default(bool), int spare = default(int), AddressedBinaryMessageApplicationID applicationID = default(AddressedBinaryMessageApplicationID), string binaryData = default(string))
+ {
+ this.MessageID = messageID;
+ this.RepeatIndicator = repeatIndicator;
+ this.UserID = userID;
+ this.Valid = valid;
+ this.Spare = spare;
+ // to ensure "applicationID" is required (not null)
+ if (applicationID == null)
+ {
+ throw new ArgumentNullException("applicationID is a required property for BinaryBroadcastMessage and cannot be null");
+ }
+ this.ApplicationID = applicationID;
+ // to ensure "binaryData" is required (not null)
+ if (binaryData == null)
+ {
+ throw new ArgumentNullException("binaryData is a required property for BinaryBroadcastMessage and cannot be null");
+ }
+ this.BinaryData = binaryData;
+ }
+
+ ///
+ /// Gets or Sets MessageID
+ ///
+ [DataMember(Name = "MessageID", IsRequired = true, EmitDefaultValue = true)]
+ public int MessageID { get; set; }
+
+ ///
+ /// Gets or Sets RepeatIndicator
+ ///
+ [DataMember(Name = "RepeatIndicator", IsRequired = true, EmitDefaultValue = true)]
+ public int RepeatIndicator { get; set; }
+
+ ///
+ /// Gets or Sets UserID
+ ///
+ [DataMember(Name = "UserID", IsRequired = true, EmitDefaultValue = true)]
+ public int UserID { get; set; }
+
+ ///
+ /// Gets or Sets Valid
+ ///
+ [DataMember(Name = "Valid", IsRequired = true, EmitDefaultValue = true)]
+ public bool Valid { get; set; }
+
+ ///
+ /// Gets or Sets Spare
+ ///
+ [DataMember(Name = "Spare", IsRequired = true, EmitDefaultValue = true)]
+ public int Spare { get; set; }
+
+ ///
+ /// Gets or Sets ApplicationID
+ ///
+ [DataMember(Name = "ApplicationID", IsRequired = true, EmitDefaultValue = true)]
+ public AddressedBinaryMessageApplicationID ApplicationID { get; set; }
+
+ ///
+ /// Gets or Sets BinaryData
+ ///
+ [DataMember(Name = "BinaryData", IsRequired = true, EmitDefaultValue = true)]
+ public string BinaryData { get; set; }
+
+ ///
+ /// Returns the string presentation of the object
+ ///
+ /// String presentation of the object
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.Append("class BinaryBroadcastMessage {\n");
+ sb.Append(" MessageID: ").Append(MessageID).Append("\n");
+ sb.Append(" RepeatIndicator: ").Append(RepeatIndicator).Append("\n");
+ sb.Append(" UserID: ").Append(UserID).Append("\n");
+ sb.Append(" Valid: ").Append(Valid).Append("\n");
+ sb.Append(" Spare: ").Append(Spare).Append("\n");
+ sb.Append(" ApplicationID: ").Append(ApplicationID).Append("\n");
+ sb.Append(" BinaryData: ").Append(BinaryData).Append("\n");
+ sb.Append("}\n");
+ return sb.ToString();
+ }
+
+ ///
+ /// Returns the JSON string presentation of the object
+ ///
+ /// JSON string presentation of the object
+ public virtual string ToJson()
+ {
+ return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
+ }
+
+ ///
+ /// To validate all properties of the instance
+ ///
+ /// Validation context
+ /// Validation Result
+ IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ {
+ yield break;
+ }
+ }
+
+}
diff --git a/csharp/src/aisStream/Model/ChannelManagement.cs b/csharp/src/aisStream/Model/ChannelManagement.cs
new file mode 100644
index 0000000..013f3b9
--- /dev/null
+++ b/csharp/src/aisStream/Model/ChannelManagement.cs
@@ -0,0 +1,224 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Runtime.Serialization;
+using System.Text;
+
+namespace aisStream.Model
+{
+ ///
+ /// ChannelManagement
+ ///
+ [DataContract(Name = "ChannelManagement")]
+ public partial class ChannelManagement : IValidatableObject
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ [JsonConstructorAttribute]
+ protected ChannelManagement() { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// messageID (required).
+ /// repeatIndicator (required).
+ /// userID (required).
+ /// valid (required).
+ /// spare1 (required).
+ /// channelA (required).
+ /// channelB (required).
+ /// txRxMode (required).
+ /// lowPower (required).
+ /// area (required).
+ /// unicast (required).
+ /// isAddressed (required).
+ /// bwA (required).
+ /// bwB (required).
+ /// transitionalZoneSize (required).
+ /// spare4 (required).
+ public ChannelManagement(int messageID = default(int), int repeatIndicator = default(int), int userID = default(int), bool valid = default(bool), int spare1 = default(int), int channelA = default(int), int channelB = default(int), int txRxMode = default(int), bool lowPower = default(bool), ChannelManagementArea area = default(ChannelManagementArea), ChannelManagementUnicast unicast = default(ChannelManagementUnicast), bool isAddressed = default(bool), bool bwA = default(bool), bool bwB = default(bool), int transitionalZoneSize = default(int), int spare4 = default(int))
+ {
+ this.MessageID = messageID;
+ this.RepeatIndicator = repeatIndicator;
+ this.UserID = userID;
+ this.Valid = valid;
+ this.Spare1 = spare1;
+ this.ChannelA = channelA;
+ this.ChannelB = channelB;
+ this.TxRxMode = txRxMode;
+ this.LowPower = lowPower;
+ // to ensure "area" is required (not null)
+ if (area == null)
+ {
+ throw new ArgumentNullException("area is a required property for ChannelManagement and cannot be null");
+ }
+ this.Area = area;
+ // to ensure "unicast" is required (not null)
+ if (unicast == null)
+ {
+ throw new ArgumentNullException("unicast is a required property for ChannelManagement and cannot be null");
+ }
+ this.Unicast = unicast;
+ this.IsAddressed = isAddressed;
+ this.BwA = bwA;
+ this.BwB = bwB;
+ this.TransitionalZoneSize = transitionalZoneSize;
+ this.Spare4 = spare4;
+ }
+
+ ///
+ /// Gets or Sets MessageID
+ ///
+ [DataMember(Name = "MessageID", IsRequired = true, EmitDefaultValue = true)]
+ public int MessageID { get; set; }
+
+ ///
+ /// Gets or Sets RepeatIndicator
+ ///
+ [DataMember(Name = "RepeatIndicator", IsRequired = true, EmitDefaultValue = true)]
+ public int RepeatIndicator { get; set; }
+
+ ///
+ /// Gets or Sets UserID
+ ///
+ [DataMember(Name = "UserID", IsRequired = true, EmitDefaultValue = true)]
+ public int UserID { get; set; }
+
+ ///
+ /// Gets or Sets Valid
+ ///
+ [DataMember(Name = "Valid", IsRequired = true, EmitDefaultValue = true)]
+ public bool Valid { get; set; }
+
+ ///
+ /// Gets or Sets Spare1
+ ///
+ [DataMember(Name = "Spare1", IsRequired = true, EmitDefaultValue = true)]
+ public int Spare1 { get; set; }
+
+ ///
+ /// Gets or Sets ChannelA
+ ///
+ [DataMember(Name = "ChannelA", IsRequired = true, EmitDefaultValue = true)]
+ public int ChannelA { get; set; }
+
+ ///
+ /// Gets or Sets ChannelB
+ ///
+ [DataMember(Name = "ChannelB", IsRequired = true, EmitDefaultValue = true)]
+ public int ChannelB { get; set; }
+
+ ///
+ /// Gets or Sets TxRxMode
+ ///
+ [DataMember(Name = "TxRxMode", IsRequired = true, EmitDefaultValue = true)]
+ public int TxRxMode { get; set; }
+
+ ///
+ /// Gets or Sets LowPower
+ ///
+ [DataMember(Name = "LowPower", IsRequired = true, EmitDefaultValue = true)]
+ public bool LowPower { get; set; }
+
+ ///
+ /// Gets or Sets Area
+ ///
+ [DataMember(Name = "Area", IsRequired = true, EmitDefaultValue = true)]
+ public ChannelManagementArea Area { get; set; }
+
+ ///
+ /// Gets or Sets Unicast
+ ///
+ [DataMember(Name = "Unicast", IsRequired = true, EmitDefaultValue = true)]
+ public ChannelManagementUnicast Unicast { get; set; }
+
+ ///
+ /// Gets or Sets IsAddressed
+ ///
+ [DataMember(Name = "IsAddressed", IsRequired = true, EmitDefaultValue = true)]
+ public bool IsAddressed { get; set; }
+
+ ///
+ /// Gets or Sets BwA
+ ///
+ [DataMember(Name = "BwA", IsRequired = true, EmitDefaultValue = true)]
+ public bool BwA { get; set; }
+
+ ///
+ /// Gets or Sets BwB
+ ///
+ [DataMember(Name = "BwB", IsRequired = true, EmitDefaultValue = true)]
+ public bool BwB { get; set; }
+
+ ///
+ /// Gets or Sets TransitionalZoneSize
+ ///
+ [DataMember(Name = "TransitionalZoneSize", IsRequired = true, EmitDefaultValue = true)]
+ public int TransitionalZoneSize { get; set; }
+
+ ///
+ /// Gets or Sets Spare4
+ ///
+ [DataMember(Name = "Spare4", IsRequired = true, EmitDefaultValue = true)]
+ public int Spare4 { get; set; }
+
+ ///
+ /// Returns the string presentation of the object
+ ///
+ /// String presentation of the object
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.Append("class ChannelManagement {\n");
+ sb.Append(" MessageID: ").Append(MessageID).Append("\n");
+ sb.Append(" RepeatIndicator: ").Append(RepeatIndicator).Append("\n");
+ sb.Append(" UserID: ").Append(UserID).Append("\n");
+ sb.Append(" Valid: ").Append(Valid).Append("\n");
+ sb.Append(" Spare1: ").Append(Spare1).Append("\n");
+ sb.Append(" ChannelA: ").Append(ChannelA).Append("\n");
+ sb.Append(" ChannelB: ").Append(ChannelB).Append("\n");
+ sb.Append(" TxRxMode: ").Append(TxRxMode).Append("\n");
+ sb.Append(" LowPower: ").Append(LowPower).Append("\n");
+ sb.Append(" Area: ").Append(Area).Append("\n");
+ sb.Append(" Unicast: ").Append(Unicast).Append("\n");
+ sb.Append(" IsAddressed: ").Append(IsAddressed).Append("\n");
+ sb.Append(" BwA: ").Append(BwA).Append("\n");
+ sb.Append(" BwB: ").Append(BwB).Append("\n");
+ sb.Append(" TransitionalZoneSize: ").Append(TransitionalZoneSize).Append("\n");
+ sb.Append(" Spare4: ").Append(Spare4).Append("\n");
+ sb.Append("}\n");
+ return sb.ToString();
+ }
+
+ ///
+ /// Returns the JSON string presentation of the object
+ ///
+ /// JSON string presentation of the object
+ public virtual string ToJson()
+ {
+ return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
+ }
+
+ ///
+ /// To validate all properties of the instance
+ ///
+ /// Validation context
+ /// Validation Result
+ IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ {
+ yield break;
+ }
+ }
+
+}
diff --git a/csharp/src/aisStream/Model/ChannelManagementArea.cs b/csharp/src/aisStream/Model/ChannelManagementArea.cs
new file mode 100644
index 0000000..2402a4b
--- /dev/null
+++ b/csharp/src/aisStream/Model/ChannelManagementArea.cs
@@ -0,0 +1,105 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using Newtonsoft.Json;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Runtime.Serialization;
+using System.Text;
+
+namespace aisStream.Model
+{
+ ///
+ /// ChannelManagementArea
+ ///
+ [DataContract(Name = "ChannelManagement_Area")]
+ public partial class ChannelManagementArea : IValidatableObject
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ [JsonConstructorAttribute]
+ protected ChannelManagementArea() { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// longitude1 (required).
+ /// latitude1 (required).
+ /// longitude2 (required).
+ /// latitude2 (required).
+ public ChannelManagementArea(double longitude1 = default(double), double latitude1 = default(double), double longitude2 = default(double), double latitude2 = default(double))
+ {
+ this.Longitude1 = longitude1;
+ this.Latitude1 = latitude1;
+ this.Longitude2 = longitude2;
+ this.Latitude2 = latitude2;
+ }
+
+ ///
+ /// Gets or Sets Longitude1
+ ///
+ [DataMember(Name = "Longitude1", IsRequired = true, EmitDefaultValue = true)]
+ public double Longitude1 { get; set; }
+
+ ///
+ /// Gets or Sets Latitude1
+ ///
+ [DataMember(Name = "Latitude1", IsRequired = true, EmitDefaultValue = true)]
+ public double Latitude1 { get; set; }
+
+ ///
+ /// Gets or Sets Longitude2
+ ///
+ [DataMember(Name = "Longitude2", IsRequired = true, EmitDefaultValue = true)]
+ public double Longitude2 { get; set; }
+
+ ///
+ /// Gets or Sets Latitude2
+ ///
+ [DataMember(Name = "Latitude2", IsRequired = true, EmitDefaultValue = true)]
+ public double Latitude2 { get; set; }
+
+ ///
+ /// Returns the string presentation of the object
+ ///
+ /// String presentation of the object
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.Append("class ChannelManagementArea {\n");
+ sb.Append(" Longitude1: ").Append(Longitude1).Append("\n");
+ sb.Append(" Latitude1: ").Append(Latitude1).Append("\n");
+ sb.Append(" Longitude2: ").Append(Longitude2).Append("\n");
+ sb.Append(" Latitude2: ").Append(Latitude2).Append("\n");
+ sb.Append("}\n");
+ return sb.ToString();
+ }
+
+ ///
+ /// Returns the JSON string presentation of the object
+ ///
+ /// JSON string presentation of the object
+ public virtual string ToJson()
+ {
+ return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
+ }
+
+ ///
+ /// To validate all properties of the instance
+ ///
+ /// Validation context
+ /// Validation Result
+ IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ {
+ yield break;
+ }
+ }
+
+}
diff --git a/csharp/src/aisStream/Model/ChannelManagementUnicast.cs b/csharp/src/aisStream/Model/ChannelManagementUnicast.cs
new file mode 100644
index 0000000..a4af2a7
--- /dev/null
+++ b/csharp/src/aisStream/Model/ChannelManagementUnicast.cs
@@ -0,0 +1,105 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using Newtonsoft.Json;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Runtime.Serialization;
+using System.Text;
+
+namespace aisStream.Model
+{
+ ///
+ /// ChannelManagementUnicast
+ ///
+ [DataContract(Name = "ChannelManagement_Unicast")]
+ public partial class ChannelManagementUnicast : IValidatableObject
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ [JsonConstructorAttribute]
+ protected ChannelManagementUnicast() { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// addressStation1 (required).
+ /// spare2 (required).
+ /// addressStation2 (required).
+ /// spare3 (required).
+ public ChannelManagementUnicast(int addressStation1 = default(int), int spare2 = default(int), int addressStation2 = default(int), int spare3 = default(int))
+ {
+ this.AddressStation1 = addressStation1;
+ this.Spare2 = spare2;
+ this.AddressStation2 = addressStation2;
+ this.Spare3 = spare3;
+ }
+
+ ///
+ /// Gets or Sets AddressStation1
+ ///
+ [DataMember(Name = "AddressStation1", IsRequired = true, EmitDefaultValue = true)]
+ public int AddressStation1 { get; set; }
+
+ ///
+ /// Gets or Sets Spare2
+ ///
+ [DataMember(Name = "Spare2", IsRequired = true, EmitDefaultValue = true)]
+ public int Spare2 { get; set; }
+
+ ///
+ /// Gets or Sets AddressStation2
+ ///
+ [DataMember(Name = "AddressStation2", IsRequired = true, EmitDefaultValue = true)]
+ public int AddressStation2 { get; set; }
+
+ ///
+ /// Gets or Sets Spare3
+ ///
+ [DataMember(Name = "Spare3", IsRequired = true, EmitDefaultValue = true)]
+ public int Spare3 { get; set; }
+
+ ///
+ /// Returns the string presentation of the object
+ ///
+ /// String presentation of the object
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.Append("class ChannelManagementUnicast {\n");
+ sb.Append(" AddressStation1: ").Append(AddressStation1).Append("\n");
+ sb.Append(" Spare2: ").Append(Spare2).Append("\n");
+ sb.Append(" AddressStation2: ").Append(AddressStation2).Append("\n");
+ sb.Append(" Spare3: ").Append(Spare3).Append("\n");
+ sb.Append("}\n");
+ return sb.ToString();
+ }
+
+ ///
+ /// Returns the JSON string presentation of the object
+ ///
+ /// JSON string presentation of the object
+ public virtual string ToJson()
+ {
+ return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
+ }
+
+ ///
+ /// To validate all properties of the instance
+ ///
+ /// Validation context
+ /// Validation Result
+ IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ {
+ yield break;
+ }
+ }
+
+}
diff --git a/csharp/src/aisStream/Model/CoordinatedUTCInquiry.cs b/csharp/src/aisStream/Model/CoordinatedUTCInquiry.cs
new file mode 100644
index 0000000..d1d7e4c
--- /dev/null
+++ b/csharp/src/aisStream/Model/CoordinatedUTCInquiry.cs
@@ -0,0 +1,132 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using Newtonsoft.Json;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Runtime.Serialization;
+using System.Text;
+
+namespace aisStream.Model
+{
+ ///
+ /// CoordinatedUTCInquiry
+ ///
+ [DataContract(Name = "CoordinatedUTCInquiry")]
+ public partial class CoordinatedUTCInquiry : IValidatableObject
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ [JsonConstructorAttribute]
+ protected CoordinatedUTCInquiry() { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// messageID (required).
+ /// repeatIndicator (required).
+ /// userID (required).
+ /// valid (required).
+ /// spare1 (required).
+ /// destinationID (required).
+ /// spare2 (required).
+ public CoordinatedUTCInquiry(int messageID = default(int), int repeatIndicator = default(int), int userID = default(int), bool valid = default(bool), int spare1 = default(int), int destinationID = default(int), int spare2 = default(int))
+ {
+ this.MessageID = messageID;
+ this.RepeatIndicator = repeatIndicator;
+ this.UserID = userID;
+ this.Valid = valid;
+ this.Spare1 = spare1;
+ this.DestinationID = destinationID;
+ this.Spare2 = spare2;
+ }
+
+ ///
+ /// Gets or Sets MessageID
+ ///
+ [DataMember(Name = "MessageID", IsRequired = true, EmitDefaultValue = true)]
+ public int MessageID { get; set; }
+
+ ///
+ /// Gets or Sets RepeatIndicator
+ ///
+ [DataMember(Name = "RepeatIndicator", IsRequired = true, EmitDefaultValue = true)]
+ public int RepeatIndicator { get; set; }
+
+ ///
+ /// Gets or Sets UserID
+ ///
+ [DataMember(Name = "UserID", IsRequired = true, EmitDefaultValue = true)]
+ public int UserID { get; set; }
+
+ ///
+ /// Gets or Sets Valid
+ ///
+ [DataMember(Name = "Valid", IsRequired = true, EmitDefaultValue = true)]
+ public bool Valid { get; set; }
+
+ ///
+ /// Gets or Sets Spare1
+ ///
+ [DataMember(Name = "Spare1", IsRequired = true, EmitDefaultValue = true)]
+ public int Spare1 { get; set; }
+
+ ///
+ /// Gets or Sets DestinationID
+ ///
+ [DataMember(Name = "DestinationID", IsRequired = true, EmitDefaultValue = true)]
+ public int DestinationID { get; set; }
+
+ ///
+ /// Gets or Sets Spare2
+ ///
+ [DataMember(Name = "Spare2", IsRequired = true, EmitDefaultValue = true)]
+ public int Spare2 { get; set; }
+
+ ///
+ /// Returns the string presentation of the object
+ ///
+ /// String presentation of the object
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.Append("class CoordinatedUTCInquiry {\n");
+ sb.Append(" MessageID: ").Append(MessageID).Append("\n");
+ sb.Append(" RepeatIndicator: ").Append(RepeatIndicator).Append("\n");
+ sb.Append(" UserID: ").Append(UserID).Append("\n");
+ sb.Append(" Valid: ").Append(Valid).Append("\n");
+ sb.Append(" Spare1: ").Append(Spare1).Append("\n");
+ sb.Append(" DestinationID: ").Append(DestinationID).Append("\n");
+ sb.Append(" Spare2: ").Append(Spare2).Append("\n");
+ sb.Append("}\n");
+ return sb.ToString();
+ }
+
+ ///
+ /// Returns the JSON string presentation of the object
+ ///
+ /// JSON string presentation of the object
+ public virtual string ToJson()
+ {
+ return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
+ }
+
+ ///
+ /// To validate all properties of the instance
+ ///
+ /// Validation context
+ /// Validation Result
+ IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ {
+ yield break;
+ }
+ }
+
+}
diff --git a/csharp/src/aisStream/Model/DataLinkManagementMessage.cs b/csharp/src/aisStream/Model/DataLinkManagementMessage.cs
new file mode 100644
index 0000000..48ec7d0
--- /dev/null
+++ b/csharp/src/aisStream/Model/DataLinkManagementMessage.cs
@@ -0,0 +1,129 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Runtime.Serialization;
+using System.Text;
+
+namespace aisStream.Model
+{
+ ///
+ /// DataLinkManagementMessage
+ ///
+ [DataContract(Name = "DataLinkManagementMessage")]
+ public partial class DataLinkManagementMessage : IValidatableObject
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ [JsonConstructorAttribute]
+ protected DataLinkManagementMessage() { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// messageID (required).
+ /// repeatIndicator (required).
+ /// userID (required).
+ /// valid (required).
+ /// spare (required).
+ /// data (required).
+ public DataLinkManagementMessage(int messageID = default(int), int repeatIndicator = default(int), int userID = default(int), bool valid = default(bool), int spare = default(int), DataLinkManagementMessageData data = default(DataLinkManagementMessageData))
+ {
+ this.MessageID = messageID;
+ this.RepeatIndicator = repeatIndicator;
+ this.UserID = userID;
+ this.Valid = valid;
+ this.Spare = spare;
+ // to ensure "data" is required (not null)
+ if (data == null)
+ {
+ throw new ArgumentNullException("data is a required property for DataLinkManagementMessage and cannot be null");
+ }
+ this.Data = data;
+ }
+
+ ///
+ /// Gets or Sets MessageID
+ ///
+ [DataMember(Name = "MessageID", IsRequired = true, EmitDefaultValue = true)]
+ public int MessageID { get; set; }
+
+ ///
+ /// Gets or Sets RepeatIndicator
+ ///
+ [DataMember(Name = "RepeatIndicator", IsRequired = true, EmitDefaultValue = true)]
+ public int RepeatIndicator { get; set; }
+
+ ///
+ /// Gets or Sets UserID
+ ///
+ [DataMember(Name = "UserID", IsRequired = true, EmitDefaultValue = true)]
+ public int UserID { get; set; }
+
+ ///
+ /// Gets or Sets Valid
+ ///
+ [DataMember(Name = "Valid", IsRequired = true, EmitDefaultValue = true)]
+ public bool Valid { get; set; }
+
+ ///
+ /// Gets or Sets Spare
+ ///
+ [DataMember(Name = "Spare", IsRequired = true, EmitDefaultValue = true)]
+ public int Spare { get; set; }
+
+ ///
+ /// Gets or Sets Data
+ ///
+ [DataMember(Name = "Data", IsRequired = true, EmitDefaultValue = true)]
+ public DataLinkManagementMessageData Data { get; set; }
+
+ ///
+ /// Returns the string presentation of the object
+ ///
+ /// String presentation of the object
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.Append("class DataLinkManagementMessage {\n");
+ sb.Append(" MessageID: ").Append(MessageID).Append("\n");
+ sb.Append(" RepeatIndicator: ").Append(RepeatIndicator).Append("\n");
+ sb.Append(" UserID: ").Append(UserID).Append("\n");
+ sb.Append(" Valid: ").Append(Valid).Append("\n");
+ sb.Append(" Spare: ").Append(Spare).Append("\n");
+ sb.Append(" Data: ").Append(Data).Append("\n");
+ sb.Append("}\n");
+ return sb.ToString();
+ }
+
+ ///
+ /// Returns the JSON string presentation of the object
+ ///
+ /// JSON string presentation of the object
+ public virtual string ToJson()
+ {
+ return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
+ }
+
+ ///
+ /// To validate all properties of the instance
+ ///
+ /// Validation context
+ /// Validation Result
+ IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ {
+ yield break;
+ }
+ }
+
+}
diff --git a/csharp/src/aisStream/Model/DataLinkManagementMessageData.cs b/csharp/src/aisStream/Model/DataLinkManagementMessageData.cs
new file mode 100644
index 0000000..b5a1d0d
--- /dev/null
+++ b/csharp/src/aisStream/Model/DataLinkManagementMessageData.cs
@@ -0,0 +1,126 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Runtime.Serialization;
+using System.Text;
+
+namespace aisStream.Model
+{
+ ///
+ /// DataLinkManagementMessageData
+ ///
+ [DataContract(Name = "DataLinkManagementMessage_Data")]
+ public partial class DataLinkManagementMessageData : IValidatableObject
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ [JsonConstructorAttribute]
+ protected DataLinkManagementMessageData() { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// var0 (required).
+ /// var1 (required).
+ /// var2 (required).
+ /// var3 (required).
+ public DataLinkManagementMessageData(DataLinkManagementMessageData0 var0 = default(DataLinkManagementMessageData0), DataLinkManagementMessageData0 var1 = default(DataLinkManagementMessageData0), DataLinkManagementMessageData0 var2 = default(DataLinkManagementMessageData0), DataLinkManagementMessageData0 var3 = default(DataLinkManagementMessageData0))
+ {
+ // to ensure "var0" is required (not null)
+ if (var0 == null)
+ {
+ throw new ArgumentNullException("var0 is a required property for DataLinkManagementMessageData and cannot be null");
+ }
+ this.Var0 = var0;
+ // to ensure "var1" is required (not null)
+ if (var1 == null)
+ {
+ throw new ArgumentNullException("var1 is a required property for DataLinkManagementMessageData and cannot be null");
+ }
+ this.Var1 = var1;
+ // to ensure "var2" is required (not null)
+ if (var2 == null)
+ {
+ throw new ArgumentNullException("var2 is a required property for DataLinkManagementMessageData and cannot be null");
+ }
+ this.Var2 = var2;
+ // to ensure "var3" is required (not null)
+ if (var3 == null)
+ {
+ throw new ArgumentNullException("var3 is a required property for DataLinkManagementMessageData and cannot be null");
+ }
+ this.Var3 = var3;
+ }
+
+ ///
+ /// Gets or Sets Var0
+ ///
+ [DataMember(Name = "0", IsRequired = true, EmitDefaultValue = true)]
+ public DataLinkManagementMessageData0 Var0 { get; set; }
+
+ ///
+ /// Gets or Sets Var1
+ ///
+ [DataMember(Name = "1", IsRequired = true, EmitDefaultValue = true)]
+ public DataLinkManagementMessageData0 Var1 { get; set; }
+
+ ///
+ /// Gets or Sets Var2
+ ///
+ [DataMember(Name = "2", IsRequired = true, EmitDefaultValue = true)]
+ public DataLinkManagementMessageData0 Var2 { get; set; }
+
+ ///
+ /// Gets or Sets Var3
+ ///
+ [DataMember(Name = "3", IsRequired = true, EmitDefaultValue = true)]
+ public DataLinkManagementMessageData0 Var3 { get; set; }
+
+ ///
+ /// Returns the string presentation of the object
+ ///
+ /// String presentation of the object
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.Append("class DataLinkManagementMessageData {\n");
+ sb.Append(" Var0: ").Append(Var0).Append("\n");
+ sb.Append(" Var1: ").Append(Var1).Append("\n");
+ sb.Append(" Var2: ").Append(Var2).Append("\n");
+ sb.Append(" Var3: ").Append(Var3).Append("\n");
+ sb.Append("}\n");
+ return sb.ToString();
+ }
+
+ ///
+ /// Returns the JSON string presentation of the object
+ ///
+ /// JSON string presentation of the object
+ public virtual string ToJson()
+ {
+ return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
+ }
+
+ ///
+ /// To validate all properties of the instance
+ ///
+ /// Validation context
+ /// Validation Result
+ IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ {
+ yield break;
+ }
+ }
+
+}
diff --git a/csharp/src/aisStream/Model/DataLinkManagementMessageData0.cs b/csharp/src/aisStream/Model/DataLinkManagementMessageData0.cs
new file mode 100644
index 0000000..0d977af
--- /dev/null
+++ b/csharp/src/aisStream/Model/DataLinkManagementMessageData0.cs
@@ -0,0 +1,114 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using Newtonsoft.Json;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Runtime.Serialization;
+using System.Text;
+
+namespace aisStream.Model
+{
+ ///
+ /// DataLinkManagementMessageData0
+ ///
+ [DataContract(Name = "DataLinkManagementMessage_Data_0")]
+ public partial class DataLinkManagementMessageData0 : IValidatableObject
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ [JsonConstructorAttribute]
+ protected DataLinkManagementMessageData0() { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// valid (required).
+ /// offset (required).
+ /// integerOfSlots (required).
+ /// timeOut (required).
+ /// increment (required).
+ public DataLinkManagementMessageData0(bool valid = default(bool), int offset = default(int), int integerOfSlots = default(int), int timeOut = default(int), int increment = default(int))
+ {
+ this.Valid = valid;
+ this.Offset = offset;
+ this.IntegerOfSlots = integerOfSlots;
+ this.TimeOut = timeOut;
+ this.Increment = increment;
+ }
+
+ ///
+ /// Gets or Sets Valid
+ ///
+ [DataMember(Name = "Valid", IsRequired = true, EmitDefaultValue = true)]
+ public bool Valid { get; set; }
+
+ ///
+ /// Gets or Sets Offset
+ ///
+ [DataMember(Name = "Offset", IsRequired = true, EmitDefaultValue = true)]
+ public int Offset { get; set; }
+
+ ///
+ /// Gets or Sets IntegerOfSlots
+ ///
+ [DataMember(Name = "integerOfSlots", IsRequired = true, EmitDefaultValue = true)]
+ public int IntegerOfSlots { get; set; }
+
+ ///
+ /// Gets or Sets TimeOut
+ ///
+ [DataMember(Name = "TimeOut", IsRequired = true, EmitDefaultValue = true)]
+ public int TimeOut { get; set; }
+
+ ///
+ /// Gets or Sets Increment
+ ///
+ [DataMember(Name = "Increment", IsRequired = true, EmitDefaultValue = true)]
+ public int Increment { get; set; }
+
+ ///
+ /// Returns the string presentation of the object
+ ///
+ /// String presentation of the object
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.Append("class DataLinkManagementMessageData0 {\n");
+ sb.Append(" Valid: ").Append(Valid).Append("\n");
+ sb.Append(" Offset: ").Append(Offset).Append("\n");
+ sb.Append(" IntegerOfSlots: ").Append(IntegerOfSlots).Append("\n");
+ sb.Append(" TimeOut: ").Append(TimeOut).Append("\n");
+ sb.Append(" Increment: ").Append(Increment).Append("\n");
+ sb.Append("}\n");
+ return sb.ToString();
+ }
+
+ ///
+ /// Returns the JSON string presentation of the object
+ ///
+ /// JSON string presentation of the object
+ public virtual string ToJson()
+ {
+ return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
+ }
+
+ ///
+ /// To validate all properties of the instance
+ ///
+ /// Validation context
+ /// Validation Result
+ IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ {
+ yield break;
+ }
+ }
+
+}
diff --git a/csharp/src/aisStream/Model/Error.cs b/csharp/src/aisStream/Model/Error.cs
new file mode 100644
index 0000000..60d7c35
--- /dev/null
+++ b/csharp/src/aisStream/Model/Error.cs
@@ -0,0 +1,84 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Runtime.Serialization;
+using System.Text;
+
+namespace aisStream.Model
+{
+ ///
+ /// Error
+ ///
+ [DataContract(Name = "Error")]
+ public partial class Error : IValidatableObject
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ [JsonConstructorAttribute]
+ protected Error() { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// varError (required).
+ public Error(string varError = default(string))
+ {
+ // to ensure "varError" is required (not null)
+ if (varError == null)
+ {
+ throw new ArgumentNullException("varError is a required property for Error and cannot be null");
+ }
+ this.VarError = varError;
+ }
+
+ ///
+ /// Gets or Sets VarError
+ ///
+ [DataMember(Name = "error", IsRequired = true, EmitDefaultValue = true)]
+ public string VarError { get; set; }
+
+ ///
+ /// Returns the string presentation of the object
+ ///
+ /// String presentation of the object
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.Append("class Error {\n");
+ sb.Append(" VarError: ").Append(VarError).Append("\n");
+ sb.Append("}\n");
+ return sb.ToString();
+ }
+
+ ///
+ /// Returns the JSON string presentation of the object
+ ///
+ /// JSON string presentation of the object
+ public virtual string ToJson()
+ {
+ return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
+ }
+
+ ///
+ /// To validate all properties of the instance
+ ///
+ /// Validation context
+ /// Validation Result
+ IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ {
+ yield break;
+ }
+ }
+
+}
diff --git a/csharp/src/aisStream/Model/ExtendedClassBPositionReport.cs b/csharp/src/aisStream/Model/ExtendedClassBPositionReport.cs
new file mode 100644
index 0000000..c36f4bd
--- /dev/null
+++ b/csharp/src/aisStream/Model/ExtendedClassBPositionReport.cs
@@ -0,0 +1,269 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Runtime.Serialization;
+using System.Text;
+
+namespace aisStream.Model
+{
+ ///
+ /// ExtendedClassBPositionReport
+ ///
+ [DataContract(Name = "ExtendedClassBPositionReport")]
+ public partial class ExtendedClassBPositionReport : IValidatableObject
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ [JsonConstructorAttribute]
+ protected ExtendedClassBPositionReport() { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// messageID (required).
+ /// repeatIndicator (required).
+ /// userID (required).
+ /// valid (required).
+ /// spare1 (required).
+ /// sog (required).
+ /// positionAccuracy (required).
+ /// longitude (required).
+ /// latitude (required).
+ /// cog (required).
+ /// trueHeading (required).
+ /// timestamp (required).
+ /// spare2 (required).
+ /// name (required).
+ /// type (required).
+ /// dimension (required).
+ /// fixType (required).
+ /// raim (required).
+ /// dte (required).
+ /// assignedMode (required).
+ /// spare3 (required).
+ public ExtendedClassBPositionReport(int messageID = default(int), int repeatIndicator = default(int), int userID = default(int), bool valid = default(bool), int spare1 = default(int), double sog = default(double), bool positionAccuracy = default(bool), double longitude = default(double), double latitude = default(double), double cog = default(double), int trueHeading = default(int), int timestamp = default(int), int spare2 = default(int), string name = default(string), int type = default(int), ShipStaticDataDimension dimension = default(ShipStaticDataDimension), int fixType = default(int), bool raim = default(bool), bool dte = default(bool), bool assignedMode = default(bool), int spare3 = default(int))
+ {
+ this.MessageID = messageID;
+ this.RepeatIndicator = repeatIndicator;
+ this.UserID = userID;
+ this.Valid = valid;
+ this.Spare1 = spare1;
+ this.Sog = sog;
+ this.PositionAccuracy = positionAccuracy;
+ this.Longitude = longitude;
+ this.Latitude = latitude;
+ this.Cog = cog;
+ this.TrueHeading = trueHeading;
+ this.Timestamp = timestamp;
+ this.Spare2 = spare2;
+ // to ensure "name" is required (not null)
+ if (name == null)
+ {
+ throw new ArgumentNullException("name is a required property for ExtendedClassBPositionReport and cannot be null");
+ }
+ this.Name = name;
+ this.Type = type;
+ // to ensure "dimension" is required (not null)
+ if (dimension == null)
+ {
+ throw new ArgumentNullException("dimension is a required property for ExtendedClassBPositionReport and cannot be null");
+ }
+ this.Dimension = dimension;
+ this.FixType = fixType;
+ this.Raim = raim;
+ this.Dte = dte;
+ this.AssignedMode = assignedMode;
+ this.Spare3 = spare3;
+ }
+
+ ///
+ /// Gets or Sets MessageID
+ ///
+ [DataMember(Name = "MessageID", IsRequired = true, EmitDefaultValue = true)]
+ public int MessageID { get; set; }
+
+ ///
+ /// Gets or Sets RepeatIndicator
+ ///
+ [DataMember(Name = "RepeatIndicator", IsRequired = true, EmitDefaultValue = true)]
+ public int RepeatIndicator { get; set; }
+
+ ///
+ /// Gets or Sets UserID
+ ///
+ [DataMember(Name = "UserID", IsRequired = true, EmitDefaultValue = true)]
+ public int UserID { get; set; }
+
+ ///
+ /// Gets or Sets Valid
+ ///
+ [DataMember(Name = "Valid", IsRequired = true, EmitDefaultValue = true)]
+ public bool Valid { get; set; }
+
+ ///
+ /// Gets or Sets Spare1
+ ///
+ [DataMember(Name = "Spare1", IsRequired = true, EmitDefaultValue = true)]
+ public int Spare1 { get; set; }
+
+ ///
+ /// Gets or Sets Sog
+ ///
+ [DataMember(Name = "Sog", IsRequired = true, EmitDefaultValue = true)]
+ public double Sog { get; set; }
+
+ ///
+ /// Gets or Sets PositionAccuracy
+ ///
+ [DataMember(Name = "PositionAccuracy", IsRequired = true, EmitDefaultValue = true)]
+ public bool PositionAccuracy { get; set; }
+
+ ///
+ /// Gets or Sets Longitude
+ ///
+ [DataMember(Name = "Longitude", IsRequired = true, EmitDefaultValue = true)]
+ public double Longitude { get; set; }
+
+ ///
+ /// Gets or Sets Latitude
+ ///
+ [DataMember(Name = "Latitude", IsRequired = true, EmitDefaultValue = true)]
+ public double Latitude { get; set; }
+
+ ///
+ /// Gets or Sets Cog
+ ///
+ [DataMember(Name = "Cog", IsRequired = true, EmitDefaultValue = true)]
+ public double Cog { get; set; }
+
+ ///
+ /// Gets or Sets TrueHeading
+ ///
+ [DataMember(Name = "TrueHeading", IsRequired = true, EmitDefaultValue = true)]
+ public int TrueHeading { get; set; }
+
+ ///
+ /// Gets or Sets Timestamp
+ ///
+ [DataMember(Name = "Timestamp", IsRequired = true, EmitDefaultValue = true)]
+ public int Timestamp { get; set; }
+
+ ///
+ /// Gets or Sets Spare2
+ ///
+ [DataMember(Name = "Spare2", IsRequired = true, EmitDefaultValue = true)]
+ public int Spare2 { get; set; }
+
+ ///
+ /// Gets or Sets Name
+ ///
+ [DataMember(Name = "Name", IsRequired = true, EmitDefaultValue = true)]
+ public string Name { get; set; }
+
+ ///
+ /// Gets or Sets Type
+ ///
+ [DataMember(Name = "Type", IsRequired = true, EmitDefaultValue = true)]
+ public int Type { get; set; }
+
+ ///
+ /// Gets or Sets Dimension
+ ///
+ [DataMember(Name = "Dimension", IsRequired = true, EmitDefaultValue = true)]
+ public ShipStaticDataDimension Dimension { get; set; }
+
+ ///
+ /// Gets or Sets FixType
+ ///
+ [DataMember(Name = "FixType", IsRequired = true, EmitDefaultValue = true)]
+ public int FixType { get; set; }
+
+ ///
+ /// Gets or Sets Raim
+ ///
+ [DataMember(Name = "Raim", IsRequired = true, EmitDefaultValue = true)]
+ public bool Raim { get; set; }
+
+ ///
+ /// Gets or Sets Dte
+ ///
+ [DataMember(Name = "Dte", IsRequired = true, EmitDefaultValue = true)]
+ public bool Dte { get; set; }
+
+ ///
+ /// Gets or Sets AssignedMode
+ ///
+ [DataMember(Name = "AssignedMode", IsRequired = true, EmitDefaultValue = true)]
+ public bool AssignedMode { get; set; }
+
+ ///
+ /// Gets or Sets Spare3
+ ///
+ [DataMember(Name = "Spare3", IsRequired = true, EmitDefaultValue = true)]
+ public int Spare3 { get; set; }
+
+ ///
+ /// Returns the string presentation of the object
+ ///
+ /// String presentation of the object
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.Append("class ExtendedClassBPositionReport {\n");
+ sb.Append(" MessageID: ").Append(MessageID).Append("\n");
+ sb.Append(" RepeatIndicator: ").Append(RepeatIndicator).Append("\n");
+ sb.Append(" UserID: ").Append(UserID).Append("\n");
+ sb.Append(" Valid: ").Append(Valid).Append("\n");
+ sb.Append(" Spare1: ").Append(Spare1).Append("\n");
+ sb.Append(" Sog: ").Append(Sog).Append("\n");
+ sb.Append(" PositionAccuracy: ").Append(PositionAccuracy).Append("\n");
+ sb.Append(" Longitude: ").Append(Longitude).Append("\n");
+ sb.Append(" Latitude: ").Append(Latitude).Append("\n");
+ sb.Append(" Cog: ").Append(Cog).Append("\n");
+ sb.Append(" TrueHeading: ").Append(TrueHeading).Append("\n");
+ sb.Append(" Timestamp: ").Append(Timestamp).Append("\n");
+ sb.Append(" Spare2: ").Append(Spare2).Append("\n");
+ sb.Append(" Name: ").Append(Name).Append("\n");
+ sb.Append(" Type: ").Append(Type).Append("\n");
+ sb.Append(" Dimension: ").Append(Dimension).Append("\n");
+ sb.Append(" FixType: ").Append(FixType).Append("\n");
+ sb.Append(" Raim: ").Append(Raim).Append("\n");
+ sb.Append(" Dte: ").Append(Dte).Append("\n");
+ sb.Append(" AssignedMode: ").Append(AssignedMode).Append("\n");
+ sb.Append(" Spare3: ").Append(Spare3).Append("\n");
+ sb.Append("}\n");
+ return sb.ToString();
+ }
+
+ ///
+ /// Returns the JSON string presentation of the object
+ ///
+ /// JSON string presentation of the object
+ public virtual string ToJson()
+ {
+ return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
+ }
+
+ ///
+ /// To validate all properties of the instance
+ ///
+ /// Validation context
+ /// Validation Result
+ IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ {
+ yield break;
+ }
+ }
+
+}
diff --git a/csharp/src/aisStream/Model/GnssBroadcastBinaryMessage.cs b/csharp/src/aisStream/Model/GnssBroadcastBinaryMessage.cs
new file mode 100644
index 0000000..b8117de
--- /dev/null
+++ b/csharp/src/aisStream/Model/GnssBroadcastBinaryMessage.cs
@@ -0,0 +1,156 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Runtime.Serialization;
+using System.Text;
+
+namespace aisStream.Model
+{
+ ///
+ /// GnssBroadcastBinaryMessage
+ ///
+ [DataContract(Name = "GnssBroadcastBinaryMessage")]
+ public partial class GnssBroadcastBinaryMessage : IValidatableObject
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ [JsonConstructorAttribute]
+ protected GnssBroadcastBinaryMessage() { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// messageID (required).
+ /// repeatIndicator (required).
+ /// userID (required).
+ /// valid (required).
+ /// spare1 (required).
+ /// longitude (required).
+ /// latitude (required).
+ /// spare2 (required).
+ /// data (required).
+ public GnssBroadcastBinaryMessage(int messageID = default(int), int repeatIndicator = default(int), int userID = default(int), bool valid = default(bool), int spare1 = default(int), double longitude = default(double), double latitude = default(double), int spare2 = default(int), string data = default(string))
+ {
+ this.MessageID = messageID;
+ this.RepeatIndicator = repeatIndicator;
+ this.UserID = userID;
+ this.Valid = valid;
+ this.Spare1 = spare1;
+ this.Longitude = longitude;
+ this.Latitude = latitude;
+ this.Spare2 = spare2;
+ // to ensure "data" is required (not null)
+ if (data == null)
+ {
+ throw new ArgumentNullException("data is a required property for GnssBroadcastBinaryMessage and cannot be null");
+ }
+ this.Data = data;
+ }
+
+ ///
+ /// Gets or Sets MessageID
+ ///
+ [DataMember(Name = "MessageID", IsRequired = true, EmitDefaultValue = true)]
+ public int MessageID { get; set; }
+
+ ///
+ /// Gets or Sets RepeatIndicator
+ ///
+ [DataMember(Name = "RepeatIndicator", IsRequired = true, EmitDefaultValue = true)]
+ public int RepeatIndicator { get; set; }
+
+ ///
+ /// Gets or Sets UserID
+ ///
+ [DataMember(Name = "UserID", IsRequired = true, EmitDefaultValue = true)]
+ public int UserID { get; set; }
+
+ ///
+ /// Gets or Sets Valid
+ ///
+ [DataMember(Name = "Valid", IsRequired = true, EmitDefaultValue = true)]
+ public bool Valid { get; set; }
+
+ ///
+ /// Gets or Sets Spare1
+ ///
+ [DataMember(Name = "Spare1", IsRequired = true, EmitDefaultValue = true)]
+ public int Spare1 { get; set; }
+
+ ///
+ /// Gets or Sets Longitude
+ ///
+ [DataMember(Name = "Longitude", IsRequired = true, EmitDefaultValue = true)]
+ public double Longitude { get; set; }
+
+ ///
+ /// Gets or Sets Latitude
+ ///
+ [DataMember(Name = "Latitude", IsRequired = true, EmitDefaultValue = true)]
+ public double Latitude { get; set; }
+
+ ///
+ /// Gets or Sets Spare2
+ ///
+ [DataMember(Name = "Spare2", IsRequired = true, EmitDefaultValue = true)]
+ public int Spare2 { get; set; }
+
+ ///
+ /// Gets or Sets Data
+ ///
+ [DataMember(Name = "Data", IsRequired = true, EmitDefaultValue = true)]
+ public string Data { get; set; }
+
+ ///
+ /// Returns the string presentation of the object
+ ///
+ /// String presentation of the object
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.Append("class GnssBroadcastBinaryMessage {\n");
+ sb.Append(" MessageID: ").Append(MessageID).Append("\n");
+ sb.Append(" RepeatIndicator: ").Append(RepeatIndicator).Append("\n");
+ sb.Append(" UserID: ").Append(UserID).Append("\n");
+ sb.Append(" Valid: ").Append(Valid).Append("\n");
+ sb.Append(" Spare1: ").Append(Spare1).Append("\n");
+ sb.Append(" Longitude: ").Append(Longitude).Append("\n");
+ sb.Append(" Latitude: ").Append(Latitude).Append("\n");
+ sb.Append(" Spare2: ").Append(Spare2).Append("\n");
+ sb.Append(" Data: ").Append(Data).Append("\n");
+ sb.Append("}\n");
+ return sb.ToString();
+ }
+
+ ///
+ /// Returns the JSON string presentation of the object
+ ///
+ /// JSON string presentation of the object
+ public virtual string ToJson()
+ {
+ return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
+ }
+
+ ///
+ /// To validate all properties of the instance
+ ///
+ /// Validation context
+ /// Validation Result
+ IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ {
+ yield break;
+ }
+ }
+
+}
diff --git a/csharp/src/aisStream/Model/GroupAssignmentCommand.cs b/csharp/src/aisStream/Model/GroupAssignmentCommand.cs
new file mode 100644
index 0000000..4f1afd5
--- /dev/null
+++ b/csharp/src/aisStream/Model/GroupAssignmentCommand.cs
@@ -0,0 +1,213 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using Newtonsoft.Json;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Runtime.Serialization;
+using System.Text;
+
+namespace aisStream.Model
+{
+ ///
+ /// GroupAssignmentCommand
+ ///
+ [DataContract(Name = "GroupAssignmentCommand")]
+ public partial class GroupAssignmentCommand : IValidatableObject
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ [JsonConstructorAttribute]
+ protected GroupAssignmentCommand() { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// messageID (required).
+ /// repeatIndicator (required).
+ /// userID (required).
+ /// valid (required).
+ /// spare1 (required).
+ /// longitude1 (required).
+ /// latitude1 (required).
+ /// longitude2 (required).
+ /// latitude2 (required).
+ /// stationType (required).
+ /// shipType (required).
+ /// spare2 (required).
+ /// txRxMode (required).
+ /// reportingInterval (required).
+ /// quietTime (required).
+ /// spare3 (required).
+ public GroupAssignmentCommand(int messageID = default(int), int repeatIndicator = default(int), int userID = default(int), bool valid = default(bool), int spare1 = default(int), double longitude1 = default(double), double latitude1 = default(double), double longitude2 = default(double), double latitude2 = default(double), int stationType = default(int), int shipType = default(int), int spare2 = default(int), int txRxMode = default(int), int reportingInterval = default(int), int quietTime = default(int), int spare3 = default(int))
+ {
+ this.MessageID = messageID;
+ this.RepeatIndicator = repeatIndicator;
+ this.UserID = userID;
+ this.Valid = valid;
+ this.Spare1 = spare1;
+ this.Longitude1 = longitude1;
+ this.Latitude1 = latitude1;
+ this.Longitude2 = longitude2;
+ this.Latitude2 = latitude2;
+ this.StationType = stationType;
+ this.ShipType = shipType;
+ this.Spare2 = spare2;
+ this.TxRxMode = txRxMode;
+ this.ReportingInterval = reportingInterval;
+ this.QuietTime = quietTime;
+ this.Spare3 = spare3;
+ }
+
+ ///
+ /// Gets or Sets MessageID
+ ///
+ [DataMember(Name = "MessageID", IsRequired = true, EmitDefaultValue = true)]
+ public int MessageID { get; set; }
+
+ ///
+ /// Gets or Sets RepeatIndicator
+ ///
+ [DataMember(Name = "RepeatIndicator", IsRequired = true, EmitDefaultValue = true)]
+ public int RepeatIndicator { get; set; }
+
+ ///
+ /// Gets or Sets UserID
+ ///
+ [DataMember(Name = "UserID", IsRequired = true, EmitDefaultValue = true)]
+ public int UserID { get; set; }
+
+ ///
+ /// Gets or Sets Valid
+ ///
+ [DataMember(Name = "Valid", IsRequired = true, EmitDefaultValue = true)]
+ public bool Valid { get; set; }
+
+ ///
+ /// Gets or Sets Spare1
+ ///
+ [DataMember(Name = "Spare1", IsRequired = true, EmitDefaultValue = true)]
+ public int Spare1 { get; set; }
+
+ ///
+ /// Gets or Sets Longitude1
+ ///
+ [DataMember(Name = "Longitude1", IsRequired = true, EmitDefaultValue = true)]
+ public double Longitude1 { get; set; }
+
+ ///
+ /// Gets or Sets Latitude1
+ ///
+ [DataMember(Name = "Latitude1", IsRequired = true, EmitDefaultValue = true)]
+ public double Latitude1 { get; set; }
+
+ ///
+ /// Gets or Sets Longitude2
+ ///
+ [DataMember(Name = "Longitude2", IsRequired = true, EmitDefaultValue = true)]
+ public double Longitude2 { get; set; }
+
+ ///
+ /// Gets or Sets Latitude2
+ ///
+ [DataMember(Name = "Latitude2", IsRequired = true, EmitDefaultValue = true)]
+ public double Latitude2 { get; set; }
+
+ ///
+ /// Gets or Sets StationType
+ ///
+ [DataMember(Name = "StationType", IsRequired = true, EmitDefaultValue = true)]
+ public int StationType { get; set; }
+
+ ///
+ /// Gets or Sets ShipType
+ ///
+ [DataMember(Name = "ShipType", IsRequired = true, EmitDefaultValue = true)]
+ public int ShipType { get; set; }
+
+ ///
+ /// Gets or Sets Spare2
+ ///
+ [DataMember(Name = "Spare2", IsRequired = true, EmitDefaultValue = true)]
+ public int Spare2 { get; set; }
+
+ ///
+ /// Gets or Sets TxRxMode
+ ///
+ [DataMember(Name = "TxRxMode", IsRequired = true, EmitDefaultValue = true)]
+ public int TxRxMode { get; set; }
+
+ ///
+ /// Gets or Sets ReportingInterval
+ ///
+ [DataMember(Name = "ReportingInterval", IsRequired = true, EmitDefaultValue = true)]
+ public int ReportingInterval { get; set; }
+
+ ///
+ /// Gets or Sets QuietTime
+ ///
+ [DataMember(Name = "QuietTime", IsRequired = true, EmitDefaultValue = true)]
+ public int QuietTime { get; set; }
+
+ ///
+ /// Gets or Sets Spare3
+ ///
+ [DataMember(Name = "Spare3", IsRequired = true, EmitDefaultValue = true)]
+ public int Spare3 { get; set; }
+
+ ///
+ /// Returns the string presentation of the object
+ ///
+ /// String presentation of the object
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.Append("class GroupAssignmentCommand {\n");
+ sb.Append(" MessageID: ").Append(MessageID).Append("\n");
+ sb.Append(" RepeatIndicator: ").Append(RepeatIndicator).Append("\n");
+ sb.Append(" UserID: ").Append(UserID).Append("\n");
+ sb.Append(" Valid: ").Append(Valid).Append("\n");
+ sb.Append(" Spare1: ").Append(Spare1).Append("\n");
+ sb.Append(" Longitude1: ").Append(Longitude1).Append("\n");
+ sb.Append(" Latitude1: ").Append(Latitude1).Append("\n");
+ sb.Append(" Longitude2: ").Append(Longitude2).Append("\n");
+ sb.Append(" Latitude2: ").Append(Latitude2).Append("\n");
+ sb.Append(" StationType: ").Append(StationType).Append("\n");
+ sb.Append(" ShipType: ").Append(ShipType).Append("\n");
+ sb.Append(" Spare2: ").Append(Spare2).Append("\n");
+ sb.Append(" TxRxMode: ").Append(TxRxMode).Append("\n");
+ sb.Append(" ReportingInterval: ").Append(ReportingInterval).Append("\n");
+ sb.Append(" QuietTime: ").Append(QuietTime).Append("\n");
+ sb.Append(" Spare3: ").Append(Spare3).Append("\n");
+ sb.Append("}\n");
+ return sb.ToString();
+ }
+
+ ///
+ /// Returns the JSON string presentation of the object
+ ///
+ /// JSON string presentation of the object
+ public virtual string ToJson()
+ {
+ return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
+ }
+
+ ///
+ /// To validate all properties of the instance
+ ///
+ /// Validation context
+ /// Validation Result
+ IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ {
+ yield break;
+ }
+ }
+
+}
diff --git a/csharp/src/aisStream/Model/Interrogation.cs b/csharp/src/aisStream/Model/Interrogation.cs
new file mode 100644
index 0000000..8a48d84
--- /dev/null
+++ b/csharp/src/aisStream/Model/Interrogation.cs
@@ -0,0 +1,157 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Runtime.Serialization;
+using System.Text;
+
+namespace aisStream.Model
+{
+ ///
+ /// Interrogation
+ ///
+ [DataContract(Name = "Interrogation")]
+ public partial class Interrogation : IValidatableObject
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ [JsonConstructorAttribute]
+ protected Interrogation() { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// messageID (required).
+ /// repeatIndicator (required).
+ /// userID (required).
+ /// valid (required).
+ /// spare (required).
+ /// station1Msg1 (required).
+ /// station1Msg2 (required).
+ /// station2 (required).
+ public Interrogation(int messageID = default(int), int repeatIndicator = default(int), int userID = default(int), bool valid = default(bool), int spare = default(int), InterrogationStation1Msg1 station1Msg1 = default(InterrogationStation1Msg1), InterrogationStation1Msg2 station1Msg2 = default(InterrogationStation1Msg2), InterrogationStation2 station2 = default(InterrogationStation2))
+ {
+ this.MessageID = messageID;
+ this.RepeatIndicator = repeatIndicator;
+ this.UserID = userID;
+ this.Valid = valid;
+ this.Spare = spare;
+ // to ensure "station1Msg1" is required (not null)
+ if (station1Msg1 == null)
+ {
+ throw new ArgumentNullException("station1Msg1 is a required property for Interrogation and cannot be null");
+ }
+ this.Station1Msg1 = station1Msg1;
+ // to ensure "station1Msg2" is required (not null)
+ if (station1Msg2 == null)
+ {
+ throw new ArgumentNullException("station1Msg2 is a required property for Interrogation and cannot be null");
+ }
+ this.Station1Msg2 = station1Msg2;
+ // to ensure "station2" is required (not null)
+ if (station2 == null)
+ {
+ throw new ArgumentNullException("station2 is a required property for Interrogation and cannot be null");
+ }
+ this.Station2 = station2;
+ }
+
+ ///
+ /// Gets or Sets MessageID
+ ///
+ [DataMember(Name = "MessageID", IsRequired = true, EmitDefaultValue = true)]
+ public int MessageID { get; set; }
+
+ ///
+ /// Gets or Sets RepeatIndicator
+ ///
+ [DataMember(Name = "RepeatIndicator", IsRequired = true, EmitDefaultValue = true)]
+ public int RepeatIndicator { get; set; }
+
+ ///
+ /// Gets or Sets UserID
+ ///
+ [DataMember(Name = "UserID", IsRequired = true, EmitDefaultValue = true)]
+ public int UserID { get; set; }
+
+ ///
+ /// Gets or Sets Valid
+ ///
+ [DataMember(Name = "Valid", IsRequired = true, EmitDefaultValue = true)]
+ public bool Valid { get; set; }
+
+ ///
+ /// Gets or Sets Spare
+ ///
+ [DataMember(Name = "Spare", IsRequired = true, EmitDefaultValue = true)]
+ public int Spare { get; set; }
+
+ ///
+ /// Gets or Sets Station1Msg1
+ ///
+ [DataMember(Name = "Station1Msg1", IsRequired = true, EmitDefaultValue = true)]
+ public InterrogationStation1Msg1 Station1Msg1 { get; set; }
+
+ ///
+ /// Gets or Sets Station1Msg2
+ ///
+ [DataMember(Name = "Station1Msg2", IsRequired = true, EmitDefaultValue = true)]
+ public InterrogationStation1Msg2 Station1Msg2 { get; set; }
+
+ ///
+ /// Gets or Sets Station2
+ ///
+ [DataMember(Name = "Station2", IsRequired = true, EmitDefaultValue = true)]
+ public InterrogationStation2 Station2 { get; set; }
+
+ ///
+ /// Returns the string presentation of the object
+ ///
+ /// String presentation of the object
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.Append("class Interrogation {\n");
+ sb.Append(" MessageID: ").Append(MessageID).Append("\n");
+ sb.Append(" RepeatIndicator: ").Append(RepeatIndicator).Append("\n");
+ sb.Append(" UserID: ").Append(UserID).Append("\n");
+ sb.Append(" Valid: ").Append(Valid).Append("\n");
+ sb.Append(" Spare: ").Append(Spare).Append("\n");
+ sb.Append(" Station1Msg1: ").Append(Station1Msg1).Append("\n");
+ sb.Append(" Station1Msg2: ").Append(Station1Msg2).Append("\n");
+ sb.Append(" Station2: ").Append(Station2).Append("\n");
+ sb.Append("}\n");
+ return sb.ToString();
+ }
+
+ ///
+ /// Returns the JSON string presentation of the object
+ ///
+ /// JSON string presentation of the object
+ public virtual string ToJson()
+ {
+ return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
+ }
+
+ ///
+ /// To validate all properties of the instance
+ ///
+ /// Validation context
+ /// Validation Result
+ IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ {
+ yield break;
+ }
+ }
+
+}
diff --git a/csharp/src/aisStream/Model/InterrogationStation1Msg1.cs b/csharp/src/aisStream/Model/InterrogationStation1Msg1.cs
new file mode 100644
index 0000000..d6663e3
--- /dev/null
+++ b/csharp/src/aisStream/Model/InterrogationStation1Msg1.cs
@@ -0,0 +1,105 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using Newtonsoft.Json;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Runtime.Serialization;
+using System.Text;
+
+namespace aisStream.Model
+{
+ ///
+ /// InterrogationStation1Msg1
+ ///
+ [DataContract(Name = "Interrogation_Station1Msg1")]
+ public partial class InterrogationStation1Msg1 : IValidatableObject
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ [JsonConstructorAttribute]
+ protected InterrogationStation1Msg1() { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// valid (required).
+ /// stationID (required).
+ /// messageID (required).
+ /// slotOffset (required).
+ public InterrogationStation1Msg1(bool valid = default(bool), int stationID = default(int), int messageID = default(int), int slotOffset = default(int))
+ {
+ this.Valid = valid;
+ this.StationID = stationID;
+ this.MessageID = messageID;
+ this.SlotOffset = slotOffset;
+ }
+
+ ///
+ /// Gets or Sets Valid
+ ///
+ [DataMember(Name = "Valid", IsRequired = true, EmitDefaultValue = true)]
+ public bool Valid { get; set; }
+
+ ///
+ /// Gets or Sets StationID
+ ///
+ [DataMember(Name = "StationID", IsRequired = true, EmitDefaultValue = true)]
+ public int StationID { get; set; }
+
+ ///
+ /// Gets or Sets MessageID
+ ///
+ [DataMember(Name = "MessageID", IsRequired = true, EmitDefaultValue = true)]
+ public int MessageID { get; set; }
+
+ ///
+ /// Gets or Sets SlotOffset
+ ///
+ [DataMember(Name = "SlotOffset", IsRequired = true, EmitDefaultValue = true)]
+ public int SlotOffset { get; set; }
+
+ ///
+ /// Returns the string presentation of the object
+ ///
+ /// String presentation of the object
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.Append("class InterrogationStation1Msg1 {\n");
+ sb.Append(" Valid: ").Append(Valid).Append("\n");
+ sb.Append(" StationID: ").Append(StationID).Append("\n");
+ sb.Append(" MessageID: ").Append(MessageID).Append("\n");
+ sb.Append(" SlotOffset: ").Append(SlotOffset).Append("\n");
+ sb.Append("}\n");
+ return sb.ToString();
+ }
+
+ ///
+ /// Returns the JSON string presentation of the object
+ ///
+ /// JSON string presentation of the object
+ public virtual string ToJson()
+ {
+ return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
+ }
+
+ ///
+ /// To validate all properties of the instance
+ ///
+ /// Validation context
+ /// Validation Result
+ IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ {
+ yield break;
+ }
+ }
+
+}
diff --git a/csharp/src/aisStream/Model/InterrogationStation1Msg2.cs b/csharp/src/aisStream/Model/InterrogationStation1Msg2.cs
new file mode 100644
index 0000000..c1f1966
--- /dev/null
+++ b/csharp/src/aisStream/Model/InterrogationStation1Msg2.cs
@@ -0,0 +1,105 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using Newtonsoft.Json;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Runtime.Serialization;
+using System.Text;
+
+namespace aisStream.Model
+{
+ ///
+ /// InterrogationStation1Msg2
+ ///
+ [DataContract(Name = "Interrogation_Station1Msg2")]
+ public partial class InterrogationStation1Msg2 : IValidatableObject
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ [JsonConstructorAttribute]
+ protected InterrogationStation1Msg2() { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// valid (required).
+ /// spare (required).
+ /// messageID (required).
+ /// slotOffset (required).
+ public InterrogationStation1Msg2(bool valid = default(bool), int spare = default(int), int messageID = default(int), int slotOffset = default(int))
+ {
+ this.Valid = valid;
+ this.Spare = spare;
+ this.MessageID = messageID;
+ this.SlotOffset = slotOffset;
+ }
+
+ ///
+ /// Gets or Sets Valid
+ ///
+ [DataMember(Name = "Valid", IsRequired = true, EmitDefaultValue = true)]
+ public bool Valid { get; set; }
+
+ ///
+ /// Gets or Sets Spare
+ ///
+ [DataMember(Name = "Spare", IsRequired = true, EmitDefaultValue = true)]
+ public int Spare { get; set; }
+
+ ///
+ /// Gets or Sets MessageID
+ ///
+ [DataMember(Name = "MessageID", IsRequired = true, EmitDefaultValue = true)]
+ public int MessageID { get; set; }
+
+ ///
+ /// Gets or Sets SlotOffset
+ ///
+ [DataMember(Name = "SlotOffset", IsRequired = true, EmitDefaultValue = true)]
+ public int SlotOffset { get; set; }
+
+ ///
+ /// Returns the string presentation of the object
+ ///
+ /// String presentation of the object
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.Append("class InterrogationStation1Msg2 {\n");
+ sb.Append(" Valid: ").Append(Valid).Append("\n");
+ sb.Append(" Spare: ").Append(Spare).Append("\n");
+ sb.Append(" MessageID: ").Append(MessageID).Append("\n");
+ sb.Append(" SlotOffset: ").Append(SlotOffset).Append("\n");
+ sb.Append("}\n");
+ return sb.ToString();
+ }
+
+ ///
+ /// Returns the JSON string presentation of the object
+ ///
+ /// JSON string presentation of the object
+ public virtual string ToJson()
+ {
+ return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
+ }
+
+ ///
+ /// To validate all properties of the instance
+ ///
+ /// Validation context
+ /// Validation Result
+ IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ {
+ yield break;
+ }
+ }
+
+}
diff --git a/csharp/src/aisStream/Model/InterrogationStation2.cs b/csharp/src/aisStream/Model/InterrogationStation2.cs
new file mode 100644
index 0000000..a3962ec
--- /dev/null
+++ b/csharp/src/aisStream/Model/InterrogationStation2.cs
@@ -0,0 +1,123 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using Newtonsoft.Json;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Runtime.Serialization;
+using System.Text;
+
+namespace aisStream.Model
+{
+ ///
+ /// InterrogationStation2
+ ///
+ [DataContract(Name = "Interrogation_Station2")]
+ public partial class InterrogationStation2 : IValidatableObject
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ [JsonConstructorAttribute]
+ protected InterrogationStation2() { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// valid (required).
+ /// spare1 (required).
+ /// stationID (required).
+ /// messageID (required).
+ /// slotOffset (required).
+ /// spare2 (required).
+ public InterrogationStation2(bool valid = default(bool), int spare1 = default(int), int stationID = default(int), int messageID = default(int), int slotOffset = default(int), int spare2 = default(int))
+ {
+ this.Valid = valid;
+ this.Spare1 = spare1;
+ this.StationID = stationID;
+ this.MessageID = messageID;
+ this.SlotOffset = slotOffset;
+ this.Spare2 = spare2;
+ }
+
+ ///
+ /// Gets or Sets Valid
+ ///
+ [DataMember(Name = "Valid", IsRequired = true, EmitDefaultValue = true)]
+ public bool Valid { get; set; }
+
+ ///
+ /// Gets or Sets Spare1
+ ///
+ [DataMember(Name = "Spare1", IsRequired = true, EmitDefaultValue = true)]
+ public int Spare1 { get; set; }
+
+ ///
+ /// Gets or Sets StationID
+ ///
+ [DataMember(Name = "StationID", IsRequired = true, EmitDefaultValue = true)]
+ public int StationID { get; set; }
+
+ ///
+ /// Gets or Sets MessageID
+ ///
+ [DataMember(Name = "MessageID", IsRequired = true, EmitDefaultValue = true)]
+ public int MessageID { get; set; }
+
+ ///
+ /// Gets or Sets SlotOffset
+ ///
+ [DataMember(Name = "SlotOffset", IsRequired = true, EmitDefaultValue = true)]
+ public int SlotOffset { get; set; }
+
+ ///
+ /// Gets or Sets Spare2
+ ///
+ [DataMember(Name = "Spare2", IsRequired = true, EmitDefaultValue = true)]
+ public int Spare2 { get; set; }
+
+ ///
+ /// Returns the string presentation of the object
+ ///
+ /// String presentation of the object
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.Append("class InterrogationStation2 {\n");
+ sb.Append(" Valid: ").Append(Valid).Append("\n");
+ sb.Append(" Spare1: ").Append(Spare1).Append("\n");
+ sb.Append(" StationID: ").Append(StationID).Append("\n");
+ sb.Append(" MessageID: ").Append(MessageID).Append("\n");
+ sb.Append(" SlotOffset: ").Append(SlotOffset).Append("\n");
+ sb.Append(" Spare2: ").Append(Spare2).Append("\n");
+ sb.Append("}\n");
+ return sb.ToString();
+ }
+
+ ///
+ /// Returns the JSON string presentation of the object
+ ///
+ /// JSON string presentation of the object
+ public virtual string ToJson()
+ {
+ return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
+ }
+
+ ///
+ /// To validate all properties of the instance
+ ///
+ /// Validation context
+ /// Validation Result
+ IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ {
+ yield break;
+ }
+ }
+
+}
diff --git a/csharp/src/aisStream/Model/LongRangeAisBroadcastMessage.cs b/csharp/src/aisStream/Model/LongRangeAisBroadcastMessage.cs
new file mode 100644
index 0000000..a8bf915
--- /dev/null
+++ b/csharp/src/aisStream/Model/LongRangeAisBroadcastMessage.cs
@@ -0,0 +1,186 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using Newtonsoft.Json;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Runtime.Serialization;
+using System.Text;
+
+namespace aisStream.Model
+{
+ ///
+ /// LongRangeAisBroadcastMessage
+ ///
+ [DataContract(Name = "LongRangeAisBroadcastMessage")]
+ public partial class LongRangeAisBroadcastMessage : IValidatableObject
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ [JsonConstructorAttribute]
+ protected LongRangeAisBroadcastMessage() { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// messageID (required).
+ /// repeatIndicator (required).
+ /// userID (required).
+ /// valid (required).
+ /// positionAccuracy (required).
+ /// raim (required).
+ /// navigationalStatus (required).
+ /// longitude (required).
+ /// latitude (required).
+ /// sog (required).
+ /// cog (required).
+ /// positionLatency (required).
+ /// spare (required).
+ public LongRangeAisBroadcastMessage(int messageID = default(int), int repeatIndicator = default(int), int userID = default(int), bool valid = default(bool), bool positionAccuracy = default(bool), bool raim = default(bool), int navigationalStatus = default(int), double longitude = default(double), double latitude = default(double), double sog = default(double), double cog = default(double), bool positionLatency = default(bool), bool spare = default(bool))
+ {
+ this.MessageID = messageID;
+ this.RepeatIndicator = repeatIndicator;
+ this.UserID = userID;
+ this.Valid = valid;
+ this.PositionAccuracy = positionAccuracy;
+ this.Raim = raim;
+ this.NavigationalStatus = navigationalStatus;
+ this.Longitude = longitude;
+ this.Latitude = latitude;
+ this.Sog = sog;
+ this.Cog = cog;
+ this.PositionLatency = positionLatency;
+ this.Spare = spare;
+ }
+
+ ///
+ /// Gets or Sets MessageID
+ ///
+ [DataMember(Name = "MessageID", IsRequired = true, EmitDefaultValue = true)]
+ public int MessageID { get; set; }
+
+ ///
+ /// Gets or Sets RepeatIndicator
+ ///
+ [DataMember(Name = "RepeatIndicator", IsRequired = true, EmitDefaultValue = true)]
+ public int RepeatIndicator { get; set; }
+
+ ///
+ /// Gets or Sets UserID
+ ///
+ [DataMember(Name = "UserID", IsRequired = true, EmitDefaultValue = true)]
+ public int UserID { get; set; }
+
+ ///
+ /// Gets or Sets Valid
+ ///
+ [DataMember(Name = "Valid", IsRequired = true, EmitDefaultValue = true)]
+ public bool Valid { get; set; }
+
+ ///
+ /// Gets or Sets PositionAccuracy
+ ///
+ [DataMember(Name = "PositionAccuracy", IsRequired = true, EmitDefaultValue = true)]
+ public bool PositionAccuracy { get; set; }
+
+ ///
+ /// Gets or Sets Raim
+ ///
+ [DataMember(Name = "Raim", IsRequired = true, EmitDefaultValue = true)]
+ public bool Raim { get; set; }
+
+ ///
+ /// Gets or Sets NavigationalStatus
+ ///
+ [DataMember(Name = "NavigationalStatus", IsRequired = true, EmitDefaultValue = true)]
+ public int NavigationalStatus { get; set; }
+
+ ///
+ /// Gets or Sets Longitude
+ ///
+ [DataMember(Name = "Longitude", IsRequired = true, EmitDefaultValue = true)]
+ public double Longitude { get; set; }
+
+ ///
+ /// Gets or Sets Latitude
+ ///
+ [DataMember(Name = "Latitude", IsRequired = true, EmitDefaultValue = true)]
+ public double Latitude { get; set; }
+
+ ///
+ /// Gets or Sets Sog
+ ///
+ [DataMember(Name = "Sog", IsRequired = true, EmitDefaultValue = true)]
+ public double Sog { get; set; }
+
+ ///
+ /// Gets or Sets Cog
+ ///
+ [DataMember(Name = "Cog", IsRequired = true, EmitDefaultValue = true)]
+ public double Cog { get; set; }
+
+ ///
+ /// Gets or Sets PositionLatency
+ ///
+ [DataMember(Name = "PositionLatency", IsRequired = true, EmitDefaultValue = true)]
+ public bool PositionLatency { get; set; }
+
+ ///
+ /// Gets or Sets Spare
+ ///
+ [DataMember(Name = "Spare", IsRequired = true, EmitDefaultValue = true)]
+ public bool Spare { get; set; }
+
+ ///
+ /// Returns the string presentation of the object
+ ///
+ /// String presentation of the object
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.Append("class LongRangeAisBroadcastMessage {\n");
+ sb.Append(" MessageID: ").Append(MessageID).Append("\n");
+ sb.Append(" RepeatIndicator: ").Append(RepeatIndicator).Append("\n");
+ sb.Append(" UserID: ").Append(UserID).Append("\n");
+ sb.Append(" Valid: ").Append(Valid).Append("\n");
+ sb.Append(" PositionAccuracy: ").Append(PositionAccuracy).Append("\n");
+ sb.Append(" Raim: ").Append(Raim).Append("\n");
+ sb.Append(" NavigationalStatus: ").Append(NavigationalStatus).Append("\n");
+ sb.Append(" Longitude: ").Append(Longitude).Append("\n");
+ sb.Append(" Latitude: ").Append(Latitude).Append("\n");
+ sb.Append(" Sog: ").Append(Sog).Append("\n");
+ sb.Append(" Cog: ").Append(Cog).Append("\n");
+ sb.Append(" PositionLatency: ").Append(PositionLatency).Append("\n");
+ sb.Append(" Spare: ").Append(Spare).Append("\n");
+ sb.Append("}\n");
+ return sb.ToString();
+ }
+
+ ///
+ /// Returns the JSON string presentation of the object
+ ///
+ /// JSON string presentation of the object
+ public virtual string ToJson()
+ {
+ return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
+ }
+
+ ///
+ /// To validate all properties of the instance
+ ///
+ /// Validation context
+ /// Validation Result
+ IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ {
+ yield break;
+ }
+ }
+
+}
diff --git a/csharp/src/aisStream/Model/MultiSlotBinaryMessage.cs b/csharp/src/aisStream/Model/MultiSlotBinaryMessage.cs
new file mode 100644
index 0000000..85ad09d
--- /dev/null
+++ b/csharp/src/aisStream/Model/MultiSlotBinaryMessage.cs
@@ -0,0 +1,197 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Runtime.Serialization;
+using System.Text;
+
+namespace aisStream.Model
+{
+ ///
+ /// MultiSlotBinaryMessage
+ ///
+ [DataContract(Name = "MultiSlotBinaryMessage")]
+ public partial class MultiSlotBinaryMessage : IValidatableObject
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ [JsonConstructorAttribute]
+ protected MultiSlotBinaryMessage() { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// messageID (required).
+ /// repeatIndicator (required).
+ /// userID (required).
+ /// valid (required).
+ /// destinationIDValid (required).
+ /// applicationIDValid (required).
+ /// destinationID (required).
+ /// spare1 (required).
+ /// applicationID (required).
+ /// payload (required).
+ /// spare2 (required).
+ /// communicationStateIsItdma (required).
+ /// communicationState (required).
+ public MultiSlotBinaryMessage(int messageID = default(int), int repeatIndicator = default(int), int userID = default(int), bool valid = default(bool), bool destinationIDValid = default(bool), bool applicationIDValid = default(bool), int destinationID = default(int), int spare1 = default(int), AddressedBinaryMessageApplicationID applicationID = default(AddressedBinaryMessageApplicationID), string payload = default(string), int spare2 = default(int), bool communicationStateIsItdma = default(bool), int communicationState = default(int))
+ {
+ this.MessageID = messageID;
+ this.RepeatIndicator = repeatIndicator;
+ this.UserID = userID;
+ this.Valid = valid;
+ this.DestinationIDValid = destinationIDValid;
+ this.ApplicationIDValid = applicationIDValid;
+ this.DestinationID = destinationID;
+ this.Spare1 = spare1;
+ // to ensure "applicationID" is required (not null)
+ if (applicationID == null)
+ {
+ throw new ArgumentNullException("applicationID is a required property for MultiSlotBinaryMessage and cannot be null");
+ }
+ this.ApplicationID = applicationID;
+ // to ensure "payload" is required (not null)
+ if (payload == null)
+ {
+ throw new ArgumentNullException("payload is a required property for MultiSlotBinaryMessage and cannot be null");
+ }
+ this.Payload = payload;
+ this.Spare2 = spare2;
+ this.CommunicationStateIsItdma = communicationStateIsItdma;
+ this.CommunicationState = communicationState;
+ }
+
+ ///
+ /// Gets or Sets MessageID
+ ///
+ [DataMember(Name = "MessageID", IsRequired = true, EmitDefaultValue = true)]
+ public int MessageID { get; set; }
+
+ ///
+ /// Gets or Sets RepeatIndicator
+ ///
+ [DataMember(Name = "RepeatIndicator", IsRequired = true, EmitDefaultValue = true)]
+ public int RepeatIndicator { get; set; }
+
+ ///
+ /// Gets or Sets UserID
+ ///
+ [DataMember(Name = "UserID", IsRequired = true, EmitDefaultValue = true)]
+ public int UserID { get; set; }
+
+ ///
+ /// Gets or Sets Valid
+ ///
+ [DataMember(Name = "Valid", IsRequired = true, EmitDefaultValue = true)]
+ public bool Valid { get; set; }
+
+ ///
+ /// Gets or Sets DestinationIDValid
+ ///
+ [DataMember(Name = "DestinationIDValid", IsRequired = true, EmitDefaultValue = true)]
+ public bool DestinationIDValid { get; set; }
+
+ ///
+ /// Gets or Sets ApplicationIDValid
+ ///
+ [DataMember(Name = "ApplicationIDValid", IsRequired = true, EmitDefaultValue = true)]
+ public bool ApplicationIDValid { get; set; }
+
+ ///
+ /// Gets or Sets DestinationID
+ ///
+ [DataMember(Name = "DestinationID", IsRequired = true, EmitDefaultValue = true)]
+ public int DestinationID { get; set; }
+
+ ///
+ /// Gets or Sets Spare1
+ ///
+ [DataMember(Name = "Spare1", IsRequired = true, EmitDefaultValue = true)]
+ public int Spare1 { get; set; }
+
+ ///
+ /// Gets or Sets ApplicationID
+ ///
+ [DataMember(Name = "ApplicationID", IsRequired = true, EmitDefaultValue = true)]
+ public AddressedBinaryMessageApplicationID ApplicationID { get; set; }
+
+ ///
+ /// Gets or Sets Payload
+ ///
+ [DataMember(Name = "Payload", IsRequired = true, EmitDefaultValue = true)]
+ public string Payload { get; set; }
+
+ ///
+ /// Gets or Sets Spare2
+ ///
+ [DataMember(Name = "Spare2", IsRequired = true, EmitDefaultValue = true)]
+ public int Spare2 { get; set; }
+
+ ///
+ /// Gets or Sets CommunicationStateIsItdma
+ ///
+ [DataMember(Name = "CommunicationStateIsItdma", IsRequired = true, EmitDefaultValue = true)]
+ public bool CommunicationStateIsItdma { get; set; }
+
+ ///
+ /// Gets or Sets CommunicationState
+ ///
+ [DataMember(Name = "CommunicationState", IsRequired = true, EmitDefaultValue = true)]
+ public int CommunicationState { get; set; }
+
+ ///
+ /// Returns the string presentation of the object
+ ///
+ /// String presentation of the object
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.Append("class MultiSlotBinaryMessage {\n");
+ sb.Append(" MessageID: ").Append(MessageID).Append("\n");
+ sb.Append(" RepeatIndicator: ").Append(RepeatIndicator).Append("\n");
+ sb.Append(" UserID: ").Append(UserID).Append("\n");
+ sb.Append(" Valid: ").Append(Valid).Append("\n");
+ sb.Append(" DestinationIDValid: ").Append(DestinationIDValid).Append("\n");
+ sb.Append(" ApplicationIDValid: ").Append(ApplicationIDValid).Append("\n");
+ sb.Append(" DestinationID: ").Append(DestinationID).Append("\n");
+ sb.Append(" Spare1: ").Append(Spare1).Append("\n");
+ sb.Append(" ApplicationID: ").Append(ApplicationID).Append("\n");
+ sb.Append(" Payload: ").Append(Payload).Append("\n");
+ sb.Append(" Spare2: ").Append(Spare2).Append("\n");
+ sb.Append(" CommunicationStateIsItdma: ").Append(CommunicationStateIsItdma).Append("\n");
+ sb.Append(" CommunicationState: ").Append(CommunicationState).Append("\n");
+ sb.Append("}\n");
+ return sb.ToString();
+ }
+
+ ///
+ /// Returns the JSON string presentation of the object
+ ///
+ /// JSON string presentation of the object
+ public virtual string ToJson()
+ {
+ return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
+ }
+
+ ///
+ /// To validate all properties of the instance
+ ///
+ /// Validation context
+ /// Validation Result
+ IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ {
+ yield break;
+ }
+ }
+
+}
diff --git a/csharp/src/aisStream/Model/PositionReport.cs b/csharp/src/aisStream/Model/PositionReport.cs
new file mode 100644
index 0000000..bb4e891
--- /dev/null
+++ b/csharp/src/aisStream/Model/PositionReport.cs
@@ -0,0 +1,222 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using Newtonsoft.Json;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Runtime.Serialization;
+using System.Text;
+
+namespace aisStream.Model
+{
+ ///
+ /// PositionReport
+ ///
+ [DataContract(Name = "PositionReport")]
+ public partial class PositionReport : IValidatableObject
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ [JsonConstructorAttribute]
+ protected PositionReport() { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// messageID (required).
+ /// repeatIndicator (required).
+ /// userID (required).
+ /// valid (required).
+ /// navigationalStatus (required).
+ /// rateOfTurn (required).
+ /// sog (required).
+ /// positionAccuracy (required).
+ /// longitude (required).
+ /// latitude (required).
+ /// cog (required).
+ /// trueHeading (required).
+ /// timestamp (required).
+ /// specialManoeuvreIndicator (required).
+ /// spare (required).
+ /// raim (required).
+ /// communicationState (required).
+ public PositionReport(int messageID = default(int), int repeatIndicator = default(int), int userID = default(int), bool valid = default(bool), int navigationalStatus = default(int), int rateOfTurn = default(int), double sog = default(double), bool positionAccuracy = default(bool), double longitude = default(double), double latitude = default(double), double cog = default(double), int trueHeading = default(int), int timestamp = default(int), int specialManoeuvreIndicator = default(int), int spare = default(int), bool raim = default(bool), int communicationState = default(int))
+ {
+ this.MessageID = messageID;
+ this.RepeatIndicator = repeatIndicator;
+ this.UserID = userID;
+ this.Valid = valid;
+ this.NavigationalStatus = navigationalStatus;
+ this.RateOfTurn = rateOfTurn;
+ this.Sog = sog;
+ this.PositionAccuracy = positionAccuracy;
+ this.Longitude = longitude;
+ this.Latitude = latitude;
+ this.Cog = cog;
+ this.TrueHeading = trueHeading;
+ this.Timestamp = timestamp;
+ this.SpecialManoeuvreIndicator = specialManoeuvreIndicator;
+ this.Spare = spare;
+ this.Raim = raim;
+ this.CommunicationState = communicationState;
+ }
+
+ ///
+ /// Gets or Sets MessageID
+ ///
+ [DataMember(Name = "MessageID", IsRequired = true, EmitDefaultValue = true)]
+ public int MessageID { get; set; }
+
+ ///
+ /// Gets or Sets RepeatIndicator
+ ///
+ [DataMember(Name = "RepeatIndicator", IsRequired = true, EmitDefaultValue = true)]
+ public int RepeatIndicator { get; set; }
+
+ ///
+ /// Gets or Sets UserID
+ ///
+ [DataMember(Name = "UserID", IsRequired = true, EmitDefaultValue = true)]
+ public int UserID { get; set; }
+
+ ///
+ /// Gets or Sets Valid
+ ///
+ [DataMember(Name = "Valid", IsRequired = true, EmitDefaultValue = true)]
+ public bool Valid { get; set; }
+
+ ///
+ /// Gets or Sets NavigationalStatus
+ ///
+ [DataMember(Name = "NavigationalStatus", IsRequired = true, EmitDefaultValue = true)]
+ public int NavigationalStatus { get; set; }
+
+ ///
+ /// Gets or Sets RateOfTurn
+ ///
+ [DataMember(Name = "RateOfTurn", IsRequired = true, EmitDefaultValue = true)]
+ public int RateOfTurn { get; set; }
+
+ ///
+ /// Gets or Sets Sog
+ ///
+ [DataMember(Name = "Sog", IsRequired = true, EmitDefaultValue = true)]
+ public double Sog { get; set; }
+
+ ///
+ /// Gets or Sets PositionAccuracy
+ ///
+ [DataMember(Name = "PositionAccuracy", IsRequired = true, EmitDefaultValue = true)]
+ public bool PositionAccuracy { get; set; }
+
+ ///
+ /// Gets or Sets Longitude
+ ///
+ [DataMember(Name = "Longitude", IsRequired = true, EmitDefaultValue = true)]
+ public double Longitude { get; set; }
+
+ ///
+ /// Gets or Sets Latitude
+ ///
+ [DataMember(Name = "Latitude", IsRequired = true, EmitDefaultValue = true)]
+ public double Latitude { get; set; }
+
+ ///
+ /// Gets or Sets Cog
+ ///
+ [DataMember(Name = "Cog", IsRequired = true, EmitDefaultValue = true)]
+ public double Cog { get; set; }
+
+ ///
+ /// Gets or Sets TrueHeading
+ ///
+ [DataMember(Name = "TrueHeading", IsRequired = true, EmitDefaultValue = true)]
+ public int TrueHeading { get; set; }
+
+ ///
+ /// Gets or Sets Timestamp
+ ///
+ [DataMember(Name = "Timestamp", IsRequired = true, EmitDefaultValue = true)]
+ public int Timestamp { get; set; }
+
+ ///
+ /// Gets or Sets SpecialManoeuvreIndicator
+ ///
+ [DataMember(Name = "SpecialManoeuvreIndicator", IsRequired = true, EmitDefaultValue = true)]
+ public int SpecialManoeuvreIndicator { get; set; }
+
+ ///
+ /// Gets or Sets Spare
+ ///
+ [DataMember(Name = "Spare", IsRequired = true, EmitDefaultValue = true)]
+ public int Spare { get; set; }
+
+ ///
+ /// Gets or Sets Raim
+ ///
+ [DataMember(Name = "Raim", IsRequired = true, EmitDefaultValue = true)]
+ public bool Raim { get; set; }
+
+ ///
+ /// Gets or Sets CommunicationState
+ ///
+ [DataMember(Name = "CommunicationState", IsRequired = true, EmitDefaultValue = true)]
+ public int CommunicationState { get; set; }
+
+ ///
+ /// Returns the string presentation of the object
+ ///
+ /// String presentation of the object
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.Append("class PositionReport {\n");
+ sb.Append(" MessageID: ").Append(MessageID).Append("\n");
+ sb.Append(" RepeatIndicator: ").Append(RepeatIndicator).Append("\n");
+ sb.Append(" UserID: ").Append(UserID).Append("\n");
+ sb.Append(" Valid: ").Append(Valid).Append("\n");
+ sb.Append(" NavigationalStatus: ").Append(NavigationalStatus).Append("\n");
+ sb.Append(" RateOfTurn: ").Append(RateOfTurn).Append("\n");
+ sb.Append(" Sog: ").Append(Sog).Append("\n");
+ sb.Append(" PositionAccuracy: ").Append(PositionAccuracy).Append("\n");
+ sb.Append(" Longitude: ").Append(Longitude).Append("\n");
+ sb.Append(" Latitude: ").Append(Latitude).Append("\n");
+ sb.Append(" Cog: ").Append(Cog).Append("\n");
+ sb.Append(" TrueHeading: ").Append(TrueHeading).Append("\n");
+ sb.Append(" Timestamp: ").Append(Timestamp).Append("\n");
+ sb.Append(" SpecialManoeuvreIndicator: ").Append(SpecialManoeuvreIndicator).Append("\n");
+ sb.Append(" Spare: ").Append(Spare).Append("\n");
+ sb.Append(" Raim: ").Append(Raim).Append("\n");
+ sb.Append(" CommunicationState: ").Append(CommunicationState).Append("\n");
+ sb.Append("}\n");
+ return sb.ToString();
+ }
+
+ ///
+ /// Returns the JSON string presentation of the object
+ ///
+ /// JSON string presentation of the object
+ public virtual string ToJson()
+ {
+ return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
+ }
+
+ ///
+ /// To validate all properties of the instance
+ ///
+ /// Validation context
+ /// Validation Result
+ IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ {
+ yield break;
+ }
+ }
+
+}
diff --git a/csharp/src/aisStream/Model/SafetyBroadcastMessage.cs b/csharp/src/aisStream/Model/SafetyBroadcastMessage.cs
new file mode 100644
index 0000000..1e98a80
--- /dev/null
+++ b/csharp/src/aisStream/Model/SafetyBroadcastMessage.cs
@@ -0,0 +1,129 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Runtime.Serialization;
+using System.Text;
+
+namespace aisStream.Model
+{
+ ///
+ /// SafetyBroadcastMessage
+ ///
+ [DataContract(Name = "SafetyBroadcastMessage")]
+ public partial class SafetyBroadcastMessage : IValidatableObject
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ [JsonConstructorAttribute]
+ protected SafetyBroadcastMessage() { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// messageID (required).
+ /// repeatIndicator (required).
+ /// userID (required).
+ /// valid (required).
+ /// spare (required).
+ /// text (required).
+ public SafetyBroadcastMessage(int messageID = default(int), int repeatIndicator = default(int), int userID = default(int), bool valid = default(bool), int spare = default(int), string text = default(string))
+ {
+ this.MessageID = messageID;
+ this.RepeatIndicator = repeatIndicator;
+ this.UserID = userID;
+ this.Valid = valid;
+ this.Spare = spare;
+ // to ensure "text" is required (not null)
+ if (text == null)
+ {
+ throw new ArgumentNullException("text is a required property for SafetyBroadcastMessage and cannot be null");
+ }
+ this.Text = text;
+ }
+
+ ///
+ /// Gets or Sets MessageID
+ ///
+ [DataMember(Name = "MessageID", IsRequired = true, EmitDefaultValue = true)]
+ public int MessageID { get; set; }
+
+ ///
+ /// Gets or Sets RepeatIndicator
+ ///
+ [DataMember(Name = "RepeatIndicator", IsRequired = true, EmitDefaultValue = true)]
+ public int RepeatIndicator { get; set; }
+
+ ///
+ /// Gets or Sets UserID
+ ///
+ [DataMember(Name = "UserID", IsRequired = true, EmitDefaultValue = true)]
+ public int UserID { get; set; }
+
+ ///
+ /// Gets or Sets Valid
+ ///
+ [DataMember(Name = "Valid", IsRequired = true, EmitDefaultValue = true)]
+ public bool Valid { get; set; }
+
+ ///
+ /// Gets or Sets Spare
+ ///
+ [DataMember(Name = "Spare", IsRequired = true, EmitDefaultValue = true)]
+ public int Spare { get; set; }
+
+ ///
+ /// Gets or Sets Text
+ ///
+ [DataMember(Name = "Text", IsRequired = true, EmitDefaultValue = true)]
+ public string Text { get; set; }
+
+ ///
+ /// Returns the string presentation of the object
+ ///
+ /// String presentation of the object
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.Append("class SafetyBroadcastMessage {\n");
+ sb.Append(" MessageID: ").Append(MessageID).Append("\n");
+ sb.Append(" RepeatIndicator: ").Append(RepeatIndicator).Append("\n");
+ sb.Append(" UserID: ").Append(UserID).Append("\n");
+ sb.Append(" Valid: ").Append(Valid).Append("\n");
+ sb.Append(" Spare: ").Append(Spare).Append("\n");
+ sb.Append(" Text: ").Append(Text).Append("\n");
+ sb.Append("}\n");
+ return sb.ToString();
+ }
+
+ ///
+ /// Returns the JSON string presentation of the object
+ ///
+ /// JSON string presentation of the object
+ public virtual string ToJson()
+ {
+ return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
+ }
+
+ ///
+ /// To validate all properties of the instance
+ ///
+ /// Validation context
+ /// Validation Result
+ IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ {
+ yield break;
+ }
+ }
+
+}
diff --git a/csharp/src/aisStream/Model/ShipStaticData.cs b/csharp/src/aisStream/Model/ShipStaticData.cs
new file mode 100644
index 0000000..c0690a1
--- /dev/null
+++ b/csharp/src/aisStream/Model/ShipStaticData.cs
@@ -0,0 +1,239 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Runtime.Serialization;
+using System.Text;
+
+namespace aisStream.Model
+{
+ ///
+ /// ShipStaticData
+ ///
+ [DataContract(Name = "ShipStaticData")]
+ public partial class ShipStaticData : IValidatableObject
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ [JsonConstructorAttribute]
+ protected ShipStaticData() { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// messageID (required).
+ /// repeatIndicator (required).
+ /// userID (required).
+ /// valid (required).
+ /// aisVersion (required).
+ /// imoNumber (required).
+ /// callSign (required).
+ /// name (required).
+ /// type (required).
+ /// dimension (required).
+ /// fixType (required).
+ /// eta (required).
+ /// maximumStaticDraught (required).
+ /// destination (required).
+ /// dte (required).
+ /// spare (required).
+ public ShipStaticData(int messageID = default(int), int repeatIndicator = default(int), int userID = default(int), bool valid = default(bool), int aisVersion = default(int), int imoNumber = default(int), string callSign = default(string), string name = default(string), int type = default(int), ShipStaticDataDimension dimension = default(ShipStaticDataDimension), int fixType = default(int), ShipStaticDataEta eta = default(ShipStaticDataEta), double maximumStaticDraught = default(double), string destination = default(string), bool dte = default(bool), bool spare = default(bool))
+ {
+ this.MessageID = messageID;
+ this.RepeatIndicator = repeatIndicator;
+ this.UserID = userID;
+ this.Valid = valid;
+ this.AisVersion = aisVersion;
+ this.ImoNumber = imoNumber;
+ // to ensure "callSign" is required (not null)
+ if (callSign == null)
+ {
+ throw new ArgumentNullException("callSign is a required property for ShipStaticData and cannot be null");
+ }
+ this.CallSign = callSign;
+ // to ensure "name" is required (not null)
+ if (name == null)
+ {
+ throw new ArgumentNullException("name is a required property for ShipStaticData and cannot be null");
+ }
+ this.Name = name;
+ this.Type = type;
+ // to ensure "dimension" is required (not null)
+ if (dimension == null)
+ {
+ throw new ArgumentNullException("dimension is a required property for ShipStaticData and cannot be null");
+ }
+ this.Dimension = dimension;
+ this.FixType = fixType;
+ // to ensure "eta" is required (not null)
+ if (eta == null)
+ {
+ throw new ArgumentNullException("eta is a required property for ShipStaticData and cannot be null");
+ }
+ this.Eta = eta;
+ this.MaximumStaticDraught = maximumStaticDraught;
+ // to ensure "destination" is required (not null)
+ if (destination == null)
+ {
+ throw new ArgumentNullException("destination is a required property for ShipStaticData and cannot be null");
+ }
+ this.Destination = destination;
+ this.Dte = dte;
+ this.Spare = spare;
+ }
+
+ ///
+ /// Gets or Sets MessageID
+ ///
+ [DataMember(Name = "MessageID", IsRequired = true, EmitDefaultValue = true)]
+ public int MessageID { get; set; }
+
+ ///
+ /// Gets or Sets RepeatIndicator
+ ///
+ [DataMember(Name = "RepeatIndicator", IsRequired = true, EmitDefaultValue = true)]
+ public int RepeatIndicator { get; set; }
+
+ ///
+ /// Gets or Sets UserID
+ ///
+ [DataMember(Name = "UserID", IsRequired = true, EmitDefaultValue = true)]
+ public int UserID { get; set; }
+
+ ///
+ /// Gets or Sets Valid
+ ///
+ [DataMember(Name = "Valid", IsRequired = true, EmitDefaultValue = true)]
+ public bool Valid { get; set; }
+
+ ///
+ /// Gets or Sets AisVersion
+ ///
+ [DataMember(Name = "AisVersion", IsRequired = true, EmitDefaultValue = true)]
+ public int AisVersion { get; set; }
+
+ ///
+ /// Gets or Sets ImoNumber
+ ///
+ [DataMember(Name = "ImoNumber", IsRequired = true, EmitDefaultValue = true)]
+ public int ImoNumber { get; set; }
+
+ ///
+ /// Gets or Sets CallSign
+ ///
+ [DataMember(Name = "CallSign", IsRequired = true, EmitDefaultValue = true)]
+ public string CallSign { get; set; }
+
+ ///
+ /// Gets or Sets Name
+ ///
+ [DataMember(Name = "Name", IsRequired = true, EmitDefaultValue = true)]
+ public string Name { get; set; }
+
+ ///
+ /// Gets or Sets Type
+ ///
+ [DataMember(Name = "Type", IsRequired = true, EmitDefaultValue = true)]
+ public int Type { get; set; }
+
+ ///
+ /// Gets or Sets Dimension
+ ///
+ [DataMember(Name = "Dimension", IsRequired = true, EmitDefaultValue = true)]
+ public ShipStaticDataDimension Dimension { get; set; }
+
+ ///
+ /// Gets or Sets FixType
+ ///
+ [DataMember(Name = "FixType", IsRequired = true, EmitDefaultValue = true)]
+ public int FixType { get; set; }
+
+ ///
+ /// Gets or Sets Eta
+ ///
+ [DataMember(Name = "Eta", IsRequired = true, EmitDefaultValue = true)]
+ public ShipStaticDataEta Eta { get; set; }
+
+ ///
+ /// Gets or Sets MaximumStaticDraught
+ ///
+ [DataMember(Name = "MaximumStaticDraught", IsRequired = true, EmitDefaultValue = true)]
+ public double MaximumStaticDraught { get; set; }
+
+ ///
+ /// Gets or Sets Destination
+ ///
+ [DataMember(Name = "Destination", IsRequired = true, EmitDefaultValue = true)]
+ public string Destination { get; set; }
+
+ ///
+ /// Gets or Sets Dte
+ ///
+ [DataMember(Name = "Dte", IsRequired = true, EmitDefaultValue = true)]
+ public bool Dte { get; set; }
+
+ ///
+ /// Gets or Sets Spare
+ ///
+ [DataMember(Name = "Spare", IsRequired = true, EmitDefaultValue = true)]
+ public bool Spare { get; set; }
+
+ ///
+ /// Returns the string presentation of the object
+ ///
+ /// String presentation of the object
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.Append("class ShipStaticData {\n");
+ sb.Append(" MessageID: ").Append(MessageID).Append("\n");
+ sb.Append(" RepeatIndicator: ").Append(RepeatIndicator).Append("\n");
+ sb.Append(" UserID: ").Append(UserID).Append("\n");
+ sb.Append(" Valid: ").Append(Valid).Append("\n");
+ sb.Append(" AisVersion: ").Append(AisVersion).Append("\n");
+ sb.Append(" ImoNumber: ").Append(ImoNumber).Append("\n");
+ sb.Append(" CallSign: ").Append(CallSign).Append("\n");
+ sb.Append(" Name: ").Append(Name).Append("\n");
+ sb.Append(" Type: ").Append(Type).Append("\n");
+ sb.Append(" Dimension: ").Append(Dimension).Append("\n");
+ sb.Append(" FixType: ").Append(FixType).Append("\n");
+ sb.Append(" Eta: ").Append(Eta).Append("\n");
+ sb.Append(" MaximumStaticDraught: ").Append(MaximumStaticDraught).Append("\n");
+ sb.Append(" Destination: ").Append(Destination).Append("\n");
+ sb.Append(" Dte: ").Append(Dte).Append("\n");
+ sb.Append(" Spare: ").Append(Spare).Append("\n");
+ sb.Append("}\n");
+ return sb.ToString();
+ }
+
+ ///
+ /// Returns the JSON string presentation of the object
+ ///
+ /// JSON string presentation of the object
+ public virtual string ToJson()
+ {
+ return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
+ }
+
+ ///
+ /// To validate all properties of the instance
+ ///
+ /// Validation context
+ /// Validation Result
+ IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ {
+ yield break;
+ }
+ }
+
+}
diff --git a/csharp/src/aisStream/Model/ShipStaticDataDimension.cs b/csharp/src/aisStream/Model/ShipStaticDataDimension.cs
new file mode 100644
index 0000000..fbb39f4
--- /dev/null
+++ b/csharp/src/aisStream/Model/ShipStaticDataDimension.cs
@@ -0,0 +1,105 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using Newtonsoft.Json;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Runtime.Serialization;
+using System.Text;
+
+namespace aisStream.Model
+{
+ ///
+ /// ShipStaticDataDimension
+ ///
+ [DataContract(Name = "ShipStaticData_Dimension")]
+ public partial class ShipStaticDataDimension : IValidatableObject
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ [JsonConstructorAttribute]
+ protected ShipStaticDataDimension() { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// a (required).
+ /// b (required).
+ /// c (required).
+ /// d (required).
+ public ShipStaticDataDimension(int a = default(int), int b = default(int), int c = default(int), int d = default(int))
+ {
+ this.A = a;
+ this.B = b;
+ this.C = c;
+ this.D = d;
+ }
+
+ ///
+ /// Gets or Sets A
+ ///
+ [DataMember(Name = "A", IsRequired = true, EmitDefaultValue = true)]
+ public int A { get; set; }
+
+ ///
+ /// Gets or Sets B
+ ///
+ [DataMember(Name = "B", IsRequired = true, EmitDefaultValue = true)]
+ public int B { get; set; }
+
+ ///
+ /// Gets or Sets C
+ ///
+ [DataMember(Name = "C", IsRequired = true, EmitDefaultValue = true)]
+ public int C { get; set; }
+
+ ///
+ /// Gets or Sets D
+ ///
+ [DataMember(Name = "D", IsRequired = true, EmitDefaultValue = true)]
+ public int D { get; set; }
+
+ ///
+ /// Returns the string presentation of the object
+ ///
+ /// String presentation of the object
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.Append("class ShipStaticDataDimension {\n");
+ sb.Append(" A: ").Append(A).Append("\n");
+ sb.Append(" B: ").Append(B).Append("\n");
+ sb.Append(" C: ").Append(C).Append("\n");
+ sb.Append(" D: ").Append(D).Append("\n");
+ sb.Append("}\n");
+ return sb.ToString();
+ }
+
+ ///
+ /// Returns the JSON string presentation of the object
+ ///
+ /// JSON string presentation of the object
+ public virtual string ToJson()
+ {
+ return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
+ }
+
+ ///
+ /// To validate all properties of the instance
+ ///
+ /// Validation context
+ /// Validation Result
+ IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ {
+ yield break;
+ }
+ }
+
+}
diff --git a/csharp/src/aisStream/Model/ShipStaticDataEta.cs b/csharp/src/aisStream/Model/ShipStaticDataEta.cs
new file mode 100644
index 0000000..d74190d
--- /dev/null
+++ b/csharp/src/aisStream/Model/ShipStaticDataEta.cs
@@ -0,0 +1,105 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using Newtonsoft.Json;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Runtime.Serialization;
+using System.Text;
+
+namespace aisStream.Model
+{
+ ///
+ /// ShipStaticDataEta
+ ///
+ [DataContract(Name = "ShipStaticData_Eta")]
+ public partial class ShipStaticDataEta : IValidatableObject
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ [JsonConstructorAttribute]
+ protected ShipStaticDataEta() { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// month (required).
+ /// day (required).
+ /// hour (required).
+ /// minute (required).
+ public ShipStaticDataEta(int month = default(int), int day = default(int), int hour = default(int), int minute = default(int))
+ {
+ this.Month = month;
+ this.Day = day;
+ this.Hour = hour;
+ this.Minute = minute;
+ }
+
+ ///
+ /// Gets or Sets Month
+ ///
+ [DataMember(Name = "Month", IsRequired = true, EmitDefaultValue = true)]
+ public int Month { get; set; }
+
+ ///
+ /// Gets or Sets Day
+ ///
+ [DataMember(Name = "Day", IsRequired = true, EmitDefaultValue = true)]
+ public int Day { get; set; }
+
+ ///
+ /// Gets or Sets Hour
+ ///
+ [DataMember(Name = "Hour", IsRequired = true, EmitDefaultValue = true)]
+ public int Hour { get; set; }
+
+ ///
+ /// Gets or Sets Minute
+ ///
+ [DataMember(Name = "Minute", IsRequired = true, EmitDefaultValue = true)]
+ public int Minute { get; set; }
+
+ ///
+ /// Returns the string presentation of the object
+ ///
+ /// String presentation of the object
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.Append("class ShipStaticDataEta {\n");
+ sb.Append(" Month: ").Append(Month).Append("\n");
+ sb.Append(" Day: ").Append(Day).Append("\n");
+ sb.Append(" Hour: ").Append(Hour).Append("\n");
+ sb.Append(" Minute: ").Append(Minute).Append("\n");
+ sb.Append("}\n");
+ return sb.ToString();
+ }
+
+ ///
+ /// Returns the JSON string presentation of the object
+ ///
+ /// JSON string presentation of the object
+ public virtual string ToJson()
+ {
+ return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
+ }
+
+ ///
+ /// To validate all properties of the instance
+ ///
+ /// Validation context
+ /// Validation Result
+ IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ {
+ yield break;
+ }
+ }
+
+}
diff --git a/csharp/src/aisStream/Model/SingleSlotBinaryMessage.cs b/csharp/src/aisStream/Model/SingleSlotBinaryMessage.cs
new file mode 100644
index 0000000..1bc09e8
--- /dev/null
+++ b/csharp/src/aisStream/Model/SingleSlotBinaryMessage.cs
@@ -0,0 +1,170 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Runtime.Serialization;
+using System.Text;
+
+namespace aisStream.Model
+{
+ ///
+ /// SingleSlotBinaryMessage
+ ///
+ [DataContract(Name = "SingleSlotBinaryMessage")]
+ public partial class SingleSlotBinaryMessage : IValidatableObject
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ [JsonConstructorAttribute]
+ protected SingleSlotBinaryMessage() { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// messageID (required).
+ /// repeatIndicator (required).
+ /// userID (required).
+ /// valid (required).
+ /// destinationIDValid (required).
+ /// applicationIDValid (required).
+ /// destinationID (required).
+ /// spare (required).
+ /// applicationID (required).
+ /// payload (required).
+ public SingleSlotBinaryMessage(int messageID = default(int), int repeatIndicator = default(int), int userID = default(int), bool valid = default(bool), bool destinationIDValid = default(bool), bool applicationIDValid = default(bool), int destinationID = default(int), int spare = default(int), AddressedBinaryMessageApplicationID applicationID = default(AddressedBinaryMessageApplicationID), string payload = default(string))
+ {
+ this.MessageID = messageID;
+ this.RepeatIndicator = repeatIndicator;
+ this.UserID = userID;
+ this.Valid = valid;
+ this.DestinationIDValid = destinationIDValid;
+ this.ApplicationIDValid = applicationIDValid;
+ this.DestinationID = destinationID;
+ this.Spare = spare;
+ // to ensure "applicationID" is required (not null)
+ if (applicationID == null)
+ {
+ throw new ArgumentNullException("applicationID is a required property for SingleSlotBinaryMessage and cannot be null");
+ }
+ this.ApplicationID = applicationID;
+ // to ensure "payload" is required (not null)
+ if (payload == null)
+ {
+ throw new ArgumentNullException("payload is a required property for SingleSlotBinaryMessage and cannot be null");
+ }
+ this.Payload = payload;
+ }
+
+ ///
+ /// Gets or Sets MessageID
+ ///
+ [DataMember(Name = "MessageID", IsRequired = true, EmitDefaultValue = true)]
+ public int MessageID { get; set; }
+
+ ///
+ /// Gets or Sets RepeatIndicator
+ ///
+ [DataMember(Name = "RepeatIndicator", IsRequired = true, EmitDefaultValue = true)]
+ public int RepeatIndicator { get; set; }
+
+ ///
+ /// Gets or Sets UserID
+ ///
+ [DataMember(Name = "UserID", IsRequired = true, EmitDefaultValue = true)]
+ public int UserID { get; set; }
+
+ ///
+ /// Gets or Sets Valid
+ ///
+ [DataMember(Name = "Valid", IsRequired = true, EmitDefaultValue = true)]
+ public bool Valid { get; set; }
+
+ ///
+ /// Gets or Sets DestinationIDValid
+ ///
+ [DataMember(Name = "DestinationIDValid", IsRequired = true, EmitDefaultValue = true)]
+ public bool DestinationIDValid { get; set; }
+
+ ///
+ /// Gets or Sets ApplicationIDValid
+ ///
+ [DataMember(Name = "ApplicationIDValid", IsRequired = true, EmitDefaultValue = true)]
+ public bool ApplicationIDValid { get; set; }
+
+ ///
+ /// Gets or Sets DestinationID
+ ///
+ [DataMember(Name = "DestinationID", IsRequired = true, EmitDefaultValue = true)]
+ public int DestinationID { get; set; }
+
+ ///
+ /// Gets or Sets Spare
+ ///
+ [DataMember(Name = "Spare", IsRequired = true, EmitDefaultValue = true)]
+ public int Spare { get; set; }
+
+ ///
+ /// Gets or Sets ApplicationID
+ ///
+ [DataMember(Name = "ApplicationID", IsRequired = true, EmitDefaultValue = true)]
+ public AddressedBinaryMessageApplicationID ApplicationID { get; set; }
+
+ ///
+ /// Gets or Sets Payload
+ ///
+ [DataMember(Name = "Payload", IsRequired = true, EmitDefaultValue = true)]
+ public string Payload { get; set; }
+
+ ///
+ /// Returns the string presentation of the object
+ ///
+ /// String presentation of the object
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.Append("class SingleSlotBinaryMessage {\n");
+ sb.Append(" MessageID: ").Append(MessageID).Append("\n");
+ sb.Append(" RepeatIndicator: ").Append(RepeatIndicator).Append("\n");
+ sb.Append(" UserID: ").Append(UserID).Append("\n");
+ sb.Append(" Valid: ").Append(Valid).Append("\n");
+ sb.Append(" DestinationIDValid: ").Append(DestinationIDValid).Append("\n");
+ sb.Append(" ApplicationIDValid: ").Append(ApplicationIDValid).Append("\n");
+ sb.Append(" DestinationID: ").Append(DestinationID).Append("\n");
+ sb.Append(" Spare: ").Append(Spare).Append("\n");
+ sb.Append(" ApplicationID: ").Append(ApplicationID).Append("\n");
+ sb.Append(" Payload: ").Append(Payload).Append("\n");
+ sb.Append("}\n");
+ return sb.ToString();
+ }
+
+ ///
+ /// Returns the JSON string presentation of the object
+ ///
+ /// JSON string presentation of the object
+ public virtual string ToJson()
+ {
+ return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
+ }
+
+ ///
+ /// To validate all properties of the instance
+ ///
+ /// Validation context
+ /// Validation Result
+ IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ {
+ yield break;
+ }
+ }
+
+}
diff --git a/csharp/src/aisStream/Model/StandardClassBPositionReport.cs b/csharp/src/aisStream/Model/StandardClassBPositionReport.cs
new file mode 100644
index 0000000..0edf420
--- /dev/null
+++ b/csharp/src/aisStream/Model/StandardClassBPositionReport.cs
@@ -0,0 +1,267 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using Newtonsoft.Json;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Runtime.Serialization;
+using System.Text;
+
+namespace aisStream.Model
+{
+ ///
+ /// StandardClassBPositionReport
+ ///
+ [DataContract(Name = "StandardClassBPositionReport")]
+ public partial class StandardClassBPositionReport : IValidatableObject
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ [JsonConstructorAttribute]
+ protected StandardClassBPositionReport() { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// messageID (required).
+ /// repeatIndicator (required).
+ /// userID (required).
+ /// valid (required).
+ /// spare1 (required).
+ /// sog (required).
+ /// positionAccuracy (required).
+ /// longitude (required).
+ /// latitude (required).
+ /// cog (required).
+ /// trueHeading (required).
+ /// timestamp (required).
+ /// spare2 (required).
+ /// classBUnit (required).
+ /// classBDisplay (required).
+ /// classBDsc (required).
+ /// classBBand (required).
+ /// classBMsg22 (required).
+ /// assignedMode (required).
+ /// raim (required).
+ /// communicationStateIsItdma (required).
+ /// communicationState (required).
+ public StandardClassBPositionReport(int messageID = default(int), int repeatIndicator = default(int), int userID = default(int), bool valid = default(bool), int spare1 = default(int), double sog = default(double), bool positionAccuracy = default(bool), double longitude = default(double), double latitude = default(double), double cog = default(double), int trueHeading = default(int), int timestamp = default(int), int spare2 = default(int), bool classBUnit = default(bool), bool classBDisplay = default(bool), bool classBDsc = default(bool), bool classBBand = default(bool), bool classBMsg22 = default(bool), bool assignedMode = default(bool), bool raim = default(bool), bool communicationStateIsItdma = default(bool), int communicationState = default(int))
+ {
+ this.MessageID = messageID;
+ this.RepeatIndicator = repeatIndicator;
+ this.UserID = userID;
+ this.Valid = valid;
+ this.Spare1 = spare1;
+ this.Sog = sog;
+ this.PositionAccuracy = positionAccuracy;
+ this.Longitude = longitude;
+ this.Latitude = latitude;
+ this.Cog = cog;
+ this.TrueHeading = trueHeading;
+ this.Timestamp = timestamp;
+ this.Spare2 = spare2;
+ this.ClassBUnit = classBUnit;
+ this.ClassBDisplay = classBDisplay;
+ this.ClassBDsc = classBDsc;
+ this.ClassBBand = classBBand;
+ this.ClassBMsg22 = classBMsg22;
+ this.AssignedMode = assignedMode;
+ this.Raim = raim;
+ this.CommunicationStateIsItdma = communicationStateIsItdma;
+ this.CommunicationState = communicationState;
+ }
+
+ ///
+ /// Gets or Sets MessageID
+ ///
+ [DataMember(Name = "MessageID", IsRequired = true, EmitDefaultValue = true)]
+ public int MessageID { get; set; }
+
+ ///
+ /// Gets or Sets RepeatIndicator
+ ///
+ [DataMember(Name = "RepeatIndicator", IsRequired = true, EmitDefaultValue = true)]
+ public int RepeatIndicator { get; set; }
+
+ ///
+ /// Gets or Sets UserID
+ ///
+ [DataMember(Name = "UserID", IsRequired = true, EmitDefaultValue = true)]
+ public int UserID { get; set; }
+
+ ///
+ /// Gets or Sets Valid
+ ///
+ [DataMember(Name = "Valid", IsRequired = true, EmitDefaultValue = true)]
+ public bool Valid { get; set; }
+
+ ///
+ /// Gets or Sets Spare1
+ ///
+ [DataMember(Name = "Spare1", IsRequired = true, EmitDefaultValue = true)]
+ public int Spare1 { get; set; }
+
+ ///
+ /// Gets or Sets Sog
+ ///
+ [DataMember(Name = "Sog", IsRequired = true, EmitDefaultValue = true)]
+ public double Sog { get; set; }
+
+ ///
+ /// Gets or Sets PositionAccuracy
+ ///
+ [DataMember(Name = "PositionAccuracy", IsRequired = true, EmitDefaultValue = true)]
+ public bool PositionAccuracy { get; set; }
+
+ ///
+ /// Gets or Sets Longitude
+ ///
+ [DataMember(Name = "Longitude", IsRequired = true, EmitDefaultValue = true)]
+ public double Longitude { get; set; }
+
+ ///
+ /// Gets or Sets Latitude
+ ///
+ [DataMember(Name = "Latitude", IsRequired = true, EmitDefaultValue = true)]
+ public double Latitude { get; set; }
+
+ ///
+ /// Gets or Sets Cog
+ ///
+ [DataMember(Name = "Cog", IsRequired = true, EmitDefaultValue = true)]
+ public double Cog { get; set; }
+
+ ///
+ /// Gets or Sets TrueHeading
+ ///
+ [DataMember(Name = "TrueHeading", IsRequired = true, EmitDefaultValue = true)]
+ public int TrueHeading { get; set; }
+
+ ///
+ /// Gets or Sets Timestamp
+ ///
+ [DataMember(Name = "Timestamp", IsRequired = true, EmitDefaultValue = true)]
+ public int Timestamp { get; set; }
+
+ ///
+ /// Gets or Sets Spare2
+ ///
+ [DataMember(Name = "Spare2", IsRequired = true, EmitDefaultValue = true)]
+ public int Spare2 { get; set; }
+
+ ///
+ /// Gets or Sets ClassBUnit
+ ///
+ [DataMember(Name = "ClassBUnit", IsRequired = true, EmitDefaultValue = true)]
+ public bool ClassBUnit { get; set; }
+
+ ///
+ /// Gets or Sets ClassBDisplay
+ ///
+ [DataMember(Name = "ClassBDisplay", IsRequired = true, EmitDefaultValue = true)]
+ public bool ClassBDisplay { get; set; }
+
+ ///
+ /// Gets or Sets ClassBDsc
+ ///
+ [DataMember(Name = "ClassBDsc", IsRequired = true, EmitDefaultValue = true)]
+ public bool ClassBDsc { get; set; }
+
+ ///
+ /// Gets or Sets ClassBBand
+ ///
+ [DataMember(Name = "ClassBBand", IsRequired = true, EmitDefaultValue = true)]
+ public bool ClassBBand { get; set; }
+
+ ///
+ /// Gets or Sets ClassBMsg22
+ ///
+ [DataMember(Name = "ClassBMsg22", IsRequired = true, EmitDefaultValue = true)]
+ public bool ClassBMsg22 { get; set; }
+
+ ///
+ /// Gets or Sets AssignedMode
+ ///
+ [DataMember(Name = "AssignedMode", IsRequired = true, EmitDefaultValue = true)]
+ public bool AssignedMode { get; set; }
+
+ ///
+ /// Gets or Sets Raim
+ ///
+ [DataMember(Name = "Raim", IsRequired = true, EmitDefaultValue = true)]
+ public bool Raim { get; set; }
+
+ ///
+ /// Gets or Sets CommunicationStateIsItdma
+ ///
+ [DataMember(Name = "CommunicationStateIsItdma", IsRequired = true, EmitDefaultValue = true)]
+ public bool CommunicationStateIsItdma { get; set; }
+
+ ///
+ /// Gets or Sets CommunicationState
+ ///
+ [DataMember(Name = "CommunicationState", IsRequired = true, EmitDefaultValue = true)]
+ public int CommunicationState { get; set; }
+
+ ///
+ /// Returns the string presentation of the object
+ ///
+ /// String presentation of the object
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.Append("class StandardClassBPositionReport {\n");
+ sb.Append(" MessageID: ").Append(MessageID).Append("\n");
+ sb.Append(" RepeatIndicator: ").Append(RepeatIndicator).Append("\n");
+ sb.Append(" UserID: ").Append(UserID).Append("\n");
+ sb.Append(" Valid: ").Append(Valid).Append("\n");
+ sb.Append(" Spare1: ").Append(Spare1).Append("\n");
+ sb.Append(" Sog: ").Append(Sog).Append("\n");
+ sb.Append(" PositionAccuracy: ").Append(PositionAccuracy).Append("\n");
+ sb.Append(" Longitude: ").Append(Longitude).Append("\n");
+ sb.Append(" Latitude: ").Append(Latitude).Append("\n");
+ sb.Append(" Cog: ").Append(Cog).Append("\n");
+ sb.Append(" TrueHeading: ").Append(TrueHeading).Append("\n");
+ sb.Append(" Timestamp: ").Append(Timestamp).Append("\n");
+ sb.Append(" Spare2: ").Append(Spare2).Append("\n");
+ sb.Append(" ClassBUnit: ").Append(ClassBUnit).Append("\n");
+ sb.Append(" ClassBDisplay: ").Append(ClassBDisplay).Append("\n");
+ sb.Append(" ClassBDsc: ").Append(ClassBDsc).Append("\n");
+ sb.Append(" ClassBBand: ").Append(ClassBBand).Append("\n");
+ sb.Append(" ClassBMsg22: ").Append(ClassBMsg22).Append("\n");
+ sb.Append(" AssignedMode: ").Append(AssignedMode).Append("\n");
+ sb.Append(" Raim: ").Append(Raim).Append("\n");
+ sb.Append(" CommunicationStateIsItdma: ").Append(CommunicationStateIsItdma).Append("\n");
+ sb.Append(" CommunicationState: ").Append(CommunicationState).Append("\n");
+ sb.Append("}\n");
+ return sb.ToString();
+ }
+
+ ///
+ /// Returns the JSON string presentation of the object
+ ///
+ /// JSON string presentation of the object
+ public virtual string ToJson()
+ {
+ return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
+ }
+
+ ///
+ /// To validate all properties of the instance
+ ///
+ /// Validation context
+ /// Validation Result
+ IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ {
+ yield break;
+ }
+ }
+
+}
diff --git a/csharp/src/aisStream/Model/StandardSearchAndRescueAircraftReport.cs b/csharp/src/aisStream/Model/StandardSearchAndRescueAircraftReport.cs
new file mode 100644
index 0000000..b3b7881
--- /dev/null
+++ b/csharp/src/aisStream/Model/StandardSearchAndRescueAircraftReport.cs
@@ -0,0 +1,240 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using Newtonsoft.Json;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Runtime.Serialization;
+using System.Text;
+
+namespace aisStream.Model
+{
+ ///
+ /// StandardSearchAndRescueAircraftReport
+ ///
+ [DataContract(Name = "StandardSearchAndRescueAircraftReport")]
+ public partial class StandardSearchAndRescueAircraftReport : IValidatableObject
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ [JsonConstructorAttribute]
+ protected StandardSearchAndRescueAircraftReport() { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// messageID (required).
+ /// repeatIndicator (required).
+ /// userID (required).
+ /// valid (required).
+ /// altitude (required).
+ /// sog (required).
+ /// positionAccuracy (required).
+ /// longitude (required).
+ /// latitude (required).
+ /// cog (required).
+ /// timestamp (required).
+ /// altFromBaro (required).
+ /// spare1 (required).
+ /// dte (required).
+ /// spare2 (required).
+ /// assignedMode (required).
+ /// raim (required).
+ /// communicationStateIsItdma (required).
+ /// communicationState (required).
+ public StandardSearchAndRescueAircraftReport(int messageID = default(int), int repeatIndicator = default(int), int userID = default(int), bool valid = default(bool), int altitude = default(int), double sog = default(double), bool positionAccuracy = default(bool), double longitude = default(double), double latitude = default(double), double cog = default(double), int timestamp = default(int), bool altFromBaro = default(bool), int spare1 = default(int), bool dte = default(bool), int spare2 = default(int), bool assignedMode = default(bool), bool raim = default(bool), bool communicationStateIsItdma = default(bool), int communicationState = default(int))
+ {
+ this.MessageID = messageID;
+ this.RepeatIndicator = repeatIndicator;
+ this.UserID = userID;
+ this.Valid = valid;
+ this.Altitude = altitude;
+ this.Sog = sog;
+ this.PositionAccuracy = positionAccuracy;
+ this.Longitude = longitude;
+ this.Latitude = latitude;
+ this.Cog = cog;
+ this.Timestamp = timestamp;
+ this.AltFromBaro = altFromBaro;
+ this.Spare1 = spare1;
+ this.Dte = dte;
+ this.Spare2 = spare2;
+ this.AssignedMode = assignedMode;
+ this.Raim = raim;
+ this.CommunicationStateIsItdma = communicationStateIsItdma;
+ this.CommunicationState = communicationState;
+ }
+
+ ///
+ /// Gets or Sets MessageID
+ ///
+ [DataMember(Name = "MessageID", IsRequired = true, EmitDefaultValue = true)]
+ public int MessageID { get; set; }
+
+ ///
+ /// Gets or Sets RepeatIndicator
+ ///
+ [DataMember(Name = "RepeatIndicator", IsRequired = true, EmitDefaultValue = true)]
+ public int RepeatIndicator { get; set; }
+
+ ///
+ /// Gets or Sets UserID
+ ///
+ [DataMember(Name = "UserID", IsRequired = true, EmitDefaultValue = true)]
+ public int UserID { get; set; }
+
+ ///
+ /// Gets or Sets Valid
+ ///
+ [DataMember(Name = "Valid", IsRequired = true, EmitDefaultValue = true)]
+ public bool Valid { get; set; }
+
+ ///
+ /// Gets or Sets Altitude
+ ///
+ [DataMember(Name = "Altitude", IsRequired = true, EmitDefaultValue = true)]
+ public int Altitude { get; set; }
+
+ ///
+ /// Gets or Sets Sog
+ ///
+ [DataMember(Name = "Sog", IsRequired = true, EmitDefaultValue = true)]
+ public double Sog { get; set; }
+
+ ///
+ /// Gets or Sets PositionAccuracy
+ ///
+ [DataMember(Name = "PositionAccuracy", IsRequired = true, EmitDefaultValue = true)]
+ public bool PositionAccuracy { get; set; }
+
+ ///
+ /// Gets or Sets Longitude
+ ///
+ [DataMember(Name = "Longitude", IsRequired = true, EmitDefaultValue = true)]
+ public double Longitude { get; set; }
+
+ ///
+ /// Gets or Sets Latitude
+ ///
+ [DataMember(Name = "Latitude", IsRequired = true, EmitDefaultValue = true)]
+ public double Latitude { get; set; }
+
+ ///
+ /// Gets or Sets Cog
+ ///
+ [DataMember(Name = "Cog", IsRequired = true, EmitDefaultValue = true)]
+ public double Cog { get; set; }
+
+ ///
+ /// Gets or Sets Timestamp
+ ///
+ [DataMember(Name = "Timestamp", IsRequired = true, EmitDefaultValue = true)]
+ public int Timestamp { get; set; }
+
+ ///
+ /// Gets or Sets AltFromBaro
+ ///
+ [DataMember(Name = "AltFromBaro", IsRequired = true, EmitDefaultValue = true)]
+ public bool AltFromBaro { get; set; }
+
+ ///
+ /// Gets or Sets Spare1
+ ///
+ [DataMember(Name = "Spare1", IsRequired = true, EmitDefaultValue = true)]
+ public int Spare1 { get; set; }
+
+ ///
+ /// Gets or Sets Dte
+ ///
+ [DataMember(Name = "Dte", IsRequired = true, EmitDefaultValue = true)]
+ public bool Dte { get; set; }
+
+ ///
+ /// Gets or Sets Spare2
+ ///
+ [DataMember(Name = "Spare2", IsRequired = true, EmitDefaultValue = true)]
+ public int Spare2 { get; set; }
+
+ ///
+ /// Gets or Sets AssignedMode
+ ///
+ [DataMember(Name = "AssignedMode", IsRequired = true, EmitDefaultValue = true)]
+ public bool AssignedMode { get; set; }
+
+ ///
+ /// Gets or Sets Raim
+ ///
+ [DataMember(Name = "Raim", IsRequired = true, EmitDefaultValue = true)]
+ public bool Raim { get; set; }
+
+ ///
+ /// Gets or Sets CommunicationStateIsItdma
+ ///
+ [DataMember(Name = "CommunicationStateIsItdma", IsRequired = true, EmitDefaultValue = true)]
+ public bool CommunicationStateIsItdma { get; set; }
+
+ ///
+ /// Gets or Sets CommunicationState
+ ///
+ [DataMember(Name = "CommunicationState", IsRequired = true, EmitDefaultValue = true)]
+ public int CommunicationState { get; set; }
+
+ ///
+ /// Returns the string presentation of the object
+ ///
+ /// String presentation of the object
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.Append("class StandardSearchAndRescueAircraftReport {\n");
+ sb.Append(" MessageID: ").Append(MessageID).Append("\n");
+ sb.Append(" RepeatIndicator: ").Append(RepeatIndicator).Append("\n");
+ sb.Append(" UserID: ").Append(UserID).Append("\n");
+ sb.Append(" Valid: ").Append(Valid).Append("\n");
+ sb.Append(" Altitude: ").Append(Altitude).Append("\n");
+ sb.Append(" Sog: ").Append(Sog).Append("\n");
+ sb.Append(" PositionAccuracy: ").Append(PositionAccuracy).Append("\n");
+ sb.Append(" Longitude: ").Append(Longitude).Append("\n");
+ sb.Append(" Latitude: ").Append(Latitude).Append("\n");
+ sb.Append(" Cog: ").Append(Cog).Append("\n");
+ sb.Append(" Timestamp: ").Append(Timestamp).Append("\n");
+ sb.Append(" AltFromBaro: ").Append(AltFromBaro).Append("\n");
+ sb.Append(" Spare1: ").Append(Spare1).Append("\n");
+ sb.Append(" Dte: ").Append(Dte).Append("\n");
+ sb.Append(" Spare2: ").Append(Spare2).Append("\n");
+ sb.Append(" AssignedMode: ").Append(AssignedMode).Append("\n");
+ sb.Append(" Raim: ").Append(Raim).Append("\n");
+ sb.Append(" CommunicationStateIsItdma: ").Append(CommunicationStateIsItdma).Append("\n");
+ sb.Append(" CommunicationState: ").Append(CommunicationState).Append("\n");
+ sb.Append("}\n");
+ return sb.ToString();
+ }
+
+ ///
+ /// Returns the JSON string presentation of the object
+ ///
+ /// JSON string presentation of the object
+ public virtual string ToJson()
+ {
+ return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
+ }
+
+ ///
+ /// To validate all properties of the instance
+ ///
+ /// Validation context
+ /// Validation Result
+ IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ {
+ yield break;
+ }
+ }
+
+}
diff --git a/csharp/src/aisStream/Model/StaticDataReport.cs b/csharp/src/aisStream/Model/StaticDataReport.cs
new file mode 100644
index 0000000..93b42fd
--- /dev/null
+++ b/csharp/src/aisStream/Model/StaticDataReport.cs
@@ -0,0 +1,152 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Runtime.Serialization;
+using System.Text;
+
+namespace aisStream.Model
+{
+ ///
+ /// StaticDataReport
+ ///
+ [DataContract(Name = "StaticDataReport")]
+ public partial class StaticDataReport : IValidatableObject
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ [JsonConstructorAttribute]
+ protected StaticDataReport() { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// messageID (required).
+ /// repeatIndicator (required).
+ /// userID (required).
+ /// valid (required).
+ /// reserved (required).
+ /// partNumber (required).
+ /// reportA (required).
+ /// reportB (required).
+ public StaticDataReport(int messageID = default(int), int repeatIndicator = default(int), int userID = default(int), bool valid = default(bool), int reserved = default(int), bool partNumber = default(bool), StaticDataReportReportA reportA = default(StaticDataReportReportA), StaticDataReportReportB reportB = default(StaticDataReportReportB))
+ {
+ this.MessageID = messageID;
+ this.RepeatIndicator = repeatIndicator;
+ this.UserID = userID;
+ this.Valid = valid;
+ this.Reserved = reserved;
+ this.PartNumber = partNumber;
+ // to ensure "reportA" is required (not null)
+ if (reportA == null)
+ {
+ throw new ArgumentNullException("reportA is a required property for StaticDataReport and cannot be null");
+ }
+ this.ReportA = reportA;
+ // to ensure "reportB" is required (not null)
+ if (reportB == null)
+ {
+ throw new ArgumentNullException("reportB is a required property for StaticDataReport and cannot be null");
+ }
+ this.ReportB = reportB;
+ }
+
+ ///
+ /// Gets or Sets MessageID
+ ///
+ [DataMember(Name = "MessageID", IsRequired = true, EmitDefaultValue = true)]
+ public int MessageID { get; set; }
+
+ ///
+ /// Gets or Sets RepeatIndicator
+ ///
+ [DataMember(Name = "RepeatIndicator", IsRequired = true, EmitDefaultValue = true)]
+ public int RepeatIndicator { get; set; }
+
+ ///
+ /// Gets or Sets UserID
+ ///
+ [DataMember(Name = "UserID", IsRequired = true, EmitDefaultValue = true)]
+ public int UserID { get; set; }
+
+ ///
+ /// Gets or Sets Valid
+ ///
+ [DataMember(Name = "Valid", IsRequired = true, EmitDefaultValue = true)]
+ public bool Valid { get; set; }
+
+ ///
+ /// Gets or Sets Reserved
+ ///
+ [DataMember(Name = "Reserved", IsRequired = true, EmitDefaultValue = true)]
+ public int Reserved { get; set; }
+
+ ///
+ /// Gets or Sets PartNumber
+ ///
+ [DataMember(Name = "PartNumber", IsRequired = true, EmitDefaultValue = true)]
+ public bool PartNumber { get; set; }
+
+ ///
+ /// Gets or Sets ReportA
+ ///
+ [DataMember(Name = "ReportA", IsRequired = true, EmitDefaultValue = true)]
+ public StaticDataReportReportA ReportA { get; set; }
+
+ ///
+ /// Gets or Sets ReportB
+ ///
+ [DataMember(Name = "ReportB", IsRequired = true, EmitDefaultValue = true)]
+ public StaticDataReportReportB ReportB { get; set; }
+
+ ///
+ /// Returns the string presentation of the object
+ ///
+ /// String presentation of the object
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.Append("class StaticDataReport {\n");
+ sb.Append(" MessageID: ").Append(MessageID).Append("\n");
+ sb.Append(" RepeatIndicator: ").Append(RepeatIndicator).Append("\n");
+ sb.Append(" UserID: ").Append(UserID).Append("\n");
+ sb.Append(" Valid: ").Append(Valid).Append("\n");
+ sb.Append(" Reserved: ").Append(Reserved).Append("\n");
+ sb.Append(" PartNumber: ").Append(PartNumber).Append("\n");
+ sb.Append(" ReportA: ").Append(ReportA).Append("\n");
+ sb.Append(" ReportB: ").Append(ReportB).Append("\n");
+ sb.Append("}\n");
+ return sb.ToString();
+ }
+
+ ///
+ /// Returns the JSON string presentation of the object
+ ///
+ /// JSON string presentation of the object
+ public virtual string ToJson()
+ {
+ return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
+ }
+
+ ///
+ /// To validate all properties of the instance
+ ///
+ /// Validation context
+ /// Validation Result
+ IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ {
+ yield break;
+ }
+ }
+
+}
diff --git a/csharp/src/aisStream/Model/StaticDataReportReportA.cs b/csharp/src/aisStream/Model/StaticDataReportReportA.cs
new file mode 100644
index 0000000..d0feb84
--- /dev/null
+++ b/csharp/src/aisStream/Model/StaticDataReportReportA.cs
@@ -0,0 +1,93 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Runtime.Serialization;
+using System.Text;
+
+namespace aisStream.Model
+{
+ ///
+ /// StaticDataReportReportA
+ ///
+ [DataContract(Name = "StaticDataReport_ReportA")]
+ public partial class StaticDataReportReportA : IValidatableObject
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ [JsonConstructorAttribute]
+ protected StaticDataReportReportA() { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// valid (required).
+ /// name (required).
+ public StaticDataReportReportA(bool valid = default(bool), string name = default(string))
+ {
+ this.Valid = valid;
+ // to ensure "name" is required (not null)
+ if (name == null)
+ {
+ throw new ArgumentNullException("name is a required property for StaticDataReportReportA and cannot be null");
+ }
+ this.Name = name;
+ }
+
+ ///
+ /// Gets or Sets Valid
+ ///
+ [DataMember(Name = "Valid", IsRequired = true, EmitDefaultValue = true)]
+ public bool Valid { get; set; }
+
+ ///
+ /// Gets or Sets Name
+ ///
+ [DataMember(Name = "Name", IsRequired = true, EmitDefaultValue = true)]
+ public string Name { get; set; }
+
+ ///
+ /// Returns the string presentation of the object
+ ///
+ /// String presentation of the object
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.Append("class StaticDataReportReportA {\n");
+ sb.Append(" Valid: ").Append(Valid).Append("\n");
+ sb.Append(" Name: ").Append(Name).Append("\n");
+ sb.Append("}\n");
+ return sb.ToString();
+ }
+
+ ///
+ /// Returns the JSON string presentation of the object
+ ///
+ /// JSON string presentation of the object
+ public virtual string ToJson()
+ {
+ return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
+ }
+
+ ///
+ /// To validate all properties of the instance
+ ///
+ /// Validation context
+ /// Validation Result
+ IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ {
+ yield break;
+ }
+ }
+
+}
diff --git a/csharp/src/aisStream/Model/StaticDataReportReportB.cs b/csharp/src/aisStream/Model/StaticDataReportReportB.cs
new file mode 100644
index 0000000..d877f04
--- /dev/null
+++ b/csharp/src/aisStream/Model/StaticDataReportReportB.cs
@@ -0,0 +1,166 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Runtime.Serialization;
+using System.Text;
+
+namespace aisStream.Model
+{
+ ///
+ /// StaticDataReportReportB
+ ///
+ [DataContract(Name = "StaticDataReport_ReportB")]
+ public partial class StaticDataReportReportB : IValidatableObject
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ [JsonConstructorAttribute]
+ protected StaticDataReportReportB() { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// valid (required).
+ /// shipType (required).
+ /// vendorIDName (required).
+ /// venderIDModel (required).
+ /// venderIDSerial (required).
+ /// callSign (required).
+ /// dimension (required).
+ /// fixType (required).
+ /// spare (required).
+ public StaticDataReportReportB(bool valid = default(bool), int shipType = default(int), string vendorIDName = default(string), int venderIDModel = default(int), int venderIDSerial = default(int), string callSign = default(string), ShipStaticDataDimension dimension = default(ShipStaticDataDimension), int fixType = default(int), int spare = default(int))
+ {
+ this.Valid = valid;
+ this.ShipType = shipType;
+ // to ensure "vendorIDName" is required (not null)
+ if (vendorIDName == null)
+ {
+ throw new ArgumentNullException("vendorIDName is a required property for StaticDataReportReportB and cannot be null");
+ }
+ this.VendorIDName = vendorIDName;
+ this.VenderIDModel = venderIDModel;
+ this.VenderIDSerial = venderIDSerial;
+ // to ensure "callSign" is required (not null)
+ if (callSign == null)
+ {
+ throw new ArgumentNullException("callSign is a required property for StaticDataReportReportB and cannot be null");
+ }
+ this.CallSign = callSign;
+ // to ensure "dimension" is required (not null)
+ if (dimension == null)
+ {
+ throw new ArgumentNullException("dimension is a required property for StaticDataReportReportB and cannot be null");
+ }
+ this.Dimension = dimension;
+ this.FixType = fixType;
+ this.Spare = spare;
+ }
+
+ ///
+ /// Gets or Sets Valid
+ ///
+ [DataMember(Name = "Valid", IsRequired = true, EmitDefaultValue = true)]
+ public bool Valid { get; set; }
+
+ ///
+ /// Gets or Sets ShipType
+ ///
+ [DataMember(Name = "ShipType", IsRequired = true, EmitDefaultValue = true)]
+ public int ShipType { get; set; }
+
+ ///
+ /// Gets or Sets VendorIDName
+ ///
+ [DataMember(Name = "VendorIDName", IsRequired = true, EmitDefaultValue = true)]
+ public string VendorIDName { get; set; }
+
+ ///
+ /// Gets or Sets VenderIDModel
+ ///
+ [DataMember(Name = "VenderIDModel", IsRequired = true, EmitDefaultValue = true)]
+ public int VenderIDModel { get; set; }
+
+ ///
+ /// Gets or Sets VenderIDSerial
+ ///
+ [DataMember(Name = "VenderIDSerial", IsRequired = true, EmitDefaultValue = true)]
+ public int VenderIDSerial { get; set; }
+
+ ///
+ /// Gets or Sets CallSign
+ ///
+ [DataMember(Name = "CallSign", IsRequired = true, EmitDefaultValue = true)]
+ public string CallSign { get; set; }
+
+ ///
+ /// Gets or Sets Dimension
+ ///
+ [DataMember(Name = "Dimension", IsRequired = true, EmitDefaultValue = true)]
+ public ShipStaticDataDimension Dimension { get; set; }
+
+ ///
+ /// Gets or Sets FixType
+ ///
+ [DataMember(Name = "FixType", IsRequired = true, EmitDefaultValue = true)]
+ public int FixType { get; set; }
+
+ ///
+ /// Gets or Sets Spare
+ ///
+ [DataMember(Name = "Spare", IsRequired = true, EmitDefaultValue = true)]
+ public int Spare { get; set; }
+
+ ///
+ /// Returns the string presentation of the object
+ ///
+ /// String presentation of the object
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.Append("class StaticDataReportReportB {\n");
+ sb.Append(" Valid: ").Append(Valid).Append("\n");
+ sb.Append(" ShipType: ").Append(ShipType).Append("\n");
+ sb.Append(" VendorIDName: ").Append(VendorIDName).Append("\n");
+ sb.Append(" VenderIDModel: ").Append(VenderIDModel).Append("\n");
+ sb.Append(" VenderIDSerial: ").Append(VenderIDSerial).Append("\n");
+ sb.Append(" CallSign: ").Append(CallSign).Append("\n");
+ sb.Append(" Dimension: ").Append(Dimension).Append("\n");
+ sb.Append(" FixType: ").Append(FixType).Append("\n");
+ sb.Append(" Spare: ").Append(Spare).Append("\n");
+ sb.Append("}\n");
+ return sb.ToString();
+ }
+
+ ///
+ /// Returns the JSON string presentation of the object
+ ///
+ /// JSON string presentation of the object
+ public virtual string ToJson()
+ {
+ return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
+ }
+
+ ///
+ /// To validate all properties of the instance
+ ///
+ /// Validation context
+ /// Validation Result
+ IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ {
+ yield break;
+ }
+ }
+
+}
diff --git a/csharp/src/aisStream/Model/SubscriptionMessage.cs b/csharp/src/aisStream/Model/SubscriptionMessage.cs
new file mode 100644
index 0000000..4c903f6
--- /dev/null
+++ b/csharp/src/aisStream/Model/SubscriptionMessage.cs
@@ -0,0 +1,116 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Runtime.Serialization;
+using System.Text;
+
+namespace aisStream.Model
+{
+ ///
+ /// SubscriptionMessage
+ ///
+ [DataContract(Name = "SubscriptionMessage")]
+ public partial class SubscriptionMessage : IValidatableObject
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ [JsonConstructorAttribute]
+ protected SubscriptionMessage() { }
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// aPIKey (required).
+ /// boundingBoxes (required).
+ /// filtersShipMMSI.
+ /// filterMessageTypes.
+ public SubscriptionMessage(string aPIKey = default(string), List>> boundingBoxes = default(List>>), List filtersShipMMSI = default(List), List filterMessageTypes = default(List))
+ {
+ // to ensure "aPIKey" is required (not null)
+ if (aPIKey == null)
+ {
+ throw new ArgumentNullException("aPIKey is a required property for SubscriptionMessage and cannot be null");
+ }
+ this.APIKey = aPIKey;
+ // to ensure "boundingBoxes" is required (not null)
+ if (boundingBoxes == null)
+ {
+ throw new ArgumentNullException("boundingBoxes is a required property for SubscriptionMessage and cannot be null");
+ }
+ this.BoundingBoxes = boundingBoxes;
+ this.FiltersShipMMSI = filtersShipMMSI;
+ this.FilterMessageTypes = filterMessageTypes;
+ }
+
+ ///
+ /// Gets or Sets APIKey
+ ///
+ [DataMember(Name = "APIKey", IsRequired = true, EmitDefaultValue = true)]
+ public string APIKey { get; set; }
+
+ ///
+ /// Gets or Sets BoundingBoxes
+ ///
+ [DataMember(Name = "BoundingBoxes", IsRequired = true, EmitDefaultValue = true)]
+ public List>> BoundingBoxes { get; set; }
+
+ ///
+ /// Gets or Sets FiltersShipMMSI
+ ///
+ [DataMember(Name = "FiltersShipMMSI", EmitDefaultValue = false)]
+ public List FiltersShipMMSI { get; set; }
+
+ ///
+ /// Gets or Sets FilterMessageTypes
+ ///
+ [DataMember(Name = "FilterMessageTypes", EmitDefaultValue = false)]
+ public List FilterMessageTypes { get; set; }
+
+ ///
+ /// Returns the string presentation of the object
+ ///
+ /// String presentation of the object
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.Append("class SubscriptionMessage {\n");
+ sb.Append(" APIKey: ").Append(APIKey).Append("\n");
+ sb.Append(" BoundingBoxes: ").Append(BoundingBoxes).Append("\n");
+ sb.Append(" FiltersShipMMSI: ").Append(FiltersShipMMSI).Append("\n");
+ sb.Append(" FilterMessageTypes: ").Append(FilterMessageTypes).Append("\n");
+ sb.Append("}\n");
+ return sb.ToString();
+ }
+
+ ///
+ /// Returns the JSON string presentation of the object
+ ///
+ /// JSON string presentation of the object
+ public virtual string ToJson()
+ {
+ return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
+ }
+
+ ///
+ /// To validate all properties of the instance
+ ///
+ /// Validation context
+ /// Validation Result
+ IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ {
+ yield break;
+ }
+ }
+
+}
diff --git a/csharp/src/aisStream/Model/UnknownMessage.cs b/csharp/src/aisStream/Model/UnknownMessage.cs
new file mode 100644
index 0000000..fa5ea08
--- /dev/null
+++ b/csharp/src/aisStream/Model/UnknownMessage.cs
@@ -0,0 +1,72 @@
+/*
+ * Ais-Stream WebsocketObjects
+ *
+ * OpenAPI 3.0 definitions for the data models used by aisstream.io.
+ *
+ * The version of the OpenAPI document: 1.0.0
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
+
+
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Runtime.Serialization;
+using System.Text;
+
+namespace aisStream.Model
+{
+ ///
+ /// UnknownMessage
+ ///
+ [DataContract(Name = "UnknownMessage")]
+ public partial class UnknownMessage : IValidatableObject
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// error.
+ public UnknownMessage(string error = default(string))
+ {
+ this.Error = error;
+ }
+
+ ///
+ /// Gets or Sets Error
+ ///
+ [DataMember(Name = "Error", EmitDefaultValue = false)]
+ public string Error { get; set; }
+
+ ///
+ /// Returns the string presentation of the object
+ ///
+ /// String presentation of the object
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.Append("class UnknownMessage {\n");
+ sb.Append(" Error: ").Append(Error).Append("\n");
+ sb.Append("}\n");
+ return sb.ToString();
+ }
+
+ ///
+ /// Returns the JSON string presentation of the object
+ ///
+ /// JSON string presentation of the object
+ public virtual string ToJson()
+ {
+ return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
+ }
+
+ ///
+ /// To validate all properties of the instance
+ ///
+ /// Validation context
+ /// Validation Result
+ IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ {
+ yield break;
+ }
+ }
+
+}
diff --git a/csharp/src/aisStream/aisStream.csproj b/csharp/src/aisStream/aisStream.csproj
new file mode 100644
index 0000000..b2b5ef4
--- /dev/null
+++ b/csharp/src/aisStream/aisStream.csproj
@@ -0,0 +1,13 @@
+
+
+
+ netstandard2.1
+ Library
+ 1.0.0
+
+
+
+
+
+
+