// NOTE: This file was generated by the ServiceGenerator.

// ----------------------------------------------------------------------------
// API:
//   Google Spectrum Database API (spectrum/v1explorer)
// Description:
//   API for spectrum-management functions.
// Documentation:
//   http://developers.google.com/spectrum

#if GTLR_BUILT_AS_FRAMEWORK
  #import "GTLR/GTLRObject.h"
#else
  #import "GTLRObject.h"
#endif

#if GTLR_RUNTIME_VERSION != 3000
#error This file was generated by a different version of ServiceGenerator which is incompatible with this GTLR library source.
#endif

@class GTLRSpectrum_AntennaCharacteristics;
@class GTLRSpectrum_DatabaseSpec;
@class GTLRSpectrum_DbUpdateSpec;
@class GTLRSpectrum_DeviceCapabilities;
@class GTLRSpectrum_DeviceDescriptor;
@class GTLRSpectrum_DeviceOwner;
@class GTLRSpectrum_DeviceValidity;
@class GTLRSpectrum_EventTime;
@class GTLRSpectrum_FrequencyRange;
@class GTLRSpectrum_GeoLocation;
@class GTLRSpectrum_GeoLocationEllipse;
@class GTLRSpectrum_GeoLocationPoint;
@class GTLRSpectrum_GeoLocationPolygon;
@class GTLRSpectrum_GeoSpectrumSchedule;
@class GTLRSpectrum_Message;
@class GTLRSpectrum_RulesetInfo;
@class GTLRSpectrum_Schedule;
@class GTLRSpectrum_Vcard;
@class GTLRSpectrum_VcardAddress;
@class GTLRSpectrum_VcardTelephone;
@class GTLRSpectrum_VcardTypedText;

NS_ASSUME_NONNULL_BEGIN

/**
 *  Antenna characteristics provide additional information, such as the antenna
 *  height, antenna type, etc. Whether antenna characteristics must be provided
 *  in a request depends on the device type and regulatory domain.
 */
@interface GTLRSpectrum_AntennaCharacteristics : GTLRObject

/**
 *  The antenna height in meters. Whether the antenna height is required depends
 *  on the device type and the regulatory domain. Note that the height may be
 *  negative.
 *
 *  Uses NSNumber of doubleValue.
 */
@property(nonatomic, strong, nullable) NSNumber *height;

/**
 *  If the height is required, then the height type (AGL for above ground level
 *  or AMSL for above mean sea level) is also required. The default is AGL.
 */
@property(nonatomic, copy, nullable) NSString *heightType;

/**
 *  The height uncertainty in meters. Whether this is required depends on the
 *  regulatory domain.
 *
 *  Uses NSNumber of doubleValue.
 */
@property(nonatomic, strong, nullable) NSNumber *heightUncertainty;

@end


/**
 *  This message contains the name and URI of a database.
 */
@interface GTLRSpectrum_DatabaseSpec : GTLRObject

/** The display name for a database. */
@property(nonatomic, copy, nullable) NSString *name;

/** The corresponding URI of the database. */
@property(nonatomic, copy, nullable) NSString *uri;

@end


/**
 *  This message is provided by the database to notify devices of an upcoming
 *  change to the database URI.
 */
@interface GTLRSpectrum_DbUpdateSpec : GTLRObject

/**
 *  A required list of one or more databases. A device should update its
 *  preconfigured list of databases to replace (only) the database that provided
 *  the response with the specified entries.
 */
@property(nonatomic, strong, nullable) NSArray<GTLRSpectrum_DatabaseSpec *> *databases;

@end


/**
 *  Device capabilities provide additional information that may be used by a
 *  device to provide additional information to the database that may help it to
 *  determine available spectrum. If the database does not support device
 *  capabilities it will ignore the parameter altogether.
 */
@interface GTLRSpectrum_DeviceCapabilities : GTLRObject

/**
 *  An optional list of frequency ranges supported by the device. Each element
 *  must contain start and stop frequencies in which the device can operate.
 *  Channel identifiers are optional. When specified, the database should not
 *  return available spectrum that falls outside these ranges or channel IDs.
 */
@property(nonatomic, strong, nullable) NSArray<GTLRSpectrum_FrequencyRange *> *frequencyRanges;

@end


/**
 *  The device descriptor contains parameters that identify the specific device,
 *  such as its manufacturer serial number, regulatory-specific identifier
 *  (e.g., FCC ID), and any other device characteristics required by regulatory
 *  domains.
 */
@interface GTLRSpectrum_DeviceDescriptor : GTLRObject

/**
 *  Specifies the ETSI white space device category. Valid values are the strings
 *  master and slave. This field is case-insensitive. Consult the ETSI
 *  documentation for details about the device types.
 */
@property(nonatomic, copy, nullable) NSString *etsiEnDeviceCategory;

/**
 *  Specifies the ETSI white space device emissions class. The values are
 *  represented by numeric strings, such as 1, 2, etc. Consult the ETSI
 *  documentation for details about the device types.
 */
@property(nonatomic, copy, nullable) NSString *etsiEnDeviceEmissionsClass;

/**
 *  Specifies the ETSI white space device type. Valid values are single-letter
 *  strings, such as A, B, etc. Consult the ETSI documentation for details about
 *  the device types.
 */
@property(nonatomic, copy, nullable) NSString *etsiEnDeviceType;

/**
 *  Specifies the ETSI white space device technology identifier. The string
 *  value must not exceed 64 characters in length. Consult the ETSI
 *  documentation for details about the device types.
 */
@property(nonatomic, copy, nullable) NSString *etsiEnTechnologyId;

/**
 *  Specifies the device's FCC certification identifier. The value is an
 *  identifier string whose length should not exceed 32 characters. Note that,
 *  in practice, a valid FCC ID may be limited to 19 characters.
 */
@property(nonatomic, copy, nullable) NSString *fccId;

/**
 *  Specifies the TV Band White Space device type, as defined by the FCC. Valid
 *  values are FIXED, MODE_1, MODE_2.
 */
@property(nonatomic, copy, nullable) NSString *fccTvbdDeviceType;

/**
 *  The manufacturer's ID may be required by the regulatory domain. This should
 *  represent the name of the device manufacturer, should be consistent across
 *  all devices from the same manufacturer, and should be distinct from that of
 *  other manufacturers. The string value must not exceed 64 characters in
 *  length.
 */
@property(nonatomic, copy, nullable) NSString *manufacturerId;

/**
 *  The device's model ID may be required by the regulatory domain. The string
 *  value must not exceed 64 characters in length.
 */
@property(nonatomic, copy, nullable) NSString *modelId;

/**
 *  The list of identifiers for rulesets supported by the device. A database may
 *  require that the device provide this list before servicing the device
 *  requests. If the database does not support any of the rulesets specified in
 *  the list, the database may refuse to service the device requests. If
 *  present, the list must contain at least one entry.
 *  For information about the valid requests, see section 9.2 of the PAWS
 *  specification. Currently, FccTvBandWhiteSpace-2010 is the only supported
 *  ruleset.
 */
@property(nonatomic, strong, nullable) NSArray<NSString *> *rulesetIds;

/**
 *  The manufacturer's device serial number; required by the applicable
 *  regulatory domain. The length of the value must not exceed 64 characters.
 */
@property(nonatomic, copy, nullable) NSString *serialNumber;

@end


/**
 *  This parameter contains device-owner information required as part of device
 *  registration. The regulatory domains may require additional parameters.
 *  All contact information must be expressed using the structure defined by the
 *  vCard format specification. Only the contact fields of vCard are supported:
 *  - fn: Full name of an individual
 *  - org: Name of the organization
 *  - adr: Address fields
 *  - tel: Telephone numbers
 *  - email: Email addresses
 *  Note that the vCard specification defines maximum lengths for each field.
 */
@interface GTLRSpectrum_DeviceOwner : GTLRObject

/**
 *  The vCard contact information for the device operator is optional, but may
 *  be required by specific regulatory domains.
 *
 *  Remapped to 'operatorProperty' to avoid language reserved word 'operator'.
 */
@property(nonatomic, strong, nullable) GTLRSpectrum_Vcard *operatorProperty;

/**
 *  The vCard contact information for the individual or business that owns the
 *  device is required.
 */
@property(nonatomic, strong, nullable) GTLRSpectrum_Vcard *owner;

@end


/**
 *  The device validity element describes whether a particular device is valid
 *  to operate in the regulatory domain.
 */
@interface GTLRSpectrum_DeviceValidity : GTLRObject

/**
 *  The descriptor of the device for which the validity check was requested. It
 *  will always be present.
 */
@property(nonatomic, strong, nullable) GTLRSpectrum_DeviceDescriptor *deviceDesc;

/**
 *  The validity status: true if the device is valid for operation, false
 *  otherwise. It will always be present.
 *
 *  Uses NSNumber of boolValue.
 */
@property(nonatomic, strong, nullable) NSNumber *isValid;

/**
 *  If the device identifier is not valid, the database may include a reason.
 *  The reason may be in any language. The length of the value should not exceed
 *  128 characters.
 */
@property(nonatomic, copy, nullable) NSString *reason;

@end


/**
 *  The start and stop times of an event. This is used to indicate the time
 *  period for which a spectrum profile is valid.
 *  Both times are expressed using the format, YYYY-MM-DDThh:mm:ssZ, as defined
 *  in RFC3339. The times must be expressed using UTC.
 */
@interface GTLRSpectrum_EventTime : GTLRObject

/** The inclusive start of the event. It will be present. */
@property(nonatomic, copy, nullable) NSString *startTime;

/** The exclusive end of the event. It will be present. */
@property(nonatomic, copy, nullable) NSString *stopTime;

@end


/**
 *  A specific range of frequencies together with the associated maximum power
 *  level and channel identifier.
 */
@interface GTLRSpectrum_FrequencyRange : GTLRObject

/**
 *  The database may include a channel identifier, when applicable. When it is
 *  included, the device should treat it as informative. The length of the
 *  identifier should not exceed 16 characters.
 */
@property(nonatomic, copy, nullable) NSString *channelId;

/**
 *  The maximum total power level (EIRP)—computed over the corresponding
 *  operating bandwidth—that is permitted within the frequency range. Depending
 *  on the context in which the frequency-range element appears, this value may
 *  be required. For example, it is required in the available-spectrum response,
 *  available-spectrum-batch response, and spectrum-use notification message,
 *  but it should not be present (it is not applicable) when the frequency range
 *  appears inside a device-capabilities message.
 *
 *  Uses NSNumber of doubleValue.
 */
@property(nonatomic, strong, nullable) NSNumber *maxPowerDBm;

/**
 *  The required inclusive start of the frequency range (in Hertz).
 *
 *  Uses NSNumber of doubleValue.
 */
@property(nonatomic, strong, nullable) NSNumber *startHz;

/**
 *  The required exclusive end of the frequency range (in Hertz).
 *
 *  Uses NSNumber of doubleValue.
 */
@property(nonatomic, strong, nullable) NSNumber *stopHz;

@end


/**
 *  This parameter is used to specify the geolocation of the device.
 */
@interface GTLRSpectrum_GeoLocation : GTLRObject

/**
 *  The location confidence level, as an integer percentage, may be required,
 *  depending on the regulatory domain. When the parameter is optional and not
 *  provided, its value is assumed to be 95. Valid values range from 0 to 99,
 *  since, in practice, 100-percent confidence is not achievable. The confidence
 *  value is meaningful only when geolocation refers to a point with
 *  uncertainty.
 *
 *  Uses NSNumber of intValue.
 */
@property(nonatomic, strong, nullable) NSNumber *confidence;

/**
 *  If present, indicates that the geolocation represents a point.
 *  Paradoxically, a point is parameterized using an ellipse, where the center
 *  represents the location of the point and the distances along the major and
 *  minor axes represent the uncertainty. The uncertainty values may be
 *  required, depending on the regulatory domain.
 */
@property(nonatomic, strong, nullable) GTLRSpectrum_GeoLocationEllipse *point;

/**
 *  If present, indicates that the geolocation represents a region. Database
 *  support for regions is optional.
 */
@property(nonatomic, strong, nullable) GTLRSpectrum_GeoLocationPolygon *region;

@end


/**
 *  A "point" with uncertainty is represented using the Ellipse shape.
 */
@interface GTLRSpectrum_GeoLocationEllipse : GTLRObject

/** A required geo-spatial point representing the center of the ellipse. */
@property(nonatomic, strong, nullable) GTLRSpectrum_GeoLocationPoint *center;

/**
 *  A floating-point number that expresses the orientation of the ellipse,
 *  representing the rotation, in degrees, of the semi-major axis from North
 *  towards the East. For example, when the uncertainty is greatest along the
 *  North-South direction, orientation is 0 degrees; conversely, if the
 *  uncertainty is greatest along the East-West direction, orientation is 90
 *  degrees. When orientation is not present, the orientation is assumed to be
 *  0.
 *
 *  Uses NSNumber of doubleValue.
 */
@property(nonatomic, strong, nullable) NSNumber *orientation;

/**
 *  A floating-point number that expresses the location uncertainty along the
 *  major axis of the ellipse. May be required by the regulatory domain. When
 *  the uncertainty is optional, the default value is 0.
 *
 *  Uses NSNumber of doubleValue.
 */
@property(nonatomic, strong, nullable) NSNumber *semiMajorAxis;

/**
 *  A floating-point number that expresses the location uncertainty along the
 *  minor axis of the ellipse. May be required by the regulatory domain. When
 *  the uncertainty is optional, the default value is 0.
 *
 *  Uses NSNumber of doubleValue.
 */
@property(nonatomic, strong, nullable) NSNumber *semiMinorAxis;

@end


/**
 *  A single geolocation on the globe.
 */
@interface GTLRSpectrum_GeoLocationPoint : GTLRObject

/**
 *  A required floating-point number that expresses the latitude in degrees
 *  using the WGS84 datum. For details on this encoding, see the National
 *  Imagery and Mapping Agency's Technical Report TR8350.2.
 *
 *  Uses NSNumber of doubleValue.
 */
@property(nonatomic, strong, nullable) NSNumber *latitude;

/**
 *  A required floating-point number that expresses the longitude in degrees
 *  using the WGS84 datum. For details on this encoding, see the National
 *  Imagery and Mapping Agency's Technical Report TR8350.2.
 *
 *  Uses NSNumber of doubleValue.
 */
@property(nonatomic, strong, nullable) NSNumber *longitude;

@end


/**
 *  A region is represented using the polygonal shape.
 */
@interface GTLRSpectrum_GeoLocationPolygon : GTLRObject

/**
 *  When the geolocation describes a region, the exterior field refers to a list
 *  of latitude/longitude points that represent the vertices of a polygon. The
 *  first and last points must be the same. Thus, a minimum of four points is
 *  required. The following polygon restrictions from RFC5491 apply:
 *  - A connecting line shall not cross another connecting line of the same
 *  polygon.
 *  - The vertices must be defined in a counterclockwise order.
 *  - The edges of a polygon are defined by the shortest path between two points
 *  in space (not a geodesic curve). Consequently, the length between two
 *  adjacent vertices should be restricted to a maximum of 130 km.
 *  - All vertices are assumed to be at the same altitude.
 *  - Polygon shapes should be restricted to a maximum of 15 vertices (16 points
 *  that include the repeated vertex).
 */
@property(nonatomic, strong, nullable) NSArray<GTLRSpectrum_GeoLocationPoint *> *exterior;

@end


/**
 *  The schedule of spectrum profiles available at a particular geolocation.
 */
@interface GTLRSpectrum_GeoSpectrumSchedule : GTLRObject

/**
 *  The geolocation identifies the location at which the spectrum schedule
 *  applies. It will always be present.
 */
@property(nonatomic, strong, nullable) GTLRSpectrum_GeoLocation *location;

/**
 *  A list of available spectrum profiles and associated times. It will always
 *  be present, and at least one schedule must be included (though it may be
 *  empty if there is no available spectrum). More than one schedule may be
 *  included to represent future changes to the available spectrum.
 */
@property(nonatomic, strong, nullable) NSArray<GTLRSpectrum_Schedule *> *spectrumSchedules;

@end


/**
 *  Available spectrum can be logically characterized by a list of frequency
 *  ranges and permissible power levels for each range.
 */
@interface GTLRSpectrum_Message : GTLRObject

/**
 *  The bandwidth (in Hertz) for which permissible power levels are specified.
 *  For example, FCC regulation would require only one spectrum specification at
 *  6MHz bandwidth, but Ofcom regulation would require two specifications, at
 *  0.1MHz and 8MHz. This parameter may be empty if there is no available
 *  spectrum. It will be present otherwise.
 *
 *  Uses NSNumber of doubleValue.
 */
@property(nonatomic, strong, nullable) NSNumber *bandwidth;

/**
 *  The list of frequency ranges and permissible power levels. The list may be
 *  empty if there is no available spectrum, otherwise it will be present.
 */
@property(nonatomic, strong, nullable) NSArray<GTLRSpectrum_FrequencyRange *> *frequencyRanges;

@end


/**
 *  The request message for a batch available spectrum query protocol.
 */
@interface GTLRSpectrum_PawsGetSpectrumBatchRequest : GTLRObject

/**
 *  Depending on device type and regulatory domain, antenna characteristics may
 *  be required.
 */
@property(nonatomic, strong, nullable) GTLRSpectrum_AntennaCharacteristics *antenna;

/**
 *  The master device may include its device capabilities to limit the
 *  available-spectrum batch response to the spectrum that is compatible with
 *  its capabilities. The database should not return spectrum that is
 *  incompatible with the specified capabilities.
 */
@property(nonatomic, strong, nullable) GTLRSpectrum_DeviceCapabilities *capabilities;

/**
 *  When the available spectrum request is made on behalf of a specific device
 *  (a master or slave device), device descriptor information for the device on
 *  whose behalf the request is made is required (in such cases, the requestType
 *  parameter must be empty). When a requestType value is specified, device
 *  descriptor information may be optional or required according to the rules of
 *  the applicable regulatory domain.
 */
@property(nonatomic, strong, nullable) GTLRSpectrum_DeviceDescriptor *deviceDesc;

/**
 *  A geolocation list is required. This allows a device to specify its current
 *  location plus additional anticipated locations when allowed by the
 *  regulatory domain. At least one location must be included. Geolocation must
 *  be given as the location of the radiation center of the device's antenna. If
 *  a location specifies a region, rather than a point, the database may return
 *  an UNIMPLEMENTED error if it does not support query by region.
 *  There is no upper limit on the number of locations included in a available
 *  spectrum batch request, but the database may restrict the number of
 *  locations it supports by returning a response with fewer locations than
 *  specified in the batch request. Note that geolocations must be those of the
 *  master device (a device with geolocation capability that makes an available
 *  spectrum batch request), whether the master device is making the request on
 *  its own behalf or on behalf of a slave device (one without geolocation
 *  capability).
 */
@property(nonatomic, strong, nullable) NSArray<GTLRSpectrum_GeoLocation *> *locations;

/**
 *  When an available spectrum batch request is made by the master device (a
 *  device with geolocation capability) on behalf of a slave device (a device
 *  without geolocation capability), the rules of the applicable regulatory
 *  domain may require the master device to provide its own device descriptor
 *  information (in addition to device descriptor information for the slave
 *  device in a separate parameter).
 */
@property(nonatomic, strong, nullable) GTLRSpectrum_DeviceDescriptor *masterDeviceDesc;

/**
 *  Depending on device type and regulatory domain, device owner information may
 *  be included in an available spectrum batch request. This allows the device
 *  to register and get spectrum-availability information in a single request.
 */
@property(nonatomic, strong, nullable) GTLRSpectrum_DeviceOwner *owner;

/**
 *  The request type parameter is an optional parameter that can be used to
 *  modify an available spectrum batch request, but its use depends on
 *  applicable regulatory rules. For example, It may be used to request generic
 *  slave device parameters without having to specify the device descriptor for
 *  a specific device. When the requestType parameter is missing, the request is
 *  for a specific device (master or slave), and the device descriptor parameter
 *  for the device on whose behalf the batch request is made is required.
 */
@property(nonatomic, copy, nullable) NSString *requestType;

/**
 *  The message type (e.g., INIT_REQ, AVAIL_SPECTRUM_REQ, ...).
 *  Required field.
 */
@property(nonatomic, copy, nullable) NSString *type;

/**
 *  The PAWS version. Must be exactly 1.0.
 *  Required field.
 */
@property(nonatomic, copy, nullable) NSString *version;

@end


/**
 *  The response message for the batch available spectrum query contains a
 *  schedule of available spectrum for the device at multiple locations.
 */
@interface GTLRSpectrum_PawsGetSpectrumBatchResponse : GTLRObject

/**
 *  A database may include the databaseChange parameter to notify a device of a
 *  change to its database URI, providing one or more alternate database URIs.
 *  The device should use this information to update its list of pre-configured
 *  databases by (only) replacing its entry for the responding database with the
 *  list of alternate URIs.
 */
@property(nonatomic, strong, nullable) GTLRSpectrum_DbUpdateSpec *databaseChange;

/**
 *  The database must return in its available spectrum response the device
 *  descriptor information it received in the master device's available spectrum
 *  batch request.
 */
@property(nonatomic, strong, nullable) GTLRSpectrum_DeviceDescriptor *deviceDesc;

/**
 *  The available spectrum batch response must contain a geo-spectrum schedule
 *  list, The list may be empty if spectrum is not available. The database may
 *  return more than one geo-spectrum schedule to represent future changes to
 *  the available spectrum. How far in advance a schedule may be provided
 *  depends upon the applicable regulatory domain. The database may return
 *  available spectrum for fewer geolocations than requested. The device must
 *  not make assumptions about the order of the entries in the list, and must
 *  use the geolocation value in each geo-spectrum schedule entry to match
 *  available spectrum to a location.
 */
@property(nonatomic, strong, nullable) NSArray<GTLRSpectrum_GeoSpectrumSchedule *> *geoSpectrumSchedules;

/**
 *  Identifies what kind of resource this is. Value: the fixed string
 *  "spectrum#pawsGetSpectrumBatchResponse".
 */
@property(nonatomic, copy, nullable) NSString *kind;

/**
 *  The database may return a constraint on the allowed maximum contiguous
 *  bandwidth (in Hertz). A regulatory domain may require the database to return
 *  this parameter. When this parameter is present in the response, the device
 *  must apply this constraint to its spectrum-selection logic to ensure that no
 *  single block of spectrum has bandwidth that exceeds this value.
 *
 *  Uses NSNumber of doubleValue.
 */
@property(nonatomic, strong, nullable) NSNumber *maxContiguousBwHz;

/**
 *  The database may return a constraint on the allowed maximum total bandwidth
 *  (in Hertz), which does not need to be contiguous. A regulatory domain may
 *  require the database to return this parameter. When this parameter is
 *  present in the available spectrum batch response, the device must apply this
 *  constraint to its spectrum-selection logic to ensure that total bandwidth
 *  does not exceed this value.
 *
 *  Uses NSNumber of doubleValue.
 */
@property(nonatomic, strong, nullable) NSNumber *maxTotalBwHz;

/**
 *  For regulatory domains that require a spectrum-usage report from devices,
 *  the database must return true for this parameter if the geo-spectrum
 *  schedules list is not empty; otherwise, the database should either return
 *  false or omit this parameter. If this parameter is present and its value is
 *  true, the device must send a spectrum use notify message to the database;
 *  otherwise, the device should not send the notification.
 *
 *  Uses NSNumber of boolValue.
 */
@property(nonatomic, strong, nullable) NSNumber *needsSpectrumReport;

/**
 *  The database should return ruleset information, which identifies the
 *  applicable regulatory authority and ruleset for the available spectrum batch
 *  response. If included, the device must use the corresponding ruleset to
 *  interpret the response. Values provided in the returned ruleset information,
 *  such as maxLocationChange, take precedence over any conflicting values
 *  provided in the ruleset information returned in a prior initialization
 *  response sent by the database to the device.
 */
@property(nonatomic, strong, nullable) GTLRSpectrum_RulesetInfo *rulesetInfo;

/**
 *  The database includes a timestamp of the form, YYYY-MM-DDThh:mm:ssZ
 *  (Internet timestamp format per RFC3339), in its available spectrum batch
 *  response. The timestamp should be used by the device as a reference for the
 *  start and stop times specified in the response spectrum schedules.
 */
@property(nonatomic, copy, nullable) NSString *timestamp;

/**
 *  The message type (e.g., INIT_REQ, AVAIL_SPECTRUM_REQ, ...).
 *  Required field.
 */
@property(nonatomic, copy, nullable) NSString *type;

/**
 *  The PAWS version. Must be exactly 1.0.
 *  Required field.
 */
@property(nonatomic, copy, nullable) NSString *version;

@end


/**
 *  The request message for the available spectrum query protocol which must
 *  include the device's geolocation.
 */
@interface GTLRSpectrum_PawsGetSpectrumRequest : GTLRObject

/**
 *  Depending on device type and regulatory domain, the characteristics of the
 *  antenna may be required.
 */
@property(nonatomic, strong, nullable) GTLRSpectrum_AntennaCharacteristics *antenna;

/**
 *  The master device may include its device capabilities to limit the
 *  available-spectrum response to the spectrum that is compatible with its
 *  capabilities. The database should not return spectrum that is incompatible
 *  with the specified capabilities.
 */
@property(nonatomic, strong, nullable) GTLRSpectrum_DeviceCapabilities *capabilities;

/**
 *  When the available spectrum request is made on behalf of a specific device
 *  (a master or slave device), device descriptor information for that device is
 *  required (in such cases, the requestType parameter must be empty). When a
 *  requestType value is specified, device descriptor information may be
 *  optional or required according to the rules of the applicable regulatory
 *  domain.
 */
@property(nonatomic, strong, nullable) GTLRSpectrum_DeviceDescriptor *deviceDesc;

/**
 *  The geolocation of the master device (a device with geolocation capability
 *  that makes an available spectrum request) is required whether the master
 *  device is making the request on its own behalf or on behalf of a slave
 *  device (one without geolocation capability). The location must be the
 *  location of the radiation center of the master device's antenna. To support
 *  mobile devices, a regulatory domain may allow the anticipated position of
 *  the master device to be given instead. If the location specifies a region,
 *  rather than a point, the database may return an UNIMPLEMENTED error code if
 *  it does not support query by region.
 */
@property(nonatomic, strong, nullable) GTLRSpectrum_GeoLocation *location;

/**
 *  When an available spectrum request is made by the master device (a device
 *  with geolocation capability) on behalf of a slave device (a device without
 *  geolocation capability), the rules of the applicable regulatory domain may
 *  require the master device to provide its own device descriptor information
 *  (in addition to device descriptor information for the slave device, which is
 *  provided in a separate parameter).
 */
@property(nonatomic, strong, nullable) GTLRSpectrum_DeviceDescriptor *masterDeviceDesc;

/**
 *  Depending on device type and regulatory domain, device owner information may
 *  be included in an available spectrum request. This allows the device to
 *  register and get spectrum-availability information in a single request.
 */
@property(nonatomic, strong, nullable) GTLRSpectrum_DeviceOwner *owner;

/**
 *  The request type parameter is an optional parameter that can be used to
 *  modify an available spectrum request, but its use depends on applicable
 *  regulatory rules. It may be used, for example, to request generic slave
 *  device parameters without having to specify the device descriptor for a
 *  specific device. When the requestType parameter is missing, the request is
 *  for a specific device (master or slave), and the deviceDesc parameter for
 *  the device on whose behalf the request is made is required.
 */
@property(nonatomic, copy, nullable) NSString *requestType;

/**
 *  The message type (e.g., INIT_REQ, AVAIL_SPECTRUM_REQ, ...).
 *  Required field.
 */
@property(nonatomic, copy, nullable) NSString *type;

/**
 *  The PAWS version. Must be exactly 1.0.
 *  Required field.
 */
@property(nonatomic, copy, nullable) NSString *version;

@end


/**
 *  The response message for the available spectrum query which contains a
 *  schedule of available spectrum for the device.
 */
@interface GTLRSpectrum_PawsGetSpectrumResponse : GTLRObject

/**
 *  A database may include the databaseChange parameter to notify a device of a
 *  change to its database URI, providing one or more alternate database URIs.
 *  The device should use this information to update its list of pre-configured
 *  databases by (only) replacing its entry for the responding database with the
 *  list of alternate URIs.
 */
@property(nonatomic, strong, nullable) GTLRSpectrum_DbUpdateSpec *databaseChange;

/**
 *  The database must return, in its available spectrum response, the device
 *  descriptor information it received in the master device's available spectrum
 *  request.
 */
@property(nonatomic, strong, nullable) GTLRSpectrum_DeviceDescriptor *deviceDesc;

/**
 *  Identifies what kind of resource this is. Value: the fixed string
 *  "spectrum#pawsGetSpectrumResponse".
 */
@property(nonatomic, copy, nullable) NSString *kind;

/**
 *  The database may return a constraint on the allowed maximum contiguous
 *  bandwidth (in Hertz). A regulatory domain may require the database to return
 *  this parameter. When this parameter is present in the response, the device
 *  must apply this constraint to its spectrum-selection logic to ensure that no
 *  single block of spectrum has bandwidth that exceeds this value.
 *
 *  Uses NSNumber of doubleValue.
 */
@property(nonatomic, strong, nullable) NSNumber *maxContiguousBwHz;

/**
 *  The database may return a constraint on the allowed maximum total bandwidth
 *  (in Hertz), which need not be contiguous. A regulatory domain may require
 *  the database to return this parameter. When this parameter is present in the
 *  available spectrum response, the device must apply this constraint to its
 *  spectrum-selection logic to ensure that total bandwidth does not exceed this
 *  value.
 *
 *  Uses NSNumber of doubleValue.
 */
@property(nonatomic, strong, nullable) NSNumber *maxTotalBwHz;

/**
 *  For regulatory domains that require a spectrum-usage report from devices,
 *  the database must return true for this parameter if the spectrum schedule
 *  list is not empty; otherwise, the database will either return false or omit
 *  this parameter. If this parameter is present and its value is true, the
 *  device must send a spectrum use notify message to the database; otherwise,
 *  the device must not send the notification.
 *
 *  Uses NSNumber of boolValue.
 */
@property(nonatomic, strong, nullable) NSNumber *needsSpectrumReport;

/**
 *  The database should return ruleset information, which identifies the
 *  applicable regulatory authority and ruleset for the available spectrum
 *  response. If included, the device must use the corresponding ruleset to
 *  interpret the response. Values provided in the returned ruleset information,
 *  such as maxLocationChange, take precedence over any conflicting values
 *  provided in the ruleset information returned in a prior initialization
 *  response sent by the database to the device.
 */
@property(nonatomic, strong, nullable) GTLRSpectrum_RulesetInfo *rulesetInfo;

/**
 *  The available spectrum response must contain a spectrum schedule list. The
 *  list may be empty if spectrum is not available. The database may return more
 *  than one spectrum schedule to represent future changes to the available
 *  spectrum. How far in advance a schedule may be provided depends on the
 *  applicable regulatory domain.
 */
@property(nonatomic, strong, nullable) NSArray<GTLRSpectrum_Schedule *> *spectrumSchedules;

/**
 *  The database includes a timestamp of the form YYYY-MM-DDThh:mm:ssZ (Internet
 *  timestamp format per RFC3339) in its available spectrum response. The
 *  timestamp should be used by the device as a reference for the start and stop
 *  times specified in the response spectrum schedules.
 */
@property(nonatomic, copy, nullable) NSString *timestamp;

/**
 *  The message type (e.g., INIT_REQ, AVAIL_SPECTRUM_REQ, ...).
 *  Required field.
 */
@property(nonatomic, copy, nullable) NSString *type;

/**
 *  The PAWS version. Must be exactly 1.0.
 *  Required field.
 */
@property(nonatomic, copy, nullable) NSString *version;

@end


/**
 *  The initialization request message allows the master device to initiate
 *  exchange of capabilities with the database.
 */
@interface GTLRSpectrum_PawsInitRequest : GTLRObject

/**
 *  The DeviceDescriptor parameter is required. If the database does not support
 *  the device or any of the rulesets specified in the device descriptor, it
 *  must return an UNSUPPORTED error code in the error response.
 */
@property(nonatomic, strong, nullable) GTLRSpectrum_DeviceDescriptor *deviceDesc;

/** A device's geolocation is required. */
@property(nonatomic, strong, nullable) GTLRSpectrum_GeoLocation *location;

/**
 *  The message type (e.g., INIT_REQ, AVAIL_SPECTRUM_REQ, ...).
 *  Required field.
 */
@property(nonatomic, copy, nullable) NSString *type;

/**
 *  The PAWS version. Must be exactly 1.0.
 *  Required field.
 */
@property(nonatomic, copy, nullable) NSString *version;

@end


/**
 *  The initialization response message communicates database parameters to the
 *  requesting device.
 */
@interface GTLRSpectrum_PawsInitResponse : GTLRObject

/**
 *  A database may include the databaseChange parameter to notify a device of a
 *  change to its database URI, providing one or more alternate database URIs.
 *  The device should use this information to update its list of pre-configured
 *  databases by (only) replacing its entry for the responding database with the
 *  list of alternate URIs.
 */
@property(nonatomic, strong, nullable) GTLRSpectrum_DbUpdateSpec *databaseChange;

/**
 *  Identifies what kind of resource this is. Value: the fixed string
 *  "spectrum#pawsInitResponse".
 */
@property(nonatomic, copy, nullable) NSString *kind;

/**
 *  The rulesetInfo parameter must be included in the response. This parameter
 *  specifies the regulatory domain and parameters applicable to that domain.
 *  The database must include the authority field, which defines the regulatory
 *  domain for the location specified in the INIT_REQ message.
 */
@property(nonatomic, strong, nullable) GTLRSpectrum_RulesetInfo *rulesetInfo;

/**
 *  The message type (e.g., INIT_REQ, AVAIL_SPECTRUM_REQ, ...).
 *  Required field.
 */
@property(nonatomic, copy, nullable) NSString *type;

/**
 *  The PAWS version. Must be exactly 1.0.
 *  Required field.
 */
@property(nonatomic, copy, nullable) NSString *version;

@end


/**
 *  The spectrum-use notification message which must contain the geolocation of
 *  the Device and parameters required by the regulatory domain.
 */
@interface GTLRSpectrum_PawsNotifySpectrumUseRequest : GTLRObject

/**
 *  Device descriptor information is required in the spectrum-use notification
 *  message.
 */
@property(nonatomic, strong, nullable) GTLRSpectrum_DeviceDescriptor *deviceDesc;

/**
 *  The geolocation of the master device (the device that is sending the
 *  spectrum-use notification) to the database is required in the spectrum-use
 *  notification message.
 */
@property(nonatomic, strong, nullable) GTLRSpectrum_GeoLocation *location;

/**
 *  A spectrum list is required in the spectrum-use notification. The list
 *  specifies the spectrum that the device expects to use, which includes
 *  frequency ranges and maximum power levels. The list may be empty if the
 *  device decides not to use any of spectrum. For consistency, the
 *  psdBandwidthHz value should match that from one of the spectrum elements in
 *  the corresponding available spectrum response previously sent to the device
 *  by the database. Note that maximum power levels in the spectrum element must
 *  be expressed as power spectral density over the specified psdBandwidthHz
 *  value. The actual bandwidth to be used (as computed from the start and stop
 *  frequencies) may be different from the psdBandwidthHz value. As an example,
 *  when regulatory rules express maximum power spectral density in terms of
 *  maximum power over any 100 kHz band, then the psdBandwidthHz value should be
 *  set to 100 kHz, even though the actual bandwidth used can be 20 kHz.
 */
@property(nonatomic, strong, nullable) NSArray<GTLRSpectrum_Message *> *spectra;

/**
 *  The message type (e.g., INIT_REQ, AVAIL_SPECTRUM_REQ, ...).
 *  Required field.
 */
@property(nonatomic, copy, nullable) NSString *type;

/**
 *  The PAWS version. Must be exactly 1.0.
 *  Required field.
 */
@property(nonatomic, copy, nullable) NSString *version;

@end


/**
 *  An empty response to the notification.
 */
@interface GTLRSpectrum_PawsNotifySpectrumUseResponse : GTLRObject

/**
 *  Identifies what kind of resource this is. Value: the fixed string
 *  "spectrum#pawsNotifySpectrumUseResponse".
 */
@property(nonatomic, copy, nullable) NSString *kind;

/**
 *  The message type (e.g., INIT_REQ, AVAIL_SPECTRUM_REQ, ...).
 *  Required field.
 */
@property(nonatomic, copy, nullable) NSString *type;

/**
 *  The PAWS version. Must be exactly 1.0.
 *  Required field.
 */
@property(nonatomic, copy, nullable) NSString *version;

@end


/**
 *  The registration request message contains the required registration
 *  parameters.
 */
@interface GTLRSpectrum_PawsRegisterRequest : GTLRObject

/** Antenna characteristics, including its height and height type. */
@property(nonatomic, strong, nullable) GTLRSpectrum_AntennaCharacteristics *antenna;

/** A DeviceDescriptor is required. */
@property(nonatomic, strong, nullable) GTLRSpectrum_DeviceDescriptor *deviceDesc;

/** Device owner information is required. */
@property(nonatomic, strong, nullable) GTLRSpectrum_DeviceOwner *deviceOwner;

/** A device's geolocation is required. */
@property(nonatomic, strong, nullable) GTLRSpectrum_GeoLocation *location;

/**
 *  The message type (e.g., INIT_REQ, AVAIL_SPECTRUM_REQ, ...).
 *  Required field.
 */
@property(nonatomic, copy, nullable) NSString *type;

/**
 *  The PAWS version. Must be exactly 1.0.
 *  Required field.
 */
@property(nonatomic, copy, nullable) NSString *version;

@end


/**
 *  The registration response message simply acknowledges receipt of the request
 *  and is otherwise empty.
 */
@interface GTLRSpectrum_PawsRegisterResponse : GTLRObject

/**
 *  A database may include the databaseChange parameter to notify a device of a
 *  change to its database URI, providing one or more alternate database URIs.
 *  The device should use this information to update its list of pre-configured
 *  databases by (only) replacing its entry for the responding database with the
 *  list of alternate URIs.
 */
@property(nonatomic, strong, nullable) GTLRSpectrum_DbUpdateSpec *databaseChange;

/**
 *  Identifies what kind of resource this is. Value: the fixed string
 *  "spectrum#pawsRegisterResponse".
 */
@property(nonatomic, copy, nullable) NSString *kind;

/**
 *  The message type (e.g., INIT_REQ, AVAIL_SPECTRUM_REQ, ...).
 *  Required field.
 */
@property(nonatomic, copy, nullable) NSString *type;

/**
 *  The PAWS version. Must be exactly 1.0.
 *  Required field.
 */
@property(nonatomic, copy, nullable) NSString *version;

@end


/**
 *  The device validation request message.
 */
@interface GTLRSpectrum_PawsVerifyDeviceRequest : GTLRObject

/**
 *  A list of device descriptors, which specifies the slave devices to be
 *  validated, is required.
 */
@property(nonatomic, strong, nullable) NSArray<GTLRSpectrum_DeviceDescriptor *> *deviceDescs;

/**
 *  The message type (e.g., INIT_REQ, AVAIL_SPECTRUM_REQ, ...).
 *  Required field.
 */
@property(nonatomic, copy, nullable) NSString *type;

/**
 *  The PAWS version. Must be exactly 1.0.
 *  Required field.
 */
@property(nonatomic, copy, nullable) NSString *version;

@end


/**
 *  The device validation response message.
 */
@interface GTLRSpectrum_PawsVerifyDeviceResponse : GTLRObject

/**
 *  A database may include the databaseChange parameter to notify a device of a
 *  change to its database URI, providing one or more alternate database URIs.
 *  The device should use this information to update its list of pre-configured
 *  databases by (only) replacing its entry for the responding database with the
 *  list of alternate URIs.
 */
@property(nonatomic, strong, nullable) GTLRSpectrum_DbUpdateSpec *databaseChange;

/**
 *  A device validities list is required in the device validation response to
 *  report whether each slave device listed in a previous device validation
 *  request is valid. The number of entries must match the number of device
 *  descriptors listed in the previous device validation request.
 */
@property(nonatomic, strong, nullable) NSArray<GTLRSpectrum_DeviceValidity *> *deviceValidities;

/**
 *  Identifies what kind of resource this is. Value: the fixed string
 *  "spectrum#pawsVerifyDeviceResponse".
 */
@property(nonatomic, copy, nullable) NSString *kind;

/**
 *  The message type (e.g., INIT_REQ, AVAIL_SPECTRUM_REQ, ...).
 *  Required field.
 */
@property(nonatomic, copy, nullable) NSString *type;

/**
 *  The PAWS version. Must be exactly 1.0.
 *  Required field.
 */
@property(nonatomic, copy, nullable) NSString *version;

@end


/**
 *  This contains parameters for the ruleset of a regulatory domain that is
 *  communicated using the initialization and available-spectrum processes.
 */
@interface GTLRSpectrum_RulesetInfo : GTLRObject

/**
 *  The regulatory domain to which the ruleset belongs is required. It must be a
 *  2-letter country code. The device should use this to determine additional
 *  device behavior required by the associated regulatory domain.
 */
@property(nonatomic, copy, nullable) NSString *authority;

/**
 *  The maximum location change in meters is required in the initialization
 *  response, but optional otherwise. When the device changes location by more
 *  than this specified distance, it must contact the database to get the
 *  available spectrum for the new location. If the device is using spectrum
 *  that is no longer available, it must immediately cease use of the spectrum
 *  under rules for database-managed spectrum. If this value is provided within
 *  the context of an available-spectrum response, it takes precedence over the
 *  value within the initialization response.
 *
 *  Uses NSNumber of doubleValue.
 */
@property(nonatomic, strong, nullable) NSNumber *maxLocationChange;

/**
 *  The maximum duration, in seconds, between requests for available spectrum.
 *  It is required in the initialization response, but optional otherwise. The
 *  device must contact the database to get available spectrum no less
 *  frequently than this duration. If the new spectrum information indicates
 *  that the device is using spectrum that is no longer available, it must
 *  immediately cease use of those frequencies under rules for database-managed
 *  spectrum. If this value is provided within the context of an
 *  available-spectrum response, it takes precedence over the value within the
 *  initialization response.
 *
 *  Uses NSNumber of intValue.
 */
@property(nonatomic, strong, nullable) NSNumber *maxPollingSecs;

/**
 *  The identifiers of the rulesets supported for the device's location. The
 *  database should include at least one applicable ruleset in the
 *  initialization response. The device may use the ruleset identifiers to
 *  determine parameters to include in subsequent requests. Within the context
 *  of the available-spectrum responses, the database should include the
 *  identifier of the ruleset that it used to determine the available-spectrum
 *  response. If included, the device must use the specified ruleset to
 *  interpret the response. If the device does not support the indicated
 *  ruleset, it must not operate in the spectrum governed by the ruleset.
 */
@property(nonatomic, strong, nullable) NSArray<NSString *> *rulesetIds;

@end


/**
 *  The spectrum schedule element combines an event time with spectrum profile
 *  to define a time period in which the profile is valid.
 */
@interface GTLRSpectrum_Schedule : GTLRObject

/**
 *  The event time expresses when the spectrum profile is valid. It will always
 *  be present.
 */
@property(nonatomic, strong, nullable) GTLRSpectrum_EventTime *eventTime;

/**
 *  A list of spectrum messages representing the usable profile. It will always
 *  be present, but may be empty when there is no available spectrum.
 */
@property(nonatomic, strong, nullable) NSArray<GTLRSpectrum_Message *> *spectra;

@end


/**
 *  A vCard-in-JSON message that contains only the fields needed for PAWS:
 *  - fn: Full name of an individual
 *  - org: Name of the organization
 *  - adr: Address fields
 *  - tel: Telephone numbers
 *  - email: Email addresses
 */
@interface GTLRSpectrum_Vcard : GTLRObject

/** The street address of the entity. */
@property(nonatomic, strong, nullable) GTLRSpectrum_VcardAddress *adr;

/** An email address that can be used to reach the contact. */
@property(nonatomic, strong, nullable) GTLRSpectrum_VcardTypedText *email;

/** The full name of the contact person. For example: John A. Smith. */
@property(nonatomic, copy, nullable) NSString *fn;

/** The organization associated with the registering entity. */
@property(nonatomic, strong, nullable) GTLRSpectrum_VcardTypedText *org;

/** A telephone number that can be used to call the contact. */
@property(nonatomic, strong, nullable) GTLRSpectrum_VcardTelephone *tel;

@end


/**
 *  The structure used to represent a street address.
 */
@interface GTLRSpectrum_VcardAddress : GTLRObject

/** The postal code associated with the address. For example: 94423. */
@property(nonatomic, copy, nullable) NSString *code;

/** The country name. For example: US. */
@property(nonatomic, copy, nullable) NSString *country;

/**
 *  The city or local equivalent portion of the address. For example: San Jose.
 */
@property(nonatomic, copy, nullable) NSString *locality;

/** An optional post office box number. */
@property(nonatomic, copy, nullable) NSString *pobox;

/** The state or local equivalent portion of the address. For example: CA. */
@property(nonatomic, copy, nullable) NSString *region;

/** The street number and name. For example: 123 Any St. */
@property(nonatomic, copy, nullable) NSString *street;

@end


/**
 *  The structure used to represent a telephone number.
 */
@interface GTLRSpectrum_VcardTelephone : GTLRObject

/** A nested telephone URI of the form: tel:+1-123-456-7890. */
@property(nonatomic, copy, nullable) NSString *uri;

@end


/**
 *  The structure used to represent an organization and an email address.
 */
@interface GTLRSpectrum_VcardTypedText : GTLRObject

/**
 *  The text string associated with this item. For example, for an org field:
 *  ACME, inc. For an email field: smith\@example.com.
 */
@property(nonatomic, copy, nullable) NSString *text;

@end

NS_ASSUME_NONNULL_END
