<?xml version="1.0" encoding="utf-8"?>
<!--
 Copyright 2015 Bluetooth SIG, Inc. All rights reserved.
-->
<Service xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://schemas.bluetooth.org/Documents/service.xsd" last-modified="2015-05-18" name="HTTP Proxy" type="org.bluetooth.service.http_proxy" uuid="1823" approved="Yes">
  <InformativeText>
    <Abstract>
      This service allows a Client device, typically a sensor, to communicate with a Web Server through a gateway device. The gateway device implements the HTTP Proxy Service and therefore provides the services available through the Internet to the Client sensor device.
    </Abstract>
    <Summary>
      The HTTP Proxy Service (HPS) allows a device to expose HTTP Web Services to a client. This enables an HPS client device to program a set of characteristics that configures a Hyper Text Transfer Protocol (HTTP) request, initiate this, request, and then read the response.
    </Summary>
  </InformativeText>
  <Dependencies>
    <Dependency>
      This service is not dependent upon any other services.
    </Dependency>
  </Dependencies>
  <GATTRequirements>
    <Requirement subProcedure="Read Long Characteristic Values">Mandatory</Requirement>
    <Requirement subProcedure="Write Charactristic Values">Mandatory</Requirement>
    <Requirement subProcedure="Write Long Characteristic Values">Mandatory</Requirement>
    <Requirement subProcedure="Notifications">Mandatory</Requirement>
    <Requirement subProcedure="Read Characteristic Descriptors">Mandatory</Requirement>
    <Requirement subProcedure="Write Characteristic Descriptors">Mandatory</Requirement>
  </GATTRequirements>
  <Transports>
    <Classic>true</Classic>
    <LowEnergy>true</LowEnergy>
    <HighSpeed>true</HighSpeed>
  </Transports>
  <ErrorCodes>
    <ErrorCode name="Invalid Request" code="0x81" Description="A HTTP Control Point request cannot be serviced because content of the URI, the HTTP Headers, or the HTTP Entity Body Characteristic is not correctly, or if the request was made without configuring HTTP Status Code characteristics for notification"/>
    <ErrorCode name="Network Not Available" code="0x82" Description="Network Connection not available"/>
  </ErrorCodes>
  <Characteristics>
    <Characteristic type="org.bluetooth.characteristic.uri" name="URI">
      <Requirement>Mandatory</Requirement>
      <Properties>
        <Read>Excluded</Read>
        <Write>Mandatory</Write>
        <WriteWithoutResponse>Excluded</WriteWithoutResponse>
        <SignedWrite>Excluded</SignedWrite>
        <ReliableWrite>Excluded</ReliableWrite>
        <Notify>Excluded</Notify>
        <Indicate>Excluded</Indicate>
        <WritableAuxiliaries>Excluded</WritableAuxiliaries>
        <Broadcast>Excluded</Broadcast>
      </Properties>
    </Characteristic>
    <Characteristic type="org.bluetooth.characteristic.http_headers" name="HTTP Headers">
      <Requirement>Mandatory</Requirement>
      <Properties>
        <Read>Mandatory</Read>
        <Write>Mandatory</Write>
        <WriteWithoutResponse>Excluded</WriteWithoutResponse>
        <SignedWrite>Excluded</SignedWrite>
        <ReliableWrite>Excluded</ReliableWrite>
        <Notify>Excluded</Notify>
        <Indicate>Excluded</Indicate>
        <WritableAuxiliaries>Excluded</WritableAuxiliaries>
        <Broadcast>Excluded</Broadcast>
      </Properties>
    </Characteristic>
    <Characteristic type="org.bluetooth.characteristic.http_entity_body" name="HTTP Entity Body">
      <Requirement>Mandatory</Requirement>
      <Properties>
        <Read>Mandatory</Read>
        <Write>Mandatory</Write>
        <WriteWithoutResponse>Excluded</WriteWithoutResponse>
        <SignedWrite>Excluded</SignedWrite>
        <ReliableWrite>Excluded</ReliableWrite>
        <Notify>Excluded</Notify>
        <Indicate>Excluded</Indicate>
        <WritableAuxiliaries>Excluded</WritableAuxiliaries>
        <Broadcast>Excluded</Broadcast>
      </Properties>
    </Characteristic>
    <Characteristic type="org.bluetooth.characteristic.http_control_point" name="HTTP Control Point">
      <Requirement>Mandatory</Requirement>
      <Properties>
        <Read>Excluded</Read>
        <Write>Mandatory</Write>
        <WriteWithoutResponse>Excluded</WriteWithoutResponse>
        <SignedWrite>Excluded</SignedWrite>
        <ReliableWrite>Excluded</ReliableWrite>
        <Notify>Excluded</Notify>
        <Indicate>Excluded</Indicate>
        <WritableAuxiliaries>Excluded</WritableAuxiliaries>
        <Broadcast>Excluded</Broadcast>
      </Properties>
    </Characteristic>
    <Characteristic type="org.bluetooth.characteristic.http_status_code" name="HTTP Status Code">
      <Requirement>Mandatory</Requirement>
      <Properties>
        <Read>Excluded</Read>
        <Write>Excluded</Write>
        <WriteWithoutResponse>Excluded</WriteWithoutResponse>
        <SignedWrite>Excluded</SignedWrite>
        <ReliableWrite>Excluded</ReliableWrite>
        <Notify>Mandatory</Notify>
        <Indicate>Excluded</Indicate>
        <WritableAuxiliaries>Excluded</WritableAuxiliaries>
        <Broadcast>Excluded</Broadcast>
      </Properties>
    </Characteristic>
    <Characteristic type="org.bluetooth.characteristic.https_security" name="HTTPS Security">
      <Requirement>Mandatory</Requirement>
      <Properties>
        <Read>Mandatory</Read>
        <Write>Excluded</Write>
        <WriteWithoutResponse>Excluded</WriteWithoutResponse>
        <SignedWrite>Excluded</SignedWrite>
        <ReliableWrite>Excluded</ReliableWrite>
        <Notify>Excluded</Notify>
        <Indicate>Excluded</Indicate>
        <WritableAuxiliaries>Excluded</WritableAuxiliaries>
        <Broadcast>Excluded</Broadcast>
      </Properties>
    </Characteristic>
  </Characteristics>
</Service>