Files
onvif/xsd/onvif/onvif.go
Cédric Verstraeten fe86ea942d Return errors for failed SOAP responses
Propagate HTTP 4xx/5xx errors from SOAP and digest requests, preserve responses, and ensure PTZ zero coordinates are serialized. Add regression tests for both behaviors.
2026-08-05 13:13:42 +02:00

2046 lines
60 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package onvif
import (
"github.com/kerberos-io/onvif/xsd"
)
// BUG(r): Enum types implemented as simple string
//TODO: enumerations
//TODO: type <typeName> struct {Any string} convert to type <typeName> AnyType
//TODO: process restrictions
//todo посмотреть все Extensions (Any string)
//todo что делать с xs:any = Any
//todo IntList и ему подобные. Проверить нужен ли слайс. Изменить на slice
//todo посмотреть можно ли заменить StreamType и ему подобные типы на вмтроенные типы
//todo оттестировать тип VideoSourceMode из-за Description-а
//todo в документации описать, что Capabilities повторяеся у каждого сервиса, поэтому у каждого свой Capabilities (MediaCapabilities)
//todo AuxiliaryData и другие simpleTypes, как реализовать рестрикшн
//todo Name и ему подобные необходимо изучить на наличие "List of..." ошибок
//todo Add in buit in
type ContentType string // minLength value="3"
type DNSName xsd.Token
type DeviceEntity struct {
Token ReferenceToken `xml:"token,attr"`
}
type ReferenceToken xsd.String
type Name xsd.String
type IntRectangle struct {
X int `xml:"x,attr"`
Y int `xml:"y,attr"`
Width int `xml:"width,attr"`
Height int `xml:"height,attr"`
}
type IntRectangleRange struct {
XRange IntRange
YRange IntRange
WidthRange IntRange
HeightRange IntRange
}
type IntRange struct {
Min int
Max int
}
type FloatRange struct {
Min float64 `xml:"Min"`
Max float64 `xml:"Max"`
}
type OSDConfiguration struct {
DeviceEntity `xml:"token,attr"`
VideoSourceConfigurationToken OSDReference `xml:"VideoSourceConfigurationToken"`
Type OSDType `xml:"Type"`
Position OSDPosConfiguration `xml:"Position"`
TextString OSDTextConfiguration `xml:"TextString"`
Image OSDImgConfiguration `xml:"Image"`
Extension OSDConfigurationExtension `xml:"Extension"`
}
type OSDType xsd.String
type OSDPosConfiguration struct {
Type string `xml:"Type"`
Pos Vector `xml:"Pos"`
Extension OSDPosConfigurationExtension `xml:"Extension"`
}
type Vector struct {
X float64 `xml:"x,attr"`
Y float64 `xml:"y,attr"`
}
type OSDPosConfigurationExtension xsd.AnyType
type OSDReference ReferenceToken
type OSDTextConfiguration struct {
IsPersistentText xsd.Boolean `xml:"IsPersistentText,attr"`
Type xsd.String `xml:"Type"`
DateFormat xsd.String `xml:"DateFormat"`
TimeFormat xsd.String `xml:"TimeFormat"`
FontSize xsd.Int `xml:"FontSize"`
FontColor OSDColor `xml:"FontColor"`
BackgroundColor OSDColor `xml:"BackgroundColor"`
PlainText xsd.String `xml:"PlainText"`
Extension OSDTextConfigurationExtension `xml:"Extension"`
}
type OSDColor struct {
Transparent int `xml:"Transparent,attr"`
Color Color `xml:"Color"`
}
type Color struct {
X float64 `xml:"X,attr"`
Y float64 `xml:"Y,attr"`
Z float64 `xml:"Z,attr"`
Colorspace xsd.AnyURI `xml:"Colorspace,attr"`
}
type OSDTextConfigurationExtension xsd.AnyType
type OSDImgConfiguration struct {
ImgPath xsd.AnyURI `xml:"ImgPath"`
Extension OSDImgConfigurationExtension `xml:"Extension"`
}
type OSDImgConfigurationExtension xsd.AnyType
type OSDConfigurationExtension xsd.AnyType
type VideoSource struct {
DeviceEntity
Framerate float64
Resolution VideoResolution
Imaging ImagingSettings
Extension VideoSourceExtension
}
type VideoResolution struct {
Width *xsd.Int `json:",omitempty"`
Height *xsd.Int `json:",omitempty"`
}
type VideoResolutionRequest struct {
Width *xsd.Int `xml:"onvif:Width,omitempty"`
Height *xsd.Int `xml:"onvif:Height,omitempty"`
}
type ImagingSettings struct {
BacklightCompensation BacklightCompensation
Brightness float64
ColorSaturation float64
Contrast float64
Exposure Exposure
Focus FocusConfiguration
IrCutFilter IrCutFilterMode
Sharpness float64
WideDynamicRange WideDynamicRange
WhiteBalance WhiteBalance
Extension ImagingSettingsExtension
}
type BacklightCompensation struct {
Mode BacklightCompensationMode
Level float64
}
type BacklightCompensationMode xsd.String
type Exposure struct {
Mode ExposureMode
Priority ExposurePriority
Window Rectangle
MinExposureTime float64
MaxExposureTime float64
MinGain float64
MaxGain float64
MinIris float64
MaxIris float64
ExposureTime float64
Gain float64
Iris float64
}
type ExposureMode xsd.String
type ExposurePriority xsd.String
type Rectangle struct {
Bottom float64 `xml:"bottom,attr"`
Top float64 `xml:"top,attr"`
Right float64 `xml:"right,attr"`
Left float64 `xml:"left,attr"`
}
type FocusConfiguration struct {
AutoFocusMode AutoFocusMode
DefaultSpeed float64
NearLimit float64
FarLimit float64
}
type AutoFocusMode xsd.String
type IrCutFilterMode xsd.String
type WideDynamicRange struct {
Mode WideDynamicMode `xml:"Mode"`
Level float64 `xml:"Level"`
}
type WideDynamicMode xsd.String
type WhiteBalance struct {
Mode WhiteBalanceMode
CrGain float64
CbGain float64
}
type WhiteBalanceMode xsd.String
type ImagingSettingsExtension xsd.AnyType
type VideoSourceExtension struct {
Imaging ImagingSettings20
Extension VideoSourceExtension2
}
type ImagingSettings20 struct {
BacklightCompensation BacklightCompensation20 `xml:"BacklightCompensation"`
Brightness float64 `xml:"Brightness"`
ColorSaturation float64 `xml:"ColorSaturation"`
Contrast float64 `xml:"Contrast"`
Exposure Exposure20 `xml:"Exposure"`
Focus FocusConfiguration20 `xml:"Focus"`
IrCutFilter IrCutFilterMode `xml:"IrCutFilter"`
Sharpness float64 `xml:"Sharpness"`
WideDynamicRange WideDynamicRange20 `xml:"WideDynamicRange"`
WhiteBalance WhiteBalance20 `xml:"WhiteBalance"`
Extension ImagingSettingsExtension20 `xml:"Extension"`
}
type BacklightCompensation20 struct {
Mode BacklightCompensationMode `xml:"Mode"`
Level float64 `xml:"Level"`
}
type Exposure20 struct {
Mode ExposureMode `xml:"Mode"`
Priority ExposurePriority `xml:"Priority"`
Window Rectangle `xml:"Window"`
MinExposureTime float64 `xml:"MinExposureTime"`
MaxExposureTime float64 `xml:"MaxExposureTime"`
MinGain float64 `xml:"MinGain"`
MaxGain float64 `xml:"MaxGain"`
MinIris float64 `xml:"MinIris"`
MaxIris float64 `xml:"MaxIris"`
ExposureTime float64 `xml:"ExposureTime"`
Gain float64 `xml:"Gain"`
Iris float64 `xml:"Iris"`
}
type FocusConfiguration20 struct {
AutoFocusMode AutoFocusMode `xml:"AutoFocusMode"`
DefaultSpeed float64 `xml:"DefaultSpeed"`
NearLimit float64 `xml:"NearLimit"`
FarLimit float64 `xml:"FarLimit"`
Extension FocusConfiguration20Extension `xml:"Extension"`
}
type FocusConfiguration20Extension xsd.AnyType
type WideDynamicRange20 struct {
Mode WideDynamicMode `xml:"Mode"`
Level float64 `xml:"Level"`
}
type WhiteBalance20 struct {
Mode WhiteBalanceMode `xml:"Mode"`
CrGain float64 `xml:"CrGain"`
CbGain float64 `xml:"CbGain"`
Extension WhiteBalance20Extension `xml:"Extension"`
}
type WhiteBalance20Extension xsd.AnyType
type ImagingSettingsExtension20 struct {
ImageStabilization ImageStabilization `xml:"ImageStabilization"`
Extension ImagingSettingsExtension202 `xml:"Extension"`
}
type ImageStabilization struct {
Mode ImageStabilizationMode `xml:"Mode"`
Level float64 `xml:"Level"`
Extension ImageStabilizationExtension `xml:"Extension"`
}
type ImageStabilizationMode xsd.String
type ImageStabilizationExtension xsd.AnyType
type ImagingSettingsExtension202 struct {
IrCutFilterAutoAdjustment IrCutFilterAutoAdjustment `xml:"IrCutFilterAutoAdjustment"`
Extension ImagingSettingsExtension203 `xml:"Extension"`
}
type IrCutFilterAutoAdjustment struct {
BoundaryType string `xml:"BoundaryType"`
BoundaryOffset float64 `xml:"BoundaryOffset"`
ResponseTime xsd.Duration `xml:"ResponseTime"`
Extension IrCutFilterAutoAdjustmentExtension `xml:"Extension"`
}
type IrCutFilterAutoAdjustmentExtension xsd.AnyType
type ImagingSettingsExtension203 struct {
ToneCompensation ToneCompensation `xml:"ToneCompensation"`
Defogging Defogging `xml:"Defogging"`
NoiseReduction NoiseReduction `xml:"NoiseReduction"`
Extension ImagingSettingsExtension204 `xml:"Extension"`
}
type ToneCompensation struct {
Mode string `xml:"Mode"`
Level float64 `xml:"Level"`
Extension ToneCompensationExtension `xml:"Extension"`
}
type ToneCompensationExtension xsd.AnyType
type Defogging struct {
Mode string
Level float64
Extension DefoggingExtension
}
type DefoggingExtension xsd.AnyType
type NoiseReduction struct {
Level float64 `xml:"Level"`
}
type ImagingSettingsExtension204 xsd.AnyType
type VideoSourceExtension2 xsd.AnyType
type AudioSource struct {
DeviceEntity
Channels int
}
type AudioOutput struct {
DeviceEntity
}
type Profile struct {
Token ReferenceToken `xml:"token,attr"`
Fixed bool `xml:"fixed,attr"`
Name Name
VideoSourceConfiguration *VideoSourceConfiguration `xml:",omitempty"`
AudioSourceConfiguration *AudioSourceConfiguration `xml:",omitempty"`
VideoEncoderConfiguration *VideoEncoderConfiguration `xml:",omitempty"`
AudioEncoderConfiguration *AudioEncoderConfiguration `xml:",omitempty"`
VideoAnalyticsConfiguration *VideoAnalyticsConfiguration `xml:",omitempty"`
PTZConfiguration *PTZConfiguration `xml:",omitempty"`
MetadataConfiguration *MetadataConfiguration `xml:",omitempty"`
Extension *ProfileExtension `xml:",omitempty"`
}
type VideoSourceConfiguration struct {
ConfigurationEntity
ViewMode string `xml:"ViewMode,attr"`
SourceToken *ReferenceToken `xml:",omitempty"`
Bounds *IntRectangle `xml:",omitempty"`
Extension *VideoSourceConfigurationExtension `xml:",omitempty"`
}
type ConfigurationEntity struct {
Token ReferenceToken `json:",omitempty" xml:"token,attr,omitempty"`
Name Name `json:",omitempty" xml:",omitempty"`
UseCount int `json:",omitempty" xml:",omitempty"`
}
type ConfigurationEntityRequest struct {
Token ReferenceToken `xml:"token,attr,omitempty"`
Name Name `xml:"onvif:Name,omitempty"`
UseCount int `xml:"onvif:UseCount,omitempty"`
}
type VideoSourceConfigurationExtension struct {
Rotate *Rotate `xml:",omitempty"`
Extension *VideoSourceConfigurationExtension2 `xml:",omitempty"`
}
type Rotate struct {
Mode RotateMode `xml:"Mode"`
Degree xsd.Int `xml:"Degree"`
Extension RotateExtension `xml:"Extension"`
}
type RotateMode xsd.String
type RotateExtension xsd.AnyType
type VideoSourceConfigurationExtension2 struct {
LensDescription LensDescription `xml:"LensDescription"`
SceneOrientation SceneOrientation `xml:"SceneOrientation"`
}
type LensDescription struct {
FocalLength float64 `xml:"FocalLength,attr"`
Offset LensOffset `xml:"Offset"`
Projection LensProjection `xml:"Projection"`
XFactor float64 `xml:"XFactor"`
}
type LensOffset struct {
X float64 `xml:"x,attr"`
Y float64 `xml:"y,attr"`
}
type LensProjection struct {
Angle float64 `xml:"Angle"`
Radius float64 `xml:"Radius"`
Transmittance float64 `xml:"Transmittance"`
}
type SceneOrientation struct {
Mode SceneOrientationMode `xml:"Mode"`
Orientation xsd.String `xml:"Orientation"`
}
type SceneOrientationMode xsd.String
type AudioSourceConfiguration struct {
ConfigurationEntity
SourceToken ReferenceToken `xml:"SourceToken"`
}
type VideoEncoderConfiguration struct {
ConfigurationEntity
Encoding *VideoEncoding `json:",omitempty"`
Resolution *VideoResolution `json:",omitempty"`
Quality float64 `json:",omitempty"`
RateControl *VideoRateControl `json:",omitempty"`
MPEG4 *Mpeg4Configuration `json:",omitempty"`
H264 *H264Configuration `json:",omitempty"`
Multicast *MulticastConfiguration `json:",omitempty"`
SessionTimeout *xsd.Duration `json:",omitempty"`
}
type VideoEncoderConfigurationRequest struct {
ConfigurationEntityRequest
Encoding *VideoEncoding `xml:"onvif:Encoding,omitempty"`
Resolution *VideoResolutionRequest `xml:"onvif:Resolution,omitempty"`
Quality *xsd.Float `xml:"onvif:Quality,omitempty"`
RateControl *VideoRateControlRequest `xml:"onvif:RateControl,omitempty"`
MPEG4 *Mpeg4ConfigurationRequest `xml:"onvif:MPEG4,omitempty"`
H264 *H264ConfigurationRequest `xml:"onvif:H264,omitempty"`
Multicast *MulticastConfigurationRequest `xml:"onvif:Multicast,omitempty"`
SessionTimeout *xsd.Duration `xml:"onvif:SessionTimeout,omitempty"`
}
type VideoEncoding xsd.String
type VideoRateControl struct {
FrameRateLimit *xsd.Int `json:",omitempty"`
EncodingInterval *xsd.Int `json:",omitempty"`
BitrateLimit *xsd.Int `json:",omitempty"`
}
type VideoRateControlRequest struct {
FrameRateLimit *xsd.Int `xml:"onvif:FrameRateLimit,omitempty"`
EncodingInterval *xsd.Int `xml:"onvif:EncodingInterval,omitempty"`
BitrateLimit *xsd.Int `xml:"onvif:BitrateLimit,omitempty"`
}
type Mpeg4Configuration struct {
GovLength *xsd.Int `json:",omitempty"`
Mpeg4Profile *Mpeg4Profile `json:",omitempty"`
}
type Mpeg4ConfigurationRequest struct {
GovLength *xsd.Int `xml:"onvif:GovLength,omitempty"`
Mpeg4Profile *Mpeg4Profile `xml:"onvif:Mpeg4Profile,omitempty"`
}
type Mpeg4Profile xsd.String
type H264Configuration struct {
GovLength *xsd.Int `json:",omitempty"`
H264Profile *H264Profile `json:",omitempty"`
}
type H264ConfigurationRequest struct {
GovLength *xsd.Int `xml:"onvif:GovLength,omitempty"`
H264Profile *H264Profile `xml:"onvif:H264Profile,omitempty"`
}
type H264Profile xsd.String
type MulticastConfiguration struct {
Address *IPAddress `json:",omitempty"`
Port *xsd.Int `json:",omitempty"`
TTL *xsd.Int `json:",omitempty"`
AutoStart *xsd.Boolean `json:",omitempty"`
}
type MulticastConfigurationRequest struct {
Address *IPAddressRequest `xml:"onvif:Address,omitempty"`
Port *xsd.Int `xml:"onvif:Port,omitempty"`
TTL *xsd.Int `xml:"onvif:TTL,omitempty"`
AutoStart *xsd.Boolean `xml:"onvif:AutoStart,omitempty"`
}
type IPAddress struct {
Type IPType `json:",omitempty"`
IPv4Address IPv4Address `json:",omitempty"`
IPv6Address IPv6Address `json:",omitempty"`
}
type IPAddressRequest struct {
Type IPType `xml:"onvif:Type,omitempty"`
IPv4Address IPv4Address `xml:"onvif:IPv4Address,omitempty"`
IPv6Address IPv6Address `xml:"onvif:IPv6Address,omitempty"`
}
type IPType xsd.String
// IPv4 address
type IPv4Address xsd.Token
// IPv6 address
type IPv6Address xsd.Token
type AudioEncoderConfiguration struct {
ConfigurationEntity
Encoding AudioEncoding `xml:"Encoding"`
Bitrate int `xml:"Bitrate"`
SampleRate int `xml:"SampleRate"`
Multicast MulticastConfiguration `xml:"Multicast"`
SessionTimeout xsd.Duration `xml:"SessionTimeout"`
}
type AudioEncoding xsd.String
type VideoAnalyticsConfiguration struct {
ConfigurationEntity
AnalyticsEngineConfiguration *AnalyticsEngineConfiguration `xml:"AnalyticsEngineConfiguration"`
RuleEngineConfiguration *RuleEngineConfiguration `xml:"RuleEngineConfiguration"`
}
type AnalyticsEngineConfiguration struct {
AnalyticsModule []AnalyticsModule `json:",omitempty"`
Extension *AnalyticsEngineConfigurationExtension `json:",omitempty"`
}
type AnalyticsModule struct {
Name string `xml:",attr"`
Type string `xml:",attr"`
Parameters Parameters
}
type Parameters struct {
SimpleItem []SimpleItem `json:",omitempty"`
ElementItem []ElementItem `json:",omitempty"`
}
type AnalyticsEngineConfigurationRequest struct {
AnalyticsModule *ConfigRequest `xml:"onvif:AnalyticsEngineConfigurationRequest,omitempty"`
Extension *AnalyticsEngineConfigurationExtension `xml:"onvif:Extension,omitempty"`
}
type Config struct {
Name string `json:",omitempty" xml:",attr"`
Type *xsd.QName `json:",omitempty" xml:",attr"`
Parameters *ItemList `json:",omitempty"`
}
type ItemList struct {
SimpleItem []SimpleItem `json:",omitempty"`
ElementItem []ElementItem `json:",omitempty"`
Extension *ItemListExtension `json:",omitempty"`
}
type SimpleItem struct {
Name *xsd.String `json:",omitempty" xml:",attr"`
Value *xsd.String `json:",omitempty" xml:",attr"`
}
type ElementItem struct {
Name *xsd.String `json:",omitempty" xml:",attr"`
Value *xsd.String `json:",omitempty" xml:",attr"`
}
type ConfigRequest struct {
Name string `xml:",attr,omitempty"`
Type *xsd.QName `xml:",attr,omitempty"`
Parameters *ItemListRequest `xml:"onvif:Parameters,omitempty"`
}
type ItemListRequest struct {
SimpleItem []SimpleItemRequest `xml:"onvif:SimpleItem,omitempty"`
ElementItem []ElementItemRequest `xml:"onvif:ElementItem,omitempty"`
Extension *ItemListExtension `xml:"onvif:Extension,omitempty"`
}
type ElementItemRequest struct {
Name string `xml:",attr,omitempty"`
Polyline *Polyline `xml:"onvif:Polyline,omitempty"`
}
type Polyline struct {
Point []Point `xml:"onvif:Point,omitempty"`
}
type Point struct {
X *xsd.String `xml:"x,attr,omitempty"`
Y *xsd.String `xml:"onvif:y,attr,omitempty"`
}
type SimpleItemRequest struct {
Name string `xml:",attr,omitempty"`
Value xsd.AnySimpleType `xml:",attr,omitempty"`
}
type ItemListExtension xsd.AnyType
type AnalyticsEngineConfigurationExtension xsd.AnyType
type RuleEngineConfiguration struct {
Rule *Config `json:",omitempty"`
Extension *RuleEngineConfigurationExtension `json:",omitempty"`
}
type RuleEngineConfigurationExtension xsd.AnyType
type PTZConfiguration struct {
PTZConfigurationEntity
Token ReferenceToken `xml:"token,attr"`
MoveRamp int `json:",omitempty" xml:"MoveRamp,attr,omitempty"`
PresetRamp int `json:",omitempty" xml:"PresetRamp,attr,omitempty"`
PresetTourRamp int `json:",omitempty" xml:"PresetTourRamp,attr,omitempty"`
NodeToken *ReferenceToken `json:",omitempty" xml:"tptz:NodeToken,omitempty"`
DefaultAbsolutePantTiltPositionSpace *xsd.AnyURI `json:",omitempty" xml:",omitempty"`
DefaultAbsoluteZoomPositionSpace *xsd.AnyURI `json:",omitempty" xml:",omitempty"`
DefaultRelativePanTiltTranslationSpace *xsd.AnyURI `json:",omitempty" xml:",omitempty"`
DefaultRelativeZoomTranslationSpace *xsd.AnyURI `json:",omitempty" xml:",omitempty"`
DefaultContinuousPanTiltVelocitySpace *xsd.AnyURI `json:",omitempty" xml:",omitempty"`
DefaultContinuousZoomVelocitySpace *xsd.AnyURI `json:",omitempty" xml:",omitempty"`
DefaultPTZSpeed *PTZSpeed `json:",omitempty" xml:",omitempty"`
DefaultPTZTimeout *xsd.Duration `json:",omitempty" xml:",omitempty"`
PanTiltLimits *PanTiltLimits `json:",omitempty" xml:",omitempty"`
ZoomLimits *ZoomLimits `json:",omitempty" xml:",omitempty"`
Extension *PTZConfigurationExtension `json:",omitempty" xml:",omitempty"`
}
type PTZConfigurationEntity struct {
Token ReferenceToken `json:",omitempty" xml:"token,attr,omitempty"`
Name Name `json:",omitempty" xml:"tptz:Name,omitempty"`
UseCount int `json:",omitempty" xml:"tptz:UseCount,omitempty"`
}
type PTZSpeed interface {
}
type PTZSpeedZoom struct {
Zoom Vector1D `xml:"onvif:Zoom"`
}
type PTZSpeedPanTilt struct {
PanTilt Vector2D `xml:"onvif:PanTilt,omitempty"`
}
type Vector2D struct {
X float64 `xml:"x,attr"`
Y float64 `xml:"y,attr"`
Space *xsd.AnyURI `xml:"space,attr,omitempty"`
}
type Vector1D struct {
X float64 `xml:"x,attr"`
Space *xsd.AnyURI `xml:"space,attr,omitempty"`
}
type PanTiltLimits struct {
Range *Space2DDescription `xml:"Range,omitempty"`
}
type Space2DDescription struct {
URI *xsd.AnyURI `xml:"URI,omitempty"`
XRange *FloatRange `xml:"XRange,omitempty"`
YRange *FloatRange `xml:"YRange,omitempty"`
}
type ZoomLimits struct {
Range Space1DDescription `xml:"Range"`
}
type Space1DDescription struct {
URI xsd.AnyURI `xml:"URI"`
XRange FloatRange `xml:"XRange"`
}
type PTZConfigurationExtension struct {
PTControlDirection *PTControlDirection `xml:"PTControlDirection,omitempty"`
Extension *PTZConfigurationExtension2 `xml:"Extension,omitempty"`
}
type PTControlDirection struct {
EFlip EFlip `xml:"EFlip"`
Reverse Reverse `xml:"Reverse"`
Extension PTControlDirectionExtension `xml:"Extension"`
}
type EFlip struct {
Mode EFlipMode `xml:"Mode"`
}
type EFlipMode xsd.String
type Reverse struct {
Mode ReverseMode `xml:"Mode"`
}
type ReverseMode xsd.String
type PTControlDirectionExtension xsd.AnyType
type PTZConfigurationExtension2 xsd.AnyType
type MetadataConfiguration struct {
ConfigurationEntity
CompressionType string `json:",omitempty" xml:",attr,omitempty"`
PTZStatus *PTZFilter `json:",omitempty" xml:",omitempty"`
Events *EventSubscription `json:",omitempty" xml:",omitempty"`
Analytics *xsd.Boolean `json:",omitempty" xml:",omitempty"`
Multicast *MulticastConfiguration `json:",omitempty" xml:",omitempty"`
SessionTimeout *xsd.Duration `json:",omitempty" xml:",omitempty"`
AnalyticsEngineConfiguration *AnalyticsEngineConfiguration `json:",omitempty" xml:",omitempty"`
Extension *MetadataConfigurationExtension `json:",omitempty" xml:",omitempty"`
}
type MetadataConfigurationRequest struct {
ConfigurationEntity
CompressionType string `xml:"onvif:CompressionType,attr,omitempty"`
PTZStatus *PTZFilterRequest `xml:"onvif:PTZStatus,omitempty"`
Events *EventSubscriptionRequest `xml:"onvif:Events,omitempty"`
Analytics *xsd.Boolean `xml:"onvif:Analytics,omitempty"`
Multicast *MulticastConfigurationRequest `xml:"onvif:Multicast,omitempty"`
SessionTimeout *xsd.Duration `xml:"onvif:CompressionType,omitempty"`
AnalyticsEngineConfiguration *AnalyticsEngineConfigurationRequest `xml:"onvif:AnalyticsEngineConfiguration,omitempty"`
Extension *MetadataConfigurationExtension `xml:"onvif:Extension,omitempty"`
}
type PTZFilter struct {
Status bool `xml:"Status"`
Position bool `xml:"Position"`
}
type PTZFilterRequest struct {
Status bool `xml:"onvif:Status,omitempty"`
Position bool `xml:"onvif:Position,omitempty"`
}
type EventSubscription struct {
Filter *FilterType `json:",omitempty"`
SubscriptionPolicy *SubscriptionPolicy `json:",omitempty"`
}
type EventSubscriptionRequest struct {
Filter FilterType `xml:"onvif:Filter,omitempty"`
SubscriptionPolicy SubscriptionPolicy `xml:"onvif:SubscriptionPolicy,omitempty"`
}
type FilterType xsd.AnyType
type SubscriptionPolicy xsd.AnyType
type MetadataConfigurationExtension xsd.AnyType
type ProfileExtension struct {
AudioOutputConfiguration *AudioOutputConfiguration `xml:",omitempty"`
AudioDecoderConfiguration *AudioDecoderConfiguration `xml:",omitempty"`
Extension *ProfileExtension2 `xml:",omitempty"`
}
type AudioOutputConfiguration struct {
ConfigurationEntity
OutputToken ReferenceToken `xml:"OutputToken"`
SendPrimacy xsd.AnyURI `xml:"SendPrimacy"`
OutputLevel int `xml:"OutputLevel"`
}
type AudioDecoderConfiguration struct {
ConfigurationEntity
}
type ProfileExtension2 xsd.AnyType
type VideoSourceConfigurationOptions struct {
MaximumNumberOfProfiles int `xml:"MaximumNumberOfProfiles,attr"`
BoundsRange IntRectangleRange
VideoSourceTokensAvailable ReferenceToken
Extension VideoSourceConfigurationOptionsExtension
}
type VideoSourceConfigurationOptionsExtension struct {
Rotate RotateOptions
Extension VideoSourceConfigurationOptionsExtension2
}
type RotateOptions struct {
Mode RotateMode
DegreeList IntList
Extension RotateOptionsExtension
}
type IntList struct {
Items []int
}
type RotateOptionsExtension xsd.AnyType
type VideoSourceConfigurationOptionsExtension2 struct {
SceneOrientationMode SceneOrientationMode
}
type VideoEncoderConfigurationOptions struct {
QualityRange *IntRange `json:",omitempty"`
JPEG *JpegOptions `json:",omitempty"`
MPEG4 *Mpeg4Options `json:",omitempty"`
H264 *H264Options `json:",omitempty"`
Extension *VideoEncoderOptionsExtension `json:",omitempty"`
}
type JpegOptions struct {
ResolutionsAvailable []VideoResolution
FrameRateRange IntRange
EncodingIntervalRange IntRange
}
type Mpeg4Options struct {
ResolutionsAvailable VideoResolution
GovLengthRange IntRange
FrameRateRange IntRange
EncodingIntervalRange IntRange
Mpeg4ProfilesSupported Mpeg4Profile
}
type H264Options struct {
ResolutionsAvailable []VideoResolution
GovLengthRange IntRange
FrameRateRange IntRange
EncodingIntervalRange IntRange
H264ProfilesSupported []H264Profile
}
type VideoEncoderOptionsExtension struct {
JPEG *JpegOptions2 `json:",omitempty"`
MPEG4 *Mpeg4Options2 `json:",omitempty"`
H264 *H264Options2 `json:",omitempty"`
Extension *VideoEncoderOptionsExtension2 `json:",omitempty"`
}
type JpegOptions2 struct {
JpegOptions
BitrateRange IntRange
}
type Mpeg4Options2 struct {
Mpeg4Options
BitrateRange IntRange
}
type H264Options2 struct {
H264Options
BitrateRange IntRange
}
type VideoEncoderOptionsExtension2 xsd.AnyType
type AudioSourceConfigurationOptions struct {
InputTokensAvailable ReferenceToken
Extension AudioSourceOptionsExtension
}
type AudioSourceOptionsExtension xsd.AnyType
type AudioEncoderConfigurationOptions struct {
Options AudioEncoderConfigurationOption
}
type AudioEncoderConfigurationOption struct {
Encoding AudioEncoding
BitrateList IntList
SampleRateList IntList
}
type MetadataConfigurationOptions struct {
PTZStatusFilterOptions *PTZStatusFilterOptions `json:",omitempty" xml:",omitempty"`
Extension *MetadataConfigurationOptionsExtension `json:",omitempty" xml:",omitempty"`
}
type PTZStatusFilterOptions struct {
PanTiltStatusSupported bool
ZoomStatusSupported bool
PanTiltPositionSupported bool
ZoomPositionSupported bool
Extension *PTZStatusFilterOptionsExtension `json:",omitempty" xml:",omitempty"`
}
type PTZStatusFilterOptionsExtension xsd.AnyType
type MetadataConfigurationOptionsExtension struct {
CompressionType string `json:",omitempty" xml:",omitempty"`
Extension *MetadataConfigurationOptionsExtension2 `json:",omitempty" xml:",omitempty"`
}
type MetadataConfigurationOptionsExtension2 xsd.AnyType
type AudioOutputConfigurationOptions struct {
OutputTokensAvailable ReferenceToken
SendPrimacyOptions xsd.AnyURI
OutputLevelRange IntRange
}
type AudioDecoderConfigurationOptions struct {
AACDecOptions AACDecOptions
G711DecOptions G711DecOptions
G726DecOptions G726DecOptions
Extension AudioDecoderConfigurationOptionsExtension
}
type AACDecOptions struct {
Bitrate IntList
SampleRateRange IntList
}
type G711DecOptions struct {
Bitrate IntList
SampleRateRange IntList
}
type G726DecOptions struct {
Bitrate IntList
SampleRateRange IntList
}
type AudioDecoderConfigurationOptionsExtension xsd.AnyType
type StreamSetup struct {
Stream *StreamType `xml:"onvif:Stream,omitempty"`
Transport *Transport `xml:"onvif:Transport,omitempty"`
}
type StreamType xsd.String
type Transport struct {
Protocol *TransportProtocol `xml:"onvif:Protocol,omitempty"`
Tunnel *Transport `xml:"onvif:Tunnel,omitempty"`
}
// enum
type TransportProtocol xsd.String
type MediaUri struct {
Uri xsd.AnyURI
InvalidAfterConnect bool
InvalidAfterReboot bool
Timeout xsd.Duration
}
type VideoSourceMode struct {
Token ReferenceToken `xml:"token,attr"`
Enabled bool `xml:"Enabled,attr"`
MaxFramerate float64
MaxResolution VideoResolution
Encodings EncodingTypes
Reboot bool
Description Description
Extension VideoSourceModeExtension
}
type EncodingTypes struct {
EncodingTypes []string
}
type Description struct {
Description string
}
type VideoSourceModeExtension xsd.AnyType
type OSDConfigurationOptions struct {
MaximumNumberOfOSDs MaximumNumberOfOSDs
Type OSDType
PositionOption string
TextOption OSDTextOptions
ImageOption OSDImgOptions
Extension OSDConfigurationOptionsExtension
}
type MaximumNumberOfOSDs struct {
Total int `xml:"Total,attr"`
Image int `xml:"Image,attr"`
PlainText int `xml:"PlainText,attr"`
Date int `xml:"Date,attr"`
Time int `xml:"Time,attr"`
DateAndTime int `xml:"DateAndTime,attr"`
}
type OSDTextOptions struct {
Type string
FontSizeRange IntRange
DateFormat string
TimeFormat string
FontColor OSDColorOptions
BackgroundColor OSDColorOptions
Extension OSDTextOptionsExtension
}
type OSDColorOptions struct {
Color ColorOptions
Transparent IntRange
Extension OSDColorOptionsExtension
}
type ColorOptions struct {
ColorList Color
ColorspaceRange ColorspaceRange
}
type ColorspaceRange struct {
X FloatRange
Y FloatRange
Z FloatRange
Colorspace xsd.AnyURI
}
type OSDColorOptionsExtension xsd.AnyType
type OSDTextOptionsExtension xsd.AnyType
type OSDImgOptions struct {
FormatsSupported StringAttrList `xml:"FormatsSupported,attr"`
MaxSize int `xml:"MaxSize,attr"`
MaxWidth int `xml:"MaxWidth,attr"`
MaxHeight int `xml:"MaxHeight,attr"`
ImagePath xsd.AnyURI
Extension OSDImgOptionsExtension
}
type StringAttrList []string
type OSDImgOptionsExtension xsd.AnyType
type OSDConfigurationOptionsExtension xsd.AnyType
//PTZ
type PTZNode struct {
DeviceEntity
FixedHomePosition *xsd.Boolean `json:",omitempty" xml:",attr,omitempty"`
GeoMove *xsd.Boolean `json:",omitempty" xml:",attr,omitempty"`
Name *Name `json:",omitempty" xml:",omitempty"`
SupportedPTZSpaces *PTZSpaces `json:",omitempty" xml:",omitempty"`
MaximumNumberOfPresets int `json:",omitempty" xml:",omitempty"`
HomeSupported *xsd.Boolean `json:",omitempty" xml:",omitempty"`
AuxiliaryCommands *AuxiliaryData `json:",omitempty" xml:",omitempty"`
Extension *PTZNodeExtension `json:",omitempty" xml:",omitempty"`
}
type PTZSpaces struct {
AbsolutePanTiltPositionSpace Space2DDescription
AbsoluteZoomPositionSpace Space1DDescription
RelativePanTiltTranslationSpace Space2DDescription
RelativeZoomTranslationSpace Space1DDescription
ContinuousPanTiltVelocitySpace Space2DDescription
ContinuousZoomVelocitySpace Space1DDescription
PanTiltSpeedSpace Space1DDescription
ZoomSpeedSpace Space1DDescription
Extension PTZSpacesExtension
}
type PTZSpacesExtension xsd.AnyType
// TODO: restriction
type AuxiliaryData xsd.String
type PTZNodeExtension struct {
SupportedPresetTour PTZPresetTourSupported
Extension PTZNodeExtension2
}
type PTZPresetTourSupported struct {
MaximumNumberOfPresetTours int
PTZPresetTourOperation PTZPresetTourOperation
Extension PTZPresetTourSupportedExtension
}
type PTZPresetTourOperation xsd.String
type PTZPresetTourSupportedExtension xsd.AnyType
type PTZNodeExtension2 xsd.AnyType
type PTZConfigurationOptions struct {
PTZRamps *IntAttrList `json:",omitempty" xml:",attr,omitempty"`
Spaces *PTZSpaces `json:",omitempty" xml:",omitempty"`
PTZTimeout *DurationRange `json:",omitempty" xml:",omitempty"`
PTControlDirection *PTControlDirectionOptions `json:",omitempty" xml:",omitempty"`
Extension *PTZConfigurationOptions2 `json:",omitempty" xml:",omitempty"`
}
type IntAttrList []int
type DurationRange struct {
Min xsd.Duration
Max xsd.Duration
}
type PTControlDirectionOptions struct {
EFlip EFlipOptions
Reverse ReverseOptions
Extension PTControlDirectionOptionsExtension
}
type EFlipOptions struct {
Mode EFlipMode
Extension EFlipOptionsExtension
}
type EFlipOptionsExtension xsd.AnyType
type ReverseOptions struct {
Mode ReverseMode
Extension ReverseOptionsExtension
}
type ReverseOptionsExtension xsd.AnyType
type PTControlDirectionOptionsExtension xsd.AnyType
type PTZConfigurationOptions2 xsd.AnyType
type PTZPreset struct {
Token ReferenceToken `xml:"token,attr"`
Name Name
PTZPosition PTZVector
}
type PTZVector struct {
PanTilt *Vector2D `json:",omitempty" xml:"PanTilt,omitempty"`
Zoom *Vector1D `json:",omitempty" xml:"Zoom,omitempty"`
}
type PTZStatus struct {
Position PTZVector `json:",omitempty" xml:",omitempty"`
MoveStatus PTZMoveStatus `json:",omitempty" xml:",omitempty"`
Error string `json:",omitempty" xml:",omitempty"`
UtcTime string `json:",omitempty" xml:",omitempty"`
}
type PTZMoveStatus struct {
PanTilt string `json:",omitempty" xml:",omitempty"`
Zoom string `json:",omitempty" xml:",omitempty"`
}
type MoveStatus struct {
Status string
}
type GeoLocation struct {
Lon xsd.Double `xml:"lon,attr"`
Lat xsd.Double `xml:"lat,attr"`
Elevation xsd.Float `xml:"elevation,attr"`
}
type PresetTour struct {
Token ReferenceToken `xml:"token,attr"`
Name Name `xml:"Name"`
Status PTZPresetTourStatus `xml:"Status"`
AutoStart xsd.Boolean `xml:"AutoStart"`
StartingCondition PTZPresetTourStartingCondition `xml:"StartingCondition"`
TourSpot []PTZPresetTourSpot `xml:"TourSpot"`
Extension PTZPresetTourExtension `xml:"Extension"`
}
type PTZPresetTourStatus struct {
State PTZPresetTourState `xml:"State"`
CurrentTourSpot PTZPresetTourSpot `xml:"CurrentTourSpot"`
Extension PTZPresetTourStatusExtension `xml:"Extension"`
}
type PTZPresetTourState xsd.String
type PTZPresetTourSpot struct {
PresetDetail PTZPresetTourPresetDetail `xml:"PresetDetail"`
Speed PTZSpeed `xml:"Speed"`
StayTime xsd.Duration `xml:"StayTime"`
Extension PTZPresetTourSpotExtension `xml:"Extension"`
}
type PTZPresetTourPresetDetail struct {
PresetToken ReferenceToken `xml:"PresetToken"`
Home xsd.Boolean `xml:"Home"`
PTZPosition PTZVector `xml:"PTZPosition"`
TypeExtension PTZPresetTourTypeExtension `xml:"TypeExtension"`
}
type PTZPresetTourTypeExtension xsd.AnyType
type PTZPresetTourSpotExtension xsd.AnyType
type PTZPresetTourStatusExtension xsd.AnyType
type PTZPresetTourStartingCondition struct {
RandomPresetOrder xsd.Boolean `xml:"RandomPresetOrder,attr"`
RecurringTime xsd.Int `xml:"RecurringTime"`
RecurringDuration xsd.Duration `xml:"RecurringDuration"`
Direction PTZPresetTourDirection `xml:"Direction"`
Extension PTZPresetTourStartingConditionExtension `xml:"Extension"`
}
type PTZPresetTourDirection xsd.String
type PTZPresetTourStartingConditionExtension xsd.AnyType
type PTZPresetTourExtension xsd.AnyType
type PTZPresetTourOptions struct {
AutoStart xsd.Boolean
StartingCondition PTZPresetTourStartingConditionOptions
TourSpot PTZPresetTourSpotOptions
}
type PTZPresetTourStartingConditionOptions struct {
RecurringTime IntRange
RecurringDuration DurationRange
Direction PTZPresetTourDirection
Extension PTZPresetTourStartingConditionOptionsExtension
}
type PTZPresetTourStartingConditionOptionsExtension xsd.AnyType
type PTZPresetTourSpotOptions struct {
PresetDetail PTZPresetTourPresetDetailOptions
StayTime DurationRange
}
type PTZPresetTourPresetDetailOptions struct {
PresetToken ReferenceToken
Home xsd.Boolean
PanTiltPositionSpace Space2DDescription
ZoomPositionSpace Space1DDescription
Extension PTZPresetTourPresetDetailOptionsExtension
}
type PTZPresetTourPresetDetailOptionsExtension xsd.AnyType
//Device
type OnvifVersion struct {
Major int
Minor int
}
type SetDateTimeType xsd.String
type TimeZone struct {
TZ xsd.Token `xml:"TZ"`
}
type SystemDateTime struct {
DateTimeType SetDateTimeType
DaylightSavings xsd.Boolean
TimeZone TimeZone
UTCDateTime xsd.DateTime
LocalDateTime xsd.DateTime
Extension SystemDateTimeExtension
}
type SystemDateTimeExtension xsd.AnyType
type FactoryDefaultType xsd.String
type AttachmentData struct {
ContentType ContentType `xml:"contentType,attr"`
Include Include `xml:"inc:Include"`
}
type Include struct {
Href xsd.AnyURI `xml:"href,attr"`
}
type BackupFile struct {
Name string `xml:"Name"`
Data AttachmentData `xml:"Data"`
}
type SystemLogType xsd.String
type SystemLog struct {
Binary AttachmentData
String string
}
type SupportInformation struct {
Binary AttachmentData
String string
}
type Scope struct {
ScopeDef ScopeDefinition
ScopeItem xsd.AnyURI
}
type ScopeDefinition xsd.String
type DiscoveryMode xsd.String
type NetworkHost struct {
Type NetworkHostType `xml:"Type"`
IPv4Address IPv4Address `xml:"IPv4Address"`
IPv6Address IPv6Address `xml:"IPv6Address"`
DNSname DNSName `xml:"DNSname"`
Extension NetworkHostExtension `xml:"Extension"`
}
type NetworkHostType xsd.String
type NetworkHostExtension xsd.String
type RemoteUser struct {
Username string `xml:"Username"`
Password string `xml:"Password"`
UseDerivedPassword xsd.Boolean `xml:"UseDerivedPassword"`
}
type User struct {
Username string `json:",omitempty" xml:",omitempty"`
Password string `json:",omitempty" xml:",omitempty"`
UserLevel *UserLevel `json:",omitempty" xml:",omitempty"`
Extension *UserExtension `json:",omitempty" xml:",omitempty"`
}
type UserRequest struct {
Username string `xml:"onvif:Username,omitempty"`
Password string `xml:"onvif:Password,omitempty"`
UserLevel *UserLevel `xml:"onvif:UserLevel,omitempty"`
Extension *UserExtension `xml:"onvif:Extension,omitempty"`
}
type UserLevel xsd.String
type UserExtension xsd.String
type CapabilityCategory xsd.String
// Capabilities of device
type Capabilities struct {
Analytics AnalyticsCapabilities
Device DeviceCapabilities
Events EventCapabilities
Imaging ImagingCapabilities
Media MediaCapabilities
PTZ PTZCapabilities
Extension CapabilitiesExtension
}
// AnalyticsCapabilities Check
type AnalyticsCapabilities struct {
XAddr xsd.AnyURI
RuleSupport xsd.Boolean
AnalyticsModuleSupport xsd.Boolean
}
// DeviceCapabilities Check
type DeviceCapabilities struct {
XAddr xsd.AnyURI
Network NetworkCapabilities
System SystemCapabilities
IO IOCapabilities
Security SecurityCapabilities
Extension DeviceCapabilitiesExtension
}
// NetworkCapabilities Check
type NetworkCapabilities struct {
IPFilter xsd.Boolean
ZeroConfiguration xsd.Boolean
IPVersion6 xsd.Boolean
DynDNS xsd.Boolean
Extension NetworkCapabilitiesExtension
}
// NetworkCapabilitiesExtension Check
type NetworkCapabilitiesExtension struct {
Dot11Configuration xsd.Boolean
Extension NetworkCapabilitiesExtension2
}
// NetworkCapabilitiesExtension2 Extension2
type NetworkCapabilitiesExtension2 xsd.AnyType
// SystemCapabilities check
type SystemCapabilities struct {
DiscoveryResolve xsd.Boolean
DiscoveryBye xsd.Boolean
RemoteDiscovery xsd.Boolean
SystemBackup xsd.Boolean
SystemLogging xsd.Boolean
FirmwareUpgrade xsd.Boolean
SupportedVersions OnvifVersion
Extension SystemCapabilitiesExtension
}
type SystemCapabilitiesExtension struct {
HttpFirmwareUpgrade xsd.Boolean
HttpSystemBackup xsd.Boolean
HttpSystemLogging xsd.Boolean
HttpSupportInformation xsd.Boolean
Extension SystemCapabilitiesExtension2
}
type SystemCapabilitiesExtension2 xsd.AnyType
type IOCapabilities struct {
InputConnectors int
RelayOutputs int
Extension IOCapabilitiesExtension
}
type IOCapabilitiesExtension struct {
Auxiliary xsd.Boolean
AuxiliaryCommands AuxiliaryData
Extension IOCapabilitiesExtension2
}
type IOCapabilitiesExtension2 xsd.AnyType
type SecurityCapabilities struct {
TLS1_1 xsd.Boolean
TLS1_2 xsd.Boolean
OnboardKeyGeneration xsd.Boolean
AccessPolicyConfig xsd.Boolean
X_509Token xsd.Boolean
SAMLToken xsd.Boolean
KerberosToken xsd.Boolean
RELToken xsd.Boolean
Extension SecurityCapabilitiesExtension
}
type SecurityCapabilitiesExtension struct {
TLS1_0 xsd.Boolean
Extension SecurityCapabilitiesExtension2
}
type SecurityCapabilitiesExtension2 struct {
Dot1X xsd.Boolean
SupportedEAPMethod int
RemoteUserHandling xsd.Boolean
}
type DeviceCapabilitiesExtension xsd.AnyType
type EventCapabilities struct {
XAddr xsd.AnyURI
WSSubscriptionPolicySupport xsd.Boolean
WSPullPointSupport xsd.Boolean
WSPausableSubscriptionManagerInterfaceSupport xsd.Boolean
}
type ImagingCapabilities struct {
XAddr xsd.AnyURI
}
type MediaCapabilities struct {
XAddr xsd.AnyURI
StreamingCapabilities RealTimeStreamingCapabilities
Extension MediaCapabilitiesExtension
}
type RealTimeStreamingCapabilities struct {
RTPMulticast xsd.Boolean
RTP_TCP xsd.Boolean
RTP_RTSP_TCP xsd.Boolean
Extension RealTimeStreamingCapabilitiesExtension
}
type RealTimeStreamingCapabilitiesExtension xsd.AnyType
type MediaCapabilitiesExtension struct {
ProfileCapabilities ProfileCapabilities
}
type ProfileCapabilities struct {
MaximumNumberOfProfiles int
}
type PTZCapabilities struct {
XAddr xsd.AnyURI
}
type CapabilitiesExtension struct {
DeviceIO DeviceIOCapabilities
Display DisplayCapabilities
Recording RecordingCapabilities
Search SearchCapabilities
Replay ReplayCapabilities
Receiver ReceiverCapabilities
AnalyticsDevice AnalyticsDeviceCapabilities
Extensions CapabilitiesExtension2
}
type DeviceIOCapabilities struct {
XAddr xsd.AnyURI
VideoSources int
VideoOutputs int
AudioSources int
AudioOutputs int
RelayOutputs int
}
type DisplayCapabilities struct {
XAddr xsd.AnyURI
FixedLayout xsd.Boolean
}
type RecordingCapabilities struct {
XAddr xsd.AnyURI
ReceiverSource xsd.Boolean
MediaProfileSource xsd.Boolean
DynamicRecordings xsd.Boolean
DynamicTracks xsd.Boolean
MaxStringLength int
}
type SearchCapabilities struct {
XAddr xsd.AnyURI
MetadataSearch xsd.Boolean
}
type ReplayCapabilities struct {
XAddr xsd.AnyURI
}
type ReceiverCapabilities struct {
XAddr xsd.AnyURI
RTP_Multicast xsd.Boolean
RTP_TCP xsd.Boolean
RTP_RTSP_TCP xsd.Boolean
SupportedReceivers int
MaximumRTSPURILength int
}
type AnalyticsDeviceCapabilities struct {
XAddr xsd.AnyURI
RuleSupport xsd.Boolean
Extension AnalyticsDeviceExtension
}
type AnalyticsDeviceExtension xsd.AnyType
type CapabilitiesExtension2 xsd.AnyType
type HostnameInformation struct {
FromDHCP *xsd.Boolean `json:"FromDHCP,omitempty"`
Name *xsd.Token `json:"Name,omitempty"`
Extension *HostnameInformationExtension `json:"Extension,omitempty"`
}
type HostnameInformationExtension xsd.AnyType
type DNSInformation struct {
FromDHCP *xsd.Boolean `json:"FromDHCP,omitempty"`
SearchDomain *xsd.Token `json:"SearchDomain,omitempty"`
DNSFromDHCP *IPAddress `json:"DNSFromDHCP,omitempty"`
DNSManual *IPAddress `json:"DNSManual,omitempty"`
Extension *DNSInformationExtension `json:"Extension,omitempty"`
}
type DNSInformationExtension xsd.AnyType
type NTPInformation struct {
FromDHCP xsd.Boolean
NTPFromDHCP NetworkHost
NTPManual NetworkHost
Extension NTPInformationExtension
}
type NTPInformationExtension xsd.AnyType
type DynamicDNSInformation struct {
Type DynamicDNSType
Name DNSName
TTL xsd.Duration
Extension DynamicDNSInformationExtension
}
// TODO: enumeration
type DynamicDNSType xsd.String
type DynamicDNSInformationExtension xsd.AnyType
type NetworkInterface struct {
DeviceEntity
Enabled *xsd.Boolean `json:",omitempty"`
Info *NetworkInterfaceInfo `json:",omitempty"`
Link *NetworkInterfaceLink `json:",omitempty"`
IPv4 *IPv4NetworkInterface `json:",omitempty"`
IPv6 *IPv6NetworkInterface `json:",omitempty"`
Extension *NetworkInterfaceExtension `json:",omitempty"`
}
type NetworkInterfaceInfo struct {
Name xsd.String `json:"Name,omitempty"`
HwAddress HwAddress `json:"HwAddress,omitempty"`
MTU xsd.Int `json:"MTU,omitempty"`
}
type HwAddress xsd.Token
type NetworkInterfaceLink struct {
AdminSettings NetworkInterfaceConnectionSetting
OperSettings NetworkInterfaceConnectionSetting
InterfaceType *IANA_IfTypes `xml:"IANA-IfTypes,omitempty" json:"IANA-IfTypes,omitempty"`
}
type IANA_IfTypes xsd.Int
type NetworkInterfaceConnectionSetting struct {
AutoNegotiation *xsd.Boolean `xml:"onvif:AutoNegotiation,omitempty" json:"AutoNegotiation,omitempty"`
Speed *xsd.Int `xml:"onvif:Speed,omitempty" json:"Speed,omitempty"`
Duplex *Duplex `xml:"onvif:Duplex,omitempty" json:"Duplex,omitempty"`
}
// TODO: enum
type Duplex xsd.String
type NetworkInterfaceExtension struct {
InterfaceType IANA_IfTypes
Dot3 *Dot3Configuration `xml:"Dot3,omitempty" json:"Dot3,omitempty"`
Dot11 *Dot11Configuration `xml:"Dot11,omitempty" json:"Dot11,omitempty"`
Extension NetworkInterfaceExtension2
}
type NetworkInterfaceExtension2 xsd.AnyType
type Dot11Configuration struct {
SSID Dot11SSIDType `xml:"SSID,omitempty" json:"SSID,omitempty"`
Mode Dot11StationMode `xml:"Mode,omitempty" json:"Mode,omitempty"`
Alias Name `xml:"Alias,omitempty" json:"Alias,omitempty"`
Priority NetworkInterfaceConfigPriority `xml:"Priority,omitempty" json:"Priority,omitempty"`
Security Dot11SecurityConfiguration `xml:"Security,omitempty" json:"Security,omitempty"`
}
type Dot11SecurityConfiguration struct {
Mode Dot11SecurityMode `xml:"Mode,omitempty" json:"Mode,omitempty"`
Algorithm Dot11Cipher `xml:"Algorithm,omitempty" json:"Algorithm,omitempty"`
PSK Dot11PSKSet `xml:"PSK,omitempty" json:"PSK,omitempty"`
Dot1X ReferenceToken `xml:"Dot1X,omitempty" json:"Dot1X,omitempty"`
Extension Dot11SecurityConfigurationExtension `xml:"Extension,omitempty" json:"Extension,omitempty"`
}
type Dot11SecurityConfigurationExtension xsd.AnyType
type Dot11PSKSet struct {
Key Dot11PSK `xml:"Key,omitempty" json:"Key,omitempty"`
Passphrase Dot11PSKPassphrase `xml:"Passphrase,omitempty" json:"Passphrase,omitempty"`
Extension Dot11PSKSetExtension `xml:"Extension,omitempty" json:"Extension,omitempty"`
}
type Dot11PSKSetExtension xsd.AnyType
type Dot11PSKPassphrase xsd.String
type Dot11PSK xsd.HexBinary
// TODO: enumeration
type Dot11Cipher xsd.String
// TODO: enumeration
type Dot11SecurityMode xsd.String
// TODO: restrictions
type NetworkInterfaceConfigPriority xsd.Integer
// TODO: enumeration
type Dot11StationMode xsd.String
// TODO: restrictions
type Dot11SSIDType xsd.HexBinary
type Dot3Configuration xsd.String
type IPv6NetworkInterface struct {
Enabled xsd.Boolean
Config IPv6Configuration
}
type IPv6Configuration struct {
AcceptRouterAdvert xsd.Boolean
DHCP IPv6DHCPConfiguration
Manual PrefixedIPv6Address
LinkLocal PrefixedIPv6Address
FromDHCP PrefixedIPv6Address
FromRA PrefixedIPv6Address
Extension IPv6ConfigurationExtension
}
type IPv6ConfigurationExtension xsd.AnyType
type PrefixedIPv6Address struct {
Address IPv6Address `xml:"Address,omitempty" json:"Address,omitempty"`
PrefixLength xsd.Int `xml:"PrefixLength,omitempty" json:"PrefixLength,omitempty"`
}
// TODO: enumeration
type IPv6DHCPConfiguration xsd.String
type IPv4NetworkInterface struct {
Enabled *xsd.Boolean `json:"Enabled,omitempty"`
Config *IPv4Configuration `json:"Config,omitempty"`
}
type IPv4Configuration struct {
Manual *PrefixedIPv4Address `json:"Manual,omitempty"`
LinkLocal *PrefixedIPv4Address `json:"LinkLocal,omitempty"`
FromDHCP *PrefixedIPv4Address `json:"FromDHCP,omitempty"`
DHCP *xsd.Boolean `json:"DHCP,omitempty"`
}
// optional, unbounded
type PrefixedIPv4Address struct {
Address IPv4Address `xml:"Address" json:"Address,omitempty"`
PrefixLength xsd.Int `xml:"PrefixLength" json:"PrefixLength,omitempty"`
}
type NetworkInterfaceSetConfiguration struct {
Enabled *xsd.Boolean `xml:"onvif:Enabled,omitempty"`
Link *NetworkInterfaceConnectionSetting `xml:"onvif:Link,omitempty"`
MTU *xsd.Int `xml:"onvif:MTU,omitempty"`
IPv4 *IPv4NetworkInterfaceSetConfiguration `xml:"onvif:IPv4,omitempty"`
IPv6 *IPv6NetworkInterfaceSetConfiguration `xml:"onvif:IPv6,omitempty"`
Extension *NetworkInterfaceSetConfigurationExtension `xml:"onvif:Extension,omitempty"`
}
type NetworkInterfaceSetConfigurationExtension struct {
Dot3 Dot3Configuration `xml:"onvif:Dot3,omitempty"`
Dot11 Dot11Configuration `xml:"onvif:Dot11,omitempty"`
Extension NetworkInterfaceSetConfigurationExtension2 `xml:"onvif:Extension,omitempty"`
}
type NetworkInterfaceSetConfigurationExtension2 xsd.AnyType
type IPv6NetworkInterfaceSetConfiguration struct {
Enabled *xsd.Boolean `xml:"onvif:Enabled,omitempty" json:",omitempty"`
AcceptRouterAdvert *xsd.Boolean `xml:"onvif:AcceptRouterAdvert,omitempty" json:",omitempty"`
Manual *PrefixedIPv6Address `xml:"onvif:Manual,omitempty" json:",omitempty"`
DHCP *IPv6DHCPConfiguration `xml:"onvif:DHCP,omitempty" json:",omitempty"`
}
type IPv4NetworkInterfaceSetConfiguration struct {
Enabled *xsd.Boolean `xml:"onvif:Enabled,omitempty"`
Manual *PrefixedIPv4Address `xml:"onvif:Manual,omitempty"`
DHCP *xsd.Boolean `xml:"onvif:DHCP,omitempty"`
}
type NetworkProtocolResponse struct {
Name *NetworkProtocolType `json:",omitempty"`
Enabled *xsd.Boolean `json:",omitempty"`
Port *xsd.Int `json:",omitempty"`
Extension *NetworkProtocolExtension `json:",omitempty"`
}
type NetworkProtocolRequest struct {
Name *NetworkProtocolType `xml:"onvif:Name,omitempty"`
Enabled *xsd.Boolean `xml:"onvif:Enabled,omitempty"`
Port *xsd.Int `xml:"onvif:Port,omitempty"`
Extension *NetworkProtocolExtension `xml:"onvif:Extension,omitempty"`
}
type NetworkProtocolExtension xsd.AnyType
// TODO: enumeration
type NetworkProtocolType xsd.String
type NetworkGateway struct {
IPv4Address *IPv4Address `json:"IPv4Address,omitempty"`
IPv6Address *IPv6Address `json:"IPv6Address,omitempty"`
}
type NetworkZeroConfiguration struct {
InterfaceToken ReferenceToken
Enabled xsd.Boolean
Addresses IPv4Address
Extension NetworkZeroConfigurationExtension
}
type NetworkZeroConfigurationExtension struct {
Additional *NetworkZeroConfiguration
Extension NetworkZeroConfigurationExtension2
}
type NetworkZeroConfigurationExtension2 xsd.AnyType
type IPAddressFilter struct {
Type IPAddressFilterType `xml:"Type,omitempty"`
IPv4Address PrefixedIPv4Address `xml:"IPv4Address,omitempty"`
IPv6Address PrefixedIPv6Address `xml:"IPv6Address,omitempty"`
Extension IPAddressFilterExtension `xml:"Extension,omitempty"`
}
type IPAddressFilterExtension xsd.AnyType
// enum { 'Allow', 'Deny' }
// TODO: enumeration
type IPAddressFilterType xsd.String
// TODO: attribite <xs:attribute ref="xmime:contentType" use="optional"/>
type BinaryData struct {
X ContentType `xml:"xmime:contentType,attr"`
Data xsd.Base64Binary `xml:"Data"`
}
type Certificate struct {
CertificateID xsd.Token `xml:"CertificateID"`
Certificate BinaryData `xml:"Certificate"`
}
type CertificateStatus struct {
CertificateID xsd.Token `xml:"CertificateID"`
Status xsd.Boolean `xml:"Status"`
}
type RelayOutput struct {
DeviceEntity
Properties RelayOutputSettings
}
type RelayOutputSettings struct {
Mode RelayMode `xml:"Mode"`
DelayTime xsd.Duration `xml:"DelayTime"`
IdleState RelayIdleState `xml:"IdleState"`
}
type DigitalInput struct {
Token ReferenceToken `xml:"token,attr"`
IdleState InputIdleState `xml:"IdleState,attr"`
}
// TODO:enumeration
type InputToken xsd.String
// TODO:enumeration
type InputIdleState xsd.String
// TODO:enumeration
type RelayIdleState xsd.String
// TODO: enumeration
type RelayMode xsd.String
// TODO: enumeration
type RelayLogicalState xsd.String
type CertificateWithPrivateKey struct {
CertificateID xsd.Token `xml:"CertificateID"`
Certificate BinaryData `xml:"Certificate"`
PrivateKey BinaryData `xml:"PrivateKey"`
}
type CertificateInformation struct {
CertificateID xsd.Token
IssuerDN xsd.String
SubjectDN xsd.String
KeyUsage CertificateUsage
ExtendedKeyUsage CertificateUsage
KeyLength xsd.Int
Version xsd.String
SerialNum xsd.String
SignatureAlgorithm xsd.String
Validity DateTimeRange
Extension CertificateInformationExtension
}
type CertificateInformationExtension xsd.AnyType
type DateTimeRange struct {
From xsd.DateTime
Until xsd.DateTime
}
type CertificateUsage struct {
Critical xsd.Boolean `xml:"Critical,attr"`
CertificateUsage xsd.String
}
type Dot1XConfiguration struct {
Dot1XConfigurationToken ReferenceToken `xml:"Dot1XConfigurationToken"`
Identity xsd.String `xml:"Identity"`
AnonymousID xsd.String `xml:"AnonymousID,omitempty"`
EAPMethod xsd.Int `xml:"EAPMethod"`
CACertificateID xsd.Token `xml:"CACertificateID,omitempty"`
EAPMethodConfiguration EAPMethodConfiguration `xml:"EAPMethodConfiguration,omitempty"`
Extension Dot1XConfigurationExtension `xml:"Extension,omitempty"`
}
type Dot1XConfigurationExtension xsd.AnyType
type EAPMethodConfiguration struct {
TLSConfiguration TLSConfiguration `xml:"TLSConfiguration,omitempty"`
Password xsd.String `xml:"Password,omitempty"`
Extension EapMethodExtension `xml:"Extension,omitempty"`
}
type EapMethodExtension xsd.AnyType
type TLSConfiguration struct {
CertificateID xsd.Token `xml:"CertificateID,omitempty"`
}
type Dot11Capabilities struct {
TKIP xsd.Boolean
ScanAvailableNetworks xsd.Boolean
MultipleConfiguration xsd.Boolean
AdHocStationMode xsd.Boolean
WEP xsd.Boolean
}
type Dot11Status struct {
SSID Dot11SSIDType
BSSID xsd.String
PairCipher Dot11Cipher
GroupCipher Dot11Cipher
SignalStrength Dot11SignalStrength
ActiveConfigAlias ReferenceToken
}
// TODO: enumeration
type Dot11SignalStrength xsd.String
type Dot11AvailableNetworks struct {
SSID Dot11SSIDType
BSSID xsd.String
AuthAndMangementSuite Dot11AuthAndMangementSuite
PairCipher Dot11Cipher
GroupCipher Dot11Cipher
SignalStrength Dot11SignalStrength
Extension Dot11AvailableNetworksExtension
}
type Dot11AvailableNetworksExtension xsd.AnyType
// TODO: enumeration
type Dot11AuthAndMangementSuite xsd.String
type SystemLogUriList struct {
SystemLog SystemLogUri
}
type SystemLogUri struct {
Type SystemLogType
Uri xsd.AnyURI
}
type LocationEntity struct {
Entity xsd.String `xml:"Entity,attr"`
Token ReferenceToken `xml:"Token,attr"`
Fixed xsd.Boolean `xml:"Fixed,attr"`
GeoSource xsd.AnyURI `xml:"GeoSource,attr"`
AutoGeo xsd.Boolean `xml:"AutoGeo,attr"`
GeoLocation GeoLocation `xml:"GeoLocation"`
GeoOrientation GeoOrientation `xml:"GeoOrientation"`
LocalLocation LocalLocation `xml:"LocalLocation"`
LocalOrientation LocalOrientation `xml:"LocalOrientation"`
}
type LocalOrientation struct {
Lon xsd.Double `xml:"lon,attr"`
Lat xsd.Double `xml:"lat,attr"`
Elevation xsd.Float `xml:"elevation,attr"`
}
type LocalLocation struct {
X xsd.Float `xml:"x,attr"`
Y xsd.Float `xml:"y,attr"`
Z xsd.Float `xml:"z,attr"`
}
type GeoOrientation struct {
Roll xsd.Float `xml:"roll,attr"`
Pitch xsd.Float `xml:"pitch,attr"`
Yaw xsd.Float `xml:"yaw,attr"`
}
type FocusMove struct {
Absolute AbsoluteFocus `xml:"Absolute"`
Relative RelativeFocus `xml:"Relative"`
Continuous ContinuousFocus `xml:"Continuous"`
}
type ContinuousFocus struct {
Speed xsd.Float `xml:"Speed"`
}
type RelativeFocus struct {
Distance xsd.Float `xml:"Distance"`
Speed xsd.Float `xml:"Speed"`
}
type AbsoluteFocus struct {
Position xsd.Float `xml:"Position"`
Speed xsd.Float `xml:"Speed"`
}
type DateTime struct {
Time Time `xml:"Time"`
Date Date `xml:"Date"`
}
type Time struct {
Hour xsd.Int `xml:"Hour"`
Minute xsd.Int `xml:"Minute"`
Second xsd.Int `xml:"Second"`
}
type Date struct {
Year xsd.Int `xml:"Year"`
Month xsd.Int `xml:"Month"`
Day xsd.Int `xml:"Day"`
}
type DateTimeRequest struct {
Time *TimeRequest `xml:"onvif:Time,omitempty"`
Date *DateRequest `xml:"onvif:Date,omitempty"`
}
type TimeRequest struct {
Hour *xsd.Int `xml:"onvif:Hour,omitempty"`
Minute *xsd.Int `xml:"onvif:Minute,omitempty"`
Second *xsd.Int `xml:"onvif:Second,omitempty"`
}
type DateRequest struct {
Year *xsd.Int `xml:"onvif:Year,omitempty"`
Month *xsd.Int `xml:"onvif:Month,omitempty"`
Day *xsd.Int `xml:"onvif:Day,omitempty"`
}