-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Google Spectrum Database SDK.
--   
--   API for spectrum-management functions.
--   
--   <i>Warning:</i> This is an experimental prototype/preview release
--   which is still under exploratory development and not intended for
--   public use, caveat emptor!
--   
--   This library is compatible with version <tt>v1explorer</tt> of the
--   API.
@package gogol-spectrum
@version 0.3.0


module Network.Google.Spectrum.Types

-- | Default request referring to version <tt>v1explorer</tt> of the Google
--   Spectrum Database API. This contains the host and root path used as a
--   starting point for constructing service requests.
spectrumService :: ServiceConfig

-- | A region is represented using the polygonal shape.
--   
--   <i>See:</i> <a>geoLocationPolygon</a> smart constructor.
data GeoLocationPolygon

-- | Creates a value of <a>GeoLocationPolygon</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>glpExterior</a></li>
--   </ul>
geoLocationPolygon :: GeoLocationPolygon

-- | 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).
glpExterior :: Lens' GeoLocationPolygon [GeoLocationPoint]

-- | A single geolocation on the globe.
--   
--   <i>See:</i> <a>geoLocationPoint</a> smart constructor.
data GeoLocationPoint

-- | Creates a value of <a>GeoLocationPoint</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>glpLatitude</a></li>
--   <li><a>glpLongitude</a></li>
--   </ul>
geoLocationPoint :: GeoLocationPoint

-- | 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.
glpLatitude :: Lens' GeoLocationPoint (Maybe Double)

-- | 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.
glpLongitude :: Lens' GeoLocationPoint (Maybe Double)

-- | The initialization response message communicates database parameters
--   to the requesting device.
--   
--   <i>See:</i> <a>pawsInitResponse</a> smart constructor.
data PawsInitResponse

-- | Creates a value of <a>PawsInitResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pirKind</a></li>
--   <li><a>pirVersion</a></li>
--   <li><a>pirRulesetInfo</a></li>
--   <li><a>pirType</a></li>
--   <li><a>pirDatabaseChange</a></li>
--   </ul>
pawsInitResponse :: PawsInitResponse

-- | Identifies what kind of resource this is. Value: the fixed string
--   "spectrum#pawsInitResponse".
pirKind :: Lens' PawsInitResponse Text

-- | The PAWS version. Must be exactly 1.0. Required field.
pirVersion :: Lens' PawsInitResponse (Maybe Text)

-- | 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.
pirRulesetInfo :: Lens' PawsInitResponse (Maybe RulesetInfo)

-- | The message type (e.g., INIT_REQ, AVAIL_SPECTRUM_REQ, ...). Required
--   field.
pirType :: Lens' PawsInitResponse (Maybe Text)

-- | 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.
pirDatabaseChange :: Lens' PawsInitResponse (Maybe DBUpdateSpec)

-- | The registration response message simply acknowledges receipt of the
--   request and is otherwise empty.
--   
--   <i>See:</i> <a>pawsRegisterResponse</a> smart constructor.
data PawsRegisterResponse

-- | Creates a value of <a>PawsRegisterResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>prrKind</a></li>
--   <li><a>prrVersion</a></li>
--   <li><a>prrType</a></li>
--   <li><a>prrDatabaseChange</a></li>
--   </ul>
pawsRegisterResponse :: PawsRegisterResponse

-- | Identifies what kind of resource this is. Value: the fixed string
--   "spectrum#pawsRegisterResponse".
prrKind :: Lens' PawsRegisterResponse Text

-- | The PAWS version. Must be exactly 1.0. Required field.
prrVersion :: Lens' PawsRegisterResponse (Maybe Text)

-- | The message type (e.g., INIT_REQ, AVAIL_SPECTRUM_REQ, ...). Required
--   field.
prrType :: Lens' PawsRegisterResponse (Maybe Text)

-- | 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.
prrDatabaseChange :: Lens' PawsRegisterResponse (Maybe DBUpdateSpec)

-- | The spectrum-use notification message which must contain the
--   geolocation of the Device and parameters required by the regulatory
--   domain.
--   
--   <i>See:</i> <a>pawsNotifySpectrumUseRequest</a> smart constructor.
data PawsNotifySpectrumUseRequest

-- | Creates a value of <a>PawsNotifySpectrumUseRequest</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pnsurSpectra</a></li>
--   <li><a>pnsurLocation</a></li>
--   <li><a>pnsurVersion</a></li>
--   <li><a>pnsurType</a></li>
--   <li><a>pnsurDeviceDesc</a></li>
--   </ul>
pawsNotifySpectrumUseRequest :: PawsNotifySpectrumUseRequest

-- | 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.
pnsurSpectra :: Lens' PawsNotifySpectrumUseRequest [SpectrumMessage]

-- | 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.
pnsurLocation :: Lens' PawsNotifySpectrumUseRequest (Maybe GeoLocation)

-- | The PAWS version. Must be exactly 1.0. Required field.
pnsurVersion :: Lens' PawsNotifySpectrumUseRequest (Maybe Text)

-- | The message type (e.g., INIT_REQ, AVAIL_SPECTRUM_REQ, ...). Required
--   field.
pnsurType :: Lens' PawsNotifySpectrumUseRequest (Maybe Text)

-- | Device descriptor information is required in the spectrum-use
--   notification message.
pnsurDeviceDesc :: Lens' PawsNotifySpectrumUseRequest (Maybe DeviceDescriptor)

-- | 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
--   
--   <i>See:</i> <a>vcard</a> smart constructor.
data Vcard

-- | Creates a value of <a>Vcard</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vEmail</a></li>
--   <li><a>vAdr</a></li>
--   <li><a>vOrg</a></li>
--   <li><a>vTel</a></li>
--   <li><a>vFn</a></li>
--   </ul>
vcard :: Vcard

-- | An email address that can be used to reach the contact.
vEmail :: Lens' Vcard (Maybe VcardTypedText)

-- | The street address of the entity.
vAdr :: Lens' Vcard (Maybe VcardAddress)

-- | The organization associated with the registering entity.
vOrg :: Lens' Vcard (Maybe VcardTypedText)

-- | A telephone number that can be used to call the contact.
vTel :: Lens' Vcard (Maybe VcardTelephone)

-- | The full name of the contact person. For example: John A. Smith.
vFn :: Lens' Vcard (Maybe Text)

-- | This message is provided by the database to notify devices of an
--   upcoming change to the database URI.
--   
--   <i>See:</i> <a>dbUpdateSpec</a> smart constructor.
data DBUpdateSpec

-- | Creates a value of <a>DBUpdateSpec</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dusDatabases</a></li>
--   </ul>
dbUpdateSpec :: DBUpdateSpec

-- | 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.
dusDatabases :: Lens' DBUpdateSpec [DatabaseSpec]

-- | The request message for a batch available spectrum query protocol.
--   
--   <i>See:</i> <a>pawsGetSpectrumBatchRequest</a> smart constructor.
data PawsGetSpectrumBatchRequest

-- | Creates a value of <a>PawsGetSpectrumBatchRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pgsbrAntenna</a></li>
--   <li><a>pgsbrMasterDeviceDesc</a></li>
--   <li><a>pgsbrOwner</a></li>
--   <li><a>pgsbrRequestType</a></li>
--   <li><a>pgsbrVersion</a></li>
--   <li><a>pgsbrType</a></li>
--   <li><a>pgsbrLocations</a></li>
--   <li><a>pgsbrCapabilities</a></li>
--   <li><a>pgsbrDeviceDesc</a></li>
--   </ul>
pawsGetSpectrumBatchRequest :: PawsGetSpectrumBatchRequest

-- | Depending on device type and regulatory domain, antenna
--   characteristics may be required.
pgsbrAntenna :: Lens' PawsGetSpectrumBatchRequest (Maybe AntennaCharacteristics)

-- | 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).
pgsbrMasterDeviceDesc :: Lens' PawsGetSpectrumBatchRequest (Maybe DeviceDescriptor)

-- | 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.
pgsbrOwner :: Lens' PawsGetSpectrumBatchRequest (Maybe DeviceOwner)

-- | 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.
pgsbrRequestType :: Lens' PawsGetSpectrumBatchRequest (Maybe Text)

-- | The PAWS version. Must be exactly 1.0. Required field.
pgsbrVersion :: Lens' PawsGetSpectrumBatchRequest (Maybe Text)

-- | The message type (e.g., INIT_REQ, AVAIL_SPECTRUM_REQ, ...). Required
--   field.
pgsbrType :: Lens' PawsGetSpectrumBatchRequest (Maybe Text)

-- | 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).
pgsbrLocations :: Lens' PawsGetSpectrumBatchRequest [GeoLocation]

-- | 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.
pgsbrCapabilities :: Lens' PawsGetSpectrumBatchRequest (Maybe DeviceCapabilities)

-- | 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.
pgsbrDeviceDesc :: Lens' PawsGetSpectrumBatchRequest (Maybe DeviceDescriptor)

-- | The schedule of spectrum profiles available at a particular
--   geolocation.
--   
--   <i>See:</i> <a>geoSpectrumSchedule</a> smart constructor.
data GeoSpectrumSchedule

-- | Creates a value of <a>GeoSpectrumSchedule</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gssLocation</a></li>
--   <li><a>gssSpectrumSchedules</a></li>
--   </ul>
geoSpectrumSchedule :: GeoSpectrumSchedule

-- | The geolocation identifies the location at which the spectrum schedule
--   applies. It will always be present.
gssLocation :: Lens' GeoSpectrumSchedule (Maybe GeoLocation)

-- | 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.
gssSpectrumSchedules :: Lens' GeoSpectrumSchedule [SpectrumSchedule]

-- | The structure used to represent an organization and an email address.
--   
--   <i>See:</i> <a>vcardTypedText</a> smart constructor.
data VcardTypedText

-- | Creates a value of <a>VcardTypedText</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vttText</a></li>
--   </ul>
vcardTypedText :: VcardTypedText

-- | The text string associated with this item. For example, for an org
--   field: ACME, inc. For an email field: smith'example.com.
vttText :: Lens' VcardTypedText (Maybe Text)

-- | The spectrum schedule element combines an event time with spectrum
--   profile to define a time period in which the profile is valid.
--   
--   <i>See:</i> <a>spectrumSchedule</a> smart constructor.
data SpectrumSchedule

-- | Creates a value of <a>SpectrumSchedule</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ssSpectra</a></li>
--   <li><a>ssEventTime</a></li>
--   </ul>
spectrumSchedule :: SpectrumSchedule

-- | A list of spectrum messages representing the usable profile. It will
--   always be present, but may be empty when there is no available
--   spectrum.
ssSpectra :: Lens' SpectrumSchedule [SpectrumMessage]

-- | The event time expresses when the spectrum profile is valid. It will
--   always be present.
ssEventTime :: Lens' SpectrumSchedule (Maybe EventTime)

-- | The structure used to represent a telephone number.
--   
--   <i>See:</i> <a>vcardTelephone</a> smart constructor.
data VcardTelephone

-- | Creates a value of <a>VcardTelephone</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vtURI</a></li>
--   </ul>
vcardTelephone :: VcardTelephone

-- | A nested telephone URI of the form: tel:+1-123-456-7890.
vtURI :: Lens' VcardTelephone (Maybe Text)

-- | 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.
--   
--   <i>See:</i> <a>deviceOwner</a> smart constructor.
data DeviceOwner

-- | Creates a value of <a>DeviceOwner</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>doOperator</a></li>
--   <li><a>doOwner</a></li>
--   </ul>
deviceOwner :: DeviceOwner

-- | The vCard contact information for the device operator is optional, but
--   may be required by specific regulatory domains.
doOperator :: Lens' DeviceOwner (Maybe Vcard)

-- | The vCard contact information for the individual or business that owns
--   the device is required.
doOwner :: Lens' DeviceOwner (Maybe Vcard)

-- | 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.
--   
--   <i>See:</i> <a>eventTime</a> smart constructor.
data EventTime

-- | Creates a value of <a>EventTime</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>etStartTime</a></li>
--   <li><a>etStopTime</a></li>
--   </ul>
eventTime :: EventTime

-- | The inclusive start of the event. It will be present.
etStartTime :: Lens' EventTime (Maybe Text)

-- | The exclusive end of the event. It will be present.
etStopTime :: Lens' EventTime (Maybe Text)

-- | The request message for the available spectrum query protocol which
--   must include the device's geolocation.
--   
--   <i>See:</i> <a>pawsGetSpectrumRequest</a> smart constructor.
data PawsGetSpectrumRequest

-- | Creates a value of <a>PawsGetSpectrumRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pgsrAntenna</a></li>
--   <li><a>pgsrMasterDeviceDesc</a></li>
--   <li><a>pgsrLocation</a></li>
--   <li><a>pgsrOwner</a></li>
--   <li><a>pgsrRequestType</a></li>
--   <li><a>pgsrVersion</a></li>
--   <li><a>pgsrType</a></li>
--   <li><a>pgsrCapabilities</a></li>
--   <li><a>pgsrDeviceDesc</a></li>
--   </ul>
pawsGetSpectrumRequest :: PawsGetSpectrumRequest

-- | Depending on device type and regulatory domain, the characteristics of
--   the antenna may be required.
pgsrAntenna :: Lens' PawsGetSpectrumRequest (Maybe AntennaCharacteristics)

-- | 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).
pgsrMasterDeviceDesc :: Lens' PawsGetSpectrumRequest (Maybe DeviceDescriptor)

-- | 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.
pgsrLocation :: Lens' PawsGetSpectrumRequest (Maybe GeoLocation)

-- | 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.
pgsrOwner :: Lens' PawsGetSpectrumRequest (Maybe DeviceOwner)

-- | 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.
pgsrRequestType :: Lens' PawsGetSpectrumRequest (Maybe Text)

-- | The PAWS version. Must be exactly 1.0. Required field.
pgsrVersion :: Lens' PawsGetSpectrumRequest (Maybe Text)

-- | The message type (e.g., INIT_REQ, AVAIL_SPECTRUM_REQ, ...). Required
--   field.
pgsrType :: Lens' PawsGetSpectrumRequest (Maybe Text)

-- | 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.
pgsrCapabilities :: Lens' PawsGetSpectrumRequest (Maybe DeviceCapabilities)

-- | 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.
pgsrDeviceDesc :: Lens' PawsGetSpectrumRequest (Maybe DeviceDescriptor)

-- | 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.
--   
--   <i>See:</i> <a>antennaCharacteristics</a> smart constructor.
data AntennaCharacteristics

-- | Creates a value of <a>AntennaCharacteristics</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>acHeight</a></li>
--   <li><a>acHeightType</a></li>
--   <li><a>acHeightUncertainty</a></li>
--   </ul>
antennaCharacteristics :: AntennaCharacteristics

-- | 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.
acHeight :: Lens' AntennaCharacteristics (Maybe Double)

-- | 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.
acHeightType :: Lens' AntennaCharacteristics (Maybe Text)

-- | The height uncertainty in meters. Whether this is required depends on
--   the regulatory domain.
acHeightUncertainty :: Lens' AntennaCharacteristics (Maybe Double)

-- | The device validation response message.
--   
--   <i>See:</i> <a>pawsVerifyDeviceResponse</a> smart constructor.
data PawsVerifyDeviceResponse

-- | Creates a value of <a>PawsVerifyDeviceResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pvdrDeviceValidities</a></li>
--   <li><a>pvdrKind</a></li>
--   <li><a>pvdrVersion</a></li>
--   <li><a>pvdrType</a></li>
--   <li><a>pvdrDatabaseChange</a></li>
--   </ul>
pawsVerifyDeviceResponse :: PawsVerifyDeviceResponse

-- | 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.
pvdrDeviceValidities :: Lens' PawsVerifyDeviceResponse [DeviceValidity]

-- | Identifies what kind of resource this is. Value: the fixed string
--   "spectrum#pawsVerifyDeviceResponse".
pvdrKind :: Lens' PawsVerifyDeviceResponse Text

-- | The PAWS version. Must be exactly 1.0. Required field.
pvdrVersion :: Lens' PawsVerifyDeviceResponse (Maybe Text)

-- | The message type (e.g., INIT_REQ, AVAIL_SPECTRUM_REQ, ...). Required
--   field.
pvdrType :: Lens' PawsVerifyDeviceResponse (Maybe Text)

-- | 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.
pvdrDatabaseChange :: Lens' PawsVerifyDeviceResponse (Maybe DBUpdateSpec)

-- | The structure used to represent a street address.
--   
--   <i>See:</i> <a>vcardAddress</a> smart constructor.
data VcardAddress

-- | Creates a value of <a>VcardAddress</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vaPobox</a></li>
--   <li><a>vaCountry</a></li>
--   <li><a>vaStreet</a></li>
--   <li><a>vaLocality</a></li>
--   <li><a>vaCode</a></li>
--   <li><a>vaRegion</a></li>
--   </ul>
vcardAddress :: VcardAddress

-- | An optional post office box number.
vaPobox :: Lens' VcardAddress (Maybe Text)

-- | The country name. For example: US.
vaCountry :: Lens' VcardAddress (Maybe Text)

-- | The street number and name. For example: 123 Any St.
vaStreet :: Lens' VcardAddress (Maybe Text)

-- | The city or local equivalent portion of the address. For example: San
--   Jose.
vaLocality :: Lens' VcardAddress (Maybe Text)

-- | The postal code associated with the address. For example: 94423.
vaCode :: Lens' VcardAddress (Maybe Text)

-- | The state or local equivalent portion of the address. For example: CA.
vaRegion :: Lens' VcardAddress (Maybe Text)

-- | The response message for the batch available spectrum query contains a
--   schedule of available spectrum for the device at multiple locations.
--   
--   <i>See:</i> <a>pawsGetSpectrumBatchResponse</a> smart constructor.
data PawsGetSpectrumBatchResponse

-- | Creates a value of <a>PawsGetSpectrumBatchResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pNeedsSpectrumReport</a></li>
--   <li><a>pKind</a></li>
--   <li><a>pGeoSpectrumSchedules</a></li>
--   <li><a>pMaxContiguousBwHz</a></li>
--   <li><a>pVersion</a></li>
--   <li><a>pRulesetInfo</a></li>
--   <li><a>pType</a></li>
--   <li><a>pDatabaseChange</a></li>
--   <li><a>pTimestamp</a></li>
--   <li><a>pDeviceDesc</a></li>
--   <li><a>pMaxTotalBwHz</a></li>
--   </ul>
pawsGetSpectrumBatchResponse :: PawsGetSpectrumBatchResponse

-- | 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.
pNeedsSpectrumReport :: Lens' PawsGetSpectrumBatchResponse (Maybe Bool)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "spectrum#pawsGetSpectrumBatchResponse".
pKind :: Lens' PawsGetSpectrumBatchResponse Text

-- | 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.
pGeoSpectrumSchedules :: Lens' PawsGetSpectrumBatchResponse [GeoSpectrumSchedule]

-- | 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.
pMaxContiguousBwHz :: Lens' PawsGetSpectrumBatchResponse (Maybe Double)

-- | The PAWS version. Must be exactly 1.0. Required field.
pVersion :: Lens' PawsGetSpectrumBatchResponse (Maybe Text)

-- | 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.
pRulesetInfo :: Lens' PawsGetSpectrumBatchResponse (Maybe RulesetInfo)

-- | The message type (e.g., INIT_REQ, AVAIL_SPECTRUM_REQ, ...). Required
--   field.
pType :: Lens' PawsGetSpectrumBatchResponse (Maybe Text)

-- | 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.
pDatabaseChange :: Lens' PawsGetSpectrumBatchResponse (Maybe DBUpdateSpec)

-- | 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.
pTimestamp :: Lens' PawsGetSpectrumBatchResponse (Maybe Text)

-- | The database must return in its available spectrum response the device
--   descriptor information it received in the master device's available
--   spectrum batch request.
pDeviceDesc :: Lens' PawsGetSpectrumBatchResponse (Maybe DeviceDescriptor)

-- | 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.
pMaxTotalBwHz :: Lens' PawsGetSpectrumBatchResponse (Maybe Double)

-- | The device validity element describes whether a particular device is
--   valid to operate in the regulatory domain.
--   
--   <i>See:</i> <a>deviceValidity</a> smart constructor.
data DeviceValidity

-- | Creates a value of <a>DeviceValidity</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dvIsValid</a></li>
--   <li><a>dvReason</a></li>
--   <li><a>dvDeviceDesc</a></li>
--   </ul>
deviceValidity :: DeviceValidity

-- | The validity status: true if the device is valid for operation, false
--   otherwise. It will always be present.
dvIsValid :: Lens' DeviceValidity (Maybe Bool)

-- | 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.
dvReason :: Lens' DeviceValidity (Maybe Text)

-- | The descriptor of the device for which the validity check was
--   requested. It will always be present.
dvDeviceDesc :: Lens' DeviceValidity (Maybe DeviceDescriptor)

-- | A "point" with uncertainty is represented using the Ellipse shape.
--   
--   <i>See:</i> <a>geoLocationEllipse</a> smart constructor.
data GeoLocationEllipse

-- | Creates a value of <a>GeoLocationEllipse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gleSemiMajorAxis</a></li>
--   <li><a>gleCenter</a></li>
--   <li><a>gleOrientation</a></li>
--   <li><a>gleSemiMinorAxis</a></li>
--   </ul>
geoLocationEllipse :: GeoLocationEllipse

-- | 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.
gleSemiMajorAxis :: Lens' GeoLocationEllipse (Maybe Double)

-- | A required geo-spatial point representing the center of the ellipse.
gleCenter :: Lens' GeoLocationEllipse (Maybe GeoLocationPoint)

-- | 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.
gleOrientation :: Lens' GeoLocationEllipse (Maybe Double)

-- | 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.
gleSemiMinorAxis :: Lens' GeoLocationEllipse (Maybe Double)

-- | This contains parameters for the ruleset of a regulatory domain that
--   is communicated using the initialization and available-spectrum
--   processes.
--   
--   <i>See:</i> <a>rulesetInfo</a> smart constructor.
data RulesetInfo

-- | Creates a value of <a>RulesetInfo</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>riRulesetIds</a></li>
--   <li><a>riMaxPollingSecs</a></li>
--   <li><a>riMaxLocationChange</a></li>
--   <li><a>riAuthority</a></li>
--   </ul>
rulesetInfo :: RulesetInfo

-- | 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.
riRulesetIds :: Lens' RulesetInfo [Text]

-- | 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.
riMaxPollingSecs :: Lens' RulesetInfo (Maybe Int32)

-- | 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.
riMaxLocationChange :: Lens' RulesetInfo (Maybe Double)

-- | 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.
riAuthority :: Lens' RulesetInfo (Maybe Text)

-- | The registration request message contains the required registration
--   parameters.
--   
--   <i>See:</i> <a>pawsRegisterRequest</a> smart constructor.
data PawsRegisterRequest

-- | Creates a value of <a>PawsRegisterRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pawAntenna</a></li>
--   <li><a>pawLocation</a></li>
--   <li><a>pawDeviceOwner</a></li>
--   <li><a>pawVersion</a></li>
--   <li><a>pawType</a></li>
--   <li><a>pawDeviceDesc</a></li>
--   </ul>
pawsRegisterRequest :: PawsRegisterRequest

-- | Antenna characteristics, including its height and height type.
pawAntenna :: Lens' PawsRegisterRequest (Maybe AntennaCharacteristics)

-- | A device's geolocation is required.
pawLocation :: Lens' PawsRegisterRequest (Maybe GeoLocation)

-- | Device owner information is required.
pawDeviceOwner :: Lens' PawsRegisterRequest (Maybe DeviceOwner)

-- | The PAWS version. Must be exactly 1.0. Required field.
pawVersion :: Lens' PawsRegisterRequest (Maybe Text)

-- | The message type (e.g., INIT_REQ, AVAIL_SPECTRUM_REQ, ...). Required
--   field.
pawType :: Lens' PawsRegisterRequest (Maybe Text)

-- | A DeviceDescriptor is required.
pawDeviceDesc :: Lens' PawsRegisterRequest (Maybe DeviceDescriptor)

-- | An empty response to the notification.
--   
--   <i>See:</i> <a>pawsNotifySpectrumUseResponse</a> smart constructor.
data PawsNotifySpectrumUseResponse

-- | Creates a value of <a>PawsNotifySpectrumUseResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pnsurnKind</a></li>
--   <li><a>pnsurnVersion</a></li>
--   <li><a>pnsurnType</a></li>
--   </ul>
pawsNotifySpectrumUseResponse :: PawsNotifySpectrumUseResponse

-- | Identifies what kind of resource this is. Value: the fixed string
--   "spectrum#pawsNotifySpectrumUseResponse".
pnsurnKind :: Lens' PawsNotifySpectrumUseResponse Text

-- | The PAWS version. Must be exactly 1.0. Required field.
pnsurnVersion :: Lens' PawsNotifySpectrumUseResponse (Maybe Text)

-- | The message type (e.g., INIT_REQ, AVAIL_SPECTRUM_REQ, ...). Required
--   field.
pnsurnType :: Lens' PawsNotifySpectrumUseResponse (Maybe Text)

-- | This message contains the name and URI of a database.
--   
--   <i>See:</i> <a>databaseSpec</a> smart constructor.
data DatabaseSpec

-- | Creates a value of <a>DatabaseSpec</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dsURI</a></li>
--   <li><a>dsName</a></li>
--   </ul>
databaseSpec :: DatabaseSpec

-- | The corresponding URI of the database.
dsURI :: Lens' DatabaseSpec (Maybe Text)

-- | The display name for a database.
dsName :: Lens' DatabaseSpec (Maybe Text)

-- | Available spectrum can be logically characterized by a list of
--   frequency ranges and permissible power levels for each range.
--   
--   <i>See:</i> <a>spectrumMessage</a> smart constructor.
data SpectrumMessage

-- | Creates a value of <a>SpectrumMessage</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>smBandwidth</a></li>
--   <li><a>smFrequencyRanges</a></li>
--   </ul>
spectrumMessage :: SpectrumMessage

-- | 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.
smBandwidth :: Lens' SpectrumMessage (Maybe Double)

-- | 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.
smFrequencyRanges :: Lens' SpectrumMessage [FrequencyRange]

-- | This parameter is used to specify the geolocation of the device.
--   
--   <i>See:</i> <a>geoLocation</a> smart constructor.
data GeoLocation

-- | Creates a value of <a>GeoLocation</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>glConfidence</a></li>
--   <li><a>glPoint</a></li>
--   <li><a>glRegion</a></li>
--   </ul>
geoLocation :: GeoLocation

-- | 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.
glConfidence :: Lens' GeoLocation (Maybe Int32)

-- | 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.
glPoint :: Lens' GeoLocation (Maybe GeoLocationEllipse)

-- | If present, indicates that the geolocation represents a region.
--   Database support for regions is optional.
glRegion :: Lens' GeoLocation (Maybe GeoLocationPolygon)

-- | A specific range of frequencies together with the associated maximum
--   power level and channel identifier.
--   
--   <i>See:</i> <a>frequencyRange</a> smart constructor.
data FrequencyRange

-- | Creates a value of <a>FrequencyRange</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>frStopHz</a></li>
--   <li><a>frMaxPowerDBm</a></li>
--   <li><a>frChannelId</a></li>
--   <li><a>frStartHz</a></li>
--   </ul>
frequencyRange :: FrequencyRange

-- | The required exclusive end of the frequency range (in Hertz).
frStopHz :: Lens' FrequencyRange (Maybe Double)

-- | 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.
frMaxPowerDBm :: Lens' FrequencyRange (Maybe Double)

-- | 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.
frChannelId :: Lens' FrequencyRange (Maybe Text)

-- | The required inclusive start of the frequency range (in Hertz).
frStartHz :: Lens' FrequencyRange (Maybe Double)

-- | The response message for the available spectrum query which contains a
--   schedule of available spectrum for the device.
--   
--   <i>See:</i> <a>pawsGetSpectrumResponse</a> smart constructor.
data PawsGetSpectrumResponse

-- | Creates a value of <a>PawsGetSpectrumResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pgsrgNeedsSpectrumReport</a></li>
--   <li><a>pgsrgSpectrumSchedules</a></li>
--   <li><a>pgsrgKind</a></li>
--   <li><a>pgsrgMaxContiguousBwHz</a></li>
--   <li><a>pgsrgVersion</a></li>
--   <li><a>pgsrgRulesetInfo</a></li>
--   <li><a>pgsrgType</a></li>
--   <li><a>pgsrgDatabaseChange</a></li>
--   <li><a>pgsrgTimestamp</a></li>
--   <li><a>pgsrgDeviceDesc</a></li>
--   <li><a>pgsrgMaxTotalBwHz</a></li>
--   </ul>
pawsGetSpectrumResponse :: PawsGetSpectrumResponse

-- | 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.
pgsrgNeedsSpectrumReport :: Lens' PawsGetSpectrumResponse (Maybe Bool)

-- | 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.
pgsrgSpectrumSchedules :: Lens' PawsGetSpectrumResponse [SpectrumSchedule]

-- | Identifies what kind of resource this is. Value: the fixed string
--   "spectrum#pawsGetSpectrumResponse".
pgsrgKind :: Lens' PawsGetSpectrumResponse Text

-- | 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.
pgsrgMaxContiguousBwHz :: Lens' PawsGetSpectrumResponse (Maybe Double)

-- | The PAWS version. Must be exactly 1.0. Required field.
pgsrgVersion :: Lens' PawsGetSpectrumResponse (Maybe Text)

-- | 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.
pgsrgRulesetInfo :: Lens' PawsGetSpectrumResponse (Maybe RulesetInfo)

-- | The message type (e.g., INIT_REQ, AVAIL_SPECTRUM_REQ, ...). Required
--   field.
pgsrgType :: Lens' PawsGetSpectrumResponse (Maybe Text)

-- | 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.
pgsrgDatabaseChange :: Lens' PawsGetSpectrumResponse (Maybe DBUpdateSpec)

-- | 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.
pgsrgTimestamp :: Lens' PawsGetSpectrumResponse (Maybe Text)

-- | The database must return, in its available spectrum response, the
--   device descriptor information it received in the master device's
--   available spectrum request.
pgsrgDeviceDesc :: Lens' PawsGetSpectrumResponse (Maybe DeviceDescriptor)

-- | 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.
pgsrgMaxTotalBwHz :: Lens' PawsGetSpectrumResponse (Maybe Double)

-- | The device validation request message.
--   
--   <i>See:</i> <a>pawsVerifyDeviceRequest</a> smart constructor.
data PawsVerifyDeviceRequest

-- | Creates a value of <a>PawsVerifyDeviceRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pvdrvVersion</a></li>
--   <li><a>pvdrvDeviceDescs</a></li>
--   <li><a>pvdrvType</a></li>
--   </ul>
pawsVerifyDeviceRequest :: PawsVerifyDeviceRequest

-- | The PAWS version. Must be exactly 1.0. Required field.
pvdrvVersion :: Lens' PawsVerifyDeviceRequest (Maybe Text)

-- | A list of device descriptors, which specifies the slave devices to be
--   validated, is required.
pvdrvDeviceDescs :: Lens' PawsVerifyDeviceRequest [DeviceDescriptor]

-- | The message type (e.g., INIT_REQ, AVAIL_SPECTRUM_REQ, ...). Required
--   field.
pvdrvType :: Lens' PawsVerifyDeviceRequest (Maybe Text)

-- | 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.
--   
--   <i>See:</i> <a>deviceDescriptor</a> smart constructor.
data DeviceDescriptor

-- | Creates a value of <a>DeviceDescriptor</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ddEtsiEnDeviceEmissionsClass</a></li>
--   <li><a>ddRulesetIds</a></li>
--   <li><a>ddModelId</a></li>
--   <li><a>ddEtsiEnDeviceType</a></li>
--   <li><a>ddEtsiEnTechnologyId</a></li>
--   <li><a>ddFccId</a></li>
--   <li><a>ddManufacturerId</a></li>
--   <li><a>ddFccTvbdDeviceType</a></li>
--   <li><a>ddEtsiEnDeviceCategory</a></li>
--   <li><a>ddSerialNumber</a></li>
--   </ul>
deviceDescriptor :: DeviceDescriptor

-- | 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.
ddEtsiEnDeviceEmissionsClass :: Lens' DeviceDescriptor (Maybe Text)

-- | 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.
ddRulesetIds :: Lens' DeviceDescriptor [Text]

-- | The device's model ID may be required by the regulatory domain. The
--   string value must not exceed 64 characters in length.
ddModelId :: Lens' DeviceDescriptor (Maybe Text)

-- | 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.
ddEtsiEnDeviceType :: Lens' DeviceDescriptor (Maybe Text)

-- | 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.
ddEtsiEnTechnologyId :: Lens' DeviceDescriptor (Maybe Text)

-- | 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.
ddFccId :: Lens' DeviceDescriptor (Maybe Text)

-- | 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.
ddManufacturerId :: Lens' DeviceDescriptor (Maybe Text)

-- | Specifies the TV Band White Space device type, as defined by the FCC.
--   Valid values are FIXED, MODE_1, MODE_2.
ddFccTvbdDeviceType :: Lens' DeviceDescriptor (Maybe Text)

-- | 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.
ddEtsiEnDeviceCategory :: Lens' DeviceDescriptor (Maybe Text)

-- | The manufacturer's device serial number; required by the applicable
--   regulatory domain. The length of the value must not exceed 64
--   characters.
ddSerialNumber :: Lens' DeviceDescriptor (Maybe Text)

-- | The initialization request message allows the master device to
--   initiate exchange of capabilities with the database.
--   
--   <i>See:</i> <a>pawsInitRequest</a> smart constructor.
data PawsInitRequest

-- | Creates a value of <a>PawsInitRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>piriLocation</a></li>
--   <li><a>piriVersion</a></li>
--   <li><a>piriType</a></li>
--   <li><a>piriDeviceDesc</a></li>
--   </ul>
pawsInitRequest :: PawsInitRequest

-- | A device's geolocation is required.
piriLocation :: Lens' PawsInitRequest (Maybe GeoLocation)

-- | The PAWS version. Must be exactly 1.0. Required field.
piriVersion :: Lens' PawsInitRequest (Maybe Text)

-- | The message type (e.g., INIT_REQ, AVAIL_SPECTRUM_REQ, ...). Required
--   field.
piriType :: Lens' PawsInitRequest (Maybe Text)

-- | 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.
piriDeviceDesc :: Lens' PawsInitRequest (Maybe DeviceDescriptor)

-- | 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.
--   
--   <i>See:</i> <a>deviceCapabilities</a> smart constructor.
data DeviceCapabilities

-- | Creates a value of <a>DeviceCapabilities</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dcFrequencyRanges</a></li>
--   </ul>
deviceCapabilities :: DeviceCapabilities

-- | 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.
dcFrequencyRanges :: Lens' DeviceCapabilities [FrequencyRange]


-- | Validates a device for white space use in accordance with regulatory
--   rules. The Google Spectrum Database does not support master/slave
--   configurations, so this always yields an UNIMPLEMENTED error.
--   
--   <i>See:</i> <a>Google Spectrum Database API Reference</a> for
--   <tt>spectrum.paws.verifyDevice</tt>.
module Network.Google.Resource.Spectrum.Paws.VerifyDevice

-- | A resource alias for <tt>spectrum.paws.verifyDevice</tt> method which
--   the <a>PawsVerifyDevice</a> request conforms to.
type PawsVerifyDeviceResource = "spectrum" :> ("v1explorer" :> ("paws" :> ("verifyDevice" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] PawsVerifyDeviceRequest :> Post '[JSON] PawsVerifyDeviceResponse)))))

-- | Creates a value of <a>PawsVerifyDevice</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pvdPayload</a></li>
--   </ul>
pawsVerifyDevice :: PawsVerifyDeviceRequest -> PawsVerifyDevice

-- | Validates a device for white space use in accordance with regulatory
--   rules. The Google Spectrum Database does not support master/slave
--   configurations, so this always yields an UNIMPLEMENTED error.
--   
--   <i>See:</i> <a>pawsVerifyDevice</a> smart constructor.
data PawsVerifyDevice

-- | Multipart request metadata.
pvdPayload :: Lens' PawsVerifyDevice PawsVerifyDeviceRequest
instance GHC.Generics.Generic Network.Google.Resource.Spectrum.Paws.VerifyDevice.PawsVerifyDevice
instance Data.Data.Data Network.Google.Resource.Spectrum.Paws.VerifyDevice.PawsVerifyDevice
instance GHC.Show.Show Network.Google.Resource.Spectrum.Paws.VerifyDevice.PawsVerifyDevice
instance GHC.Classes.Eq Network.Google.Resource.Spectrum.Paws.VerifyDevice.PawsVerifyDevice
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Spectrum.Paws.VerifyDevice.PawsVerifyDevice


-- | The Google Spectrum Database implements registration in the
--   getSpectrum method. As such this always returns an UNIMPLEMENTED
--   error.
--   
--   <i>See:</i> <a>Google Spectrum Database API Reference</a> for
--   <tt>spectrum.paws.register</tt>.
module Network.Google.Resource.Spectrum.Paws.Register

-- | A resource alias for <tt>spectrum.paws.register</tt> method which the
--   <a>PawsRegister</a> request conforms to.
type PawsRegisterResource = "spectrum" :> ("v1explorer" :> ("paws" :> ("register" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] PawsRegisterRequest :> Post '[JSON] PawsRegisterResponse)))))

-- | Creates a value of <a>PawsRegister</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>prPayload</a></li>
--   </ul>
pawsRegister :: PawsRegisterRequest -> PawsRegister

-- | The Google Spectrum Database implements registration in the
--   getSpectrum method. As such this always returns an UNIMPLEMENTED
--   error.
--   
--   <i>See:</i> <a>pawsRegister</a> smart constructor.
data PawsRegister

-- | Multipart request metadata.
prPayload :: Lens' PawsRegister PawsRegisterRequest
instance GHC.Generics.Generic Network.Google.Resource.Spectrum.Paws.Register.PawsRegister
instance Data.Data.Data Network.Google.Resource.Spectrum.Paws.Register.PawsRegister
instance GHC.Show.Show Network.Google.Resource.Spectrum.Paws.Register.PawsRegister
instance GHC.Classes.Eq Network.Google.Resource.Spectrum.Paws.Register.PawsRegister
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Spectrum.Paws.Register.PawsRegister


-- | Notifies the database that the device has selected certain frequency
--   ranges for transmission. Only to be invoked when required by the
--   regulator. The Google Spectrum Database does not operate in domains
--   that require notification, so this always yields an UNIMPLEMENTED
--   error.
--   
--   <i>See:</i> <a>Google Spectrum Database API Reference</a> for
--   <tt>spectrum.paws.notifySpectrumUse</tt>.
module Network.Google.Resource.Spectrum.Paws.NotifySpectrumUse

-- | A resource alias for <tt>spectrum.paws.notifySpectrumUse</tt> method
--   which the <a>PawsNotifySpectrumUse</a> request conforms to.
type PawsNotifySpectrumUseResource = "spectrum" :> ("v1explorer" :> ("paws" :> ("notifySpectrumUse" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] PawsNotifySpectrumUseRequest :> Post '[JSON] PawsNotifySpectrumUseResponse)))))

-- | Creates a value of <a>PawsNotifySpectrumUse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pnsuPayload</a></li>
--   </ul>
pawsNotifySpectrumUse :: PawsNotifySpectrumUseRequest -> PawsNotifySpectrumUse

-- | Notifies the database that the device has selected certain frequency
--   ranges for transmission. Only to be invoked when required by the
--   regulator. The Google Spectrum Database does not operate in domains
--   that require notification, so this always yields an UNIMPLEMENTED
--   error.
--   
--   <i>See:</i> <a>pawsNotifySpectrumUse</a> smart constructor.
data PawsNotifySpectrumUse

-- | Multipart request metadata.
pnsuPayload :: Lens' PawsNotifySpectrumUse PawsNotifySpectrumUseRequest
instance GHC.Generics.Generic Network.Google.Resource.Spectrum.Paws.NotifySpectrumUse.PawsNotifySpectrumUse
instance Data.Data.Data Network.Google.Resource.Spectrum.Paws.NotifySpectrumUse.PawsNotifySpectrumUse
instance GHC.Show.Show Network.Google.Resource.Spectrum.Paws.NotifySpectrumUse.PawsNotifySpectrumUse
instance GHC.Classes.Eq Network.Google.Resource.Spectrum.Paws.NotifySpectrumUse.PawsNotifySpectrumUse
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Spectrum.Paws.NotifySpectrumUse.PawsNotifySpectrumUse


-- | Initializes the connection between a white space device and the
--   database.
--   
--   <i>See:</i> <a>Google Spectrum Database API Reference</a> for
--   <tt>spectrum.paws.init</tt>.
module Network.Google.Resource.Spectrum.Paws.Init

-- | A resource alias for <tt>spectrum.paws.init</tt> method which the
--   <a>PawsInit</a> request conforms to.
type PawsInitResource = "spectrum" :> ("v1explorer" :> ("paws" :> ("init" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] PawsInitRequest :> Post '[JSON] PawsInitResponse)))))

-- | Creates a value of <a>PawsInit</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>piPayload</a></li>
--   </ul>
pawsInit :: PawsInitRequest -> PawsInit

-- | Initializes the connection between a white space device and the
--   database.
--   
--   <i>See:</i> <a>pawsInit</a> smart constructor.
data PawsInit

-- | Multipart request metadata.
piPayload :: Lens' PawsInit PawsInitRequest
instance GHC.Generics.Generic Network.Google.Resource.Spectrum.Paws.Init.PawsInit
instance Data.Data.Data Network.Google.Resource.Spectrum.Paws.Init.PawsInit
instance GHC.Show.Show Network.Google.Resource.Spectrum.Paws.Init.PawsInit
instance GHC.Classes.Eq Network.Google.Resource.Spectrum.Paws.Init.PawsInit
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Spectrum.Paws.Init.PawsInit


-- | The Google Spectrum Database does not support batch requests, so this
--   method always yields an UNIMPLEMENTED error.
--   
--   <i>See:</i> <a>Google Spectrum Database API Reference</a> for
--   <tt>spectrum.paws.getSpectrumBatch</tt>.
module Network.Google.Resource.Spectrum.Paws.GetSpectrumBatch

-- | A resource alias for <tt>spectrum.paws.getSpectrumBatch</tt> method
--   which the <a>PawsGetSpectrumBatch</a> request conforms to.
type PawsGetSpectrumBatchResource = "spectrum" :> ("v1explorer" :> ("paws" :> ("getSpectrumBatch" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] PawsGetSpectrumBatchRequest :> Post '[JSON] PawsGetSpectrumBatchResponse)))))

-- | Creates a value of <a>PawsGetSpectrumBatch</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pgsbPayload</a></li>
--   </ul>
pawsGetSpectrumBatch :: PawsGetSpectrumBatchRequest -> PawsGetSpectrumBatch

-- | The Google Spectrum Database does not support batch requests, so this
--   method always yields an UNIMPLEMENTED error.
--   
--   <i>See:</i> <a>pawsGetSpectrumBatch</a> smart constructor.
data PawsGetSpectrumBatch

-- | Multipart request metadata.
pgsbPayload :: Lens' PawsGetSpectrumBatch PawsGetSpectrumBatchRequest
instance GHC.Generics.Generic Network.Google.Resource.Spectrum.Paws.GetSpectrumBatch.PawsGetSpectrumBatch
instance Data.Data.Data Network.Google.Resource.Spectrum.Paws.GetSpectrumBatch.PawsGetSpectrumBatch
instance GHC.Show.Show Network.Google.Resource.Spectrum.Paws.GetSpectrumBatch.PawsGetSpectrumBatch
instance GHC.Classes.Eq Network.Google.Resource.Spectrum.Paws.GetSpectrumBatch.PawsGetSpectrumBatch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Spectrum.Paws.GetSpectrumBatch.PawsGetSpectrumBatch


-- | Requests information about the available spectrum for a device at a
--   location. Requests from a fixed-mode device must include owner
--   information so the device can be registered with the database.
--   
--   <i>See:</i> <a>Google Spectrum Database API Reference</a> for
--   <tt>spectrum.paws.getSpectrum</tt>.
module Network.Google.Resource.Spectrum.Paws.GetSpectrum

-- | A resource alias for <tt>spectrum.paws.getSpectrum</tt> method which
--   the <a>PawsGetSpectrum</a> request conforms to.
type PawsGetSpectrumResource = "spectrum" :> ("v1explorer" :> ("paws" :> ("getSpectrum" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] PawsGetSpectrumRequest :> Post '[JSON] PawsGetSpectrumResponse)))))

-- | Creates a value of <a>PawsGetSpectrum</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pgsPayload</a></li>
--   </ul>
pawsGetSpectrum :: PawsGetSpectrumRequest -> PawsGetSpectrum

-- | Requests information about the available spectrum for a device at a
--   location. Requests from a fixed-mode device must include owner
--   information so the device can be registered with the database.
--   
--   <i>See:</i> <a>pawsGetSpectrum</a> smart constructor.
data PawsGetSpectrum

-- | Multipart request metadata.
pgsPayload :: Lens' PawsGetSpectrum PawsGetSpectrumRequest
instance GHC.Generics.Generic Network.Google.Resource.Spectrum.Paws.GetSpectrum.PawsGetSpectrum
instance Data.Data.Data Network.Google.Resource.Spectrum.Paws.GetSpectrum.PawsGetSpectrum
instance GHC.Show.Show Network.Google.Resource.Spectrum.Paws.GetSpectrum.PawsGetSpectrum
instance GHC.Classes.Eq Network.Google.Resource.Spectrum.Paws.GetSpectrum.PawsGetSpectrum
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Spectrum.Paws.GetSpectrum.PawsGetSpectrum


-- | API for spectrum-management functions.
--   
--   <i>See:</i> <a>Google Spectrum Database API Reference</a>
module Network.Google.Spectrum

-- | Default request referring to version <tt>v1explorer</tt> of the Google
--   Spectrum Database API. This contains the host and root path used as a
--   starting point for constructing service requests.
spectrumService :: ServiceConfig

-- | Represents the entirety of the methods and resources available for the
--   Google Spectrum Database API service.
type SpectrumAPI = PawsVerifyDeviceResource :<|> (PawsInitResource :<|> (PawsGetSpectrumResource :<|> (PawsNotifySpectrumUseResource :<|> (PawsRegisterResource :<|> PawsGetSpectrumBatchResource))))

-- | A region is represented using the polygonal shape.
--   
--   <i>See:</i> <a>geoLocationPolygon</a> smart constructor.
data GeoLocationPolygon

-- | Creates a value of <a>GeoLocationPolygon</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>glpExterior</a></li>
--   </ul>
geoLocationPolygon :: GeoLocationPolygon

-- | 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).
glpExterior :: Lens' GeoLocationPolygon [GeoLocationPoint]

-- | A single geolocation on the globe.
--   
--   <i>See:</i> <a>geoLocationPoint</a> smart constructor.
data GeoLocationPoint

-- | Creates a value of <a>GeoLocationPoint</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>glpLatitude</a></li>
--   <li><a>glpLongitude</a></li>
--   </ul>
geoLocationPoint :: GeoLocationPoint

-- | 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.
glpLatitude :: Lens' GeoLocationPoint (Maybe Double)

-- | 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.
glpLongitude :: Lens' GeoLocationPoint (Maybe Double)

-- | The initialization response message communicates database parameters
--   to the requesting device.
--   
--   <i>See:</i> <a>pawsInitResponse</a> smart constructor.
data PawsInitResponse

-- | Creates a value of <a>PawsInitResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pirKind</a></li>
--   <li><a>pirVersion</a></li>
--   <li><a>pirRulesetInfo</a></li>
--   <li><a>pirType</a></li>
--   <li><a>pirDatabaseChange</a></li>
--   </ul>
pawsInitResponse :: PawsInitResponse

-- | Identifies what kind of resource this is. Value: the fixed string
--   "spectrum#pawsInitResponse".
pirKind :: Lens' PawsInitResponse Text

-- | The PAWS version. Must be exactly 1.0. Required field.
pirVersion :: Lens' PawsInitResponse (Maybe Text)

-- | 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.
pirRulesetInfo :: Lens' PawsInitResponse (Maybe RulesetInfo)

-- | The message type (e.g., INIT_REQ, AVAIL_SPECTRUM_REQ, ...). Required
--   field.
pirType :: Lens' PawsInitResponse (Maybe Text)

-- | 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.
pirDatabaseChange :: Lens' PawsInitResponse (Maybe DBUpdateSpec)

-- | The registration response message simply acknowledges receipt of the
--   request and is otherwise empty.
--   
--   <i>See:</i> <a>pawsRegisterResponse</a> smart constructor.
data PawsRegisterResponse

-- | Creates a value of <a>PawsRegisterResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>prrKind</a></li>
--   <li><a>prrVersion</a></li>
--   <li><a>prrType</a></li>
--   <li><a>prrDatabaseChange</a></li>
--   </ul>
pawsRegisterResponse :: PawsRegisterResponse

-- | Identifies what kind of resource this is. Value: the fixed string
--   "spectrum#pawsRegisterResponse".
prrKind :: Lens' PawsRegisterResponse Text

-- | The PAWS version. Must be exactly 1.0. Required field.
prrVersion :: Lens' PawsRegisterResponse (Maybe Text)

-- | The message type (e.g., INIT_REQ, AVAIL_SPECTRUM_REQ, ...). Required
--   field.
prrType :: Lens' PawsRegisterResponse (Maybe Text)

-- | 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.
prrDatabaseChange :: Lens' PawsRegisterResponse (Maybe DBUpdateSpec)

-- | The spectrum-use notification message which must contain the
--   geolocation of the Device and parameters required by the regulatory
--   domain.
--   
--   <i>See:</i> <a>pawsNotifySpectrumUseRequest</a> smart constructor.
data PawsNotifySpectrumUseRequest

-- | Creates a value of <a>PawsNotifySpectrumUseRequest</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pnsurSpectra</a></li>
--   <li><a>pnsurLocation</a></li>
--   <li><a>pnsurVersion</a></li>
--   <li><a>pnsurType</a></li>
--   <li><a>pnsurDeviceDesc</a></li>
--   </ul>
pawsNotifySpectrumUseRequest :: PawsNotifySpectrumUseRequest

-- | 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.
pnsurSpectra :: Lens' PawsNotifySpectrumUseRequest [SpectrumMessage]

-- | 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.
pnsurLocation :: Lens' PawsNotifySpectrumUseRequest (Maybe GeoLocation)

-- | The PAWS version. Must be exactly 1.0. Required field.
pnsurVersion :: Lens' PawsNotifySpectrumUseRequest (Maybe Text)

-- | The message type (e.g., INIT_REQ, AVAIL_SPECTRUM_REQ, ...). Required
--   field.
pnsurType :: Lens' PawsNotifySpectrumUseRequest (Maybe Text)

-- | Device descriptor information is required in the spectrum-use
--   notification message.
pnsurDeviceDesc :: Lens' PawsNotifySpectrumUseRequest (Maybe DeviceDescriptor)

-- | 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
--   
--   <i>See:</i> <a>vcard</a> smart constructor.
data Vcard

-- | Creates a value of <a>Vcard</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vEmail</a></li>
--   <li><a>vAdr</a></li>
--   <li><a>vOrg</a></li>
--   <li><a>vTel</a></li>
--   <li><a>vFn</a></li>
--   </ul>
vcard :: Vcard

-- | An email address that can be used to reach the contact.
vEmail :: Lens' Vcard (Maybe VcardTypedText)

-- | The street address of the entity.
vAdr :: Lens' Vcard (Maybe VcardAddress)

-- | The organization associated with the registering entity.
vOrg :: Lens' Vcard (Maybe VcardTypedText)

-- | A telephone number that can be used to call the contact.
vTel :: Lens' Vcard (Maybe VcardTelephone)

-- | The full name of the contact person. For example: John A. Smith.
vFn :: Lens' Vcard (Maybe Text)

-- | This message is provided by the database to notify devices of an
--   upcoming change to the database URI.
--   
--   <i>See:</i> <a>dbUpdateSpec</a> smart constructor.
data DBUpdateSpec

-- | Creates a value of <a>DBUpdateSpec</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dusDatabases</a></li>
--   </ul>
dbUpdateSpec :: DBUpdateSpec

-- | 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.
dusDatabases :: Lens' DBUpdateSpec [DatabaseSpec]

-- | The request message for a batch available spectrum query protocol.
--   
--   <i>See:</i> <a>pawsGetSpectrumBatchRequest</a> smart constructor.
data PawsGetSpectrumBatchRequest

-- | Creates a value of <a>PawsGetSpectrumBatchRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pgsbrAntenna</a></li>
--   <li><a>pgsbrMasterDeviceDesc</a></li>
--   <li><a>pgsbrOwner</a></li>
--   <li><a>pgsbrRequestType</a></li>
--   <li><a>pgsbrVersion</a></li>
--   <li><a>pgsbrType</a></li>
--   <li><a>pgsbrLocations</a></li>
--   <li><a>pgsbrCapabilities</a></li>
--   <li><a>pgsbrDeviceDesc</a></li>
--   </ul>
pawsGetSpectrumBatchRequest :: PawsGetSpectrumBatchRequest

-- | Depending on device type and regulatory domain, antenna
--   characteristics may be required.
pgsbrAntenna :: Lens' PawsGetSpectrumBatchRequest (Maybe AntennaCharacteristics)

-- | 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).
pgsbrMasterDeviceDesc :: Lens' PawsGetSpectrumBatchRequest (Maybe DeviceDescriptor)

-- | 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.
pgsbrOwner :: Lens' PawsGetSpectrumBatchRequest (Maybe DeviceOwner)

-- | 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.
pgsbrRequestType :: Lens' PawsGetSpectrumBatchRequest (Maybe Text)

-- | The PAWS version. Must be exactly 1.0. Required field.
pgsbrVersion :: Lens' PawsGetSpectrumBatchRequest (Maybe Text)

-- | The message type (e.g., INIT_REQ, AVAIL_SPECTRUM_REQ, ...). Required
--   field.
pgsbrType :: Lens' PawsGetSpectrumBatchRequest (Maybe Text)

-- | 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).
pgsbrLocations :: Lens' PawsGetSpectrumBatchRequest [GeoLocation]

-- | 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.
pgsbrCapabilities :: Lens' PawsGetSpectrumBatchRequest (Maybe DeviceCapabilities)

-- | 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.
pgsbrDeviceDesc :: Lens' PawsGetSpectrumBatchRequest (Maybe DeviceDescriptor)

-- | The schedule of spectrum profiles available at a particular
--   geolocation.
--   
--   <i>See:</i> <a>geoSpectrumSchedule</a> smart constructor.
data GeoSpectrumSchedule

-- | Creates a value of <a>GeoSpectrumSchedule</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gssLocation</a></li>
--   <li><a>gssSpectrumSchedules</a></li>
--   </ul>
geoSpectrumSchedule :: GeoSpectrumSchedule

-- | The geolocation identifies the location at which the spectrum schedule
--   applies. It will always be present.
gssLocation :: Lens' GeoSpectrumSchedule (Maybe GeoLocation)

-- | 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.
gssSpectrumSchedules :: Lens' GeoSpectrumSchedule [SpectrumSchedule]

-- | The structure used to represent an organization and an email address.
--   
--   <i>See:</i> <a>vcardTypedText</a> smart constructor.
data VcardTypedText

-- | Creates a value of <a>VcardTypedText</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vttText</a></li>
--   </ul>
vcardTypedText :: VcardTypedText

-- | The text string associated with this item. For example, for an org
--   field: ACME, inc. For an email field: smith'example.com.
vttText :: Lens' VcardTypedText (Maybe Text)

-- | The spectrum schedule element combines an event time with spectrum
--   profile to define a time period in which the profile is valid.
--   
--   <i>See:</i> <a>spectrumSchedule</a> smart constructor.
data SpectrumSchedule

-- | Creates a value of <a>SpectrumSchedule</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ssSpectra</a></li>
--   <li><a>ssEventTime</a></li>
--   </ul>
spectrumSchedule :: SpectrumSchedule

-- | A list of spectrum messages representing the usable profile. It will
--   always be present, but may be empty when there is no available
--   spectrum.
ssSpectra :: Lens' SpectrumSchedule [SpectrumMessage]

-- | The event time expresses when the spectrum profile is valid. It will
--   always be present.
ssEventTime :: Lens' SpectrumSchedule (Maybe EventTime)

-- | The structure used to represent a telephone number.
--   
--   <i>See:</i> <a>vcardTelephone</a> smart constructor.
data VcardTelephone

-- | Creates a value of <a>VcardTelephone</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vtURI</a></li>
--   </ul>
vcardTelephone :: VcardTelephone

-- | A nested telephone URI of the form: tel:+1-123-456-7890.
vtURI :: Lens' VcardTelephone (Maybe Text)

-- | 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.
--   
--   <i>See:</i> <a>deviceOwner</a> smart constructor.
data DeviceOwner

-- | Creates a value of <a>DeviceOwner</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>doOperator</a></li>
--   <li><a>doOwner</a></li>
--   </ul>
deviceOwner :: DeviceOwner

-- | The vCard contact information for the device operator is optional, but
--   may be required by specific regulatory domains.
doOperator :: Lens' DeviceOwner (Maybe Vcard)

-- | The vCard contact information for the individual or business that owns
--   the device is required.
doOwner :: Lens' DeviceOwner (Maybe Vcard)

-- | 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.
--   
--   <i>See:</i> <a>eventTime</a> smart constructor.
data EventTime

-- | Creates a value of <a>EventTime</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>etStartTime</a></li>
--   <li><a>etStopTime</a></li>
--   </ul>
eventTime :: EventTime

-- | The inclusive start of the event. It will be present.
etStartTime :: Lens' EventTime (Maybe Text)

-- | The exclusive end of the event. It will be present.
etStopTime :: Lens' EventTime (Maybe Text)

-- | The request message for the available spectrum query protocol which
--   must include the device's geolocation.
--   
--   <i>See:</i> <a>pawsGetSpectrumRequest</a> smart constructor.
data PawsGetSpectrumRequest

-- | Creates a value of <a>PawsGetSpectrumRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pgsrAntenna</a></li>
--   <li><a>pgsrMasterDeviceDesc</a></li>
--   <li><a>pgsrLocation</a></li>
--   <li><a>pgsrOwner</a></li>
--   <li><a>pgsrRequestType</a></li>
--   <li><a>pgsrVersion</a></li>
--   <li><a>pgsrType</a></li>
--   <li><a>pgsrCapabilities</a></li>
--   <li><a>pgsrDeviceDesc</a></li>
--   </ul>
pawsGetSpectrumRequest :: PawsGetSpectrumRequest

-- | Depending on device type and regulatory domain, the characteristics of
--   the antenna may be required.
pgsrAntenna :: Lens' PawsGetSpectrumRequest (Maybe AntennaCharacteristics)

-- | 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).
pgsrMasterDeviceDesc :: Lens' PawsGetSpectrumRequest (Maybe DeviceDescriptor)

-- | 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.
pgsrLocation :: Lens' PawsGetSpectrumRequest (Maybe GeoLocation)

-- | 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.
pgsrOwner :: Lens' PawsGetSpectrumRequest (Maybe DeviceOwner)

-- | 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.
pgsrRequestType :: Lens' PawsGetSpectrumRequest (Maybe Text)

-- | The PAWS version. Must be exactly 1.0. Required field.
pgsrVersion :: Lens' PawsGetSpectrumRequest (Maybe Text)

-- | The message type (e.g., INIT_REQ, AVAIL_SPECTRUM_REQ, ...). Required
--   field.
pgsrType :: Lens' PawsGetSpectrumRequest (Maybe Text)

-- | 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.
pgsrCapabilities :: Lens' PawsGetSpectrumRequest (Maybe DeviceCapabilities)

-- | 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.
pgsrDeviceDesc :: Lens' PawsGetSpectrumRequest (Maybe DeviceDescriptor)

-- | 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.
--   
--   <i>See:</i> <a>antennaCharacteristics</a> smart constructor.
data AntennaCharacteristics

-- | Creates a value of <a>AntennaCharacteristics</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>acHeight</a></li>
--   <li><a>acHeightType</a></li>
--   <li><a>acHeightUncertainty</a></li>
--   </ul>
antennaCharacteristics :: AntennaCharacteristics

-- | 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.
acHeight :: Lens' AntennaCharacteristics (Maybe Double)

-- | 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.
acHeightType :: Lens' AntennaCharacteristics (Maybe Text)

-- | The height uncertainty in meters. Whether this is required depends on
--   the regulatory domain.
acHeightUncertainty :: Lens' AntennaCharacteristics (Maybe Double)

-- | The device validation response message.
--   
--   <i>See:</i> <a>pawsVerifyDeviceResponse</a> smart constructor.
data PawsVerifyDeviceResponse

-- | Creates a value of <a>PawsVerifyDeviceResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pvdrDeviceValidities</a></li>
--   <li><a>pvdrKind</a></li>
--   <li><a>pvdrVersion</a></li>
--   <li><a>pvdrType</a></li>
--   <li><a>pvdrDatabaseChange</a></li>
--   </ul>
pawsVerifyDeviceResponse :: PawsVerifyDeviceResponse

-- | 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.
pvdrDeviceValidities :: Lens' PawsVerifyDeviceResponse [DeviceValidity]

-- | Identifies what kind of resource this is. Value: the fixed string
--   "spectrum#pawsVerifyDeviceResponse".
pvdrKind :: Lens' PawsVerifyDeviceResponse Text

-- | The PAWS version. Must be exactly 1.0. Required field.
pvdrVersion :: Lens' PawsVerifyDeviceResponse (Maybe Text)

-- | The message type (e.g., INIT_REQ, AVAIL_SPECTRUM_REQ, ...). Required
--   field.
pvdrType :: Lens' PawsVerifyDeviceResponse (Maybe Text)

-- | 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.
pvdrDatabaseChange :: Lens' PawsVerifyDeviceResponse (Maybe DBUpdateSpec)

-- | The structure used to represent a street address.
--   
--   <i>See:</i> <a>vcardAddress</a> smart constructor.
data VcardAddress

-- | Creates a value of <a>VcardAddress</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vaPobox</a></li>
--   <li><a>vaCountry</a></li>
--   <li><a>vaStreet</a></li>
--   <li><a>vaLocality</a></li>
--   <li><a>vaCode</a></li>
--   <li><a>vaRegion</a></li>
--   </ul>
vcardAddress :: VcardAddress

-- | An optional post office box number.
vaPobox :: Lens' VcardAddress (Maybe Text)

-- | The country name. For example: US.
vaCountry :: Lens' VcardAddress (Maybe Text)

-- | The street number and name. For example: 123 Any St.
vaStreet :: Lens' VcardAddress (Maybe Text)

-- | The city or local equivalent portion of the address. For example: San
--   Jose.
vaLocality :: Lens' VcardAddress (Maybe Text)

-- | The postal code associated with the address. For example: 94423.
vaCode :: Lens' VcardAddress (Maybe Text)

-- | The state or local equivalent portion of the address. For example: CA.
vaRegion :: Lens' VcardAddress (Maybe Text)

-- | The response message for the batch available spectrum query contains a
--   schedule of available spectrum for the device at multiple locations.
--   
--   <i>See:</i> <a>pawsGetSpectrumBatchResponse</a> smart constructor.
data PawsGetSpectrumBatchResponse

-- | Creates a value of <a>PawsGetSpectrumBatchResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pNeedsSpectrumReport</a></li>
--   <li><a>pKind</a></li>
--   <li><a>pGeoSpectrumSchedules</a></li>
--   <li><a>pMaxContiguousBwHz</a></li>
--   <li><a>pVersion</a></li>
--   <li><a>pRulesetInfo</a></li>
--   <li><a>pType</a></li>
--   <li><a>pDatabaseChange</a></li>
--   <li><a>pTimestamp</a></li>
--   <li><a>pDeviceDesc</a></li>
--   <li><a>pMaxTotalBwHz</a></li>
--   </ul>
pawsGetSpectrumBatchResponse :: PawsGetSpectrumBatchResponse

-- | 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.
pNeedsSpectrumReport :: Lens' PawsGetSpectrumBatchResponse (Maybe Bool)

-- | Identifies what kind of resource this is. Value: the fixed string
--   "spectrum#pawsGetSpectrumBatchResponse".
pKind :: Lens' PawsGetSpectrumBatchResponse Text

-- | 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.
pGeoSpectrumSchedules :: Lens' PawsGetSpectrumBatchResponse [GeoSpectrumSchedule]

-- | 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.
pMaxContiguousBwHz :: Lens' PawsGetSpectrumBatchResponse (Maybe Double)

-- | The PAWS version. Must be exactly 1.0. Required field.
pVersion :: Lens' PawsGetSpectrumBatchResponse (Maybe Text)

-- | 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.
pRulesetInfo :: Lens' PawsGetSpectrumBatchResponse (Maybe RulesetInfo)

-- | The message type (e.g., INIT_REQ, AVAIL_SPECTRUM_REQ, ...). Required
--   field.
pType :: Lens' PawsGetSpectrumBatchResponse (Maybe Text)

-- | 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.
pDatabaseChange :: Lens' PawsGetSpectrumBatchResponse (Maybe DBUpdateSpec)

-- | 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.
pTimestamp :: Lens' PawsGetSpectrumBatchResponse (Maybe Text)

-- | The database must return in its available spectrum response the device
--   descriptor information it received in the master device's available
--   spectrum batch request.
pDeviceDesc :: Lens' PawsGetSpectrumBatchResponse (Maybe DeviceDescriptor)

-- | 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.
pMaxTotalBwHz :: Lens' PawsGetSpectrumBatchResponse (Maybe Double)

-- | The device validity element describes whether a particular device is
--   valid to operate in the regulatory domain.
--   
--   <i>See:</i> <a>deviceValidity</a> smart constructor.
data DeviceValidity

-- | Creates a value of <a>DeviceValidity</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dvIsValid</a></li>
--   <li><a>dvReason</a></li>
--   <li><a>dvDeviceDesc</a></li>
--   </ul>
deviceValidity :: DeviceValidity

-- | The validity status: true if the device is valid for operation, false
--   otherwise. It will always be present.
dvIsValid :: Lens' DeviceValidity (Maybe Bool)

-- | 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.
dvReason :: Lens' DeviceValidity (Maybe Text)

-- | The descriptor of the device for which the validity check was
--   requested. It will always be present.
dvDeviceDesc :: Lens' DeviceValidity (Maybe DeviceDescriptor)

-- | A "point" with uncertainty is represented using the Ellipse shape.
--   
--   <i>See:</i> <a>geoLocationEllipse</a> smart constructor.
data GeoLocationEllipse

-- | Creates a value of <a>GeoLocationEllipse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gleSemiMajorAxis</a></li>
--   <li><a>gleCenter</a></li>
--   <li><a>gleOrientation</a></li>
--   <li><a>gleSemiMinorAxis</a></li>
--   </ul>
geoLocationEllipse :: GeoLocationEllipse

-- | 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.
gleSemiMajorAxis :: Lens' GeoLocationEllipse (Maybe Double)

-- | A required geo-spatial point representing the center of the ellipse.
gleCenter :: Lens' GeoLocationEllipse (Maybe GeoLocationPoint)

-- | 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.
gleOrientation :: Lens' GeoLocationEllipse (Maybe Double)

-- | 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.
gleSemiMinorAxis :: Lens' GeoLocationEllipse (Maybe Double)

-- | This contains parameters for the ruleset of a regulatory domain that
--   is communicated using the initialization and available-spectrum
--   processes.
--   
--   <i>See:</i> <a>rulesetInfo</a> smart constructor.
data RulesetInfo

-- | Creates a value of <a>RulesetInfo</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>riRulesetIds</a></li>
--   <li><a>riMaxPollingSecs</a></li>
--   <li><a>riMaxLocationChange</a></li>
--   <li><a>riAuthority</a></li>
--   </ul>
rulesetInfo :: RulesetInfo

-- | 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.
riRulesetIds :: Lens' RulesetInfo [Text]

-- | 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.
riMaxPollingSecs :: Lens' RulesetInfo (Maybe Int32)

-- | 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.
riMaxLocationChange :: Lens' RulesetInfo (Maybe Double)

-- | 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.
riAuthority :: Lens' RulesetInfo (Maybe Text)

-- | The registration request message contains the required registration
--   parameters.
--   
--   <i>See:</i> <a>pawsRegisterRequest</a> smart constructor.
data PawsRegisterRequest

-- | Creates a value of <a>PawsRegisterRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pawAntenna</a></li>
--   <li><a>pawLocation</a></li>
--   <li><a>pawDeviceOwner</a></li>
--   <li><a>pawVersion</a></li>
--   <li><a>pawType</a></li>
--   <li><a>pawDeviceDesc</a></li>
--   </ul>
pawsRegisterRequest :: PawsRegisterRequest

-- | Antenna characteristics, including its height and height type.
pawAntenna :: Lens' PawsRegisterRequest (Maybe AntennaCharacteristics)

-- | A device's geolocation is required.
pawLocation :: Lens' PawsRegisterRequest (Maybe GeoLocation)

-- | Device owner information is required.
pawDeviceOwner :: Lens' PawsRegisterRequest (Maybe DeviceOwner)

-- | The PAWS version. Must be exactly 1.0. Required field.
pawVersion :: Lens' PawsRegisterRequest (Maybe Text)

-- | The message type (e.g., INIT_REQ, AVAIL_SPECTRUM_REQ, ...). Required
--   field.
pawType :: Lens' PawsRegisterRequest (Maybe Text)

-- | A DeviceDescriptor is required.
pawDeviceDesc :: Lens' PawsRegisterRequest (Maybe DeviceDescriptor)

-- | An empty response to the notification.
--   
--   <i>See:</i> <a>pawsNotifySpectrumUseResponse</a> smart constructor.
data PawsNotifySpectrumUseResponse

-- | Creates a value of <a>PawsNotifySpectrumUseResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pnsurnKind</a></li>
--   <li><a>pnsurnVersion</a></li>
--   <li><a>pnsurnType</a></li>
--   </ul>
pawsNotifySpectrumUseResponse :: PawsNotifySpectrumUseResponse

-- | Identifies what kind of resource this is. Value: the fixed string
--   "spectrum#pawsNotifySpectrumUseResponse".
pnsurnKind :: Lens' PawsNotifySpectrumUseResponse Text

-- | The PAWS version. Must be exactly 1.0. Required field.
pnsurnVersion :: Lens' PawsNotifySpectrumUseResponse (Maybe Text)

-- | The message type (e.g., INIT_REQ, AVAIL_SPECTRUM_REQ, ...). Required
--   field.
pnsurnType :: Lens' PawsNotifySpectrumUseResponse (Maybe Text)

-- | This message contains the name and URI of a database.
--   
--   <i>See:</i> <a>databaseSpec</a> smart constructor.
data DatabaseSpec

-- | Creates a value of <a>DatabaseSpec</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dsURI</a></li>
--   <li><a>dsName</a></li>
--   </ul>
databaseSpec :: DatabaseSpec

-- | The corresponding URI of the database.
dsURI :: Lens' DatabaseSpec (Maybe Text)

-- | The display name for a database.
dsName :: Lens' DatabaseSpec (Maybe Text)

-- | Available spectrum can be logically characterized by a list of
--   frequency ranges and permissible power levels for each range.
--   
--   <i>See:</i> <a>spectrumMessage</a> smart constructor.
data SpectrumMessage

-- | Creates a value of <a>SpectrumMessage</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>smBandwidth</a></li>
--   <li><a>smFrequencyRanges</a></li>
--   </ul>
spectrumMessage :: SpectrumMessage

-- | 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.
smBandwidth :: Lens' SpectrumMessage (Maybe Double)

-- | 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.
smFrequencyRanges :: Lens' SpectrumMessage [FrequencyRange]

-- | This parameter is used to specify the geolocation of the device.
--   
--   <i>See:</i> <a>geoLocation</a> smart constructor.
data GeoLocation

-- | Creates a value of <a>GeoLocation</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>glConfidence</a></li>
--   <li><a>glPoint</a></li>
--   <li><a>glRegion</a></li>
--   </ul>
geoLocation :: GeoLocation

-- | 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.
glConfidence :: Lens' GeoLocation (Maybe Int32)

-- | 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.
glPoint :: Lens' GeoLocation (Maybe GeoLocationEllipse)

-- | If present, indicates that the geolocation represents a region.
--   Database support for regions is optional.
glRegion :: Lens' GeoLocation (Maybe GeoLocationPolygon)

-- | A specific range of frequencies together with the associated maximum
--   power level and channel identifier.
--   
--   <i>See:</i> <a>frequencyRange</a> smart constructor.
data FrequencyRange

-- | Creates a value of <a>FrequencyRange</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>frStopHz</a></li>
--   <li><a>frMaxPowerDBm</a></li>
--   <li><a>frChannelId</a></li>
--   <li><a>frStartHz</a></li>
--   </ul>
frequencyRange :: FrequencyRange

-- | The required exclusive end of the frequency range (in Hertz).
frStopHz :: Lens' FrequencyRange (Maybe Double)

-- | 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.
frMaxPowerDBm :: Lens' FrequencyRange (Maybe Double)

-- | 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.
frChannelId :: Lens' FrequencyRange (Maybe Text)

-- | The required inclusive start of the frequency range (in Hertz).
frStartHz :: Lens' FrequencyRange (Maybe Double)

-- | The response message for the available spectrum query which contains a
--   schedule of available spectrum for the device.
--   
--   <i>See:</i> <a>pawsGetSpectrumResponse</a> smart constructor.
data PawsGetSpectrumResponse

-- | Creates a value of <a>PawsGetSpectrumResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pgsrgNeedsSpectrumReport</a></li>
--   <li><a>pgsrgSpectrumSchedules</a></li>
--   <li><a>pgsrgKind</a></li>
--   <li><a>pgsrgMaxContiguousBwHz</a></li>
--   <li><a>pgsrgVersion</a></li>
--   <li><a>pgsrgRulesetInfo</a></li>
--   <li><a>pgsrgType</a></li>
--   <li><a>pgsrgDatabaseChange</a></li>
--   <li><a>pgsrgTimestamp</a></li>
--   <li><a>pgsrgDeviceDesc</a></li>
--   <li><a>pgsrgMaxTotalBwHz</a></li>
--   </ul>
pawsGetSpectrumResponse :: PawsGetSpectrumResponse

-- | 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.
pgsrgNeedsSpectrumReport :: Lens' PawsGetSpectrumResponse (Maybe Bool)

-- | 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.
pgsrgSpectrumSchedules :: Lens' PawsGetSpectrumResponse [SpectrumSchedule]

-- | Identifies what kind of resource this is. Value: the fixed string
--   "spectrum#pawsGetSpectrumResponse".
pgsrgKind :: Lens' PawsGetSpectrumResponse Text

-- | 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.
pgsrgMaxContiguousBwHz :: Lens' PawsGetSpectrumResponse (Maybe Double)

-- | The PAWS version. Must be exactly 1.0. Required field.
pgsrgVersion :: Lens' PawsGetSpectrumResponse (Maybe Text)

-- | 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.
pgsrgRulesetInfo :: Lens' PawsGetSpectrumResponse (Maybe RulesetInfo)

-- | The message type (e.g., INIT_REQ, AVAIL_SPECTRUM_REQ, ...). Required
--   field.
pgsrgType :: Lens' PawsGetSpectrumResponse (Maybe Text)

-- | 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.
pgsrgDatabaseChange :: Lens' PawsGetSpectrumResponse (Maybe DBUpdateSpec)

-- | 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.
pgsrgTimestamp :: Lens' PawsGetSpectrumResponse (Maybe Text)

-- | The database must return, in its available spectrum response, the
--   device descriptor information it received in the master device's
--   available spectrum request.
pgsrgDeviceDesc :: Lens' PawsGetSpectrumResponse (Maybe DeviceDescriptor)

-- | 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.
pgsrgMaxTotalBwHz :: Lens' PawsGetSpectrumResponse (Maybe Double)

-- | The device validation request message.
--   
--   <i>See:</i> <a>pawsVerifyDeviceRequest</a> smart constructor.
data PawsVerifyDeviceRequest

-- | Creates a value of <a>PawsVerifyDeviceRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pvdrvVersion</a></li>
--   <li><a>pvdrvDeviceDescs</a></li>
--   <li><a>pvdrvType</a></li>
--   </ul>
pawsVerifyDeviceRequest :: PawsVerifyDeviceRequest

-- | The PAWS version. Must be exactly 1.0. Required field.
pvdrvVersion :: Lens' PawsVerifyDeviceRequest (Maybe Text)

-- | A list of device descriptors, which specifies the slave devices to be
--   validated, is required.
pvdrvDeviceDescs :: Lens' PawsVerifyDeviceRequest [DeviceDescriptor]

-- | The message type (e.g., INIT_REQ, AVAIL_SPECTRUM_REQ, ...). Required
--   field.
pvdrvType :: Lens' PawsVerifyDeviceRequest (Maybe Text)

-- | 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.
--   
--   <i>See:</i> <a>deviceDescriptor</a> smart constructor.
data DeviceDescriptor

-- | Creates a value of <a>DeviceDescriptor</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ddEtsiEnDeviceEmissionsClass</a></li>
--   <li><a>ddRulesetIds</a></li>
--   <li><a>ddModelId</a></li>
--   <li><a>ddEtsiEnDeviceType</a></li>
--   <li><a>ddEtsiEnTechnologyId</a></li>
--   <li><a>ddFccId</a></li>
--   <li><a>ddManufacturerId</a></li>
--   <li><a>ddFccTvbdDeviceType</a></li>
--   <li><a>ddEtsiEnDeviceCategory</a></li>
--   <li><a>ddSerialNumber</a></li>
--   </ul>
deviceDescriptor :: DeviceDescriptor

-- | 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.
ddEtsiEnDeviceEmissionsClass :: Lens' DeviceDescriptor (Maybe Text)

-- | 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.
ddRulesetIds :: Lens' DeviceDescriptor [Text]

-- | The device's model ID may be required by the regulatory domain. The
--   string value must not exceed 64 characters in length.
ddModelId :: Lens' DeviceDescriptor (Maybe Text)

-- | 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.
ddEtsiEnDeviceType :: Lens' DeviceDescriptor (Maybe Text)

-- | 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.
ddEtsiEnTechnologyId :: Lens' DeviceDescriptor (Maybe Text)

-- | 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.
ddFccId :: Lens' DeviceDescriptor (Maybe Text)

-- | 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.
ddManufacturerId :: Lens' DeviceDescriptor (Maybe Text)

-- | Specifies the TV Band White Space device type, as defined by the FCC.
--   Valid values are FIXED, MODE_1, MODE_2.
ddFccTvbdDeviceType :: Lens' DeviceDescriptor (Maybe Text)

-- | 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.
ddEtsiEnDeviceCategory :: Lens' DeviceDescriptor (Maybe Text)

-- | The manufacturer's device serial number; required by the applicable
--   regulatory domain. The length of the value must not exceed 64
--   characters.
ddSerialNumber :: Lens' DeviceDescriptor (Maybe Text)

-- | The initialization request message allows the master device to
--   initiate exchange of capabilities with the database.
--   
--   <i>See:</i> <a>pawsInitRequest</a> smart constructor.
data PawsInitRequest

-- | Creates a value of <a>PawsInitRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>piriLocation</a></li>
--   <li><a>piriVersion</a></li>
--   <li><a>piriType</a></li>
--   <li><a>piriDeviceDesc</a></li>
--   </ul>
pawsInitRequest :: PawsInitRequest

-- | A device's geolocation is required.
piriLocation :: Lens' PawsInitRequest (Maybe GeoLocation)

-- | The PAWS version. Must be exactly 1.0. Required field.
piriVersion :: Lens' PawsInitRequest (Maybe Text)

-- | The message type (e.g., INIT_REQ, AVAIL_SPECTRUM_REQ, ...). Required
--   field.
piriType :: Lens' PawsInitRequest (Maybe Text)

-- | 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.
piriDeviceDesc :: Lens' PawsInitRequest (Maybe DeviceDescriptor)

-- | 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.
--   
--   <i>See:</i> <a>deviceCapabilities</a> smart constructor.
data DeviceCapabilities

-- | Creates a value of <a>DeviceCapabilities</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dcFrequencyRanges</a></li>
--   </ul>
deviceCapabilities :: DeviceCapabilities

-- | 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.
dcFrequencyRanges :: Lens' DeviceCapabilities [FrequencyRange]
