Протокол работы с сервером приложения Интегра-Планета-4D — различия между версиями

Материал из Integra-S Wiki
Перейти к: навигация, поиск
(Порядок работы с сервером приложении)
 
(не показаны 23 промежуточные версии этого же участника)
Строка 7: Строка 7:
 
# Описание сервиса обмена данными и структуру передаваемых сообщений.
 
# Описание сервиса обмена данными и структуру передаваемых сообщений.
  
Взаимодействие между клиентом и сервером происходит по протоколу TCP/IP на транспортном уровне и по протоколу SOAP на уровне приложения, с использованием протокола HTTP для SOAP диалога. Отправитель SOAP-сообщения инициирует соединение на указанный владельцем противоположной стороны сервиса адрес, порт и URL, проходит авторизацию на центре авторизации, получая тикет, передает SOAP-сообщение и получает от противоположной стороны соответствующий SOAP-ответ с подтверждением получения или описанием ошибки (при сбое получения).
+
Взаимодействие между клиентом и сервером происходит по протоколу TCP/IP на транспортном уровне, и по протоколу SOAP на уровне приложения, с использованием протокола HTTP для SOAP диалога. Отправитель SOAP-сообщения инициирует соединение на указанный владельцем противоположной стороны сервиса адрес, порт и URL, проходит авторизацию на центре авторизации, получая тикет, передает SOAP-сообщение, и получает от противоположной стороны соответствующий SOAP-ответ, с подтверждением получения или описанием ошибки (при сбое получения).
  
 
Для защиты канала передачи информации должны использоваться аппаратные или программные средства, предоставляемые сетевой инфраструктурой или применяемыми операционными системами.
 
Для защиты канала передачи информации должны использоваться аппаратные или программные средства, предоставляемые сетевой инфраструктурой или применяемыми операционными системами.
Строка 78: Строка 78:
  
 
Результат:
 
Результат:
 
 
  <?xml version="1.0" encoding="utf-8"?>
 
  <?xml version="1.0" encoding="utf-8"?>
  <ArrayOfKeyValueOfGuidServer xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://integra-s.com/firefly/soap">
+
  <Graph xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://integra-s.com/firefly/soap">
  <KeyValueOfGuidServer>
+
  <ServerId>7c8cb3e5-130a-4438-8c9c-2ce795c82939 </ServerId>
    <Key>7c8cb3e5-130a-4438-8c9c-2ce795c82939</Key>
+
  <items>
::<Value>
+
    <KeyValueOfStringItem>
:::<name>Local server</name>
+
      <Key>c2fd1a94-3b54-4573-893f-6d4fefa2811c </Key>
      <typedef_version>0.0.0.16</typedef_version>
+
      <Value>
      <is_local>true</is_local>
+
        <types>
    </Value>
+
          <string>Item </string>
  </KeyValueOfGuidServer>
+
          <string>IncidentEvent </string>
  <KeyValueOfGuidServer>
+
          <string>BaseObject </string>
    <Key>76606d62-a514-11e4-8c37-a7064178f246</Key>
+
          <string>SpatialObject </string>
    <Value>
+
        </types>
      <name>Office server</name>
+
        <params>
      <typedef_version>0.0.0.16</typedef_version>
+
          <KeyValueOfStringParam>
      <is_local>false</is_local>
+
            <Key>comment </Key>
    </Value>
+
            <Value>
  </KeyValueOfGuidServer>
+
              <value xsi:type="xsd:string">1231313 </value>
</ArrayOfKeyValueOfGuidServer>
+
              <datetime>1493377308 </datetime>
 
+
              <version>17813 </version>
Таблица 2 Описание ключевых полей запроса (getServers)
+
            </Value>
{|border="1"
+
          </KeyValueOfStringParam>
|'''Поле'''
+
          <KeyValueOfStringParam>
|''''''Состав данных (значение)'''
+
            <Key>category </Key>
|Формат'''
+
            <Value>
|-
+
              <value xsi:type="xsd:string">falling </value>
|Key
+
              <datetime>1493377308 </datetime>
|Идентификатор объекта (сервера)
+
              <version>17812 </version>
|Текст (UUID)
+
            </Value>
|-
+
          </KeyValueOfStringParam>
|name
+
          <KeyValueOfStringParam>
|Название (имя) объекта
+
            <Key>geo_height </Key>
|Текст
+
            <Value>
|-
+
              <datetime>1493377256 </datetime>
|typedef_version
+
              <version>9464 </version>
|Версия используемых типов
+
            </Value>
|Текст
+
          </KeyValueOfStringParam>
|-
+
          <KeyValueOfStringParam>
|is_local
+
            <Key>geo_position </Key>
|Признак ретрансляции сервера
+
            <Value>
|Логический
+
              <datetime>1493377256 </datetime>
|}
+
              <version>9467 </version>
 +
            </Value>
 +
          </KeyValueOfStringParam>
 +
          <KeyValueOfStringParam>
 +
            <Key>altitude </Key>
 +
            <Value>
 +
              <value xsi:type="xsd:long">-65535 </value>
 +
              <datetime>1493377308 </datetime>
 +
              <version>17811 </version>
 +
            </Value>
 +
          </KeyValueOfStringParam>
 +
          <KeyValueOfStringParam>
 +
            <Key>stateargs </Key>
 +
            <Value>
 +
              <datetime>1493377256 </datetime>
 +
              <version>9481 </version>
 +
            </Value>
 +
          </KeyValueOfStringParam>
 +
          <KeyValueOfStringParam>
 +
            <Key>name </Key>
 +
            <Value>
 +
              <datetime>1493377256 </datetime>
 +
              <version>9473 </version>
 +
            </Value>
 +
          </KeyValueOfStringParam>
 +
          <KeyValueOfStringParam>
 +
            <Key>state </Key>
 +
            <Value>
 +
              <datetime>1493377256 </datetime>
 +
              <version>9479 </version>
 +
            </Value>
 +
          </KeyValueOfStringParam>
 +
          <KeyValueOfStringParam>
 +
            <Key>position </Key>
 +
            <Value>
 +
              <value xsi:type="xsd:string">POINT(50.227 53.2371) </value>
 +
              <datetime>1493377308 </datetime>
 +
              <version>17819 </version>
 +
            </Value>
 +
          </KeyValueOfStringParam>
 +
          <KeyValueOfStringParam>
 +
            <Key>organization </Key>
 +
            <Value>
 +
              <datetime>1493377256 </datetime>
 +
              <version>9475 </version>
 +
            </Value>
 +
          </KeyValueOfStringParam>
 +
          <KeyValueOfStringParam>
 +
            <Key>additional_info </Key>
 +
            <Value>
 +
              <datetime>1493377256 </datetime>
 +
              <version>9454 </version>
 +
            </Value>
 +
          </KeyValueOfStringParam>
 +
          <KeyValueOfStringParam>
 +
            <Key>icon </Key>
 +
            <Value>
 +
              <value xsi:type="xsd:string">falling.png </value>
 +
              <datetime>1493377308 </datetime>
 +
              <version>17816 </version>
 +
            </Value>
 +
          </KeyValueOfStringParam>
 +
        </params>
 +
        <pins>
 +
          <KeyValueOfStringPin>
 +
            <Key>gpsContent </Key>
 +
            <Value>
 +
              <types>
 +
                <string>Pin </string>
 +
                <string>GpsProviderIn </string>
 +
              </types>
 +
              <params />
 +
            </Value>
 +
          </KeyValueOfStringPin>
 +
          <KeyValueOfStringPin>
 +
            <Key>person_input </Key>
 +
            <Value>
 +
              <types>
 +
                <string>Pin </string>
 +
                <string>Person_input </string>
 +
              </types>
 +
              <params />
 +
            </Value>
 +
          </KeyValueOfStringPin>
 +
          <KeyValueOfStringPin>
 +
            <Key>positionContent </Key>
 +
            <Value>
 +
              <types>
 +
                <string>Pin </string>
 +
                <string>PositionContent </string>
 +
              </types>
 +
              <params>
 +
                <KeyValueOfStringParam>
 +
                  <Key>location </Key>
 +
                  <Value>
 +
                    <datetime>1493377256 </datetime>
 +
                    <version>9499 </version>
 +
                  </Value>
 +
                </KeyValueOfStringParam>
 +
              </params>
 +
            </Value>
 +
          </KeyValueOfStringPin>
 +
          <KeyValueOfStringPin>
 +
            <Key>provoker_input </Key>
 +
            <Value>
 +
              <types>
 +
                <string>Pin </string>
 +
                <string>Provoker_input </string>
 +
              </types>
 +
              <params />
 +
            </Value>
 +
          </KeyValueOfStringPin>
 +
        </pins>
 +
      </Value>
 +
    </KeyValueOfStringItem>
 +
  </items>
 +
  </Graph>
  
4. Получение типов данных система Интегр-Планета-4Д
 
  
Для получения списка объектов необходимо вызвать метод  getTypeDef
+
6. Создание, изменение, удаление данных
 
 
Параметры метода:
 
 
 
Version – версия с которой поставлять типы – берется из описания сервера(объекта)
 
 
 
Описание типов системы предоставляется отдельным документом.
 
  
Пример описания типа системы Интегра-Планета-4Д
 
 
Таблица 3  Описание полей, типа Ip_Видео_Камера(IpVideoCamera)
 
{|border="1"
 
|Код поля
 
|Описание поля
 
|-
 
|name
 
|Название устройства (имя) 
 
|-
 
|id
 
|Идентификатор устройства
 
|-
 
|geo_position
 
|Расположение(координаты)
 
|-
 
|geo_height 
 
|Высота установки
 
|-
 
|organization
 
|Обслуживающая организация
 
|-
 
|additional_info
 
|Дополнительная информация
 
|-
 
|max_ping_time_ms 
 
|Контролируемое время отзыва(мс)
 
|-
 
|ping_time
 
|Эхо-запрос,мс
 
|-
 
|ip
 
|IP адрес
 
|-
 
|provider
 
|Провайдер
 
|-
 
|commisioning
 
|Дата ввода в эксплуатацию
 
|-
 
|lastMaintence
 
|Дата последнего ТО/Номер акта
 
|-
 
|plannedMaintence
 
|Запланированная дата ТО
 
|-
 
|maintencePeriod
 
|Период ТО
 
|-
 
|state 
 
|Состояние устройства
 
|-
 
|stateargs 
 
|Текущие состояние
 
|-
 
|url
 
|url
 
|-
 
|command
 
|Команды
 
|-
 
|fov
 
|Угол обзора камеры
 
|-
 
|aspectratio
 
|Соотношение сторон
 
|-
 
|archieve_length
 
|Глубина архива
 
|}
 
 
 
5. Получение датчиков и их параметров
 
 
Для получения списка объектов необходимо вызвать метод.
 
Для получения списка объектов необходимо вызвать метод.
Параметры метода:
 
serverId – идентификатор сервера
 
Результат:
 
<?xml version="1.0" encoding="utf-8"?>
 
<Graph xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://integra-s.com/firefly/soap">
 
  <ServerId>7c8cb3e5-130a-4438-8c9c-2ce795c82939</ServerId>
 
  <items>
 
    <KeyValueOfStringItem>
 
      <Key>c2fd1a94-3b54-4573-893f-6d4fefa2811c</Key>
 
      <Value>
 
        <types>
 
          <string>Item</string>
 
          <string>IncidentEvent</string>
 
          <string>BaseObject</string>
 
          <string>SpatialObject</string>
 
        </types>
 
        <params>
 
          <KeyValueOfStringParam>
 
            <Key>comment</Key>
 
            <Value>
 
              <value xsi:type="xsd:string">1231313</value>
 
              <datetime>1493377308</datetime>
 
              <version>17813</version>
 
            </Value>
 
          </KeyValueOfStringParam>
 
          <KeyValueOfStringParam>
 
            <Key>category</Key>
 
            <Value>
 
              <value xsi:type="xsd:string">falling</value>
 
              <datetime>1493377308</datetime>
 
              <version>17812</version>
 
            </Value>
 
          </KeyValueOfStringParam>
 
          <KeyValueOfStringParam>
 
            <Key>geo_height</Key>
 
            <Value>
 
              <datetime>1493377256</datetime>
 
              <version>9464</version>
 
            </Value>
 
          </KeyValueOfStringParam>
 
          <KeyValueOfStringParam>
 
            <Key>geo_position</Key>
 
            <Value>
 
              <datetime>1493377256</datetime>
 
              <version>9467</version>
 
            </Value>
 
          </KeyValueOfStringParam>
 
          <KeyValueOfStringParam>
 
            <Key>altitude</Key>
 
            <Value>
 
              <value xsi:type="xsd:long">-65535</value>
 
              <datetime>1493377308</datetime>
 
              <version>17811</version>
 
            </Value>
 
          </KeyValueOfStringParam>
 
          <KeyValueOfStringParam>
 
            <Key>stateargs</Key>
 
            <Value>
 
              <datetime>1493377256</datetime>
 
              <version>9481</version>
 
            </Value>
 
          </KeyValueOfStringParam>
 
          <KeyValueOfStringParam>
 
            <Key>name</Key>
 
            <Value>
 
              <datetime>1493377256</datetime>
 
              <version>9473</version>
 
            </Value>
 
          </KeyValueOfStringParam>
 
          <KeyValueOfStringParam>
 
            <Key>state</Key>
 
            <Value>
 
              <datetime>1493377256</datetime>
 
              <version>9479</version>
 
            </Value>
 
          </KeyValueOfStringParam>
 
          <KeyValueOfStringParam>
 
            <Key>position</Key>
 
            <Value>
 
              <value xsi:type="xsd:string">POINT(50.227 53.2371)</value>
 
              <datetime>1493377308</datetime>
 
              <version>17819</version>
 
            </Value>
 
          </KeyValueOfStringParam>
 
          <KeyValueOfStringParam>
 
            <Key>organization</Key>
 
            <Value>
 
              <datetime>1493377256</datetime>
 
              <version>9475</version>
 
            </Value>
 
          </KeyValueOfStringParam>
 
          <KeyValueOfStringParam>
 
            <Key>additional_info</Key>
 
            <Value>
 
              <datetime>1493377256</datetime>
 
              <version>9454</version>
 
            </Value>
 
          </KeyValueOfStringParam>
 
          <KeyValueOfStringParam>
 
            <Key>icon</Key>
 
            <Value>
 
              <value xsi:type="xsd:string">falling.png</value>
 
              <datetime>1493377308</datetime>
 
              <version>17816</version>
 
            </Value>
 
          </KeyValueOfStringParam>
 
        </params>
 
        <pins>
 
          <KeyValueOfStringPin>
 
            <Key>gpsContent</Key>
 
            <Value>
 
              <types>
 
                <string>Pin</string>
 
                <string>GpsProviderIn</string>
 
              </types>
 
              <params />
 
            </Value>
 
          </KeyValueOfStringPin>
 
          <KeyValueOfStringPin>
 
            <Key>person_input</Key>
 
            <Value>
 
              <types>
 
                <string>Pin</string>
 
                <string>Person_input</string>
 
              </types>
 
              <params />
 
            </Value>
 
          </KeyValueOfStringPin>
 
          <KeyValueOfStringPin>
 
            <Key>positionContent</Key>
 
            <Value>
 
              <types>
 
                <string>Pin</string>
 
                <string>PositionContent</string>
 
              </types>
 
              <params>
 
                <KeyValueOfStringParam>
 
                  <Key>location</Key>
 
                  <Value>
 
                    <datetime>1493377256</datetime>
 
                    <version>9499</version>
 
                  </Value>
 
                </KeyValueOfStringParam>
 
              </params>
 
            </Value>
 
          </KeyValueOfStringPin>
 
          <KeyValueOfStringPin>
 
            <Key>provoker_input</Key>
 
            <Value>
 
              <types>
 
                <string>Pin</string>
 
                <string>Provoker_input</string>
 
              </types>
 
              <params />
 
            </Value>
 
          </KeyValueOfStringPin>
 
        </pins>
 
      </Value>
 
    </KeyValueOfStringItem>
 
 </items>
 
</Graph>
 
  
6. Создание, изменение, удаление данных
 
Для получения списка объектов необходимо вызвать метод.
 
 
Формат параметров и результатов запроса приведены в отдельном документе
 
Формат параметров и результатов запроса приведены в отдельном документе
  
 
7. Получение изменений данных  
 
7. Получение изменений данных  
 +
 
Для получения списка объектов необходимо вызвать метод.
 
Для получения списка объектов необходимо вызвать метод.
 +
 
Параметры метода:
 
Параметры метода:
 +
 
serverId – идентификатор сервера
 
serverId – идентификатор сервера
 +
 
version – версия с которой необходимо получать изменения
 
version – версия с которой необходимо получать изменения
  
 
==Приложение 1==
 
==Приложение 1==
Описание сервиса обмена данными
+
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
+
<wsdl:definitions xmlns:s="http://www.w3.org/2001/XMLSchema"
<wsdl:definitions xmlns:s="http://www.w3.org/2001/XMLSchema"
+
      xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
      xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
+
      xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
      xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
+
      xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
      xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
+
      xmlns:tns="http://integra-s.com/firefly/soap" xmlns:s1="http://microsoft.com/wsdl/types/"
      xmlns:tns="http://integra-s.com/firefly/soap" xmlns:s1="http://microsoft.com/wsdl/types/"
+
      xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
      xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+
      xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
      xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
+
      xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
      xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
+
      targetNamespace="http://integra-s.com/firefly/soap"
      targetNamespace="http://integra-s.com/firefly/soap"
+
      xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
      xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+
  <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Fire Fly Soap Web
  <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Fire Fly Soap Web
+
        Service </wsdl:documentation>
        Service</wsdl:documentation>
+
  <wsdl:types>
  <wsdl:types>
+
 
    <s:schema elementFormDefault="qualified"
+
    <s:schema elementFormDefault="qualified"
          targetNamespace="http://integra-s.com/firefly/soap">
+
          targetNamespace="http://integra-s.com/firefly/soap">
      <s:import namespace="http://microsoft.com/wsdl/types/"/>
+
      <s:import namespace="http://microsoft.com/wsdl/types/"/>
      <s:import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
+
      <s:import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
      <s:import namespace="http://schemas.xmlsoap.org/wsdl/"/>
+
      <s:import namespace="http://schemas.xmlsoap.org/wsdl/"/>
      <s:element name="getServers">
+
      <s:element name="getServers">
        <s:complexType/>
+
        <s:complexType/>
      </s:element>
+
      </s:element>
      <s:element name="getServersResponse">
+
      <s:element name="getServersResponse">
        <s:complexType>
+
        <s:complexType>
          <s:sequence>
+
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="getServersResult"
+
            <s:element minOccurs="0" maxOccurs="1" name="getServersResult"
                  type="tns:ArrayOfKeyValueOfGuidServer"/>
+
                  type="tns:ArrayOfKeyValueOfGuidServer"/>
          </s:sequence>
+
          </s:sequence>
        </s:complexType>
+
        </s:complexType>
      </s:element>
+
      </s:element>
      <s:complexType name="ArrayOfKeyValueOfGuidServer">
+
      <s:complexType name="ArrayOfKeyValueOfGuidServer">
        <s:sequence>
+
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="unbounded" name="KeyValueOfGuidServer"
+
          <s:element minOccurs="0" maxOccurs="unbounded" name="KeyValueOfGuidServer"
                nillable="true" type="tns:KeyValueOfGuidServer"/>
+
                nillable="true" type="tns:KeyValueOfGuidServer"/>
        </s:sequence>
+
        </s:sequence>
      </s:complexType>
+
      </s:complexType>
      <s:complexType name="KeyValueOfGuidServer">
+
      <s:complexType name="KeyValueOfGuidServer">
        <s:sequence>
+
        <s:sequence>
          <s:element minOccurs="1" maxOccurs="1" name="Key" type="s1:guid"/>
+
          <s:element minOccurs="1" maxOccurs="1" name="Key" type="s1:guid"/>
          <s:element minOccurs="0" maxOccurs="1" name="Value" type="tns:Server"/>
+
          <s:element minOccurs="0" maxOccurs="1" name="Value" type="tns:Server"/>
        </s:sequence>
+
        </s:sequence>
      </s:complexType>
+
      </s:complexType>
      <s:complexType name="Server">
+
      <s:complexType name="Server">
        <s:sequence>
+
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="name" type="s:string"/>
+
          <s:element minOccurs="0" maxOccurs="1" name="name" type="s:string"/>
          <s:element minOccurs="0" maxOccurs="1" name="typedef_version" type="s:string"/>
+
          <s:element minOccurs="0" maxOccurs="1" name="typedef_version" type="s:string"/>
          <s:element minOccurs="1" maxOccurs="1" name="is_local" type="s:boolean"/>
+
          <s:element minOccurs="1" maxOccurs="1" name="is_local" type="s:boolean"/>
        </s:sequence>
+
        </s:sequence>
      </s:complexType>
+
      </s:complexType>
      <s:element name="CredentialsHeader" type="tns:CredentialsHeader"/>
+
      <s:element name="CredentialsHeader" type="tns:CredentialsHeader"/>
      <s:complexType name="CredentialsHeader">
+
      <s:complexType name="CredentialsHeader">
        <s:sequence>
+
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="username" type="s:string"/>
+
          <s:element minOccurs="0" maxOccurs="1" name="username" type="s:string"/>
          <s:element minOccurs="0" maxOccurs="1" name="token" type="s:string"/>
+
          <s:element minOccurs="0" maxOccurs="1" name="token" type="s:string"/>
        </s:sequence>
+
        </s:sequence>
        <s:anyAttribute/>
+
        <s:anyAttribute/>
      </s:complexType>
+
      </s:complexType>
      <s:element name="getTypeDef">
+
      <s:element name="getTypeDef">
        <s:complexType>
+
        <s:complexType>
          <s:sequence>
+
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="version" type="s:string"/>
+
            <s:element minOccurs="0" maxOccurs="1" name="version" type="s:string"/>
          </s:sequence>
+
          </s:sequence>
        </s:complexType>
+
        </s:complexType>
      </s:element>
+
      </s:element>
      <s:element name="getTypeDefResponse">
+
      <s:element name="getTypeDefResponse">
        <s:complexType>
 
          <s:
 

Текущая версия на 17:03, 19 октября 2017

Анотация

Настоящий документ описывает порядок взаимодействия и формат информационно-технического обмена с системой Интегра-Планета-4Д.

Документ включает:

  1. Описание протокола API взаимодействия;
  2. Описание сервиса обмена данными и структуру передаваемых сообщений.

Взаимодействие между клиентом и сервером происходит по протоколу TCP/IP на транспортном уровне, и по протоколу SOAP на уровне приложения, с использованием протокола HTTP для SOAP диалога. Отправитель SOAP-сообщения инициирует соединение на указанный владельцем противоположной стороны сервиса адрес, порт и URL, проходит авторизацию на центре авторизации, получая тикет, передает SOAP-сообщение, и получает от противоположной стороны соответствующий SOAP-ответ, с подтверждением получения или описанием ошибки (при сбое получения).

Для защиты канала передачи информации должны использоваться аппаратные или программные средства, предоставляемые сетевой инфраструктурой или применяемыми операционными системами.

WSDL

WSDL (Web Services Description Language) — это язык описания веб-сервисов, основанный на XML. На нем описываются методы, входные и результирующие структуры данных, типы данных, сетевые адреса для обращения к сервису и другое.

Описание API сервера приложения Интегра-Планета-4Д на WSDL описано в приложении 1.

Запросы в формате SOAP

Данные в формате SOAP передаются методом HTTP POST. Запросы отправляют на адрес API 

Таблица 1 Описание методов

Название метода Описание метода Обязательный
getTypeDef Запрос на получение типов системы Интегра-Планета-4Д Да
getServers Запрос на получение списка объектов Да
getGraph Запрос на получение списка элементов объекта и параметров элементов Нет
put Запрос на создание, изменение, удаление данный на конкретном объекте Нет
getRuntimeChanges Запрос на получение изменений Нет

Порядок работы с сервером приложении

1. Авторизация и получение тикета на сервере авторизации

Для подключения к сервисам Интегра-Планета-4Д необходимо авторизоваться на сервере авторизации и получить тикет. Данный тикет используется для дальнейшей работы с сервером приложения.

Формат запроса:

https://<ip_адрес>:<порт>/getticket?login=<логин>&password=<пароль>&alias=TestAuth

Результатом ответа будет тикет в формате UUID, либо ошибка.

2. Выход из приложения

Для выхода из приложения и закрытия сессии необходимо выполнить выход из системы

Формат запроса:

https:// <ip_адрес>:<порт>/logout?ticket_id=<тикет>

3. Получение списка объектов

Для получения списка объектов необходимо вызвать метод getServers

Параметры метода:

Нет входных параметров

Результат:

<?xml version="1.0" encoding="utf-8"?>
<Graph xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://integra-s.com/firefly/soap">
  <ServerId>7c8cb3e5-130a-4438-8c9c-2ce795c82939 </ServerId>
  <items>
    <KeyValueOfStringItem>
      <Key>c2fd1a94-3b54-4573-893f-6d4fefa2811c </Key>
      <Value>
        <types>
          <string>Item </string>
          <string>IncidentEvent </string>
          <string>BaseObject </string>
          <string>SpatialObject </string>
        </types>
        <params>
          <KeyValueOfStringParam>
            <Key>comment </Key>
            <Value>
              <value xsi:type="xsd:string">1231313 </value>
              <datetime>1493377308 </datetime>
              <version>17813 </version>
            </Value>
          </KeyValueOfStringParam>
          <KeyValueOfStringParam>
            <Key>category </Key>
            <Value>
              <value xsi:type="xsd:string">falling </value>
              <datetime>1493377308 </datetime>
              <version>17812 </version>
            </Value>
          </KeyValueOfStringParam>
          <KeyValueOfStringParam>
            <Key>geo_height </Key>
            <Value>
              <datetime>1493377256 </datetime>
              <version>9464 </version>
            </Value>
          </KeyValueOfStringParam>
          <KeyValueOfStringParam>
            <Key>geo_position </Key>
            <Value>
              <datetime>1493377256 </datetime>
              <version>9467 </version>
            </Value>
          </KeyValueOfStringParam>
          <KeyValueOfStringParam>
            <Key>altitude </Key>
            <Value>
              <value xsi:type="xsd:long">-65535 </value>
              <datetime>1493377308 </datetime>
              <version>17811 </version>
            </Value>
          </KeyValueOfStringParam>
          <KeyValueOfStringParam>
            <Key>stateargs </Key>
            <Value>
              <datetime>1493377256 </datetime>
              <version>9481 </version>
            </Value>
          </KeyValueOfStringParam>
          <KeyValueOfStringParam>
            <Key>name </Key>
            <Value>
              <datetime>1493377256 </datetime>
              <version>9473 </version>
            </Value>
          </KeyValueOfStringParam>
          <KeyValueOfStringParam>
            <Key>state </Key>
            <Value>
              <datetime>1493377256 </datetime>
              <version>9479 </version>
            </Value>
          </KeyValueOfStringParam>
          <KeyValueOfStringParam>
            <Key>position </Key>
            <Value>
              <value xsi:type="xsd:string">POINT(50.227 53.2371) </value>
              <datetime>1493377308 </datetime>
              <version>17819 </version>
            </Value>
          </KeyValueOfStringParam>
          <KeyValueOfStringParam>
            <Key>organization </Key>
            <Value>
              <datetime>1493377256 </datetime>
              <version>9475 </version>
            </Value>
          </KeyValueOfStringParam>
          <KeyValueOfStringParam>
            <Key>additional_info </Key>
            <Value>
              <datetime>1493377256 </datetime>
              <version>9454 </version>
            </Value>
          </KeyValueOfStringParam>
          <KeyValueOfStringParam>
            <Key>icon </Key>
            <Value>
              <value xsi:type="xsd:string">falling.png </value>
              <datetime>1493377308 </datetime>
              <version>17816 </version>
            </Value>
          </KeyValueOfStringParam>
        </params>
        <pins>
          <KeyValueOfStringPin>
            <Key>gpsContent </Key>
            <Value>
              <types>
                <string>Pin </string>
                <string>GpsProviderIn </string>
              </types>
              <params />
            </Value>
          </KeyValueOfStringPin>
          <KeyValueOfStringPin>
            <Key>person_input </Key>
            <Value>
              <types>
                <string>Pin </string>
                <string>Person_input </string>
              </types>
              <params />
            </Value>
          </KeyValueOfStringPin>
          <KeyValueOfStringPin>
            <Key>positionContent </Key>
            <Value>
              <types>
                <string>Pin </string>
                <string>PositionContent </string>
              </types>
              <params>
                <KeyValueOfStringParam>
                  <Key>location </Key>
                  <Value>
                    <datetime>1493377256 </datetime>
                    <version>9499 </version>
                  </Value>
                </KeyValueOfStringParam>
              </params>
            </Value>
          </KeyValueOfStringPin>
          <KeyValueOfStringPin>
            <Key>provoker_input </Key>
            <Value>
              <types>
                <string>Pin </string>
                <string>Provoker_input </string>
              </types>
              <params />
            </Value>
          </KeyValueOfStringPin>
        </pins>
      </Value>
    </KeyValueOfStringItem>
  </items>
 </Graph>


6. Создание, изменение, удаление данных

Для получения списка объектов необходимо вызвать метод.

Формат параметров и результатов запроса приведены в отдельном документе

7. Получение изменений данных

Для получения списка объектов необходимо вызвать метод.

Параметры метода:

serverId – идентификатор сервера

version – версия с которой необходимо получать изменения

Приложение 1

<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions xmlns:s="http://www.w3.org/2001/XMLSchema"
     xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
     xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
     xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
     xmlns:tns="http://integra-s.com/firefly/soap" xmlns:s1="http://microsoft.com/wsdl/types/"
     xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
     xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
     xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
     targetNamespace="http://integra-s.com/firefly/soap"
     xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
  <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Fire Fly Soap Web
       Service </wsdl:documentation>
  <wsdl:types>
 
    <s:schema elementFormDefault="qualified"
         targetNamespace="http://integra-s.com/firefly/soap">
      <s:import namespace="http://microsoft.com/wsdl/types/"/>
      <s:import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
      <s:import namespace="http://schemas.xmlsoap.org/wsdl/"/>
      <s:element name="getServers">
        <s:complexType/>
      </s:element>
      <s:element name="getServersResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="getServersResult"
                 type="tns:ArrayOfKeyValueOfGuidServer"/>
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:complexType name="ArrayOfKeyValueOfGuidServer">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="unbounded" name="KeyValueOfGuidServer"
               nillable="true" type="tns:KeyValueOfGuidServer"/>
        </s:sequence>
      </s:complexType>
      <s:complexType name="KeyValueOfGuidServer">
        <s:sequence>
          <s:element minOccurs="1" maxOccurs="1" name="Key" type="s1:guid"/>
          <s:element minOccurs="0" maxOccurs="1" name="Value" type="tns:Server"/>
        </s:sequence>
      </s:complexType>
      <s:complexType name="Server">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="name" type="s:string"/>
          <s:element minOccurs="0" maxOccurs="1" name="typedef_version" type="s:string"/>
          <s:element minOccurs="1" maxOccurs="1" name="is_local" type="s:boolean"/>
        </s:sequence>
      </s:complexType>
      <s:element name="CredentialsHeader" type="tns:CredentialsHeader"/>
      <s:complexType name="CredentialsHeader">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="username" type="s:string"/>
          <s:element minOccurs="0" maxOccurs="1" name="token" type="s:string"/>
        </s:sequence>
        <s:anyAttribute/>
      </s:complexType>
      <s:element name="getTypeDef">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="version" type="s:string"/>
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="getTypeDefResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="getTypeDefResult">
              <s:complexType mixed="true">
                <s:sequence>
                  <s:any/>
                </s:sequence>
              </s:complexType>
            </s:element>
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="getGraph">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="1" maxOccurs="1" name="serverId" type="s1:guid"/>
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="getGraphResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="getGraphResult" type="tns:Graph"/>
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:complexType name="Graph">
        <s:sequence>
          <s:element minOccurs="1" maxOccurs="1" name="ServerId" type="s1:guid"/>
          <s:element minOccurs="0" maxOccurs="1" name="items"
               type="tns:ArrayOfKeyValueOfStringItem"/>
          <s:element minOccurs="0" maxOccurs="1" name="links"
               type="tns:ArrayOfKeyValueOfStringLink"/>
        </s:sequence>
      </s:complexType>
      <s:complexType name="ArrayOfKeyValueOfStringItem">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="unbounded" name="KeyValueOfStringItem"
               nillable="true" type="tns:KeyValueOfStringItem"/>
        </s:sequence>
      </s:complexType>
      <s:complexType name="KeyValueOfStringItem">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="Key" type="s:string"/>
          <s:element minOccurs="0" maxOccurs="1" name="Value" type="tns:Item"/>
        </s:sequence>
      </s:complexType>
      <s:complexType name="Item">
        <s:complexContent mixed="false">
          <s:extension base="tns:Object">
            <s:sequence>
              <s:element minOccurs="0" maxOccurs="1" name="pins"
                   type="tns:ArrayOfKeyValueOfStringPin"/>
            </s:sequence>
          </s:extension>
        </s:complexContent>
      </s:complexType>
      <s:complexType name="Object">
        <s:complexContent mixed="false">
          <s:extension base="tns:AbstractObject"/>
        </s:complexContent>
      </s:complexType>
      <s:complexType name="AbstractObject">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="types" type="tns:ArrayOfString"/>
          <s:element minOccurs="0" maxOccurs="1" name="params"
               type="tns:ArrayOfKeyValueOfStringParam"/>
        </s:sequence>
      </s:complexType>
      <s:complexType name="ArrayOfString">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="unbounded" name="string" nillable="true"
               type="s:string"/>
        </s:sequence>
      </s:complexType>
      <s:complexType name="ArrayOfKeyValueOfStringParam">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="unbounded" name="KeyValueOfStringParam"
               nillable="true" type="tns:KeyValueOfStringParam"/>
        </s:sequence>
      </s:complexType>
      <s:complexType name="KeyValueOfStringParam">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="Key" type="s:string"/>
          <s:element minOccurs="0" maxOccurs="1" name="Value" type="tns:Param"/>
        </s:sequence>
      </s:complexType>
      <s:complexType name="Param">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="value"/>
          <s:element minOccurs="1" maxOccurs="1" name="datetime" type="s:int"/>
          <s:element minOccurs="0" maxOccurs="1" name="status" type="s:string"/>
          <s:element minOccurs="1" maxOccurs="1" name="version" type="s:long"/>
        </s:sequence>
      </s:complexType>
      <s:complexType name="Pin">
        <s:complexContent mixed="false">
          <s:extension base="tns:AbstractObject"/>
        </s:complexContent>
      </s:complexType>
      <s:complexType name="Link">
        <s:complexContent mixed="false">
          <s:extension base="tns:Object"/>
        </s:complexContent>
      </s:complexType>
      <s:complexType name="ArrayOfKeyValueOfStringPin">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="unbounded" name="KeyValueOfStringPin"
               nillable="true" type="tns:KeyValueOfStringPin"/>
        </s:sequence>
      </s:complexType>
      <s:complexType name="KeyValueOfStringPin">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="Key" type="s:string"/>
          <s:element minOccurs="0" maxOccurs="1" name="Value" type="tns:Pin"/>
        </s:sequence>
      </s:complexType>
      <s:complexType name="ArrayOfKeyValueOfStringLink">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="unbounded" name="KeyValueOfStringLink"
               nillable="true" type="tns:KeyValueOfStringLink"/>
        </s:sequence>
      </s:complexType>
      <s:complexType name="KeyValueOfStringLink">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="Key" type="s:string"/>
          <s:element minOccurs="0" maxOccurs="1" name="Value" type="tns:Link"/>
        </s:sequence>
      </s:complexType>
      <s:element name="put">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="request" type="tns:ArrayOfPutRequest"/>
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:complexType name="ArrayOfPutRequest">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="unbounded" name="PutRequest" nillable="true"
               type="tns:PutRequest"/>
        </s:sequence>
      </s:complexType>
      <s:complexType name="PutRequest">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="server" type="s:string"/>
          <s:element minOccurs="0" maxOccurs="1" name="owner" type="s:string"/>
          <s:element minOccurs="0" maxOccurs="1" name="id" type="s:string"/>
          <s:element minOccurs="0" maxOccurs="1" name="params"
               type="tns:ArrayOfKeyValueOfStringParam"/>
          <s:element minOccurs="1" maxOccurs="1" name="entity" type="tns:Entity"/>
          <s:element minOccurs="1" maxOccurs="1" name="operation" type="tns:Operation"/>
        </s:sequence>
      </s:complexType>
      <s:simpleType name="Entity">
        <s:restriction base="s:string">
          <s:enumeration value="none"/>
          <s:enumeration value="server"/>
          <s:enumeration value="router"/>
          <s:enumeration value="item"/>
          <s:enumeration value="link"/>
          <s:enumeration value="pin"/>
          <s:enumeration value="event"/>
        </s:restriction>
      </s:simpleType>
      <s:simpleType name="Operation">
        <s:restriction base="s:string">
          <s:enumeration value="create"/>
          <s:enumeration value="update"/>
          <s:enumeration value="delete"/>
        </s:restriction>
      </s:simpleType>
      <s:complexType name="ArrayOfPutResponse">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="unbounded" name="PutResponse" nillable="true"
               type="tns:PutResponse"/>
        </s:sequence>
      </s:complexType>
      <s:complexType name="PutResponse">
        <s:complexContent mixed="false">
          <s:extension base="tns:Param">
            <s:sequence>
              <s:element minOccurs="0" maxOccurs="1" name="server" type="s:string"/>
              <s:element minOccurs="0" maxOccurs="1" name="name" type="s:string"/>
              <s:element minOccurs="0" maxOccurs="1" name="owner" type="s:string"/>
              <s:element minOccurs="1" maxOccurs="1" name="operation" type="tns:Operation"/>
              <s:element minOccurs="1" maxOccurs="1" name="entity" type="tns:Entity"/>
              <s:element minOccurs="0" maxOccurs="1" name="type" type="s:string"/>
              <s:element minOccurs="0" maxOccurs="1" name="id" type="s:string"/>
            </s:sequence>
          </s:extension>
        </s:complexContent>
      </s:complexType>
      <s:element name="putResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="putResult"
                 type="tns:ArrayOfPutResponse"/>
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="getRuntimeChanges">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="1" maxOccurs="1" name="serverId" type="s1:guid"/>
            <s:element minOccurs="1" maxOccurs="1" name="version" type="s:long"/>
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="getRuntimeChangesResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="getRuntimeChangesResult"
                 type="tns:ArrayOfPutResponse"/>
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="getServersEx">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="username" type="s:string"/>
            <s:element minOccurs="0" maxOccurs="1" name="token" type="s:string"/>
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="getServersExResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="getServersExResult"
                 type="tns:ArrayOfKeyValueOfGuidServer"/>
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="getTypeDefEx">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="username" type="s:string"/>
            <s:element minOccurs="0" maxOccurs="1" name="token" type="s:string"/>
            <s:element minOccurs="0" maxOccurs="1" name="version" type="s:string"/>
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="getTypeDefExResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="getTypeDefExResult">
              <s:complexType mixed="true">
                <s:sequence>
                  <s:any/>
                </s:sequence>
              </s:complexType>
            </s:element>
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="getGraphEx">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="username" type="s:string"/>
            <s:element minOccurs="0" maxOccurs="1" name="token" type="s:string"/>
            <s:element minOccurs="0" maxOccurs="1" name="serverId" type="s:string"/>
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="getGraphExResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="getGraphExResult" type="tns:Graph"/>
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="putEx">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="username" type="s:string"/>
            <s:element minOccurs="0" maxOccurs="1" name="token" type="s:string"/>
            <s:element minOccurs="0" maxOccurs="1" name="request" type="tns:ArrayOfPutRequest"/>
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="putExResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="putExResult"
                 type="tns:ArrayOfPutResponse"/>
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="getRuntimeChangesEx">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="username" type="s:string"/>
            <s:element minOccurs="0" maxOccurs="1" name="token" type="s:string"/>
            <s:element minOccurs="0" maxOccurs="1" name="serverId" type="s:string"/>
            <s:element minOccurs="1" maxOccurs="1" name="version" type="s:long"/>
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="getRuntimeChangesExResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="getRuntimeChangesExResult"
                 type="tns:ArrayOfPutResponse"/>
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="ArrayOfKeyValueOfGuidServer" nillable="true"
           type="tns:ArrayOfKeyValueOfGuidServer"/>
      <s:element name="Graph" nillable="true" type="tns:Graph"/>
      <s:element name="ArrayOfPutResponse" nillable="true" type="tns:ArrayOfPutResponse"/>
    </s:schema>
    <s:schema elementFormDefault="qualified" targetNamespace="http://microsoft.com/wsdl/types/">
      <s:import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
      <s:import namespace="http://schemas.xmlsoap.org/wsdl/"/>
      <s:simpleType name="guid">
        <s:restriction base="s:string">
          <s:pattern
              
              
              
              
              
               value="[0-9a-fA-F]{8-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}"}/>
        </s:restriction>
      </s:simpleType>
    </s:schema>
  </wsdl:types>
  <wsdl:message name="getServersSoapIn">
    <wsdl:part name="parameters" element="tns:getServers"/>
  </wsdl:message>
  <wsdl:message name="getServersSoapOut">
    <wsdl:part name="parameters" element="tns:getServersResponse"/>
  </wsdl:message>
  <wsdl:message name="getServersCredentialsHeader">
    <wsdl:part name="CredentialsHeader" element="tns:CredentialsHeader"/>
  </wsdl:message>
  <wsdl:message name="getTypeDefSoapIn">
    <wsdl:part name="parameters" element="tns:getTypeDef"/>
  </wsdl:message>
  <wsdl:message name="getTypeDefSoapOut">
    <wsdl:part name="parameters" element="tns:getTypeDefResponse"/>
  </wsdl:message>
  <wsdl:message name="getTypeDefCredentialsHeader">
    <wsdl:part name="CredentialsHeader" element="tns:CredentialsHeader"/>
  </wsdl:message>
  <wsdl:message name="getGraphSoapIn">
    <wsdl:part name="parameters" element="tns:getGraph"/>
  </wsdl:message>
  <wsdl:message name="getGraphSoapOut">
    <wsdl:part name="parameters" element="tns:getGraphResponse"/>
  </wsdl:message>
  <wsdl:message name="getGraphCredentialsHeader">
    <wsdl:part name="CredentialsHeader" element="tns:CredentialsHeader"/>
  </wsdl:message>
  <wsdl:message name="putSoapIn">
    <wsdl:part name="parameters" element="tns:put"/>
  </wsdl:message>
  <wsdl:message name="putSoapOut">
    <wsdl:part name="parameters" element="tns:putResponse"/>
  </wsdl:message>
  <wsdl:message name="putCredentialsHeader">
    <wsdl:part name="CredentialsHeader" element="tns:CredentialsHeader"/>
  </wsdl:message>
  <wsdl:message name="getRuntimeChangesSoapIn">
    <wsdl:part name="parameters" element="tns:getRuntimeChanges"/>
  </wsdl:message>
  <wsdl:message name="getRuntimeChangesSoapOut">
    <wsdl:part name="parameters" element="tns:getRuntimeChangesResponse"/>
  </wsdl:message>
  <wsdl:message name="getRuntimeChangesCredentialsHeader">
    <wsdl:part name="CredentialsHeader" element="tns:CredentialsHeader"/>
  </wsdl:message>
  <wsdl:message name="getServersExSoapIn">
    <wsdl:part name="parameters" element="tns:getServersEx"/>
  </wsdl:message>
  <wsdl:message name="getServersExSoapOut">
    <wsdl:part name="parameters" element="tns:getServersExResponse"/>
  </wsdl:message>
  <wsdl:message name="getTypeDefExSoapIn">
    <wsdl:part name="parameters" element="tns:getTypeDefEx"/>
  </wsdl:message>
  <wsdl:message name="getTypeDefExSoapOut">
    <wsdl:part name="parameters" element="tns:getTypeDefExResponse"/>
  </wsdl:message>
  <wsdl:message name="getGraphExSoapIn">
    <wsdl:part name="parameters" element="tns:getGraphEx"/>
  </wsdl:message>
  <wsdl:message name="getGraphExSoapOut">
    <wsdl:part name="parameters" element="tns:getGraphExResponse"/>
  </wsdl:message>
  <wsdl:message name="putExSoapIn">
    <wsdl:part name="parameters" element="tns:putEx"/>
  </wsdl:message>
  <wsdl:message name="putExSoapOut">
    <wsdl:part name="parameters" element="tns:putExResponse"/>
  </wsdl:message>
  <wsdl:message name="getRuntimeChangesExSoapIn">
    <wsdl:part name="parameters" element="tns:getRuntimeChangesEx"/>
  </wsdl:message>
  <wsdl:message name="getRuntimeChangesExSoapOut">
    <wsdl:part name="parameters" element="tns:getRuntimeChangesExResponse"/>
  </wsdl:message>
  <wsdl:message name="getServersHttpGetIn"/>
  <wsdl:message name="getServersHttpGetOut">
    <wsdl:part name="Body" element="tns:ArrayOfKeyValueOfGuidServer"/>
  </wsdl:message>
  <wsdl:message name="getTypeDefHttpGetIn">
    <wsdl:part name="version" type="s:string"/>
  </wsdl:message>
  <wsdl:message name="getTypeDefHttpGetOut">
    <wsdl:part name="Body"/>
  </wsdl:message>
  <wsdl:message name="getServersExHttpGetIn">
    <wsdl:part name="username" type="s:string"/>
    <wsdl:part name="token" type="s:string"/>
  </wsdl:message>
  <wsdl:message name="getServersExHttpGetOut">
    <wsdl:part name="Body" element="tns:ArrayOfKeyValueOfGuidServer"/>
  </wsdl:message>
  <wsdl:message name="getTypeDefExHttpGetIn">
    <wsdl:part name="username" type="s:string"/>
    <wsdl:part name="token" type="s:string"/>
    <wsdl:part name="version" type="s:string"/>
  </wsdl:message>
  <wsdl:message name="getTypeDefExHttpGetOut">
    <wsdl:part name="Body"/>
  </wsdl:message>
  <wsdl:message name="getGraphExHttpGetIn">
    <wsdl:part name="username" type="s:string"/>
    <wsdl:part name="token" type="s:string"/>
    <wsdl:part name="serverId" type="s:string"/>
  </wsdl:message>
  <wsdl:message name="getGraphExHttpGetOut">
    <wsdl:part name="Body" element="tns:Graph"/>
  </wsdl:message>
  <wsdl:message name="getRuntimeChangesExHttpGetIn">
    <wsdl:part name="username" type="s:string"/>
    <wsdl:part name="token" type="s:string"/>
    <wsdl:part name="serverId" type="s:string"/>
    <wsdl:part name="version" type="s:string"/>
  </wsdl:message>
  <wsdl:message name="getRuntimeChangesExHttpGetOut">
    <wsdl:part name="Body" element="tns:ArrayOfPutResponse"/>
  </wsdl:message>
  <wsdl:message name="getServersHttpPostIn"/>
  <wsdl:message name="getServersHttpPostOut">
    <wsdl:part name="Body" element="tns:ArrayOfKeyValueOfGuidServer"/>
  </wsdl:message>
  <wsdl:message name="getTypeDefHttpPostIn">
    <wsdl:part name="version" type="s:string"/>
  </wsdl:message>
  <wsdl:message name="getTypeDefHttpPostOut">
    <wsdl:part name="Body"/>
  </wsdl:message>
  <wsdl:message name="getServersExHttpPostIn">
    <wsdl:part name="username" type="s:string"/>
    <wsdl:part name="token" type="s:string"/>
  </wsdl:message>
  <wsdl:message name="getServersExHttpPostOut">
    <wsdl:part name="Body" element="tns:ArrayOfKeyValueOfGuidServer"/>
  </wsdl:message>
  <wsdl:message name="getTypeDefExHttpPostIn">
    <wsdl:part name="username" type="s:string"/>
    <wsdl:part name="token" type="s:string"/>
    <wsdl:part name="version" type="s:string"/>
  </wsdl:message>
  <wsdl:message name="getTypeDefExHttpPostOut">
    <wsdl:part name="Body"/>
  </wsdl:message>
  <wsdl:message name="getGraphExHttpPostIn">
    <wsdl:part name="username" type="s:string"/>
    <wsdl:part name="token" type="s:string"/>
    <wsdl:part name="serverId" type="s:string"/>
  </wsdl:message>
  <wsdl:message name="getGraphExHttpPostOut">
    <wsdl:part name="Body" element="tns:Graph"/>
  </wsdl:message>
  <wsdl:message name="getRuntimeChangesExHttpPostIn">
    <wsdl:part name="username" type="s:string"/>
    <wsdl:part name="token" type="s:string"/>
    <wsdl:part name="serverId" type="s:string"/>
    <wsdl:part name="version" type="s:string"/>
  </wsdl:message>
  <wsdl:message name="getRuntimeChangesExHttpPostOut">
    <wsdl:part name="Body" element="tns:ArrayOfPutResponse"/>
  </wsdl:message>
  <wsdl:portType name="FireFlySoapSoap">
    <wsdl:operation name="getServers">
      <wsdl:input message="tns:getServersSoapIn"/>
      <wsdl:output message="tns:getServersSoapOut"/>
    </wsdl:operation>
    <wsdl:operation name="getTypeDef">
      <wsdl:input message="tns:getTypeDefSoapIn"/>
      <wsdl:output message="tns:getTypeDefSoapOut"/>
    </wsdl:operation>
    <wsdl:operation name="getGraph">
      <wsdl:input message="tns:getGraphSoapIn"/>
      <wsdl:output message="tns:getGraphSoapOut"/>
    </wsdl:operation>
    <wsdl:operation name="put">
      <wsdl:input message="tns:putSoapIn"/>
      <wsdl:output message="tns:putSoapOut"/>
    </wsdl:operation>
    <wsdl:operation name="getRuntimeChanges">
      <wsdl:input message="tns:getRuntimeChangesSoapIn"/>
      <wsdl:output message="tns:getRuntimeChangesSoapOut"/>
    </wsdl:operation>
    <wsdl:operation name="getServersEx">
      <wsdl:input message="tns:getServersExSoapIn"/>
      <wsdl:output message="tns:getServersExSoapOut"/>
    </wsdl:operation>
    <wsdl:operation name="getTypeDefEx">
      <wsdl:input message="tns:getTypeDefExSoapIn"/>
      <wsdl:output message="tns:getTypeDefExSoapOut"/>
    </wsdl:operation>
    <wsdl:operation name="getGraphEx">
      <wsdl:input message="tns:getGraphExSoapIn"/>
      <wsdl:output message="tns:getGraphExSoapOut"/>
    </wsdl:operation>
    <wsdl:operation name="putEx">
      <wsdl:input message="tns:putExSoapIn"/>
      <wsdl:output message="tns:putExSoapOut"/>
    </wsdl:operation>
    <wsdl:operation name="getRuntimeChangesEx">
      <wsdl:input message="tns:getRuntimeChangesExSoapIn"/>
      <wsdl:output message="tns:getRuntimeChangesExSoapOut"/>
    </wsdl:operation>
  </wsdl:portType>
  <wsdl:portType name="FireFlySoapHttpGet">
    <wsdl:operation name="getServers">
      <wsdl:input message="tns:getServersHttpGetIn"/>
      <wsdl:output message="tns:getServersHttpGetOut"/>
    </wsdl:operation>
    <wsdl:operation name="getTypeDef">
      <wsdl:input message="tns:getTypeDefHttpGetIn"/>
      <wsdl:output message="tns:getTypeDefHttpGetOut"/>
    </wsdl:operation>
    <wsdl:operation name="getServersEx">
      <wsdl:input message="tns:getServersExHttpGetIn"/>
      <wsdl:output message="tns:getServersExHttpGetOut"/>
    </wsdl:operation>
    <wsdl:operation name="getTypeDefEx">
      <wsdl:input message="tns:getTypeDefExHttpGetIn"/>
      <wsdl:output message="tns:getTypeDefExHttpGetOut"/>
    </wsdl:operation>
    <wsdl:operation name="getGraphEx">
      <wsdl:input message="tns:getGraphExHttpGetIn"/>
      <wsdl:output message="tns:getGraphExHttpGetOut"/>
    </wsdl:operation>
    <wsdl:operation name="getRuntimeChangesEx">
      <wsdl:input message="tns:getRuntimeChangesExHttpGetIn"/>
      <wsdl:output message="tns:getRuntimeChangesExHttpGetOut"/>
    </wsdl:operation>
  </wsdl:portType>
  <wsdl:portType name="FireFlySoapHttpPost">
    <wsdl:operation name="getServers">
      <wsdl:input message="tns:getServersHttpPostIn"/>
      <wsdl:output message="tns:getServersHttpPostOut"/>
    </wsdl:operation>
    <wsdl:operation name="getTypeDef">
      <wsdl:input message="tns:getTypeDefHttpPostIn"/>
      <wsdl:output message="tns:getTypeDefHttpPostOut"/>
    </wsdl:operation>
    <wsdl:operation name="getServersEx">
      <wsdl:input message="tns:getServersExHttpPostIn"/>
      <wsdl:output message="tns:getServersExHttpPostOut"/>
    </wsdl:operation>
    <wsdl:operation name="getTypeDefEx">
      <wsdl:input message="tns:getTypeDefExHttpPostIn"/>
      <wsdl:output message="tns:getTypeDefExHttpPostOut"/>
    </wsdl:operation>
    <wsdl:operation name="getGraphEx">
      <wsdl:input message="tns:getGraphExHttpPostIn"/>
      <wsdl:output message="tns:getGraphExHttpPostOut"/>
    </wsdl:operation>
    <wsdl:operation name="getRuntimeChangesEx">
      <wsdl:input message="tns:getRuntimeChangesExHttpPostIn"/>
      <wsdl:output message="tns:getRuntimeChangesExHttpPostOut"/>
    </wsdl:operation>
  </wsdl:portType>
  <wsdl:binding name="FireFlySoapSoap" type="tns:FireFlySoapSoap">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="getServers">
      <soap:operation soapAction="http://integra-s.com/firefly/soap/getServers"
           style="document"/>
      <wsdl:input>
        <soap:body use="literal"/>
        <soap:header message="tns:getServersCredentialsHeader" part="CredentialsHeader"
             use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="getTypeDef">
      <soap:operation soapAction="http://integra-s.com/firefly/soap/getTypeDef"
           style="document"/>
      <wsdl:input>
        <soap:body use="literal"/>
        <soap:header message="tns:getTypeDefCredentialsHeader" part="CredentialsHeader"
             use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="getGraph">
      <soap:operation soapAction="http://integra-s.com/firefly/soap/getGraph" style="document"/>
      <wsdl:input>
        <soap:body use="literal"/>
        <soap:header message="tns:getGraphCredentialsHeader" part="CredentialsHeader"
             use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="put">
      <soap:operation soapAction="http://integra-s.com/firefly/soap/put" style="document"/>
      <wsdl:input>
        <soap:body use="literal"/>
        <soap:header message="tns:putCredentialsHeader" part="CredentialsHeader" use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="getRuntimeChanges">
      <soap:operation soapAction="http://integra-s.com/firefly/soap/getRuntimeChanges"
           style="document"/>
      <wsdl:input>
        <soap:body use="literal"/>
        <soap:header message="tns:getRuntimeChangesCredentialsHeader" part="CredentialsHeader"
             use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="getServersEx">
      <soap:operation soapAction="http://integra-s.com/firefly/soap/getServersEx"
           style="document"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="getTypeDefEx">
      <soap:operation soapAction="http://integra-s.com/firefly/soap/getTypeDefEx"
           style="document"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="getGraphEx">
      <soap:operation soapAction="http://integra-s.com/firefly/soap/getGraphEx"
           style="document"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="putEx">
      <soap:operation soapAction="http://integra-s.com/firefly/soap/putEx" style="document"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="getRuntimeChangesEx">
      <soap:operation soapAction="http://integra-s.com/firefly/soap/getRuntimeChangesEx"
           style="document"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:binding name="FireFlySoapSoap12" type="tns:FireFlySoapSoap">
    <soap12:binding transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="getServers">
      <soap12:operation soapAction="http://integra-s.com/firefly/soap/getServers"
           style="document"/>
      <wsdl:input>
        <soap12:body use="literal"/>
        <soap12:header message="tns:getServersCredentialsHeader" part="CredentialsHeader"
             use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap12:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="getTypeDef">
      <soap12:operation soapAction="http://integra-s.com/firefly/soap/getTypeDef"
           style="document"/>
      <wsdl:input>
        <soap12:body use="literal"/>
        <soap12:header message="tns:getTypeDefCredentialsHeader" part="CredentialsHeader"
             use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap12:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="getGraph">
      <soap12:operation soapAction="http://integra-s.com/firefly/soap/getGraph"
           style="document"/>
      <wsdl:input>
        <soap12:body use="literal"/>
        <soap12:header message="tns:getGraphCredentialsHeader" part="CredentialsHeader"
             use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap12:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="put">
      <soap12:operation soapAction="http://integra-s.com/firefly/soap/put" style="document"/>
      <wsdl:input>
        <soap12:body use="literal"/>
        <soap12:header message="tns:putCredentialsHeader" part="CredentialsHeader"
             use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap12:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="getRuntimeChanges">
      <soap12:operation soapAction="http://integra-s.com/firefly/soap/getRuntimeChanges"
           style="document"/>
      <wsdl:input>
        <soap12:body use="literal"/>
        <soap12:header message="tns:getRuntimeChangesCredentialsHeader"
             part="CredentialsHeader" use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap12:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="getServersEx">
      <soap12:operation soapAction="http://integra-s.com/firefly/soap/getServersEx"
           style="document"/>
      <wsdl:input>
        <soap12:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap12:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="getTypeDefEx">
      <soap12:operation soapAction="http://integra-s.com/firefly/soap/getTypeDefEx"
           style="document"/>
      <wsdl:input>
        <soap12:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap12:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="getGraphEx">
      <soap12:operation soapAction="http://integra-s.com/firefly/soap/getGraphEx"
           style="document"/>
      <wsdl:input>
        <soap12:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap12:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="putEx">
      <soap12:operation soapAction="http://integra-s.com/firefly/soap/putEx" style="document"/>
      <wsdl:input>
        <soap12:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap12:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="getRuntimeChangesEx">
      <soap12:operation soapAction="http://integra-s.com/firefly/soap/getRuntimeChangesEx"
           style="document"/>
      <wsdl:input>
        <soap12:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap12:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:binding name="FireFlySoapHttpGet" type="tns:FireFlySoapHttpGet">
    <http:binding verb="GET"/>
    <wsdl:operation name="getServers">
      <http:operation location="/getServers"/>
      <wsdl:input>
        <http:urlEncoded/>
      </wsdl:input>
      <wsdl:output>
        <mime:mimeXml part="Body"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="getTypeDef">
      <http:operation location="/getTypeDef"/>
      <wsdl:input>
        <http:urlEncoded/>
      </wsdl:input>
      <wsdl:output>
        <mime:content part="Body" type="text/xml"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="getServersEx">
      <http:operation location="/getServersEx"/>
      <wsdl:input>
        <http:urlEncoded/>
      </wsdl:input>
      <wsdl:output>
        <mime:mimeXml part="Body"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="getTypeDefEx">
      <http:operation location="/getTypeDefEx"/>
      <wsdl:input>
        <http:urlEncoded/>
      </wsdl:input>
      <wsdl:output>
        <mime:content part="Body" type="text/xml"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="getGraphEx">
      <http:operation location="/getGraphEx"/>
      <wsdl:input>
        <http:urlEncoded/>
      </wsdl:input>
      <wsdl:output>
        <mime:mimeXml part="Body"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="getRuntimeChangesEx">
      <http:operation location="/getRuntimeChangesEx"/>
      <wsdl:input>
        <http:urlEncoded/>
      </wsdl:input>
      <wsdl:output>
        <mime:mimeXml part="Body"/>
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:binding name="FireFlySoapHttpPost" type="tns:FireFlySoapHttpPost">
    <http:binding verb="POST"/>
    <wsdl:operation name="getServers">
      <http:operation location="/getServers"/>
      <wsdl:input>
        <mime:content type="application/x-www-form-urlencoded"/>
      </wsdl:input>
      <wsdl:output>
        <mime:mimeXml part="Body"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="getTypeDef">
      <http:operation location="/getTypeDef"/>
      <wsdl:input>
        <mime:content type="application/x-www-form-urlencoded"/>
      </wsdl:input>
      <wsdl:output>
        <mime:content part="Body" type="text/xml"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="getServersEx">
      <http:operation location="/getServersEx"/>
      <wsdl:input>
        <mime:content type="application/x-www-form-urlencoded"/>
      </wsdl:input>
      <wsdl:output>
        <mime:mimeXml part="Body"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="getTypeDefEx">
      <http:operation location="/getTypeDefEx"/>
      <wsdl:input>
        <mime:content type="application/x-www-form-urlencoded"/>
      </wsdl:input>
      <wsdl:output>
        <mime:content part="Body" type="text/xml"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="getGraphEx">
      <http:operation location="/getGraphEx"/>
      <wsdl:input>
        <mime:content type="application/x-www-form-urlencoded"/>
      </wsdl:input>
      <wsdl:output>
        <mime:mimeXml part="Body"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="getRuntimeChangesEx">
      <http:operation location="/getRuntimeChangesEx"/>
      <wsdl:input>
        <mime:content type="application/x-www-form-urlencoded"/>
      </wsdl:input>
      <wsdl:output>
        <mime:mimeXml part="Body"/>
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="FireFlySoap">
    <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Fire Fly Soap Web
         Service </wsdl:documentation>
    <wsdl:port name="FireFlySoapSoap" binding="tns:FireFlySoapSoap">
      <soap:address location="http://localhost:9000/FireFlySoap.asmx"/>
    </wsdl:port>
    <wsdl:port name="FireFlySoapSoap12" binding="tns:FireFlySoapSoap12">
      <soap12:address location="http://localhost:9000/FireFlySoap.asmx"/>
    </wsdl:port>
    <wsdl:port name="FireFlySoapHttpGet" binding="tns:FireFlySoapHttpGet">
      <http:address location="http://localhost:9000/FireFlySoap.asmx"/>
    </wsdl:port>
    <wsdl:port name="FireFlySoapHttpPost" binding="tns:FireFlySoapHttpPost">
      <http:address location="http://localhost:9000/FireFlySoap.asmx"/>
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>