changeset 5608:df40d55f7c9a erdms2

Added new ERDMS 2 service.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Mon, 31 Oct 2022 17:03:34 +0100
parents f2b51ac3d5cf
children e1936db6db8e
files pkg/soap/erdms2/service.go
diffstat 1 files changed, 1858 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pkg/soap/erdms2/service.go	Mon Oct 31 17:03:34 2022 +0100
@@ -0,0 +1,1858 @@
+// This is Free Software under GNU Affero General Public License v >= 3.0
+// without warranty, see README.md and license for details.
+//
+// SPDX-License-Identifier: AGPL-3.0-or-later
+// License-Filename: LICENSES/AGPL-3.0.txt
+//
+// Copyright (C) 2018 by via donau
+//   – Österreichische Wasserstraßen-Gesellschaft mbH
+// Software engineering by Intevation GmbH
+//
+// Author(s):
+//  * Sascha L. Teichmann <sascha.teichmann@intevation.de>
+
+package erdms2
+
+import (
+	"context"
+	"encoding/xml"
+
+	"gemma.intevation.de/gemma/pkg/soap"
+)
+
+type AnyType struct {
+	InnerXML string `xml:",innerxml"`
+}
+
+type AnyURI string
+
+type NCName string
+
+// adn (dgs goods) internal adn code (unnr + seqnr: to
+// make each adn good unique)
+//
+
+type AdnCodeType string
+
+// adn class and classifications codes
+//
+
+type AdnClassType string
+
+type AdnClassIfType string
+
+type AdnImoClassType string
+
+// adn (dgs) labels applicable for a dgs good
+//
+
+type AdnLabelType string
+
+// adn aquatic toxicity, tanker transports (indication
+// for dgs, usuallly liquids)
+//
+
+type AquaticToxicityType string
+
+// Older CBS (number) code (3 digits) use by
+// statistics organisations (backw comp) but replaced by newer iso 3166
+// (2 letters).
+//
+
+type CbscountryCodeType string
+
+// adn chemical stability (indication), tanker
+// transports
+//
+
+type ChemicalStabilityType string
+
+// adn CMR properties (tanker transports)
+//
+
+type CmrPropertyType string
+
+// iso 6346 container type (code)
+
+type ContIdType string
+
+// containertype textual description
+//
+
+type ContNameType string
+
+// indication (flag) wheater shiptype code is a single
+// ship or a transport combination
+//
+
+type CombinationFlagType bool
+
+// Country iso 3166 code (2 alpha)
+
+type CountryCodeType string
+
+// Country iso 3166 code (3 alpha)
+
+type CountryCode3Type string
+
+// Countryname type (name of the country)
+//
+
+type CountryNameType string
+
+// Country iso 3166 numcode (3 digits)
+//
+
+type CountryIsoNumType string
+
+// techn directive craft type code (eu hull db)
+//
+
+type CraftTypeType string
+
+// inland cones 0,1,2,3,V (as used for DGS goods and
+// cones calculations)
+//
+
+type ConesType string
+
+const (
+	ConesType0 ConesType = "0"
+
+	ConesType1 ConesType = "1"
+
+	ConesType2 ConesType = "2"
+
+	ConesType3 ConesType = "3"
+
+	ConesTypeV ConesType = "V"
+)
+
+// dimension type (length, width, draught etc) in [cm]
+// (no decimals)
+//
+
+type DimType int64
+
+// older 2 digit dvk shiptype code (replaced by unrec)
+//
+
+type DvkTypeType string
+
+// record erased (not actual anymore) flag type
+//
+
+type ErasedType bool
+
+// eri location code type as used for eri_locations
+//
+
+type ErilocCodeType string
+
+// eri location name type as used in eri_locations
+//
+
+type ErilocNameType string
+
+// flags 0,B,V (dang goods indication seagoing
+// vessels)
+//
+
+type FlagsType string
+
+const (
+	FlagsType0 FlagsType = "0"
+
+	FlagsTypeB FlagsType = "B"
+
+	FlagsTypeV FlagsType = "V"
+)
+
+// adn floater or sinker (indication), tanker
+// transports
+//
+
+type FloatersinkerType string
+
+// fairway code (text)
+
+type FwCodeType string
+
+// ADN dangerous goodnames, description
+//
+
+type AdnCodeNameType string
+
+// non-dangerous goodnames, description
+//
+
+type HsCodeNameType string
+
+// ADN dangerous good synonym name,description
+//
+
+type GoodSynType string
+
+// HS code as used by customs
+
+type HsCodeType string
+
+// hectometre code (hectomere in [hm] (no decimals) on
+// the fairway)
+//
+
+type KmCodeType string
+
+// lastupdate, last modification date time of this
+// record
+//
+
+type LastupdateType soap.XSDDateTime
+
+// one of the supported languages (basic and
+// additional set), based on ISO 639-1
+//
+
+type LangType string
+
+const (
+	LangTypeEmptyString LangType = "%%"
+
+	LangTypeLc LangType = "lc"
+
+	LangTypeNl LangType = "nl"
+
+	LangTypeDe LangType = "de"
+
+	LangTypeFr LangType = "fr"
+
+	LangTypeEn LangType = "en"
+
+	LangTypeBg LangType = "bg"
+
+	LangTypeCs LangType = "cs"
+
+	LangTypeDa LangType = "da"
+
+	LangTypeEl LangType = "el"
+
+	LangTypeEs LangType = "es"
+
+	LangTypeEt LangType = "et"
+
+	LangTypeFi LangType = "fi"
+
+	LangTypeHu LangType = "hu"
+
+	LangTypeIt LangType = "it"
+
+	LangTypeLt LangType = "lt"
+
+	LangTypeLv LangType = "lv"
+
+	LangTypePl LangType = "pl"
+
+	LangTypePt LangType = "pt"
+
+	LangTypeRo LangType = "ro"
+
+	LangTypeSk LangType = "sk"
+
+	LangTypeSl LangType = "sl"
+
+	LangTypeSv LangType = "sv"
+
+	LangTypeHr LangType = "hr"
+
+	LangTypeRu LangType = "ru"
+
+	LangTypeSr LangType = "sr"
+)
+
+// lat long (WGS decimal [.] coordinates) coordinate
+// type
+//
+
+type LatlonType float64
+
+// un locode (2 country + 3 location code)
+//
+
+type LoCodeType string
+
+// Number of possible (departure) exist (routes) for a
+// location
+//
+
+type LocExitsType int32
+
+type LocExitsCodeType string
+
+type LocSbbLoCodeType string
+
+type LocSbbCodeType string
+
+// location type, terminal type (a number indicating
+// type of location,terminal)
+//
+
+type LocTypeType int32
+
+// lloyds flag code for a certain country (seagoing)
+//
+
+type LloydsflagType string
+
+// NST code (corresponing nst2007 EU statistics codes
+// for goods).
+//
+
+type NstCodeType string
+
+// NtS (Notices to Skippers) code/Value datatype
+//
+
+type NtsCodeType string
+
+// NtS name/description (belonging to a ntsCode)
+// datatype
+//
+
+type NtsNameType string
+
+// NtS subtype (sub data type, there are several nts
+// tables)
+//
+
+type NtstypeType string
+
+// ADN dangerous good packing group I, II, III
+//
+
+type PackGrpType string
+
+// UN rec 21 inner package code
+
+type PackIdType string
+
+// Un rec 21 inner package name/description
+//
+
+type PackNameType string
+
+type IvsType string
+
+// VTS/IVS code = Provider ID active in certain area
+// and acting as a reporting point = receiving system (when departing
+// from that location)
+//
+
+type ProviderIdType string
+
+type IvsNameType string
+
+type IvsTermType string
+
+type IvsReportType bool
+
+// quay type (terminals), indicating quay nrs/id's
+//
+
+type QuayType string
+
+// record counter (nr of records available or in a
+// set)
+//
+
+type RecCountType int64
+
+// reftype Type (reftool data reftype, such as:
+// risidx, eri_location, eri_hscode, nts_data)
+//
+
+type ReftypeType string
+
+const (
+	ReftypeTypeRis_idx ReftypeType = "ris_idx"
+
+	ReftypeTypeEri_location ReftypeType = "eri_location"
+
+	ReftypeTypeEri_hscode ReftypeType = "eri_hscode"
+
+	ReftypeTypeEri_adncode ReftypeType = "eri_adncode"
+
+	ReftypeTypeEri_conttype ReftypeType = "eri_conttype"
+
+	ReftypeTypeEri_packtype ReftypeType = "eri_packtype"
+
+	ReftypeTypeEri_shiptype ReftypeType = "eri_shiptype"
+
+	ReftypeTypeEri_country ReftypeType = "eri_country"
+
+	ReftypeTypeEri_error_code_erirsp ReftypeType = "eri_error_code_erirsp"
+
+	ReftypeTypeNts_barrage ReftypeType = "nts_barrage"
+
+	ReftypeTypeNts_communication ReftypeType = "nts_communication"
+
+	ReftypeTypeNts_country ReftypeType = "nts_country"
+
+	ReftypeTypeNts_dimension_code ReftypeType = "nts_dimension_code"
+
+	ReftypeTypeNts_direction ReftypeType = "nts_direction"
+
+	ReftypeTypeNts_direction_max ReftypeType = "nts_direction_max"
+
+	ReftypeTypeNts_direction_min ReftypeType = "nts_direction_min"
+
+	ReftypeTypeNts_gui_labels ReftypeType = "nts_gui_labels"
+
+	ReftypeTypeNts_ice_accessibility ReftypeType = "nts_ice_accessibility"
+
+	ReftypeTypeNts_ice_condition ReftypeType = "nts_ice_condition"
+
+	ReftypeTypeNts_ice_classification ReftypeType = "nts_ice_classification"
+
+	ReftypeTypeNts_ice_situation ReftypeType = "nts_ice_situation"
+
+	ReftypeTypeNts_indication ReftypeType = "nts_indication"
+
+	ReftypeTypeNts_interval ReftypeType = "nts_interval"
+
+	ReftypeTypeNts_language ReftypeType = "nts_language"
+
+	ReftypeTypeNts_limitation ReftypeType = "nts_limitation"
+
+	ReftypeTypeNts_measure ReftypeType = "nts_measure"
+
+	ReftypeTypeNts_position ReftypeType = "nts_position"
+
+	ReftypeTypeNts_reason ReftypeType = "nts_reason"
+
+	ReftypeTypeNts_reference ReftypeType = "nts_reference"
+
+	ReftypeTypeNts_regime ReftypeType = "nts_regime"
+
+	ReftypeTypeNts_reporting ReftypeType = "nts_reporting"
+
+	ReftypeTypeNts_subject ReftypeType = "nts_subject"
+
+	ReftypeTypeNts_tag ReftypeType = "nts_tag"
+
+	ReftypeTypeNts_target_group ReftypeType = "nts_target_group"
+
+	ReftypeTypeNts_type ReftypeType = "nts_type"
+
+	ReftypeTypeNts_weather_category ReftypeType = "nts_weather_category"
+
+	ReftypeTypeNts_weather_class ReftypeType = "nts_weather_class"
+
+	ReftypeTypeNts_weather_direction ReftypeType = "nts_weather_direction"
+
+	ReftypeTypeNts_weather_item ReftypeType = "nts_weather_item"
+)
+
+// RefData record version numbering (automaically,
+// starts with 1 and increments on updates, requesting version 0=dont
+// care)
+//
+
+type RefrecVersionType int64
+
+// remarks string (remarks about the maintance of a
+// record or any other remarks)
+//
+
+type RemarksType string
+
+// return status info string
+
+type ReturnStatusType string
+
+// ris idx applicability from / to km (in hectometres
+// (no decimals))
+//
+
+type RisapplikmType int64
+
+// ris index (ISRS) code type (full ris index code)
+//
+
+type RisCodeType string
+
+// ris idx communication information TXTDSC
+//
+
+type RiscomminfoType string
+
+// ris idx category of time schedule (cattab)
+//
+
+type RiscatoftimeschedType string
+
+// ris idx for ship type
+
+type RisforshiptypeType string
+
+// ris idx national Gauge Code type (can be utilised
+// to store any national coding/id/link for gauges)
+//
+
+type RisgaugeidType string
+
+// ris idx geod reference
+
+type RisgeodrefType string
+
+// ris idx link to external XML file
+//
+
+type RislinkextxmlType string
+
+// locationames as used in the ris index
+//
+
+type RislocNameType string
+
+// ris idx object code type (single code for a
+// junction, termcode etc padded), subpart of the ris idx.
+//
+
+type RisobjCodeType string
+
+// ris idx object function code type (junction, berths
+// etc)
+//
+
+type RisobjfuncType string
+
+// ris idx position on the fairway code
+//
+
+type RispostionCodeType string
+
+// ris idx related ENC's type as used in ris idx (list
+// of ENC id's)
+//
+
+type RisrelencType string
+
+// route names, descriptions as used in the ris index
+//
+
+type RisrouteNameType string
+
+// ris idx section node id
+
+type RissectnodeType string
+
+// ris idx reference level code (indicating the ref
+// level)
+//
+
+type RisreflevelcodeType string
+
+// ris idx reference level value [cm]
+//
+
+type RisreflevelvalueType int64
+
+// ris idx use of ship useshp
+
+type RisuseofshipType string
+
+// ris idx zero point [cm]
+
+type RiszeropointType int64
+
+// UNrec 28 shiptype (4 digits)
+
+type ShipTypeType string
+
+// shiptype name (textual) description
+//
+
+type ShiptypeNameType string
+
+// source string, to specify the source of this
+// record/data or the update.
+//
+
+type SourceType string
+
+// ADN signal code (to group dgs for cones/flags
+// calculations)
+//
+
+type SignalCodeType string
+
+// terminal code type (remark: termcode is the only
+// part of eri locs with variable length, historical reasons).
+//
+
+type TermCodeType string
+
+// unlocode countrycode part (first 2 of unlocode) as
+// used in ris idx
+//
+
+type UnlocCCType string
+
+// unlocode location code part (last 3 of unlocode) as
+// used in ris idx
+//
+
+type UnlocLCType string
+
+// UN nr (4 digits) adn nr for identifying ADN
+// dangerous goods (according CCNR)
+//
+
+type UnnrType string
+
+// Username which makes the call
+//
+
+type UserNameType string
+
+// cargo weight type, integer nr (units [tons], [kg])
+// depending on element)
+//
+
+type WeightType int64
+
+// adn warning (dgs) card id
+
+type WarnIdType string
+
+// adn warning card
+
+type WarnCardType string
+
+//
+// Page code, last record id in given page
+//
+
+type PageCodeType string
+
+type PageSizeType uint32
+
+type EcErrorCodeType string
+
+type EcErrorGroupType uint32
+
+type EcNameType string
+
+type NtsIceConditionCodeThicknessType string
+
+type AggrStatusType string
+
+type TechNameType uint32
+
+type MatchByCode struct {
+	XMLName xml.Name `xml:"http://rwsreftool/ matchByCode"`
+
+	*MatchByCodeType
+}
+
+type MatchByCodeResponse struct {
+	XMLName xml.Name `xml:"http://rwsreftool/ matchByCodeResponse"`
+
+	*MatchByCodeResponseType
+}
+
+type MatchByName struct {
+	XMLName xml.Name `xml:"http://rwsreftool/ matchByName"`
+
+	*MatchByNameType
+}
+
+type MatchByNameResponse struct {
+	XMLName xml.Name `xml:"http://rwsreftool/ matchByNameResponse"`
+
+	*MatchByNameResponseType
+}
+
+type GetDataXML struct {
+	XMLName xml.Name `xml:"http://rwsreftool/ getDataXML"`
+
+	*GetDataXMLType
+}
+
+type GetDataXMLResponse struct {
+	XMLName xml.Name `xml:"http://rwsreftool/ getDataXMLResponse"`
+
+	*GetDataXMLResponseType
+}
+
+type GetMutatedTables struct {
+	XMLName xml.Name `xml:"http://rwsreftool/ getMutatedTables"`
+
+	*GetMutatedTablesType
+}
+
+type GetMutatedTablesResponse struct {
+	XMLName xml.Name `xml:"http://rwsreftool/ getMutatedTablesResponse"`
+
+	*GetMutatedTablesResponseType
+}
+
+type GetMutations struct {
+	XMLName xml.Name `xml:"http://rwsreftool/ getMutations"`
+
+	*GetMutationsType
+}
+
+type GetMutationsResponse struct {
+	XMLName xml.Name `xml:"http://rwsreftool/ getMutationsResponse"`
+
+	*GetMutationsResponseType
+}
+
+type GetRisDataXML struct {
+	XMLName xml.Name `xml:"http://rwsreftool/ getRisDataXML"`
+
+	*GetRisDataXMLType
+}
+
+type GetRisDataXMLResponse struct {
+	XMLName xml.Name `xml:"http://rwsreftool/ getRisDataXMLResponse"`
+
+	*GetRisDataXMLResponseType
+}
+
+type MutateDataXML struct {
+	XMLName xml.Name `xml:"http://rwsreftool/ mutateDataXML"`
+
+	*MutateDataXMLType
+}
+
+type MutateDataXMLResponse struct {
+	XMLName xml.Name `xml:"http://rwsreftool/ mutateDataXMLResponse"`
+
+	*MutateDataXMLResponseType
+}
+
+type Exception ExceptionType
+
+type MatchByCodeType struct {
+	Reftype *ReftypeType `xml:"reftype,omitempty" json:"reftype,omitempty"`
+
+	Code string `xml:"code,omitempty" json:"code,omitempty"`
+
+	Page *PageRequestType `xml:"page,omitempty" json:"page,omitempty"`
+
+	Version *RefrecVersionType `xml:"version,omitempty" json:"version,omitempty"`
+}
+
+type MatchByCodeResponseType struct {
+	PageDetails *PageDetailsType `xml:"pageDetails,omitempty" json:"pageDetails,omitempty"`
+
+	RefdataReturn []*RefdataReturnType `xml:"refdataReturn,omitempty" json:"refdataReturn,omitempty"`
+}
+
+type MatchByNameType struct {
+	Reftype *ReftypeType `xml:"reftype,omitempty" json:"reftype,omitempty"`
+
+	Lang *LangType `xml:"lang,omitempty" json:"lang,omitempty"`
+
+	Name string `xml:"name,omitempty" json:"name,omitempty"`
+
+	Page *PageRequestType `xml:"page,omitempty" json:"page,omitempty"`
+
+	Version *RefrecVersionType `xml:"version,omitempty" json:"version,omitempty"`
+}
+
+type MatchByNameResponseType struct {
+	PageDetails *PageDetailsType `xml:"pageDetails,omitempty" json:"pageDetails,omitempty"`
+
+	RefdataReturn []*RefdataReturnType `xml:"refdataReturn,omitempty" json:"refdataReturn,omitempty"`
+}
+
+type GetMutatedTablesType struct {
+
+	// fromDate and toDate in datetime format in UTC time
+	//
+	FromDate soap.XSDDateTime `xml:"fromDate,omitempty" json:"fromDate,omitempty"`
+
+	ToDate soap.XSDDateTime `xml:"toDate,omitempty" json:"toDate,omitempty"`
+}
+
+type GetMutatedTablesResponseType struct {
+
+	// Indicate how many mutated tables are
+	// available/were found.
+	//
+	RecCount *RecCountType `xml:"recCount,omitempty" json:"recCount,omitempty"`
+
+	// Generic status info field, to return (any) status
+	// info
+	//
+	ReturnStatus *ReturnStatusType `xml:"returnStatus,omitempty" json:"returnStatus,omitempty"`
+
+	MutatedTables []*MutatedTableReturnType `xml:"mutatedTables,omitempty" json:"mutatedTables,omitempty"`
+}
+
+type GetMutationsType struct {
+	Reftype *ReftypeType `xml:"reftype,omitempty" json:"reftype,omitempty"`
+
+	// from, to in datetime format in UTC time
+	//
+	FromDate soap.XSDDateTime `xml:"fromDate,omitempty" json:"fromDate,omitempty"`
+
+	ToDate soap.XSDDateTime `xml:"toDate,omitempty" json:"toDate,omitempty"`
+
+	Page *PageRequestType `xml:"page,omitempty" json:"page,omitempty"`
+}
+
+type GetMutationsResponseType struct {
+	PageDetails *PageDetailsType `xml:"pageDetails,omitempty" json:"pageDetails,omitempty"`
+
+	RefdataReturn []*RefdataReturnType `xml:"refdataReturn,omitempty" json:"refdataReturn,omitempty"`
+}
+
+type GetDataXMLType struct {
+	Reftype *ReftypeType `xml:"reftype,omitempty" json:"reftype,omitempty"`
+
+	Page *PageRequestType `xml:"page,omitempty" json:"page,omitempty"`
+
+	Subcode *RisCodeType `xml:"subcode,omitempty" json:"subcode,omitempty"`
+
+	Version *RefrecVersionType `xml:"version,omitempty" json:"version,omitempty"`
+}
+
+type GetDataXMLResponseType struct {
+	PageDetails *PageDetailsType `xml:"pageDetails,omitempty" json:"pageDetails,omitempty"`
+
+	RefdataReturn []*RefdataReturnType `xml:"refdataReturn,omitempty" json:"refdataReturn,omitempty"`
+}
+
+type GetRisDataXMLType struct {
+	Funcode string `xml:"funcode,omitempty" json:"funcode,omitempty"`
+
+	CountryCode *CountryCodeType `xml:"countryCode,omitempty" json:"countryCode,omitempty"`
+
+	Page *PageRequestType `xml:"page,omitempty" json:"page,omitempty"`
+
+	Subcode *RisCodeType `xml:"subcode,omitempty" json:"subcode,omitempty"`
+
+	Version *RefrecVersionType `xml:"version,omitempty" json:"version,omitempty"`
+}
+
+type GetRisDataXMLResponseType struct {
+	PageDetails *PageDetailsType `xml:"pageDetails,omitempty" json:"pageDetails,omitempty"`
+
+	RisdataReturn []*Ris_idxType `xml:"risdataReturn,omitempty" json:"risdataReturn,omitempty"`
+}
+
+type MutateDataXMLType struct {
+	Username *UserNameType `xml:"username,omitempty" json:"username,omitempty"`
+
+	RefData *RefdataReturnType `xml:"refData,omitempty" json:"refData,omitempty"`
+}
+
+type MutateDataXMLResponseType struct {
+	*StatReturnType
+}
+
+type ExceptionType struct {
+	XMLName xml.Name `xml:"http://rwsreftool/ exception"`
+
+	// exception code
+	Exception int32 `xml:"exception,omitempty" json:"exception,omitempty"`
+
+	// exception message in English
+	Message string `xml:"message,omitempty" json:"message,omitempty"`
+}
+
+type RefdataReturnType struct {
+	Reftype struct {
+		Value *ReftypeType `xml:",chardata" json:"-,"`
+	} `xml:"reftype,omitempty" json:"reftype,omitempty"`
+
+	Ris_idx *Ris_idxType `xml:"ris_idx,omitempty" json:"ris_idx,omitempty"`
+
+	Eri_location *Eri_locationType `xml:"eri_location,omitempty" json:"eri_location,omitempty"`
+
+	Eri_hscode *Eri_hscodeType `xml:"eri_hscode,omitempty" json:"eri_hscode,omitempty"`
+
+	Eri_adncode *Eri_adncodeType `xml:"eri_adncode,omitempty" json:"eri_adncode,omitempty"`
+
+	Eri_conttype *Eri_conttypeType `xml:"eri_conttype,omitempty" json:"eri_conttype,omitempty"`
+
+	Eri_packtype *Eri_packtypeType `xml:"eri_packtype,omitempty" json:"eri_packtype,omitempty"`
+
+	Eri_shiptype *Eri_shiptypeType `xml:"eri_shiptype,omitempty" json:"eri_shiptype,omitempty"`
+
+	Eri_country *Eri_countryType `xml:"eri_country,omitempty" json:"eri_country,omitempty"`
+
+	Eri_errorCodeRsp *Eri_errorCodeRspType `xml:"eri_errorCodeRsp,omitempty" json:"eri_errorCodeRsp,omitempty"`
+
+	// NtS element is only available in the return
+	// refdata structure.
+	// It is not available in the Req Mutation datastructure because we
+	// can not mutate nts data (not allowed)!
+	//
+	Nts_data *Nts_dataType `xml:"nts_data,omitempty" json:"nts_data,omitempty"`
+}
+
+type MutatedTableReturnType struct {
+	XMLName xml.Name `xml:"http://rwsreftool/ mutatedTables"`
+
+	// This table (refType) has mutations (>0)
+	//
+	RefType *ReftypeType `xml:"refType,omitempty" json:"refType,omitempty"`
+
+	// Indicates how many (>0) mutations (records) are
+	// available for THIS table.
+	//
+	RecCount *RecCountType `xml:"recCount,omitempty" json:"recCount,omitempty"`
+}
+
+type StatReturnType struct {
+
+	// 0=ok, 1=warning, 2=error
+
+	Err int32 `xml:"err,omitempty" json:"err,omitempty"`
+
+	Message struct {
+	} `xml:"message,omitempty" json:"message,omitempty"`
+}
+
+type Ris_idxType struct {
+	RisidxCode *RisCodeType `xml:"risidxCode,omitempty" json:"risidxCode,omitempty"`
+
+	CodeOld *RisCodeType `xml:"codeOld,omitempty" json:"codeOld,omitempty"`
+
+	UnlocCC *UnlocCCType `xml:"unlocCC,omitempty" json:"unlocCC,omitempty"`
+
+	UnlocLC *UnlocLCType `xml:"unlocLC,omitempty" json:"unlocLC,omitempty"`
+
+	WwsectCode *FwCodeType `xml:"wwsectCode,omitempty" json:"wwsectCode,omitempty"`
+
+	Objcode *RisobjCodeType `xml:"objcode,omitempty" json:"objcode,omitempty"`
+
+	Hectomt *KmCodeType `xml:"hectomt,omitempty" json:"hectomt,omitempty"`
+
+	Objfunc *RisobjfuncType `xml:"objfunc,omitempty" json:"objfunc,omitempty"`
+
+	Objname struct {
+
+		// Without diacritics (to be used in EDIfact
+		// msgs)
+		//
+		Loc *RislocNameType `xml:"Loc,omitempty" json:"Loc,omitempty"`
+
+		// in UTF8
+		LocNational *RislocNameType `xml:"locNational,omitempty" json:"locNational,omitempty"`
+	} `xml:"objname,omitempty" json:"objname,omitempty"`
+
+	Locname struct {
+		Loc *RislocNameType `xml:"Loc,omitempty" json:"Loc,omitempty"`
+
+		LocNational *RislocNameType `xml:"locNational,omitempty" json:"locNational,omitempty"`
+	} `xml:"locname,omitempty" json:"locname,omitempty"`
+
+	Wwname struct {
+		Loc *RislocNameType `xml:"Loc,omitempty" json:"Loc,omitempty"`
+
+		LocNational *RislocNameType `xml:"locNational,omitempty" json:"locNational,omitempty"`
+	} `xml:"wwname,omitempty" json:"wwname,omitempty"`
+
+	Routename struct {
+		Loc *RisrouteNameType `xml:"Loc,omitempty" json:"Loc,omitempty"`
+
+		LocNational *RisrouteNameType `xml:"locNational,omitempty" json:"locNational,omitempty"`
+	} `xml:"routename,omitempty" json:"routename,omitempty"`
+
+	PositionCode *RispostionCodeType `xml:"positionCode,omitempty" json:"positionCode,omitempty"`
+
+	Relrisindex *RisCodeType `xml:"relrisindex,omitempty" json:"relrisindex,omitempty"`
+
+	Sectionnode *RissectnodeType `xml:"sectionnode,omitempty" json:"sectionnode,omitempty"`
+
+	Lat *LatlonType `xml:"lat,omitempty" json:"lat,omitempty"`
+
+	Lon *LatlonType `xml:"lon,omitempty" json:"lon,omitempty"`
+
+	Relenc *RisrelencType `xml:"relenc,omitempty" json:"relenc,omitempty"`
+
+	Comminfo *RiscomminfoType `xml:"comminfo,omitempty" json:"comminfo,omitempty"`
+
+	Gaugeid *RisgaugeidType `xml:"gaugeid,omitempty" json:"gaugeid,omitempty"`
+
+	Vesselconvlength *DimType `xml:"vesselconvlength,omitempty" json:"vesselconvlength,omitempty"`
+
+	Vesselconvbreadth *DimType `xml:"vesselconvbreadth,omitempty" json:"vesselconvbreadth,omitempty"`
+
+	Vesselconvdraught *DimType `xml:"vesselconvdraught,omitempty" json:"vesselconvdraught,omitempty"`
+
+	Vesselconvairdraught *DimType `xml:"vesselconvairdraught,omitempty" json:"vesselconvairdraught,omitempty"`
+
+	Availablelength *DimType `xml:"availablelength,omitempty" json:"availablelength,omitempty"`
+
+	Clearancewidth *DimType `xml:"clearancewidth,omitempty" json:"clearancewidth,omitempty"`
+
+	Availabledepthcode *RisreflevelcodeType `xml:"availabledepthcode,omitempty" json:"availabledepthcode,omitempty"`
+
+	Availabledepth *DimType `xml:"availabledepth,omitempty" json:"availabledepth,omitempty"`
+
+	Clearanceheightcode *RisreflevelcodeType `xml:"clearanceheightcode,omitempty" json:"clearanceheightcode,omitempty"`
+
+	Clearanceheight *DimType `xml:"clearanceheight,omitempty" json:"clearanceheight,omitempty"`
+
+	ReferencegaugeISRS *RisCodeType `xml:"referencegaugeISRS,omitempty" json:"referencegaugeISRS,omitempty"`
+
+	Applicabilityfromkm *RisapplikmType `xml:"applicabilityfromkm,omitempty" json:"applicabilityfromkm,omitempty"`
+
+	Applicabilitytokm *RisapplikmType `xml:"applicabilitytokm,omitempty" json:"applicabilitytokm,omitempty"`
+
+	Reflevel1code *RisreflevelcodeType `xml:"reflevel1code,omitempty" json:"reflevel1code,omitempty"`
+
+	Reflevel1value *RisreflevelvalueType `xml:"reflevel1value,omitempty" json:"reflevel1value,omitempty"`
+
+	Reflevel2code *RisreflevelcodeType `xml:"reflevel2code,omitempty" json:"reflevel2code,omitempty"`
+
+	Reflevel2value *RisreflevelvalueType `xml:"reflevel2value,omitempty" json:"reflevel2value,omitempty"`
+
+	Reflevel3code *RisreflevelcodeType `xml:"reflevel3code,omitempty" json:"reflevel3code,omitempty"`
+
+	Reflevel3value *RisreflevelvalueType `xml:"reflevel3value,omitempty" json:"reflevel3value,omitempty"`
+
+	Zeropoint *RiszeropointType `xml:"zeropoint,omitempty" json:"zeropoint,omitempty"`
+
+	Geodref *RisgeodrefType `xml:"geodref,omitempty" json:"geodref,omitempty"`
+
+	Catoftimesched *RiscatoftimeschedType `xml:"catoftimesched,omitempty" json:"catoftimesched,omitempty"`
+
+	Forshiptype *RisforshiptypeType `xml:"forshiptype,omitempty" json:"forshiptype,omitempty"`
+
+	Foruseofship *RisuseofshipType `xml:"foruseofship,omitempty" json:"foruseofship,omitempty"`
+
+	LnktoextXMfiletimesched *RislinkextxmlType `xml:"lnktoextXMfiletimesched,omitempty" json:"lnktoextXMfiletimesched,omitempty"`
+
+	LnktoextXMfilepastime *RislinkextxmlType `xml:"lnktoextXMfilepastime,omitempty" json:"lnktoextXMfilepastime,omitempty"`
+
+	Vesselconvlength2 *DimType `xml:"vesselconvlength2,omitempty" json:"vesselconvlength2,omitempty"`
+
+	Vesselconvbreadth2 *DimType `xml:"vesselconvbreadth2,omitempty" json:"vesselconvbreadth2,omitempty"`
+
+	Vesselconvdraught2 *DimType `xml:"vesselconvdraught2,omitempty" json:"vesselconvdraught2,omitempty"`
+
+	Vesselconvairdraught2 *DimType `xml:"vesselconvairdraught2,omitempty" json:"vesselconvairdraught2,omitempty"`
+
+	Availablelength2 *DimType `xml:"availablelength2,omitempty" json:"availablelength2,omitempty"`
+
+	Clearancewidth2 *DimType `xml:"clearancewidth2,omitempty" json:"clearancewidth2,omitempty"`
+
+	Availabledepth2code *RisreflevelcodeType `xml:"availabledepth2code,omitempty" json:"availabledepth2code,omitempty"`
+
+	Availabledepth2 *DimType `xml:"availabledepth2,omitempty" json:"availabledepth2,omitempty"`
+
+	Clearanceheight2code *RisreflevelcodeType `xml:"clearanceheight2code,omitempty" json:"clearanceheight2code,omitempty"`
+
+	Clearanceheight2 *DimType `xml:"clearanceheight2,omitempty" json:"clearanceheight2,omitempty"`
+
+	Referencegauge2ISRS *RisCodeType `xml:"referencegauge2ISRS,omitempty" json:"referencegauge2ISRS,omitempty"`
+
+	Vesselconvlength3 *DimType `xml:"vesselconvlength3,omitempty" json:"vesselconvlength3,omitempty"`
+
+	Vesselconvbreadth3 *DimType `xml:"vesselconvbreadth3,omitempty" json:"vesselconvbreadth3,omitempty"`
+
+	Vesselconvdraught3 *DimType `xml:"vesselconvdraught3,omitempty" json:"vesselconvdraught3,omitempty"`
+
+	Vesselconvairdraught3 *DimType `xml:"vesselconvairdraught3,omitempty" json:"vesselconvairdraught3,omitempty"`
+
+	Availablelength3 *DimType `xml:"availablelength3,omitempty" json:"availablelength3,omitempty"`
+
+	Clearancewidth3 *DimType `xml:"clearancewidth3,omitempty" json:"clearancewidth3,omitempty"`
+
+	Availabledepth3code *RisreflevelcodeType `xml:"availabledepth3code,omitempty" json:"availabledepth3code,omitempty"`
+
+	Availabledepth3 *DimType `xml:"availabledepth3,omitempty" json:"availabledepth3,omitempty"`
+
+	Clearanceheight3code *RisreflevelcodeType `xml:"clearanceheight3code,omitempty" json:"clearanceheight3code,omitempty"`
+
+	Clearanceheight3 *DimType `xml:"clearanceheight3,omitempty" json:"clearanceheight3,omitempty"`
+
+	Referencegauge3ISRS *RisCodeType `xml:"referencegauge3ISRS,omitempty" json:"referencegauge3ISRS,omitempty"`
+
+	Catoftimesched2 *RiscatoftimeschedType `xml:"catoftimesched2,omitempty" json:"catoftimesched2,omitempty"`
+
+	Forshiptype2 *RisforshiptypeType `xml:"forshiptype2,omitempty" json:"forshiptype2,omitempty"`
+
+	Foruseofship2 *RisuseofshipType `xml:"foruseofship2,omitempty" json:"foruseofship2,omitempty"`
+
+	LnktoextXMfiletimesched2 *RislinkextxmlType `xml:"lnktoextXMfiletimesched2,omitempty" json:"lnktoextXMfiletimesched2,omitempty"`
+
+	LnktoextXMfilepastime2 *RislinkextxmlType `xml:"lnktoextXMfilepastime2,omitempty" json:"lnktoextXMfilepastime2,omitempty"`
+
+	Catoftimesched3 *RiscatoftimeschedType `xml:"catoftimesched3,omitempty" json:"catoftimesched3,omitempty"`
+
+	Forshiptype3 *RisforshiptypeType `xml:"forshiptype3,omitempty" json:"forshiptype3,omitempty"`
+
+	Foruseofship3 *RisuseofshipType `xml:"foruseofship3,omitempty" json:"foruseofship3,omitempty"`
+
+	LnktoextXMfiletimesched3 *RislinkextxmlType `xml:"lnktoextXMfiletimesched3,omitempty" json:"lnktoextXMfiletimesched3,omitempty"`
+
+	LnktoextXMfilepastime3 *RislinkextxmlType `xml:"lnktoextXMfilepastime3,omitempty" json:"lnktoextXMfilepastime3,omitempty"`
+
+	Startdate *LastupdateType `xml:"startdate,omitempty" json:"startdate,omitempty"`
+
+	Enddate *LastupdateType `xml:"enddate,omitempty" json:"enddate,omitempty"`
+
+	Infodate *LastupdateType `xml:"infodate,omitempty" json:"infodate,omitempty"`
+
+	// specific (RIS) source of this information
+	//
+	RisidxSource *RemarksType `xml:"risidxSource,omitempty" json:"risidxSource,omitempty"`
+
+	// specific Ris idx remarks, reasons for change
+	// (descriptions as received with the ris idx)
+	//
+	RisidxRemarks *RemarksType `xml:"risidxRemarks,omitempty" json:"risidxRemarks,omitempty"`
+
+	// source of mutation
+	Source *SourceType `xml:"source,omitempty" json:"source,omitempty"`
+
+	// remarks regarding the maintance of the ris idx
+	//
+	Remarks *RemarksType `xml:"remarks,omitempty" json:"remarks,omitempty"`
+
+	Version *RefrecVersionType `xml:"version,omitempty" json:"version,omitempty"`
+
+	Erased *ErasedType `xml:"erased,omitempty" json:"erased,omitempty"`
+
+	Lastupdate *LastupdateType `xml:"lastupdate,omitempty" json:"lastupdate,omitempty"`
+}
+
+type Eri_locationType struct {
+	XMLName xml.Name `xml:"http://rwsreftool/ eri_location"`
+
+	ErilocCode *ErilocCodeType `xml:"erilocCode,omitempty" json:"erilocCode,omitempty"`
+
+	CodeOld *ErilocCodeType `xml:"codeOld,omitempty" json:"codeOld,omitempty"`
+
+	RisCode *RisCodeType `xml:"risCode,omitempty" json:"risCode,omitempty"`
+
+	LoCode *LoCodeType `xml:"loCode,omitempty" json:"loCode,omitempty"`
+
+	FwCode *FwCodeType `xml:"fwCode,omitempty" json:"fwCode,omitempty"`
+
+	KmCode *KmCodeType `xml:"kmCode,omitempty" json:"kmCode,omitempty"`
+
+	Name struct {
+		Loc *ErilocNameType `xml:"Loc,omitempty" json:"Loc,omitempty"`
+
+		NL *ErilocNameType `xml:"NL,omitempty" json:"NL,omitempty"`
+
+		DE *ErilocNameType `xml:"DE,omitempty" json:"DE,omitempty"`
+
+		FR *ErilocNameType `xml:"FR,omitempty" json:"FR,omitempty"`
+
+		EN *ErilocNameType `xml:"EN,omitempty" json:"EN,omitempty"`
+	} `xml:"name,omitempty" json:"name,omitempty"`
+
+	LocType *LocTypeType `xml:"locType,omitempty" json:"locType,omitempty"`
+
+	Lat *LatlonType `xml:"lat,omitempty" json:"lat,omitempty"`
+
+	Lon *LatlonType `xml:"lon,omitempty" json:"lon,omitempty"`
+
+	TermCode *TermCodeType `xml:"termCode,omitempty" json:"termCode,omitempty"`
+
+	Termname struct {
+		Loc *ErilocNameType `xml:"Loc,omitempty" json:"Loc,omitempty"`
+
+		NL *ErilocNameType `xml:"NL,omitempty" json:"NL,omitempty"`
+
+		DE *ErilocNameType `xml:"DE,omitempty" json:"DE,omitempty"`
+
+		FR *ErilocNameType `xml:"FR,omitempty" json:"FR,omitempty"`
+
+		EN *ErilocNameType `xml:"EN,omitempty" json:"EN,omitempty"`
+	} `xml:"termname,omitempty" json:"termname,omitempty"`
+
+	TermType *LocTypeType `xml:"termType,omitempty" json:"termType,omitempty"`
+
+	QuayFrom *QuayType `xml:"quayFrom,omitempty" json:"quayFrom,omitempty"`
+
+	QuayTo *QuayType `xml:"quayTo,omitempty" json:"quayTo,omitempty"`
+
+	Ivs *IvsType `xml:"ivs,omitempty" json:"ivs,omitempty"`
+
+	// VTS/IVS (code) acting as the default reporting
+	// (receiving) point (when departing from this location)
+	//
+	IvsVTSCode *ProviderIdType `xml:"ivsVTSCode,omitempty" json:"ivsVTSCode,omitempty"`
+
+	IvsName *IvsNameType `xml:"ivsName,omitempty" json:"ivsName,omitempty"`
+
+	IvsTerm *IvsTermType `xml:"ivsTerm,omitempty" json:"ivsTerm,omitempty"`
+
+	IvsReport *IvsReportType `xml:"ivsReport,omitempty" json:"ivsReport,omitempty"`
+
+	// Nr of possible exits (routes) when departing from
+	// this location >1 means a reporting or routepoint has to be
+	// specified.
+	//
+	Exits *LocExitsType `xml:"exits,omitempty" json:"exits,omitempty"`
+
+	Exit0 *LocExitsCodeType `xml:"exit0,omitempty" json:"exit0,omitempty"`
+
+	Exit1 *LocExitsCodeType `xml:"exit1,omitempty" json:"exit1,omitempty"`
+
+	Exit2 *LocExitsCodeType `xml:"exit2,omitempty" json:"exit2,omitempty"`
+
+	Exit3 *LocExitsCodeType `xml:"exit3,omitempty" json:"exit3,omitempty"`
+
+	Exit4 *LocExitsCodeType `xml:"exit4,omitempty" json:"exit4,omitempty"`
+
+	Exit5 *LocExitsCodeType `xml:"exit5,omitempty" json:"exit5,omitempty"`
+
+	Exit6 *LocExitsCodeType `xml:"exit6,omitempty" json:"exit6,omitempty"`
+
+	Exit7 *LocExitsCodeType `xml:"exit7,omitempty" json:"exit7,omitempty"`
+
+	Exit8 *LocExitsCodeType `xml:"exit8,omitempty" json:"exit8,omitempty"`
+
+	Exit9 *LocExitsCodeType `xml:"exit9,omitempty" json:"exit9,omitempty"`
+
+	SbbLoCode *LocSbbLoCodeType `xml:"sbbLoCode,omitempty" json:"sbbLoCode,omitempty"`
+
+	SbbCode *LocSbbCodeType `xml:"sbbCode,omitempty" json:"sbbCode,omitempty"`
+
+	Source *SourceType `xml:"source,omitempty" json:"source,omitempty"`
+
+	Remarks *RemarksType `xml:"remarks,omitempty" json:"remarks,omitempty"`
+
+	Version *RefrecVersionType `xml:"version,omitempty" json:"version,omitempty"`
+
+	Erased *ErasedType `xml:"erased,omitempty" json:"erased,omitempty"`
+
+	Lastupdate *LastupdateType `xml:"lastupdate,omitempty" json:"lastupdate,omitempty"`
+}
+
+type Eri_hscodeType struct {
+	XMLName xml.Name `xml:"http://rwsreftool/ eri_hscode"`
+
+	// Harmonised System type
+	HsCode *HsCodeType `xml:"hsCode,omitempty" json:"hsCode,omitempty"`
+
+	CodeOld *HsCodeType `xml:"codeOld,omitempty" json:"codeOld,omitempty"`
+
+	Name struct {
+		Loc *HsCodeNameType `xml:"Loc,omitempty" json:"Loc,omitempty"`
+
+		EN *HsCodeNameType `xml:"EN,omitempty" json:"EN,omitempty"`
+
+		NL *HsCodeNameType `xml:"NL,omitempty" json:"NL,omitempty"`
+
+		DE *HsCodeNameType `xml:"DE,omitempty" json:"DE,omitempty"`
+
+		FR *HsCodeNameType `xml:"FR,omitempty" json:"FR,omitempty"`
+	} `xml:"name,omitempty" json:"name,omitempty"`
+
+	NstCode *NstCodeType `xml:"nstCode,omitempty" json:"nstCode,omitempty"`
+
+	// English (NST2007) description.
+	NstName *HsCodeNameType `xml:"nstName,omitempty" json:"nstName,omitempty"`
+
+	Source *SourceType `xml:"source,omitempty" json:"source,omitempty"`
+
+	Remarks *RemarksType `xml:"remarks,omitempty" json:"remarks,omitempty"`
+
+	Version *RefrecVersionType `xml:"version,omitempty" json:"version,omitempty"`
+
+	Erased *ErasedType `xml:"erased,omitempty" json:"erased,omitempty"`
+
+	Lastupdate *LastupdateType `xml:"lastupdate,omitempty" json:"lastupdate,omitempty"`
+}
+
+type Eri_adncodeType struct {
+	XMLName xml.Name `xml:"http://rwsreftool/ eri_adncode"`
+
+	// Be sure to edit, change the basic Simpletypes,
+	// dont edit any of the (sub)elements from here!!!
+	//
+	AdnCode *AdnCodeType `xml:"adnCode,omitempty" json:"adnCode,omitempty"`
+
+	CodeOld *AdnCodeType `xml:"codeOld,omitempty" json:"codeOld,omitempty"`
+
+	Unnr *UnnrType `xml:"unnr,omitempty" json:"unnr,omitempty"`
+
+	AdnClass *AdnClassType `xml:"adnClass,omitempty" json:"adnClass,omitempty"`
+
+	AdnClassif *AdnClassIfType `xml:"adnClassif,omitempty" json:"adnClassif,omitempty"`
+
+	ImoClass *AdnImoClassType `xml:"imoClass,omitempty" json:"imoClass,omitempty"`
+
+	PackGrp *PackGrpType `xml:"packGrp,omitempty" json:"packGrp,omitempty"`
+
+	Name struct {
+		Loc *AdnCodeNameType `xml:"Loc,omitempty" json:"Loc,omitempty"`
+
+		EN *AdnCodeNameType `xml:"EN,omitempty" json:"EN,omitempty"`
+
+		NL *AdnCodeNameType `xml:"NL,omitempty" json:"NL,omitempty"`
+
+		DE *AdnCodeNameType `xml:"DE,omitempty" json:"DE,omitempty"`
+
+		FR *AdnCodeNameType `xml:"FR,omitempty" json:"FR,omitempty"`
+	} `xml:"name,omitempty" json:"name,omitempty"`
+
+	Syn struct {
+		Loc *GoodSynType `xml:"Loc,omitempty" json:"Loc,omitempty"`
+
+		NL *GoodSynType `xml:"NL,omitempty" json:"NL,omitempty"`
+
+		DE *GoodSynType `xml:"DE,omitempty" json:"DE,omitempty"`
+
+		FR *GoodSynType `xml:"FR,omitempty" json:"FR,omitempty"`
+
+		EN *GoodSynType `xml:"EN,omitempty" json:"EN,omitempty"`
+	} `xml:"syn,omitempty" json:"syn,omitempty"`
+
+	HsCode *HsCodeType `xml:"hsCode,omitempty" json:"hsCode,omitempty"`
+
+	NstCode *NstCodeType `xml:"nstCode,omitempty" json:"nstCode,omitempty"`
+
+	// 0, 1, 2, 3, V
+	ConesBulk *ConesType `xml:"conesBulk,omitempty" json:"conesBulk,omitempty"`
+
+	ConesTank *ConesType `xml:"conesTank,omitempty" json:"conesTank,omitempty"`
+
+	ConesCont *ConesType `xml:"conesCont,omitempty" json:"conesCont,omitempty"`
+
+	// 0, B, V
+	FlagsBulk *FlagsType `xml:"flagsBulk,omitempty" json:"flagsBulk,omitempty"`
+
+	FlagsTank *FlagsType `xml:"flagsTank,omitempty" json:"flagsTank,omitempty"`
+
+	WarnCard *WarnCardType `xml:"warnCard,omitempty" json:"warnCard,omitempty"`
+
+	WarnId *WarnIdType `xml:"warnId,omitempty" json:"warnId,omitempty"`
+
+	Label1 *AdnLabelType `xml:"label1,omitempty" json:"label1,omitempty"`
+
+	Label2 *AdnLabelType `xml:"label2,omitempty" json:"label2,omitempty"`
+
+	Label3 *AdnLabelType `xml:"label3,omitempty" json:"label3,omitempty"`
+
+	Label4 *AdnLabelType `xml:"label4,omitempty" json:"label4,omitempty"`
+
+	AquaticToxicity *AquaticToxicityType `xml:"aquaticToxicity,omitempty" json:"aquaticToxicity,omitempty"`
+
+	ChemicalStability *ChemicalStabilityType `xml:"chemicalStability,omitempty" json:"chemicalStability,omitempty"`
+
+	CmrProperties *CmrPropertyType `xml:"cmrProperties,omitempty" json:"cmrProperties,omitempty"`
+
+	Floater *FloatersinkerType `xml:"floater,omitempty" json:"floater,omitempty"`
+
+	MaxWeightCodeInlandBulkCont *SignalCodeType `xml:"maxWeightCodeInlandBulkCont,omitempty" json:"maxWeightCodeInlandBulkCont,omitempty"`
+
+	// max weight in kg
+	MaxWeightInlandBulkCont *WeightType `xml:"maxWeightInlandBulkCont,omitempty" json:"maxWeightInlandBulkCont,omitempty"`
+
+	SignalCodeInlandCont *SignalCodeType `xml:"signalCodeInlandCont,omitempty" json:"signalCodeInlandCont,omitempty"`
+
+	// min weight in kg
+	MinWeightInlandCont *WeightType `xml:"minWeightInlandCont,omitempty" json:"minWeightInlandCont,omitempty"`
+
+	SignalCodeInlandExcemp *SignalCodeType `xml:"signalCodeInlandExcemp,omitempty" json:"signalCodeInlandExcemp,omitempty"`
+
+	// min weight in kg
+	MinWeightInlandExcemp *WeightType `xml:"minWeightInlandExcemp,omitempty" json:"minWeightInlandExcemp,omitempty"`
+
+	SignalCodeSeaBulk *SignalCodeType `xml:"signalCodeSeaBulk,omitempty" json:"signalCodeSeaBulk,omitempty"`
+
+	// min weight in kg
+	MinWeightSeaBulk *WeightType `xml:"minWeightSeaBulk,omitempty" json:"minWeightSeaBulk,omitempty"`
+
+	AggrStatus *AggrStatusType `xml:"aggrStatus,omitempty" json:"aggrStatus,omitempty"`
+
+	TechName *TechNameType `xml:"techName,omitempty" json:"techName,omitempty"`
+
+	Source *SourceType `xml:"source,omitempty" json:"source,omitempty"`
+
+	Remarks *RemarksType `xml:"remarks,omitempty" json:"remarks,omitempty"`
+
+	Version *RefrecVersionType `xml:"version,omitempty" json:"version,omitempty"`
+
+	Erased *ErasedType `xml:"erased,omitempty" json:"erased,omitempty"`
+
+	Lastupdate *LastupdateType `xml:"lastupdate,omitempty" json:"lastupdate,omitempty"`
+}
+
+type Eri_conttypeType struct {
+	XMLName xml.Name `xml:"http://rwsreftool/ eri_conttype"`
+
+	ContId *ContIdType `xml:"contId,omitempty" json:"contId,omitempty"`
+
+	CodeOld *ContIdType `xml:"codeOld,omitempty" json:"codeOld,omitempty"`
+
+	// dimensions in cm
+	Length *DimType `xml:"length,omitempty" json:"length,omitempty"`
+
+	Width *DimType `xml:"width,omitempty" json:"width,omitempty"`
+
+	Height *DimType `xml:"height,omitempty" json:"height,omitempty"`
+
+	// empty weight in kg
+	Weight *WeightType `xml:"weight,omitempty" json:"weight,omitempty"`
+
+	Name struct {
+		Loc *ContNameType `xml:"Loc,omitempty" json:"Loc,omitempty"`
+
+		NL *ContNameType `xml:"NL,omitempty" json:"NL,omitempty"`
+
+		DE *ContNameType `xml:"DE,omitempty" json:"DE,omitempty"`
+
+		FR *ContNameType `xml:"FR,omitempty" json:"FR,omitempty"`
+
+		EN *ContNameType `xml:"EN,omitempty" json:"EN,omitempty"`
+	} `xml:"name,omitempty" json:"name,omitempty"`
+
+	Source *SourceType `xml:"source,omitempty" json:"source,omitempty"`
+
+	Remarks *RemarksType `xml:"remarks,omitempty" json:"remarks,omitempty"`
+
+	Version *RefrecVersionType `xml:"version,omitempty" json:"version,omitempty"`
+
+	Erased *ErasedType `xml:"erased,omitempty" json:"erased,omitempty"`
+
+	Lastupdate *LastupdateType `xml:"lastupdate,omitempty" json:"lastupdate,omitempty"`
+}
+
+type Eri_packtypeType struct {
+	XMLName xml.Name `xml:"http://rwsreftool/ eri_packtype"`
+
+	PackId *PackIdType `xml:"packId,omitempty" json:"packId,omitempty"`
+
+	CodeOld *PackIdType `xml:"codeOld,omitempty" json:"codeOld,omitempty"`
+
+	Name struct {
+		Loc *PackNameType `xml:"Loc,omitempty" json:"Loc,omitempty"`
+
+		EN *PackNameType `xml:"EN,omitempty" json:"EN,omitempty"`
+
+		NL *PackNameType `xml:"NL,omitempty" json:"NL,omitempty"`
+
+		DE *PackNameType `xml:"DE,omitempty" json:"DE,omitempty"`
+
+		FR *PackNameType `xml:"FR,omitempty" json:"FR,omitempty"`
+	} `xml:"name,omitempty" json:"name,omitempty"`
+
+	Source *SourceType `xml:"source,omitempty" json:"source,omitempty"`
+
+	Remarks *RemarksType `xml:"remarks,omitempty" json:"remarks,omitempty"`
+
+	Version *RefrecVersionType `xml:"version,omitempty" json:"version,omitempty"`
+
+	Erased *ErasedType `xml:"erased,omitempty" json:"erased,omitempty"`
+
+	Lastupdate *LastupdateType `xml:"lastupdate,omitempty" json:"lastupdate,omitempty"`
+}
+
+type Eri_shiptypeType struct {
+	XMLName xml.Name `xml:"http://rwsreftool/ eri_shiptype"`
+
+	ShipType *ShipTypeType `xml:"shipType,omitempty" json:"shipType,omitempty"`
+
+	CodeOld *ShipTypeType `xml:"codeOld,omitempty" json:"codeOld,omitempty"`
+
+	DvkType *DvkTypeType `xml:"dvkType,omitempty" json:"dvkType,omitempty"`
+
+	CraftType *CraftTypeType `xml:"craftType,omitempty" json:"craftType,omitempty"`
+
+	// True = transport cominination type, false=single
+	// ship
+	//
+	Combination *CombinationFlagType `xml:"combination,omitempty" json:"combination,omitempty"`
+
+	Name struct {
+		Loc *ShiptypeNameType `xml:"Loc,omitempty" json:"Loc,omitempty"`
+
+		EN *ShiptypeNameType `xml:"EN,omitempty" json:"EN,omitempty"`
+
+		NL *ShiptypeNameType `xml:"NL,omitempty" json:"NL,omitempty"`
+
+		DE *ShiptypeNameType `xml:"DE,omitempty" json:"DE,omitempty"`
+
+		FR *ShiptypeNameType `xml:"FR,omitempty" json:"FR,omitempty"`
+	} `xml:"name,omitempty" json:"name,omitempty"`
+
+	Source *SourceType `xml:"source,omitempty" json:"source,omitempty"`
+
+	Remarks *RemarksType `xml:"remarks,omitempty" json:"remarks,omitempty"`
+
+	Version *RefrecVersionType `xml:"version,omitempty" json:"version,omitempty"`
+
+	Erased *ErasedType `xml:"erased,omitempty" json:"erased,omitempty"`
+
+	Lastupdate *LastupdateType `xml:"lastupdate,omitempty" json:"lastupdate,omitempty"`
+}
+
+type Eri_countryType struct {
+	XMLName xml.Name `xml:"http://rwsreftool/ eri_country"`
+
+	// UN country ISO code 2 chars.
+	//
+	CountryCode *CountryCodeType `xml:"countryCode,omitempty" json:"countryCode,omitempty"`
+
+	CodeOld *CountryCodeType `xml:"codeOld,omitempty" json:"codeOld,omitempty"`
+
+	CbsCode *CbscountryCodeType `xml:"cbsCode,omitempty" json:"cbsCode,omitempty"`
+
+	CountryIsoCode3 *CountryCode3Type `xml:"countryIsoCode3,omitempty" json:"countryIsoCode3,omitempty"`
+
+	CountryIsoNum *CountryIsoNumType `xml:"countryIsoNum,omitempty" json:"countryIsoNum,omitempty"`
+
+	LloydsFlag *LloydsflagType `xml:"lloydsFlag,omitempty" json:"lloydsFlag,omitempty"`
+
+	Name struct {
+		Loc *CountryNameType `xml:"Loc,omitempty" json:"Loc,omitempty"`
+
+		EN *CountryNameType `xml:"EN,omitempty" json:"EN,omitempty"`
+
+		NL *CountryNameType `xml:"NL,omitempty" json:"NL,omitempty"`
+
+		DE *CountryNameType `xml:"DE,omitempty" json:"DE,omitempty"`
+
+		FR *CountryNameType `xml:"FR,omitempty" json:"FR,omitempty"`
+	} `xml:"name,omitempty" json:"name,omitempty"`
+
+	Source *SourceType `xml:"source,omitempty" json:"source,omitempty"`
+
+	Remarks *RemarksType `xml:"remarks,omitempty" json:"remarks,omitempty"`
+
+	Version *RefrecVersionType `xml:"version,omitempty" json:"version,omitempty"`
+
+	Erased *ErasedType `xml:"erased,omitempty" json:"erased,omitempty"`
+
+	Lastupdate *LastupdateType `xml:"lastupdate,omitempty" json:"lastupdate,omitempty"`
+}
+
+type Eri_errorCodeRspType struct {
+	XMLName xml.Name `xml:"http://rwsreftool/ eri_errorCodeRsp"`
+
+	ErrorCode *EcErrorCodeType `xml:"errorCode,omitempty" json:"errorCode,omitempty"`
+
+	ErrorCodeOld *EcErrorCodeType `xml:"errorCodeOld,omitempty" json:"errorCodeOld,omitempty"`
+
+	ErrorGroup *EcErrorGroupType `xml:"errorGroup,omitempty" json:"errorGroup,omitempty"`
+
+	Name struct {
+		Loc *EcNameType `xml:"Loc,omitempty" json:"Loc,omitempty"`
+
+		EN *EcNameType `xml:"EN,omitempty" json:"EN,omitempty"`
+
+		NL *EcNameType `xml:"NL,omitempty" json:"NL,omitempty"`
+
+		DE *EcNameType `xml:"DE,omitempty" json:"DE,omitempty"`
+
+		FR *EcNameType `xml:"FR,omitempty" json:"FR,omitempty"`
+	} `xml:"name,omitempty" json:"name,omitempty"`
+
+	Source *SourceType `xml:"source,omitempty" json:"source,omitempty"`
+
+	Remarks *RemarksType `xml:"remarks,omitempty" json:"remarks,omitempty"`
+
+	Version *RefrecVersionType `xml:"version,omitempty" json:"version,omitempty"`
+
+	Erased *ErasedType `xml:"erased,omitempty" json:"erased,omitempty"`
+
+	Lastupdate *LastupdateType `xml:"lastupdate,omitempty" json:"lastupdate,omitempty"`
+}
+
+type NtsIceConditionCodeType struct {
+	*Nts_dataType
+
+	Thickness *NtsIceConditionCodeThicknessType `xml:"thickness,omitempty" json:"thickness,omitempty"`
+}
+
+type Nts_dataType struct {
+	XMLName xml.Name `xml:"http://rwsreftool/ nts_data"`
+
+	// Just a string (no enum) to return nts data type
+	// of the nts_data returned!
+	// reftype already contains datatype.
+	//
+	Ntstype *NtstypeType `xml:"ntstype,omitempty" json:"ntstype,omitempty"`
+
+	Ntscode *NtsCodeType `xml:"ntscode,omitempty" json:"ntscode,omitempty"`
+
+	CodeOld *NtsCodeType `xml:"codeOld,omitempty" json:"codeOld,omitempty"`
+
+	Name struct {
+		Loc *NtsNameType `xml:"Loc,omitempty" json:"Loc,omitempty"`
+
+		NL *NtsNameType `xml:"NL,omitempty" json:"NL,omitempty"`
+
+		DE *NtsNameType `xml:"DE,omitempty" json:"DE,omitempty"`
+
+		EN *NtsNameType `xml:"EN,omitempty" json:"EN,omitempty"`
+
+		FR *NtsNameType `xml:"FR,omitempty" json:"FR,omitempty"`
+
+		BG *NtsNameType `xml:"BG,omitempty" json:"BG,omitempty"`
+
+		CS *NtsNameType `xml:"CS,omitempty" json:"CS,omitempty"`
+
+		DA *NtsNameType `xml:"DA,omitempty" json:"DA,omitempty"`
+
+		EL *NtsNameType `xml:"EL,omitempty" json:"EL,omitempty"`
+
+		ES *NtsNameType `xml:"ES,omitempty" json:"ES,omitempty"`
+
+		ET *NtsNameType `xml:"ET,omitempty" json:"ET,omitempty"`
+
+		FI *NtsNameType `xml:"FI,omitempty" json:"FI,omitempty"`
+
+		HU *NtsNameType `xml:"HU,omitempty" json:"HU,omitempty"`
+
+		IT *NtsNameType `xml:"IT,omitempty" json:"IT,omitempty"`
+
+		LT *NtsNameType `xml:"LT,omitempty" json:"LT,omitempty"`
+
+		LV *NtsNameType `xml:"LV,omitempty" json:"LV,omitempty"`
+
+		MT *NtsNameType `xml:"MT,omitempty" json:"MT,omitempty"`
+
+		PL *NtsNameType `xml:"PL,omitempty" json:"PL,omitempty"`
+
+		PT *NtsNameType `xml:"PT,omitempty" json:"PT,omitempty"`
+
+		RO *NtsNameType `xml:"RO,omitempty" json:"RO,omitempty"`
+
+		SK *NtsNameType `xml:"SK,omitempty" json:"SK,omitempty"`
+
+		SL *NtsNameType `xml:"SL,omitempty" json:"SL,omitempty"`
+
+		SV *NtsNameType `xml:"SV,omitempty" json:"SV,omitempty"`
+
+		HR *NtsNameType `xml:"HR,omitempty" json:"HR,omitempty"`
+
+		RU *NtsNameType `xml:"RU,omitempty" json:"RU,omitempty"`
+
+		SR *NtsNameType `xml:"SR,omitempty" json:"SR,omitempty"`
+	} `xml:"name,omitempty" json:"name,omitempty"`
+
+	Source *SourceType `xml:"source,omitempty" json:"source,omitempty"`
+
+	Remarks *RemarksType `xml:"remarks,omitempty" json:"remarks,omitempty"`
+
+	Version *RefrecVersionType `xml:"version,omitempty" json:"version,omitempty"`
+
+	Erased *ErasedType `xml:"erased,omitempty" json:"erased,omitempty"`
+
+	Lastupdate *LastupdateType `xml:"lastupdate,omitempty" json:"lastupdate,omitempty"`
+}
+
+type PageRequestType struct {
+	XMLName xml.Name `xml:"http://rwsreftool/ page"`
+
+	PageCode *PageCodeType `xml:"pageCode,omitempty" json:"pageCode,omitempty"`
+
+	PageSize *PageSizeType `xml:"pageSize,omitempty" json:"pageSize,omitempty"`
+}
+
+type PageDetailsType struct {
+	XMLName xml.Name `xml:"http://rwsreftool/ pageDetails"`
+
+	PageCode *PageCodeType `xml:"pageCode,omitempty" json:"pageCode,omitempty"`
+
+	PageSize *PageSizeType `xml:"pageSize,omitempty" json:"pageSize,omitempty"`
+
+	TotalElements *PageSizeType `xml:"totalElements,omitempty" json:"totalElements,omitempty"`
+
+	TotalPages *PageSizeType `xml:"totalPages,omitempty" json:"totalPages,omitempty"`
+}
+
+type RefWeb interface {
+
+	// Error can be either of the following types:
+	//
+	//   - Exception
+
+	MutateDataXML(request *MutateDataXML) (*MutateDataXMLResponse, error)
+
+	MutateDataXMLContext(ctx context.Context, request *MutateDataXML) (*MutateDataXMLResponse, error)
+
+	// Error can be either of the following types:
+	//
+	//   - Exception
+
+	MatchByCode(request *MatchByCode) (*MatchByCodeResponse, error)
+
+	MatchByCodeContext(ctx context.Context, request *MatchByCode) (*MatchByCodeResponse, error)
+
+	// Error can be either of the following types:
+	//
+	//   - Exception
+
+	GetMutations(request *GetMutations) (*GetMutationsResponse, error)
+
+	GetMutationsContext(ctx context.Context, request *GetMutations) (*GetMutationsResponse, error)
+
+	// Error can be either of the following types:
+	//
+	//   - Exception
+
+	GetRisDataXML(request *GetRisDataXML) (*GetRisDataXMLResponse, error)
+
+	GetRisDataXMLContext(ctx context.Context, request *GetRisDataXML) (*GetRisDataXMLResponse, error)
+
+	// Error can be either of the following types:
+	//
+	//   - Exception
+
+	MatchByName(request *MatchByName) (*MatchByNameResponse, error)
+
+	MatchByNameContext(ctx context.Context, request *MatchByName) (*MatchByNameResponse, error)
+
+	// Error can be either of the following types:
+	//
+	//   - Exception
+
+	GetMutatedTables(request *GetMutatedTables) (*GetMutatedTablesResponse, error)
+
+	GetMutatedTablesContext(ctx context.Context, request *GetMutatedTables) (*GetMutatedTablesResponse, error)
+
+	// Error can be either of the following types:
+	//
+	//   - Exception
+
+	GetDataXML(request *GetDataXML) (*GetDataXMLResponse, error)
+
+	GetDataXMLContext(ctx context.Context, request *GetDataXML) (*GetDataXMLResponse, error)
+}
+
+type refWeb struct {
+	client *soap.SOAPClient
+}
+
+func NewRefWeb(client *soap.SOAPClient) RefWeb {
+	return &refWeb{
+		client: client,
+	}
+}
+
+func (service *refWeb) MutateDataXMLContext(ctx context.Context, request *MutateDataXML) (*MutateDataXMLResponse, error) {
+	response := new(MutateDataXMLResponse)
+	err := service.client.CallContext(ctx, "''", request, response)
+	if err != nil {
+		return nil, err
+	}
+
+	return response, nil
+}
+
+func (service *refWeb) MutateDataXML(request *MutateDataXML) (*MutateDataXMLResponse, error) {
+	return service.MutateDataXMLContext(
+		context.Background(),
+		request,
+	)
+}
+
+func (service *refWeb) MatchByCodeContext(ctx context.Context, request *MatchByCode) (*MatchByCodeResponse, error) {
+	response := new(MatchByCodeResponse)
+	err := service.client.CallContext(ctx, "''", request, response)
+	if err != nil {
+		return nil, err
+	}
+
+	return response, nil
+}
+
+func (service *refWeb) MatchByCode(request *MatchByCode) (*MatchByCodeResponse, error) {
+	return service.MatchByCodeContext(
+		context.Background(),
+		request,
+	)
+}
+
+func (service *refWeb) GetMutationsContext(ctx context.Context, request *GetMutations) (*GetMutationsResponse, error) {
+	response := new(GetMutationsResponse)
+	err := service.client.CallContext(ctx, "''", request, response)
+	if err != nil {
+		return nil, err
+	}
+
+	return response, nil
+}
+
+func (service *refWeb) GetMutations(request *GetMutations) (*GetMutationsResponse, error) {
+	return service.GetMutationsContext(
+		context.Background(),
+		request,
+	)
+}
+
+func (service *refWeb) GetRisDataXMLContext(ctx context.Context, request *GetRisDataXML) (*GetRisDataXMLResponse, error) {
+	response := new(GetRisDataXMLResponse)
+	err := service.client.CallContext(ctx, "''", request, response)
+	if err != nil {
+		return nil, err
+	}
+
+	return response, nil
+}
+
+func (service *refWeb) GetRisDataXML(request *GetRisDataXML) (*GetRisDataXMLResponse, error) {
+	return service.GetRisDataXMLContext(
+		context.Background(),
+		request,
+	)
+}
+
+func (service *refWeb) MatchByNameContext(ctx context.Context, request *MatchByName) (*MatchByNameResponse, error) {
+	response := new(MatchByNameResponse)
+	err := service.client.CallContext(ctx, "''", request, response)
+	if err != nil {
+		return nil, err
+	}
+
+	return response, nil
+}
+
+func (service *refWeb) MatchByName(request *MatchByName) (*MatchByNameResponse, error) {
+	return service.MatchByNameContext(
+		context.Background(),
+		request,
+	)
+}
+
+func (service *refWeb) GetMutatedTablesContext(ctx context.Context, request *GetMutatedTables) (*GetMutatedTablesResponse, error) {
+	response := new(GetMutatedTablesResponse)
+	err := service.client.CallContext(ctx, "''", request, response)
+	if err != nil {
+		return nil, err
+	}
+
+	return response, nil
+}
+
+func (service *refWeb) GetMutatedTables(request *GetMutatedTables) (*GetMutatedTablesResponse, error) {
+	return service.GetMutatedTablesContext(
+		context.Background(),
+		request,
+	)
+}
+
+func (service *refWeb) GetDataXMLContext(ctx context.Context, request *GetDataXML) (*GetDataXMLResponse, error) {
+	response := new(GetDataXMLResponse)
+	err := service.client.CallContext(ctx, "''", request, response)
+	if err != nil {
+		return nil, err
+	}
+
+	return response, nil
+}
+
+func (service *refWeb) GetDataXML(request *GetDataXML) (*GetDataXMLResponse, error) {
+	return service.GetDataXMLContext(
+		context.Background(),
+		request,
+	)
+}