MySVC
an open source UNIX framework for shell script based web services provider
»Home
»Tools
»Man Page
»User Guide
»ChangeLog
»Installation
»Source Code
»Downloads
»FAQ
»Support
»License

»My Apps

Icon.png

Summary

The "WebService" app is a generic client of REST web services based on a synchronous request/reply interface protocol using standard HTTP (GET or POST) and XML or JSON respectively as request and response message types accessing any application server as web service provider, where the app user interface and managed web services info are configurable from a single XML configuration file, with advanced features such as export to a (configurable) mailing list of sent/received HTTP messages, mapping from nodes of XML or JSON response tree and response fields on user interface through XPATH formulas in order to drill down to response details with custom user interface navigation or handling a web page (e.g. HTML or PDF) as entire response or (for XML response type) single response field with field value identifying the "url" of web page or its "content" (clear with xhtml or encoded with base64 with other mime types, exportable by email).

The app, driven by its XML configuration file (with a subset of parameters configurable from user interface too), manages a set of (web) "applications" (logically grouped into "systems"), where each application, identified by an http URL (e.g. "http://www.myserver.com/myapp") provides a set of "operations" (logically grouped into "services"), where each operation, identified by a path (the ending part of operation URL, e.g. "/myservice/myoperation") corresponds to an HTTP GET or POST request to a web service (having application URL as prefix, e.g. "http://www.myserver.com/myapp/myservice/myoperation") returning as response an XML, a JSON (or to a static XML or JSON file in order to stub the web service before its implementation) or a web page (e.g. HTML or PDF).

Selecting the current "application" the app user interface change itself in order to reflect its services and related operations, handling the entry of request fields, the HTTP (GET or POST) request message sending and the (custom) navigation to response fields corresponding to XML or JSON response tree nodes with mapping through XPATH formulas specified on XML configuration file, where the XPATH formulas for JSON are related to the "equivalent" XML (without tag attributes) of JSON. Each "operation" contains its own "request" and "response" message. Each "request field" corresponds to a <name>=<value> pair on HTTP request message. If no "response" is specified on XML configuration then the application server response is a web page instead of XML or JSON tree. Each "request" and "response" message contains the list of its "fields", logically grouped into field "groups". Each "response field" has a "path" attribute representing the XPATH formula to a node of XML or JSON response tree and can contains recursively (with any depth) a list of more field groups or a single field group identified by an XPATH formula to a node of XML or JSON response tree having more occurrences. If a mime-type is specified as value for "type" attribute of a response field (e.g. type="text/html" or type="application/pdf") then field is related to a web page. Each field can be defined as reference to any another field. Each application or system can contains an optional list of error codes with related descriptions for error specific popup messages on user interface.

Example of XML configuration:

<services name="myname">
 <system name="mysystem">
  <application name="myapp" url="http://www.myapp.com">
   <service name="myservice">
    <operation name="myoperation" path="/path/to/myoperation"/>
    <operation name="myoperation2" url="http://www.myapp.com/path/to/myoperation2"/>
    <operation name="myoperation3" path="/path/to/myoperation3">
    <operation name="myoperation4" path="/path/to/myoperation4"/>
    <operation name="myoperation5" url="http://myapp.com/path/to/myoperation5"/>
    </operation>
    ...
    <operation name="myoperation6" path="/path/to/myoperation6">
     <request name="request">
      <group name="mygroup1">
       <field name="field1"/>
       <field name="field2" type="text"/>
       <field name="fieldN" value="mydefault">
        <value>value_1<value>
        <value>value_2<value>
       </field>
      </group>
     </request>
     <response name="response">
      <group name="mygroup2">
       <field name="field1" path="/xpath/to/xml/response/node/attribute/for/field/@value"/>
       <field name="field2" path="/xpath/to/xml/response/node/for/field/value"/>
       <field name="field3" type="html" path="/xpath/to/xml/response/node/for/field/html/content/enclosed/with/cdata"/>
       <field name="details">
        <group name="orders">
         <field name="product A" path="/data/product_A/orders_num"/>
         <field name="product B" path="/data/product_B/orders_num"/>
         <field name="payment method" path="/data/payment_method"/>
         <field name="myreport" type="url"/>
        </group>
       </field>
       <field name="contacts">
        <group name="contact" path="/data/contact">
         <field name="first name" path="first_name"/>
         <field name="last name" path="last_name"/>
         <field name="email" path="email"/>
         <field name="telephone" path="telephone"/>
        </group>
       </field>
      </group>
     </response>
   ...

Configuration

From the app XML configuration file, imported from an http URL or from clipboard (or exported to email or clipboard):

  • can be specified a set of "applications" logically grouped into "systems"

    <?xml version="1.0"?>
    <services>
      <system name="mysystem_1">
        <application name="myapplication_11" url="http://www.myapp_11">
          <description>...</description>
          ...
        </application>
        ...
        <application name="myapplication_1N" url="http://www.myapp_1N?myparam1=1">
          <description>...</description>
        ...
        </application>
      </system>
      ...
      <system name="mysystem_N">
        <application name="myapplication_N1" url="http://www.myapp_N1?myparam1=1&amp;myparam2=2">
          <description>...</description>
          ...
        </application>
        ...
        <application name="myapplication_NN" url="http://www.myapp_NN">
          <description>...</description>
        ...
        </application>
      </system>
    </services>
  • each application, identified by an http URL, provide a set of "operations" logically grouped into "services"

        <application name="myapplication" url="http://www.myapplication">
          <service name="myservice_1">
            <operation name="myoperation_11" path="/path/to/myoperation_11">
              <description>...</description>
              ...
            </operation>
            ...
            <operation name="myoperation_1N" path="/path/to/myoperation_1N">
              <description>...</description>
              ...
            </operation>
          </service>
          ...
          <service name="myservice_N">
            <operation name="myoperation_N1" path="/path/to/myoperation_N1">
              <description>...</description>
              ...
            </operation>
            ...
            <operation name="myoperation_NN" path="/path/to/myoperation_NN">
              <description>...</description>
              ...
            </operation>
          </service>
        </application>
  • for each operation, identified by a path (e.g. "/myservice/myoperation"), the server, from the URL having the application URL as prefix (e.g. "http://www.myserver.com/myapp/myservice/myoperation") provide (1) the XML or JSON response corresponding to its own specific HTTP GET or POST request or, if no response is specified, (2) a web page as output

  • an "url" can be specified on operations instead of "path"

  • if no request and no response is specified on operation then that operation is related to a web page as response (with GET request)

  • each "operation" contains its own "request" and "response" message

  • each "request" and "response" message contains the list of its "fields", logically grouped into field "groups"

            <operation name="myoperation" path="/path/to/myoperation">
              <description>...</description>
              <request name="request">
                <group name="group_1">
                  <field name="field_11"/>
                  <field name="field_12" type="text"/>
                  <field name="field_13" type="number" default="1"/>
                  ...
                  <field name="field_1N" value="value_1">
                   <value>value_1<value>
                   <value>value_2<value>
                   ...
                   <value>value_K<value>
                  </field>
                </group>
                 ...
                <group name="group_M">
                  <field name="field_M1"/>
                  <field name="field_M2"/>
                  ...
                  <field name="field_MN"/>
                </group>
              </request>
              <response name="response">
                <group name="group_L">
                  <field name="field_L1" path="/xpath/to/xml/response/node/attribute/for/field/@value"/>
                  <field name="field_L2" path="/xpath/to/xml/response/node/for/field/value"/>
                  <field name="details">
                    <group name="orders">
                      <field name="product A" path="/data/product_A/orders_num"/>
                      <field name="product B" path="/data/product_B/orders_num"/>
                      <field name="payment method" path="/data/payment_method"/>
                    </group>
                    <group name="trouble tickets">
                      <field name="total" path="/data/trouble_tickets/number"/>
                      <field name="opened" path="/data/@opened_trouble_tickets"/>
                    </group>
                  </field>
                  ...
                  <field name="contacts">
                    <group name="contact" path="/data/contact">
                      <field name="first name" path="first_name"/>
                      <field name="last name" path="last_name"/>
                      <field name="email" path="email"/>
                      <field name="telephone" path="telephone"/>
                    </group>
                  </field>
                </group>
                 ...
                <group name="group_P">
                  <field name="field_P1"/>
                  <field name="field_P2"/>
                  ...
                  <field name="field_PN"/>
                </group>
              </response>
            </operation>
  • if a response has not XML format (the default) but has JSON format the response tag must have an attribute type="json"

  • for JSON response is automatically created by the app an equivalent XML in order to use XPATH to indentify fields on JSON response tree (see the two JSON web service operations on example configuration file for this mapping from JSON to XML)

  • in order to get the XML response equivalent to JSON response you must export the response to email from the "root" response screen (before "drill down" on other response details), having two attached file: the first is the CSV file with details on current response screen, the second is the XML file equivalent to JSON; the JSON response message is retrievable from logs

  • each request field (corresponding to a <name>=<value> pair on HTTP request message):

    • has a "name" attribute used by user interface label

    • has an optional "http-name" attribute used to set name of corresponding HTTP parameter (default as "name")

    • has its own "type" attribute:

      • "string" (default)

      • "text" (can contains more lines of text, to be used with POST HTTP method)

      • "number"

      • "password"

      • "url"

      • list of values (if contains one or more "value" child node)

      • "ref" (to use if the field is a reference to another field, identified by the "id" attribute)

    • has an optional "required" attribute (default to "false") used to require (if set to "true") a not empty value

    • has an optional "value" attribute as default value of field (also used as default for list of value fields)

    • has an optional "read-only" attribute (default to "false") set to "true" if the field value cannot be modified

  • each response field:

    • has a "path" attribute representing the xpath formula of a node of XML response tree

    • can contains recursively a list of more field groups or a single field group identified by an xpath formula of a node of XML response tree having more occurrences

    • has an optional "subtype" attribute: if set to "error" then is used for system level and application level mapping from error codes and popup error description on user interface, else if set to "password" show an hidden input field

  • each field can be a reference to any another field (if type is "ref")

  • each "application" and "system" can contains an optional list of error codes with related descriptions for popup messages on user interface

    <errors>
      <error code="1">Invalid email or password</error>
      <error code="2">Email already used</error>
      <error code="3">Password too short</error>
    </errors>
  • can be defined at system or application level a mailing list for log export by email

    <emails>
      <email type="cc">email_1@gmail.com</email>
      <email>email_2@gmail.com</email>
      <email>email_3@gmail.com</email>
    </emails>

Entities

Starting from root to leafs of the tree related to the XML configuration file, we have "system→application→service→operation→request/response→group→field" entities, where:

  • "services", "systems" and "groups" are only logical entities to group respectly "operations", "applications" and "fields": each "system" is a list of "applications", each "service" is a list of "operations" and each "group" is a list of "fields"

  • "operations" and "applications" are the physical entities: each "application", identified by the URL prefix common to all its own "operations", provides a set of "operations", each identified by the ending path of the complete URL (e.g. the path of a PHP script or the path to a J2EE servlet or JSP page) and corresponding to an HTTP GET or POST REST request/reply web service returning an XML or a JSON as response

Interface

Regarding to the app user interface:

  • there are three main screen tabs: "Services", "Settings" and "Log"

  • each "service", a logical group of "operations", is represented on the app as a separated table section of the first screen tab "Services"

  • each "operation" related to a "service" is represented as a row on the table section related to that "service"

  • each list of "services" on the first screen tab "Services" is related to an "application" corresponding to the current selected "application"

  • the current "application" is selected with the first table section and row of each of the three ta b screens, where you get a screen with the list of "applications", grouped into "systems" where each system is represented as a separate table section whose rows represent its own "applications"

  • each application and each operation has its own optional description (configurable from app XML configuration file) that can be viewed from first screen tab "Services" with right push button

  • from the first screen tab "Services" can also be view and modified, through "Edit" button, the XML configuration importing it from a configurable URL or from clipboard

  • with the second screen tab, "Settings", can be modified a subset of configuration info related to current selected application, such as:

    • application URL

    • HTTP method (GET or POST)

    • application level mailing list

    • seconds before timeout for HTTP request/reply

    • switch to enable or disable logs (by default are disabled, set to ON the switch or set to "true" the "log" application attribute to enable)

    • path of each operation

  • on the third screen tab, "Log", can be viewed and exported to a mailing list (common to all system, system level or application level) sent (request) and received (XML/JSON response) HTTP messages, related to a single or entire list request/reply message exchange, with log reset capability

  • on "Configuration" screen, selected from "Services" screen with "Edit" button, can be specified: (1) the XML configuration on second tab "XML" or (2) the URL of this XML configuration from "URL" tab, or a text containing a list of URL from which is read the first "not commented" URL (i.e. not containing the # character) related to the XML configuration or related to a text containing a list of URL to XML configuration (from which is read the first "not commented" URL); see http://www.mysvc.it/myapps/webservice/examples.txt for an example of this text configuration

Use case

A typical use case of "WebService" app is to access IT legacy systems developing web service provider as adapters, e.g. J2EE servlet/JSP or PHP script accessing data using JDBC or filesystem. In order to test a web service on app user interface before its implementation on application server is sufficient to stub the web service provider using as operation path (by app XML configuration file or by app user interface) a path to a static .xml or .json file on a web/application server using it as XML/JSON response.

Examples

The following is an example of app XML configuration file

<?xml version="1.0"?>
<services name="Services">
<!--
This is the example XML configuration file related to iOS app named "WebService" (see http://www.mysvc.it/myapps/webservice).

Summary:

The "WebService" app is a generic client of REST web services based on a synchronous request/reply interface protocol using standard HTTP (GET or POST) and XML or JSON respectively as request and response message types accessing any application server as web service provider, where the app user interface and managed web services info are configurable from a single XML configuration file, with advanced features such as export to a (configurable) mailing list of sent/received HTTP messages, mapping from nodes of XML or JSON response tree and response fields on user interface through XPATH formulas in order to drill down to response details with custom user interface navigation or handling a web page (e.g. HTML or PDF) as entire response or (for XML response type) single response field with field value identifying the "url" of web page or its "content" (clear with xhtml or encoded with base64 with other mime types, exportable by email).

The app, driven by its XML configuration file (with a subset of parameters configurable from user interface too), manages a set of (web) "applications" (logically grouped into "systems"), where each application, identified by an http URL (e.g. "http://www.myserver.com/myapp") provides a set of "operations" (logically grouped into "services"), where each operation, identified by a path (the ending part of operation URL, e.g. "/myservice/myoperation") corresponds to an HTTP GET or POST request to a web service (having application URL as prefix, e.g. "http://www.myserver.com/myapp/myservice/myoperation") returning as response an XML, a JSON (or to a static XML or JSON file in order to stub the web service before its implementation) or a web page (e.g. HTML or PDF).

Selecting the current "application" the app user interface change itself in order to reflect its services and related operations, handling the entry of request fields, the HTTP (GET or POST) request message sending and the (custom) navigation to response fields corresponding to XML or JSON response tree nodes with mapping through XPATH formulas specified on XML configuration file, where the XPATH formulas for JSON are related to the "equivalent" XML (without tag attributes) of JSON.
Each "operation" contains its own "request" and "response" message.
Each "request field" corresponds to a <name>=<value> pair on HTTP request message.
If no "response" is specified on XML configuration then the application server response is a web page instead of XML or JSON tree.
Each "request" and "response" message contains the list of its "fields", logically grouped into field "groups".
Each "response field" has a "path" attribute representing the XPATH formula to a node of XML or JSON response tree and can contains recursively (with any depth) a list of more field groups or a single field group identified by an XPATH formula to a node of XML or JSON response tree having more occurrences.
If a mime-type is specified as value for "type" attribute of a response field (e.g. type="text/html" or type="application/pdf") then field is related to a web page.
Each field can be defined as reference to any another field.
Each application or system can contains an optional list of error codes with related descriptions for error specific popup messages on user interface.

Example of XML configuration:

<services name="myname">
 <system name="mysystem">
  <application name="myapp" url="http://www.myapp.com">
   <service name="myservice">
    <operation name="myoperation" path="/path/to/myoperation"/>
    <operation name="myoperation2" url="http://www.myapp.com/path/to/myoperation2"/>
    <operation name="myoperation3" path="/path/to/myoperation3">
    <operation name="myoperation4" path="/path/to/myoperation4"/>
    <operation name="myoperation5" url="http://myapp.com/path/to/myoperation5"/>
    </operation>
    ...
    <operation name="myoperation6" path="/path/to/myoperation6">
     <request name="request">
      <group name="mygroup1">
       <field name="field1"/>
       <field name="field2" type="text"/>
       <field name="fieldN" value="mydefault">
        <value>value_1<value>
        <value>value_2<value>
       </field>
      </group>
     </request>
     <response name="response">
      <group name="mygroup2">
       <field name="field1" path="/xpath/to/xml/response/node/attribute/for/field/@value"/>
       <field name="field2" path="/xpath/to/xml/response/node/for/field/value"/>
       <field name="field3" type="html" path="/xpath/to/xml/response/node/for/field/html/content/enclosed/with/cdata"/>
       <field name="details">
        <group name="orders">
         <field name="product A" path="/data/product_A/orders_num"/>
         <field name="product B" path="/data/product_B/orders_num"/>
         <field name="payment method" path="/data/payment_method"/>
         <field name="myreport" type="url"/>
        </group>
       </field>
       <field name="contacts">
        <group name="contact" path="/data/contact">
         <field name="first name" path="first_name"/>
         <field name="last name" path="last_name"/>
         <field name="email" path="email"/>
         <field name="telephone" path="telephone"/>
        </group>
       </field>
      </group>
     </response>
   ...

Details:

From the app XML configuration file, imported from an http URL or from clipboard (or exported to email or clipboard):
- can be specified a set of "applications" logically grouped into "systems"
    <?xml version="1.0"?>
    <services>
      <system name="mysystem_1">
        <application name="myapplication_11" url="http://www.myapp_11">
          <description>...</description>
          ...
        </application>
        ...
        <application name="myapplication_1N" url="http://www.myapp_1N?myparam1=1">
          <description>...</description>
        ...
        </application>
      </system>
      ...
      <system name="mysystem_N">
        <application name="myapplication_N1" url="http://www.myapp_N1?myparam1=1&amp;myparam2=2">
          <description>...</description>
          ...
        </application>
        ...
        <application name="myapplication_NN" url="http://www.myapp_NN">
          <description>...</description>
        ...
        </application>
      </system>
    </services>
- each application, identified by an http URL, provide a set of "operations" logically grouped into "services"
        <application name="myapplication" url="http://www.myapplication">
          <service name="myservice_1">
            <operation name="myoperation_11" path="/path/to/myoperation_11">
              <description>...</description>
              ...
            </operation>
            ...
            <operation name="myoperation_1N" path="/path/to/myoperation_1N">
              <description>...</description>
              ...
            </operation>
          </service>
          ...
          <service name="myservice_N">
            <operation name="myoperation_N1" path="/path/to/myoperation_N1">
              <description>...</description>
              ...
            </operation>
            ...
            <operation name="myoperation_NN" path="/path/to/myoperation_NN">
              <description>...</description>
              ...
            </operation>
          </service>
        </application>
- for each operation, identified by a path (e.g. "/myservice/myoperation"), the server, from the URL having the application URL as prefix (e.g. "http://www.myserver.com/myapp/myservice/myoperation") provide (1) the XML or JSON response corresponding to its own specific HTTP GET or POST request or, if no response is specified, (2) a web page as output
- an "url" can be specified on operations instead of "path"
- if no request and no response is specified on operation then that operation is related to a web page as response (with GET request)
- each "operation" contains its own "request" and "response" message
- each "request" and "response" message contains the list of its "fields", logically grouped into field "groups"
            <operation name="myoperation" path="/path/to/myoperation">
              <description>...</description>
              <request name="request">
                <group name="group_1">
                  <field name="field_11"/>
                  <field name="field_12" type="text"/>
                  <field name="field_13" type="number" default="1"/>
                  ...
                  <field name="field_1N" value="value_1">
                   <value>value_1<value>
                   <value>value_2<value>
                   ...
                   <value>value_K<value>
                  </field>
                </group>
                 ...
                <group name="group_M">
                  <field name="field_M1"/>
                  <field name="field_M2"/>
                  ...
                  <field name="field_MN"/>
                </group>
              </request>
              <response name="response">
                <group name="group_L">
                  <field name="field_L1" path="/xpath/to/xml/response/node/attribute/for/field/@value"/>
                  <field name="field_L2" path="/xpath/to/xml/response/node/for/field/value"/>
                  <field name="details">
                    <group name="orders">
                      <field name="product A" path="/data/product_A/orders_num"/>
                      <field name="product B" path="/data/product_B/orders_num"/>
                      <field name="payment method" path="/data/payment_method"/>
                    </group>
                    <group name="trouble tickets">
                      <field name="total" path="/data/trouble_tickets/number"/>
                      <field name="opened" path="/data/@opened_trouble_tickets"/>
                    </group>
                  </field>
                  ...
                  <field name="contacts">
                    <group name="contact" path="/data/contact">
                      <field name="first name" path="first_name"/>
                      <field name="last name" path="last_name"/>
                      <field name="email" path="email"/>
                      <field name="telephone" path="telephone"/>
                    </group>
                  </field>
                </group>
                 ...
                <group name="group_P">
                  <field name="field_P1"/>
                  <field name="field_P2"/>
                  ...
                  <field name="field_PN"/>
                </group>
              </response>
            </operation>
- if a response has not XML format (the default) but has JSON format the response tag must have an attribute type="json"
- for JSON response is automatically created by the app an equivalent XML in order to use XPATH to indentify fields on JSON response tree (see the two JSON web service operations on example configuration file for this mapping from JSON to XML)- in order to get the XML response equivalent to JSON response you must export the response to email from the
"root" response screen (before "drill down" on other response details), having two attached file: the first one is the CSV file with details on current response screen, the second one is the XML file equivalent to JSON; the JSON response message is retrievable from logs
- each request field (corresponding to a <name>=<value> pair on HTTP request message):
  - has a "name" attribute used by user interface label
  - has an optional "http-name" attribute used to set name of corresponding HTTP parameter (default as "name")
  - has its own "type" attribute:
    - "string" (default)
    - "text" (can contains more lines of text, to be used with POST HTTP method)
    - "number"
    - "password"
    - "url"
    - list of values (if contains one or more "value" child node)
    - "ref" (to use if the field is a reference to another field, identified by the "id" attribute)
  - has an optional "required" attribute (default to "false") used to require (if set to "true") a not empty value
  - has an optional "value" attribute as default value of field (also used as default for list of value fields)
  - has an optional "read-only" attribute (default to "false") set to "true" if the field value cannot be modified
- each response field:
  - has a "path" attribute representing the xpath formula of a node of XML response tree
  - can contains recursively a list of more field groups or a single field group identified by an xpath formula of a node of XML response tree having more occurrences
  - has an optional "subtype" attribute: if set to "error" then is used for system level and application level mapping from error codes and popup error description on user interface, else if set to "password" show an hidden input field
- if a response has a JSON format then the "response" tag must have an attribute type="json"
- each field can be a reference to any another field (if type is "ref")
- each "application" and "system" can contains an optional list of error codes with related descriptions for popup messages on user interface
    <errors>
      <error code="1">Invalid email or password</error>
      <error code="2">Email already used</error>
      <error code="3">Password too short</error>
    </errors>
- can be defined at system or application level a mailing list for log export by email
    <emails>
      <email type="cc">email_1@gmail.com</email>
      <email>email_2@gmail.com</email>
      <email>email_3@gmail.com</email>
    </emails>

Starting from root to leafs of the tree related to the XML configuration file, we have "system->application->service->operation->request/response->group->field" entities, where:
- "services", "systems" and "groups" are only logical entities to group respectly "operations", "applications" and "fields": each "system" is a list of "applications", each "service" is a list of "operations" and each "group" is a list of "fields"
- "operations" and "applications" are the physical entities: each "application", identified by the URL prefix common to all its own "operations", provides a set of "operations", each identified by the ending path of the complete URL (e.g. the path of a PHP script or the path to a J2EE servlet or JSP page) and corresponding to an HTTP GET or POST REST request/reply web service returning an XML as response

Regarding to the app user interface:
- there are three main screen tabs: "Services", "Settings" and "Log"
- each "service", a logical group of "operations", is represented on the app as a separated table section of the first screen tab "Services"
- each "operation" related to a "service" is represented as a row on the table section related to that "service"
- each list of "services" on the first screen tab "Services" is related to an "application" corresponding to the current selected "application"
- the current "application" is selected with the first table section and row of each of the three ta b screens, where you get a screen with the list of "applications", grouped into "systems" where each system is represented as a separate table section whose rows represent its own "applications"
- each application and each operation has its own optional description (configurable from app XML configuration file) that can be viewed from first screen tab "Services" with right push button
- from the first screen tab "Services" can also be view and modified, through "Edit" button, the XML configuration importing it from a configurable URL or from clipboard
- with the second screen tab, "Settings", can be modified a subset of configuration info related to current selected application, such as:
  - application URL
  - HTTP method (GET or POST)
  - application level mailing list
  - seconds before timeout for HTTP request/reply
  - switch to enable or disable logs (by default are disabled, set to ON the switch or set to "true" the "log" application attribute to enable)
  - path of each operation
- on the third screen tab, "Log", can be viewed and exported to a mailing list (common to all system, system level or application level) sent (request) and received (response) HTTP messages, related to a single or entire list request/reply message exchange, with log reset capability
- on "Configuration" screen, selected from "Services" screen with "Edit" button, can be specified: (1) the XML configuration on second tab "XML" or (2) the URL of this XML configuration from "URL" tab, or a text containing a list of URL from which is read the first "not commented" URL (i.e. not containing the '#' character) related to the XML configuration or related to a text containing a list of URL to XML configuration (from which is read the first "not commented" URL); see http://www.mysvc.it/myapps/webservice/examples.txt for an example of
 this text configuration

A typical use case of "WebService" app is to access IT legacy systems developing web service provider as adapters, e.g. J2EE servlet/JSP or PHP script accessing data using JDBC or filesystem.

In order to test a web service on app user interface before its implementation on application server is sufficient to stub the web service provider using as operation path (by app XML configuration file or by app user interface) a path to a static .xml or .json file on a web/application server using it as XML/JSON response.

-->
<system name="Example">
  <application name="Orders" url="http://www.mysvc.it/myapps/webservice/example">
    <description>
This is an example application
    </description>
    <service name="Registration">
       <operation name="Registration" path="/register.xml?pin=123&amp;msisdn=3456789012">
         <!--
         Request (http GET): http://www.mysvc.it/myapps/webservice/example/register.xml?pin=123&msisdn=3456789012&email=...&password=...
         Response (XML):
         <?xml version="1.0"?>
         <register>
           <response status="0" reason="registration successful"/>
         </register>
         -->
         <description>Register new user...</description>
          <request name="Registration">
            <group name="Data">
              <field name="Email"/>
              <field name="Password" subtype="password"/>
            </group>
          </request>
          <response name="Registration Response">
            <group name="Response">
              <field name="Status" subtype="error" path="/register/response/@status"/>
              <field name="Reason" required="false" path="/register/response/@reason"/>
            </group>
          </response>
       </operation>
    </service>
    <service name="Session">
       <operation name="Login" path="/login.xml">
       <!--
       Request (http GET): http://www.mysvc.it/myapps/webservice/example/login.xml?email=...&password=...
       Response (XML):
       <?xml version="1.0"?>
       <login>
         <response status="0" reason="login successful"/>
         <session id="123456789" expires="2011-09-28 12:13:00"/>
       </login>
       -->
       <description>Description of
Operation Login...
       </description>
          <request name="Login">
            <group name="Account">
              <field name="Email"/>
              <field name="Password" subtype="password"/>
            </group>
          </request>
          <response name="Login Response">
            <group name="Response">
              <field name="Status" subtype="error" path="/login/response/@status"/>
              <field name="Reason" required="false" path="/login/response/@reason"/>
            </group>
            <group name="Session">
              <field name="Id" path="/login/session/@id" http-name="sessionid" id="Session.Id" read-only="true"/>
              <field name="Expires" path="/login/session/@expires"/>
            </group>
          </response>
       </operation>
       <operation name="Logout" path="/logout.xml">
         <!--
         Request (http GET): http://www.mysvc.it/myapps/webservice/example/logout.xml?sessionid=...
         Response (XML):
         <?xml version="1.0"?>
         <logout>
           <response status="4" reason="invalid session"/>
         </logout>
         -->
         <description>Description of Operation Logout...</description>
          <request name="Logout">
            <group name="Session">
              <field ref="Session.Id"/>
            </group>
          </request>
          <response name="Logout Response">
            <group name="Response">
              <field name="Status" subtype="error" path="/logout/response/@status"/>
              <field name="Reason" path="/logout/response/@reason"/>
            </group>
          </response>
       </operation>
    </service>
    <service name="Order">
       <operation name="Product A" path="/order-a.xml" method="POST">
         <!--
         Request (http POST): http://www.mysvc.it/myapps/webservice/example/order-a.xml
         ...
         quantity=...&subtype=...&addr=...&note=...&key=...
         Response (XML):
         <?xml version="1.0"?>
         <order_a>
           <response>
             <code>0</code>
             <description>order of product A successful</description>
           </response>
         </order_a>
         -->
         <description>Order product A...</description>
          <request name="Request">
            <group name="Data">
              <field name="Quantity" type="number"/>
              <field name="Subtype" value="A1">
                <value>A1</value>
                <value>A2</value>
                <value>A3</value>
              </field>
              <field name="Address" type="string" http-name="addr"/>
              <field name="Note" type="text" required="false"/>
              <field name="Authorization key" value="xyz" read-only="true" http-name="key"/>
              <field ref="Session.Id"/>
            </group>
          </request>
          <response name="Response">
            <group name="Response">
              <field name="Status" subtype="error" path="/order_a/response/code"/>
              <field name="Reason" required="false" path="/order_a/response/description"/>
            </group>
          </response>
       </operation>
       <operation name="Product B" path="/order-b.xml">
         <!--
         Request (http GET): http://www.mysvc.it/myapps/webservice/example/order-b.xml?quantity=...&subtype=...&addr=...&note=...&key=...
         Response (XML):
         <?xml version="1.0"?>
         <order_b>
           <response status="5">product B not available</response>
         </order_b>
         -->
         <description>Order product B...</description>
          <request name="Request">
            <group name="Data">
              <field name="Quantity" type="number"/>
              <field name="Subtype" value="B1">
                <value>B1</value>
                <value>B2</value>
                <value>B3</value>
              </field>
              <field name="Address" type="string"/>
              <field name="Note" type="text"/>
              <field ref="Session.Id"/>
            </group>
          </request>
          <response name="Response">
            <group name="Response">
              <field name="Status" subtype="error" path="/order_b/response/@status"/>
              <field name="Reason" required="false" path="/order_b/response"/>
            </group>
          </response>
       </operation>
       <operation name="Report A (HTML)" path="/report-a.html">
         <!--
         Request (http GET): http://www.mysvc.it/myapps/webservice/example/report-a.html?from=...&to=...
         Response (HTML)
         -->
         <description>Report of orders for product A (HTML)...</description>
          <request name="Report A">
            <group name="Dates">
              <field name="From" value="Jan">
                <value>Jan</value>
                <value>Feb</value>
                <value>Mar</value>
                <value>Apr</value>
                <value>Maj</value>
                <value>Jun</value>
                <value>Jul</value>
                <value>Ago</value>
                <value>Sep</value>
                <value>Oct</value>
                <value>Nov</value>
                <value>Dec</value>
              </field>
              <field name="To" value="Dec">
                <value>Jan</value>
                <value>Feb</value>
                <value>Mar</value>
                <value>Apr</value>
                <value>Maj</value>
                <value>Jun</value>
                <value>Jul</value>
                <value>Ago</value>
                <value>Sep</value>
                <value>Oct</value>
                <value>Nov</value>
                <value>Dec</value>
              </field>
            </group>
          </request>
       </operation>
       <operation name="Report B (PDF)" path="/report-b.pdf">
         <!--
         Request (http GET): http://www.mysvc.it/myapps/webservice/example/report-b.pdf?from=...&to=...
         Response (PDF)
         -->
         <description>Report of orders for product B (PDF)...</description>
          <request name="Report B">
            <group name="Dates">
              <field name="From" value="Jan">
                <value>Jan</value>
                <value>Feb</value>
                <value>Mar</value>
                <value>Apr</value>
                <value>Maj</value>
                <value>Jun</value>
                <value>Jul</value>
                <value>Ago</value>
                <value>Sep</value>
                <value>Oct</value>
                <value>Nov</value>
                <value>Dec</value>
              </field>
              <field name="To" value="Dec">
                <value>Jan</value>
                <value>Feb</value>
                <value>Mar</value>
                <value>Apr</value>
                <value>Maj</value>
                <value>Jun</value>
                <value>Jul</value>
                <value>Ago</value>
                <value>Sep</value>
                <value>Oct</value>
                <value>Nov</value>
                <value>Dec</value>
              </field>
            </group>
          </request>
       </operation>
       <operation name="Report C (HTML/PDF)" path="/report-c.xml">
         <!--
         Request (http GET): http://www.mysvc.it/myapps/webservice/example/report-c.xml?subtype=...
         Response (XML)
         <?xml version="1.0"?>
         <report_c>
           <response>
             <code>0</code>
             <description>order of product A successful</description>
             <report_c1>
               <![CDATA[
               <html>
               <body>
               <h1>Report C1</h1>
               <table>
               <tr>
               <td>2002</td>
               <td>2003</td>
               <td>2004</td>
               <td>2005</td>
               <td>2006</td>
               </tr>
               <tr>
               <td>123$</td>
               <td>234$</td>
               <td>345$</td>
               <td>456$</td>
               <td>567$</td>
               </tr>
               </table>
               </body>
               </html>
               ]]>
             </report_c1>
           <report_c2>
             PGh0bWw+DQo8Ym9keT4NCjxoMT5SZXBvcnQgQzI8L2gxPg0KPHRhYmxlPg0KPHRyPg0KPHRkPjIw
             MDM8L3RkPg0KPHRkPjIwMDQ8L3RkPg0KPHRkPjIwMDU8L3RkPg0KPHRkPjIwMDY8L3RkPg0KPHRk
             PjIwMDI8L3RkPg0KPC90cj4NCjx0cj4NCjx0ZD4yMzQkPC90ZD4NCjx0ZD4zNDUkPC90ZD4NCjx0
             ZD40NTYkPC90ZD4NCjx0ZD41NjckPC90ZD4NCjx0ZD4xMjMkPC90ZD4NCjwvdHI+DQo8L3RhYmxl
             Pg0KPC9ib2R5Pg0KPC9odG1sPg==
           </report_c2>
           <report_c3>
JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0ZpbHRlci9GbGF0ZURl
Y29kZT4+CnN0cmVhbQp4nH3SsQrCMBAG4D1PcbNgvVyTSwMlYEUHNyHgIG5awUGwi6/vtXWxJCEQ
SML3J/wEKw0f9QaUwZrAeYLhrs4reP12EYaH6qKyXDXgaqwI4g02Bw1kIPaXFnXQLVJYU4t1kMmg
nRaMDpvxzIdrPKp9VKdlZiNp7J0kT5kE8oTYSySSjDrEZ4ppNCLyzuSctZUrOJtxpLmgOKfYS7k5
56SxtJtLYbdADXrcYoe78dJyMQk7yrps53ISdpSmaKeCElJ+gvyCopxLSlieSvq3J/gC14mTMQpl
bmRzdHJlYW0KZW5kb2JqCgozIDAgb2JqCjIxMgplbmRvYmoKCjUgMCBvYmoKPDwvTGVuZ3RoIDYg
MCBSL0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGgxIDE3MTI4Pj4Kc3RyZWFtCnic7Xt7fJTF1fCZ
mefZSzab3dyzue2z2ezmsrmRCyFxS56QhFvCHSGhYrK5kUBIQi5gEExAEQxgqFXUqhC1eENfNolg
QF9BP7W1tUV78/K1Ei22akvLa9HWCtnvzOyGi6/t+76/3/f7fX98fZ6cM2fmnJk5c+bMmZndbE9X
bxMEwwAwUBvWezqTLFFhAPAGAAlr2NijRL2XF4f0BID2vebONeu7nn7XDqB/AUAeWdPW1zy0ZfNx
AFMnQGhXS5OnsaslOwRAOYttTG/BgmWTfVoAWzzmk1vW99z0KinKx7yK+fy2jgbPzYn3xWK+B/Px
6z03dS6Xb5Qxvw/zSrtnfdMvbukNxbwX23+zs6Mb5Riy8gY4v7OrqfPT1/+Yjflh1KECywi+/AlG
UsPzlEmyRqvTBxmC4f/HR74ToQqsCPHsbsC59H2AgPPj+3hyvu+ivA7sk2t9EywchZ8JAIAD9sNB
SIbzZBq8DKdgPjwGpbAY7oY5cBqOQAj0kR+DBHYohyfAQaxAYTZEExnuh3fhBuiCj2ACUqES3idh
2E4FdEIUFPk+QVwJu3zHUSoIyuDf4ARpI8sgG+m5NIO4sOch3ymIhlTfT3zvYO4h+Igk+0ZgLlK/
g1BIgX74DoTBWviR7yJqmgz18DjZQj4BG9TBbilfGvStg+vgKPySVCK1APrkd/RHoQ1rPUqiySnf
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
TmV3Um9tYW5QU01UCi9GbGFncyA2Ci9Gb250QkJveFstNTY4IC0zMDYgMjAwMCAxMDA3XS9JdGFs
aWNBbmdsZSAwCi9Bc2NlbnQgODkxCi9EZXNjZW50IC0yMTYKL0NhcEhlaWdodCAxMDA2Ci9TdGVt
ViA4MAovRm9udEZpbGUyIDUgMCBSCj4+CmVuZG9iagoKOCAwIG9iago8PC9MZW5ndGggMjc1L0Zp
bHRlci9GbGF0ZURlY29kZT4+CnN0cmVhbQp4nF3RzW6EIBAA4DtPwXF72Ii6v4kx2dpu4qE/qe0D
IIyWpAJBPPj2ZWDbJj1ovmFmzDhkTfvQauWzV2dEB54OSksHs1mcANrDqDTJCyqV8LcovsXELclC
b7fOHqZWD6aqSPYWcrN3K91cpOnhjmQvToJTeqSbj6YLcbdY+wUTaE8ZqWsqYQjfeeL2mU+Qxa5t
K0Na+XUbWv4K3lcLtIhxnkYRRsJsuQDH9QikYqym1fVaE9DyXy78QmzpB/HJXSjNQyljZVEHF8kM
XSYf0LvkI3qffEIfks/oY3KOPkUXO/Q5nZfoS3I8v0/eo5tU/xgHvk2Go+Nuf1ZCxeJcWEe8gLgH
3IDS8HtH1ljsis833gGHGQplbmRzdHJlYW0KZW5kb2JqCgo5IDAgb2JqCjw8L1R5cGUvRm9udC9T
dWJ0eXBlL1RydWVUeXBlL0Jhc2VGb250L0NBQUFBQStUaW1lc05ld1JvbWFuUFNNVAovRmlyc3RD
aGFyIDAKL0xhc3RDaGFyIDEyCi9XaWR0aHNbNzc3IDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUw
MCA1MDAgNTAwIDUwMCA1MDAgMjUwIF0KL0ZvbnREZXNjcmlwdG9yIDcgMCBSCi9Ub1VuaWNvZGUg
OCAwIFIKPj4KZW5kb2JqCgoxMCAwIG9iago8PC9MZW5ndGggMTEgMCBSL0ZpbHRlci9GbGF0ZURl
Y29kZS9MZW5ndGgxIDE4NDU2Pj4Kc3RyZWFtCnic7Xt5QJzVtfi53/1mn2EWYFgGmI/5YCAzrAMk
kAWG1RgkIQmJEEMDYQkkBAhLItEGYo1VXJJWa4321bhvfc0wpHGSuPDUp7VVg9szVX9J1LR1w+Tn
i/ZVhXnn3plsrW3s7/3x/vj1+zj3nHvPueeee865yzAw0DfYBnoYAQrelo3NvQ6DTg0ALwEQS8vm
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
M2WFbKzFm76FvYmxF7OxNrGxNrGxFnsX87Gql5WR6tr6MTWUNZSvDuFxQafF1dJkS24os5p6i/nS
mZccu812UATyMOjcDT69XOYzIDBWZmlmKWPhkmasCPYvr2FW7LZ5ybaD5OEwy4TNZrkMBmIrOyvw
px+fgYFBfNDH/f0hX8eGGAPuSs5HgQGkBviDkkgz6OetYf4ADJ573O6QLPS7y+vHamoqYzsrbOwP
Ytm9293QD253aEC3G3BMnDW/6Fv5RV+ntOa9WfP7mi9q6AS/4U8iHOc3/Am83U8iHMcbfhKdKJ4s
Pl5MJ2oma46j7NHJo8eP0onMyczjmXRO2IJ+/o9eaOG5d9DdP8ia3YTPls/bzf/qfQAJNuszbujn
jAHuGHxC7byrGxW5z3Z3nyP6Q8xB3iXU2n8uh5HB1A8Muv/6CbfiFvzfE3jNXwplbmRzdHJlYW0K
ZW5kb2JqCgoxMSAwIG9iagoxMDUwNgplbmRvYmoKCjEyIDAgb2JqCjw8L1R5cGUvRm9udERlc2Ny
aXB0b3IvRm9udE5hbWUvQkFBQUFBK1RpbWVzTmV3Um9tYW5QUy1Cb2xkTVQKL0ZsYWdzIDYKL0Zv
bnRCQm94Wy01NTggLTMwNiAyMDAwIDEwMjZdL0l0YWxpY0FuZ2xlIDAKL0FzY2VudCA4OTEKL0Rl
c2NlbnQgLTIxNgovQ2FwSGVpZ2h0IDEwMjUKL1N0ZW1WIDgwCi9Gb250RmlsZTIgMTAgMCBSCj4+
CmVuZG9iagoKMTMgMCBvYmoKPDwvTGVuZ3RoIDI2NC9GaWx0ZXIvRmxhdGVEZWNvZGU+PgpzdHJl
YW0KeJxdkE1rxCAQhu/+Co/bw6L52u1CCJQtgRz6QdP+AKOTVGhUjDnk31cn2xZ6UJ6ZeV+dGXbt
HjujA3v1VvYQ6KiN8rDY1UugA0zakCynSstwi/CWs3CERW+/LQHmzoy2rgl7i7Ul+I0eHpQd4I6w
F6/AazPRw8e1j3G/OvcFM5hAOWkaqmCM7zwJ9yxmYOg6diqWddiO0fIneN8c0BzjbG9FWgWLExK8
MBOQmvOG1m3bEDDqX+2yO4ZRfgoflVlUcl7lTeQc+VQlLpDPPHG559vE1Z5H/WnnMvEZOUf9PXJZ
JL4gFwX2cvs1dZXW9jMtlav3cVLcLY6YhtMGftfvrEsuPN+avH/vCmVuZHN0cmVhbQplbmRvYmoK
CjE0IDAgb2JqCjw8L1R5cGUvRm9udC9TdWJ0eXBlL1RydWVUeXBlL0Jhc2VGb250L0JBQUFBQStU
aW1lc05ld1JvbWFuUFMtQm9sZE1UCi9GaXJzdENoYXIgMAovTGFzdENoYXIgOQovV2lkdGhzWzc3
NyA3MjIgNDQzIDU1NiA1MDAgNDQzIDMzMyAyNTAgNzIyIDUwMCBdCi9Gb250RGVzY3JpcHRvciAx
MiAwIFIKL1RvVW5pY29kZSAxMyAwIFIKPj4KZW5kb2JqCgoxNSAwIG9iago8PC9GMSAxNCAwIFIv
RjIgOSAwIFIKPj4KZW5kb2JqCgoxNiAwIG9iago8PC9Gb250IDE1IDAgUgovUHJvY1NldFsvUERG
L1RleHRdCj4+CmVuZG9iagoKMSAwIG9iago8PC9UeXBlL1BhZ2UvUGFyZW50IDQgMCBSL1Jlc291
cmNlcyAxNiAwIFIvTWVkaWFCb3hbMCAwIDYxMiA3OTJdL0dyb3VwPDwvUy9UcmFuc3BhcmVuY3kv
Q1MvRGV2aWNlUkdCL0kgdHJ1ZT4+L0NvbnRlbnRzIDIgMCBSPj4KZW5kb2JqCgo0IDAgb2JqCjw8
L1R5cGUvUGFnZXMKL1Jlc291cmNlcyAxNiAwIFIKL01lZGlhQm94WyAwIDAgNjEyIDc5MiBdCi9L
aWRzWyAxIDAgUiBdCi9Db3VudCAxPj4KZW5kb2JqCgoxNyAwIG9iago8PC9UeXBlL0NhdGFsb2cv
UGFnZXMgNCAwIFIKL09wZW5BY3Rpb25bMSAwIFIgL1hZWiBudWxsIG51bGwgMF0KL0xhbmcoZW4t
VVMpCj4+CmVuZG9iagoKMTggMCBvYmoKPDwvUHJvZHVjZXI8RkVGRjAwNEYwMDcwMDA2NTAwNkUw
MDRGMDA2NjAwNjYwMDY5MDA2MzAwNjUwMDJFMDA2RjAwNzIwMDY3MDAyMDAwMzMwMDJFMDAzND4K
L0NyZWF0aW9uRGF0ZShEOjIwMTIxMjAyMjEyMDAxKzAxJzAwJyk+PgplbmRvYmoKCnhyZWYKMCAx
OQowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMjMxMDMgMDAwMDAgbiAKMDAwMDAwMDAxOSAwMDAw
MCBuIAowMDAwMDAwMzAyIDAwMDAwIG4gCjAwMDAwMjMyNDYgMDAwMDAgbiAKMDAwMDAwMDMyMiAw
MDAwMCBuIAowMDAwMDEwODcwIDAwMDAwIG4gCjAwMDAwMTA4OTIgMDAwMDAgbiAKMDAwMDAxMTA5
MSAwMDAwMCBuIAowMDAwMDExNDM1IDAwMDAwIG4gCjAwMDAwMTE2NDUgMDAwMDAgbiAKMDAwMDAy
MjIzOCAwMDAwMCBuIAowMDAwMDIyMjYxIDAwMDAwIG4gCjAwMDAwMjI0NjcgMDAwMDAgbiAKMDAw
MDAyMjgwMSAwMDAwMCBuIAowMDAwMDIzMDA2IDAwMDAwIG4gCjAwMDAwMjMwNDggMDAwMDAgbiAK
MDAwMDAyMzM0NSAwMDAwMCBuIAowMDAwMDIzNDQyIDAwMDAwIG4gCnRyYWlsZXIKPDwvU2l6ZSAx
OS9Sb290IDE3IDAgUgovSW5mbyAxOCAwIFIKL0lEIFsgPDEwMDRBQjYxRDgwQTBGOEFCNzUxRjlE
OTQ4MTA2QzIwPgo8MTAwNEFCNjFEODBBMEY4QUI3NTFGOUQ5NDgxMDZDMjA+IF0KL0RvY0NoZWNr
c3VtIC9CMEZGMjVDNTkwOUJDODZEMzhDRENFRkMzM0QwOEI5NQo+PgpzdGFydHhyZWYKMjM1OTAK
JSVFT0YK
           </report_c3>
           <report_c4>http://www.mysvc.it/myapps/webservice/example/report-c4.html</report_c4>
           <report_c5>http://www.mysvc.it/myapps/webservice/example/report-c5.pdf</report_c5>
           </response>
         </report_c>
         -->
         <description>Report of orders for product C (with response field of type HTML clear (C1), HTML encoded with base64 (C2), PDF encoded with base64 (C3), URL to HTML web page (C4) or URL to PDF web page (C5))...</description>
          <request name="Report C">
            <group name="Subtype">
              <field name="Subtype" value="C1">
                <value>C1</value>
                <value>C2</value>
              </field>
            </group>
          </request>
          <response name="Report C">
            <group name="Response">
              <field name="Status" subtype="error" path="/report_c/response/code"/>
              <field name="Report C1 (HTML)" type="html" path="/report_c/response/report_c1"/>
              <field name="Report C2 (BASE64/HTML)" type="text/html" path="/report_c/response/report_c2"/>
              <field name="Report C3 (BASE64/PDF)" type="application/pdf" path="/report_c/response/report_c3"/>
              <field name="Report C4 (URL/HTML)" type="url" path="/report_c/response/report_c4"/>
              <field name="Report C5 (URL/PDF)" type="url" path="/report_c/response/report_c5" scale="true"/>
            </group>
          </response>
       </operation>
    </service>
    <service name="Sales">
       <operation name="Current year (HTML)" path="/sales-current.html"/>
       <operation name="Previous year (PDF)" url="http://www.mysvc.it/myapps/webservice/example/sales-previous.pdf" scale="true">
         <description>Sales of previous year (PDF)...</description>
       </operation>
    </service>
    <errors>
      <error code="0" type="success">No error</error>
      <error code="1">Invalid email or password</error>
      <error code="2">Email already used</error>
      <error code="3">Password too short</error>
      <error code="4">Session id not valid</error>
      <error code="5">Product B is not available</error>
    </errors>
    <!-- mailing list for log export common to all application services -->
    <emails>
      <email type="cc">email_1@gmail.com</email>
      <email>email_2@gmail.com</email>
      <email>email_3@gmail.com</email>
    </emails>
  </application>
  <!-- mailing list for log export common to all system applications -->
  <emails>
    <email>email_10@gmail.com</email>
    <email>email_12@gmail.com</email>
  </emails>
</system>
<system name="Geocoding">
  <application name="Google geocoding" url="http://maps.googleapis.com/maps/api/geocode">
    <description>
Geocoding is the process of converting addresses (like "1600 Amphitheatre Parkway, Mountain View, CA") into geographic coordinates (like latitude 37.423021 and longitude -122.083739), which you can use to place markers or position the map. The Google Geocoding API provides a direct way to access a geocoder via an HTTP request. Additionally, the service allows you to perform the converse operation (turning coordinates into addresses); this process is known as "reverse geocoding." (see http://code.google.com/apis/maps/documentation/geocoding/)
    </description>
    <service name="Geocoding">
       <operation name="Geocoding (XML)" path="/xml">
         <!--
            Request (http GET): http://maps.googleapis.com/maps/api/geocode/xml?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=false
            Response (XML):
            <GeocodeResponse>
             <status>OK</status>
             <result>
              <type>street_address</type>
              <formatted_address>1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA</formatted_address>
              <address_component>
               <long_name>1600</long_name>
               <short_name>1600</short_name>
               <type>street_number</type>
              </address_component>
              <address_component>
               <long_name>Amphitheatre Pkwy</long_name>
               <short_name>Amphitheatre Pkwy</short_name>
               <type>route</type>
              </address_component>
              <address_component>
               <long_name>Mountain View</long_name>
               <short_name>Mountain View</short_name>
               <type>locality</type>
               <type>political</type>
              </address_component>
              <address_component>
               <long_name>San Jose</long_name>
               <short_name>San Jose</short_name>
               <type>administrative_area_level_3</type>
               <type>political</type>
              </address_component>
              <address_component>
               <long_name>Santa Clara</long_name>
               <short_name>Santa Clara</short_name>
               <type>administrative_area_level_2</type>
               <type>political</type>
              </address_component>
              <address_component>
               <long_name>California</long_name>
               <short_name>CA</short_name>
               <type>administrative_area_level_1</type>
               <type>political</type>
              </address_component>
              <address_component>
               <long_name>United States</long_name>
               <short_name>US</short_name>
               <type>country</type>
               <type>political</type>
              </address_component>
              <address_component>
               <long_name>94043</long_name>
               <short_name>94043</short_name>
               <type>postal_code</type>
              </address_component>
              <geometry>
               <location>
                <lat>37.4217550</lat>
                <lng>-122.0846330</lng>
               </location>
               <location_type>ROOFTOP</location_type>
               <viewport>
                <southwest>
                 <lat>37.4188514</lat>
                 <lng>-122.0874526</lng>
                </southwest>
                <northeast>
                 <lat>37.4251466</lat>
                 <lng>-122.0811574</lng>
                </northeast>
               </viewport>
              </geometry>
             </result>
            </GeocodeResponse>
         -->
         <description>
The Geocoding API requests an XML response for "1600 Amphitheatre Parkway, Mountain View, CA"
         </description>
         <request name="Request">
           <group name="Address">
             <field name="Address" value="1600 Amphitheatre Parkway, Mountain View, CA"/>
             <field name="Sensor" value="false">
               <value>true</value>
               <value>false</value>
             </field>
           </group>
         </request>
         <response name="Response">
           <group name="Status">
             <field name="Status" subtype="error" path="/GeocodeResponse/status"/>
           </group>
           <group name="Results">
             <field name="Results">
               <group name="Result" path="/GeocodeResponse/result">
                 <field name="Type" path="type"/>
                 <field name="Formatted address" path="formatted_address"/>
                 <field name="Address components">
                   <group name="Address component" path="address_component">
                     <field name="Long name" path="long_name"/>
                     <field name="Short name" path="short_name"/>
                     <field name="Type" path="type"/>
                   </group>
                 </field>
                 <field name="Latitude" path="geometry/location/lat"/>
                 <field name="Longitude" path="geometry/location/lng"/>
                 <field name="Location type" path="geometry/location_type"/>
                 <field name="Viewport southwest" path="geometry/viewport/southwest/lat"/>
                 <field name="Viewport northeast" path="geometry/viewport/northeast/lng"/>
               </group>
             </field>
           </group>
         </response>
       </operation>
       <operation name="Geocoding (JSON)" path="/json">
         <!--
            Request (http GET): http://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=false
            Response (JSON):
            {
               "results" : [
                  {
                     "address_components" : [
                        {
                           "long_name" : "1600",
                           "short_name" : "1600",
                           "types" : [ "street_number" ]
                        },
                        {
                           "long_name" : "Amphitheatre Pkwy",
                           "short_name" : "Amphitheatre Pkwy",
                           "types" : [ "route" ]
                        },
                        {
                           "long_name" : "Mountain View",
                           "short_name" : "Mountain View",
                           "types" : [ "locality", "political" ]
                        },
                        {
                           "long_name" : "Santa Clara",
                           "short_name" : "Santa Clara",
                           "types" : [ "administrative_area_level_2", "political" ]
                        },
                        {
                           "long_name" : "California",
                           "short_name" : "CA",
                           "types" : [ "administrative_area_level_1", "political" ]
                        },
                        {
                           "long_name" : "United States",
                           "short_name" : "US",
                           "types" : [ "country", "political" ]
                        },
                        {
                           "long_name" : "94043",
                           "short_name" : "94043",
                           "types" : [ "postal_code" ]
                        }
                     ],
                     "formatted_address" : "1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA",
                     "geometry" : {
                        "location" : {
                           "lat" : 37.42291810,
                           "lng" : -122.08542120
                        },
                        "location_type" : "ROOFTOP",
                        "viewport" : {
                           "northeast" : {
                              "lat" : 37.42426708029149,
                              "lng" : -122.0840722197085
                           },
                           "southwest" : {
                              "lat" : 37.42156911970850,
                              "lng" : -122.0867701802915
                           }
                        }
                     },
                     "types" : [ "street_address" ]
                  }
               ],
               "status" : "OK"
            }
         XML response equivalent to JSON response
         used to get JSON field values through XPATH formulas (where "/root" is implicit):
         <?xml version="1.0"?>
         <root>
           <results>
             <address_components>
               <long_name>1600</long_name>
               <short_name>1600</short_name>
               <types>street_number</types>
             </address_components>
             <address_components>
               <long_name>Amphitheatre Pkwy</long_name>
               <short_name>Amphitheatre Pkwy</short_name>
               <types>route</types>
             </address_components>
             <address_components>
               <long_name>Mountain View</long_name>
               <short_name>Mountain View</short_name>
               <types>locality</types>
               <types>political</types>
             </address_components>
             <address_components>
               <long_name>Santa Clara</long_name>
               <short_name>Santa Clara</short_name>
               <types>administrative_area_level_2</types>
               <types>political</types>
             </address_components>
             <address_components>
               <long_name>California</long_name>
               <short_name>CA</short_name>
               <types>administrative_area_level_1</types>
               <types>political</types>
             </address_components>
             <address_components>
               <long_name>United States</long_name>
               <short_name>US</short_name>
               <types>country</types>
               <types>political</types>
             </address_components>
             <address_components>
               <long_name>94043</long_name>
               <short_name>94043</short_name>
               <types>postal_code</types>
             </address_components>
             <formatted_address>1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA</formatted_address>
             <geometry>
               <location>
                 <lat>37.4210943</lat>
                 <lng>-122.0852515</lng>
               </location>
               <location_type>ROOFTOP</location_type>
               <viewport>
                 <northeast>
                   <lat>37.4224432802915</lat>
                   <lng>-122.0839025197085</lng>
                 </northeast>
                 <southwest>
                   <lat>37.4197453197085</lat>
                   <lng>-122.0866004802915</lng>
                 </southwest>
               </viewport>
             </geometry>
             <types>street_address</types>
           </results>
           <status>OK</status>
         </root>
         -->
         <description>
The Geocoding API requests a JSON  response for "1600 Amphitheatre Parkway, Mountain View, CA"
         </description>
         <request name="Request">
           <group name="Address">
             <field name="Address" value="1600 Amphitheatre Parkway, Mountain View, CA"/>
             <field name="Sensor" value="false">
               <value>true</value>
               <value>false</value>
             </field>
           </group>
         </request>
         <response name="Response" type="json">
           <group name="Status">
             <field name="Status" subtype="error" path="/status"/>
           </group>
           <group name="Results">
             <field name="Results">
               <group name="Result" path="/results">
                 <field name="Formatted address" path="formatted_address"/>
                 <field name="Address components">
                   <group name="Address component" path="address_components">
                     <field name="Long name" path="long_name"/>
                     <field name="Short name" path="short_name"/>
                     <field name="Types">
                       <group name="Type" path="types">
                         <field name="Type" path="."/>
                       </group>
                     </field>
                   </group>
                 </field>
                 <field name="Latitude" path="geometry/location/lat"/>
                 <field name="Longitude" path="geometry/location/lng"/>
                 <field name="Location type" path="geometry/location_type"/>
                 <field name="Viewport southwest lng" path="geometry/viewport/southwest/lat"/>
                 <field name="Viewport southwest lat" path="geometry/viewport/southwest/lng"/>
                 <field name="Viewport northeast lng" path="geometry/viewport/northeast/lng"/>
                 <field name="Viewport northeast lat" path="geometry/viewport/northeast/lat"/>
               </group>
             </field>
           </group>
         </response>
       </operation>
       <operation name="Reverse geocoding" path="/xml">
         <!--
            Request (http GET): http://maps.googleapis.com/maps/api/geocode/xml?latlng=40.714224,-73.961452&sensor=false
            Response (XML):
            <?xml version="1.0" encoding="UTF-8"?>
            <GeocodeResponse>
             <status>OK</status>
             <result>
              <type>street_address</type>
              <formatted_address>285 Bedford Ave, Brooklyn, NY 11211, USA</formatted_address>
              <address_component>
               <long_name>285</long_name>
               <short_name>285</short_name>
               <type>street_number</type>
              </address_component>
              <address_component>
               <long_name>Bedford Ave</long_name>
               <short_name>Bedford Ave</short_name>
               <type>route</type>
              </address_component>
              <address_component>
               <long_name>Williamsburg</long_name>
               <short_name>Williamsburg</short_name>
               <type>neighborhood</type>
               <type>political</type>
              </address_component>
              <address_component>
               <long_name>Brooklyn</long_name>
               <short_name>Brooklyn</short_name>
               <type>sublocality</type>
               <type>political</type>
              </address_component>
              <address_component>
               <long_name>New York</long_name>
               <short_name>New York</short_name>
               <type>locality</type>
               <type>political</type>
              </address_component>
              <address_component>
               <long_name>Kings</long_name>
               <short_name>Kings</short_name>
               <type>administrative_area_level_2</type>
               <type>political</type>
              </address_component>
              <address_component>
               <long_name>New York</long_name>
               <short_name>NY</short_name>
               <type>administrative_area_level_1</type>
               <type>political</type>
              </address_component>
              <address_component>
               <long_name>United States</long_name>
               <short_name>US</short_name>
               <type>country</type>
               <type>political</type>
              </address_component>
              <address_component>
               <long_name>11211</long_name>
               <short_name>11211</short_name>
               <type>postal_code</type>
              </address_component>
              <geometry>
               <location>
                <lat>40.7141289</lat>
                <lng>-73.9614074</lng>
               </location>
               <location_type>ROOFTOP</location_type>
               <viewport>
                <southwest>
                 <lat>40.7127799</lat>
                 <lng>-73.9627564</lng>
                </southwest>
                <northeast>
                 <lat>40.7154779</lat>
                 <lng>-73.9600584</lng>
                </northeast>
               </viewport>
              </geometry>
             </result>
             <result>
              <type>bus_station</type>
              <type>transit_station</type>
              <formatted_address>Grand St - Bedford Av, Brooklyn, NY 11211, USA</formatted_address>
              <address_component>
               <long_name>Grand St - Bedford Av</long_name>
               <short_name>Grand St - Bedford Av</short_name>
               <type>bus_station</type>
               <type>transit_station</type>
              </address_component>
              <address_component>
               <long_name>Williamsburg</long_name>
               <short_name>Williamsburg</short_name>
               <type>neighborhood</type>
               <type>political</type>
              </address_component>
              <address_component>
               <long_name>Brooklyn</long_name>
               <short_name>Brooklyn</short_name>
               <type>sublocality</type>
               <type>political</type>
              </address_component>
              <address_component>
               <long_name>Kings</long_name>
               <short_name>Kings</short_name>
               <type>administrative_area_level_2</type>
               <type>political</type>
              </address_component>
              <address_component>
               <long_name>New York</long_name>
               <short_name>NY</short_name>
               <type>administrative_area_level_1</type>
               <type>political</type>
              </address_component>
              <address_component>
               <long_name>United States</long_name>
               <short_name>US</short_name>
               <type>country</type>
               <type>political</type>
              </address_component>
              <address_component>
               <long_name>11211</long_name>
               <short_name>11211</short_name>
               <type>postal_code</type>
              </address_component>
              <geometry>
               <location>
                <lat>40.7143210</lat>
                <lng>-73.9611510</lng>
               </location>
               <location_type>APPROXIMATE</location_type>
               <viewport>
                <southwest>
                 <lat>40.7129720</lat>
                 <lng>-73.9625000</lng>
                </southwest>
                <northeast>
                 <lat>40.7156700</lat>
                 <lng>-73.9598020</lng>
                </northeast>
               </viewport>
              </geometry>
             </result>
             <result>
              <type>bus_station</type>
              <type>transit_station</type>
              <formatted_address>Grand St - Bedford Av, Brooklyn, NY 11211, USA</formatted_address>
              <address_component>
               <long_name>Grand St - Bedford Av</long_name>
               <short_name>Grand St - Bedford Av</short_name>
               <type>bus_station</type>
               <type>transit_station</type>
              </address_component>
              <address_component>
               <long_name>Williamsburg</long_name>
               <short_name>Williamsburg</short_name>
               <type>neighborhood</type>
               <type>political</type>
              </address_component>
              <address_component>
               <long_name>Brooklyn</long_name>
               <short_name>Brooklyn</short_name>
               <type>sublocality</type>
               <type>political</type>
              </address_component>
              <address_component>
               <long_name>Kings</long_name>
               <short_name>Kings</short_name>
               <type>administrative_area_level_2</type>
               <type>political</type>
              </address_component>
              <address_component>
               <long_name>New York</long_name>
               <short_name>NY</short_name>
               <type>administrative_area_level_1</type>
               <type>political</type>
              </address_component>
              <address_component>
               <long_name>United States</long_name>
               <short_name>US</short_name>
               <type>country</type>
               <type>political</type>
              </address_component>
              <address_component>
               <long_name>11211</long_name>
               <short_name>11211</short_name>
               <type>postal_code</type>
              </address_component>
              <geometry>
               <location>
                <lat>40.7146840</lat>
                <lng>-73.9615630</lng>
               </location>
               <location_type>APPROXIMATE</location_type>
               <viewport>
                <southwest>
                 <lat>40.7133350</lat>
                 <lng>-73.9629120</lng>
                </southwest>
                <northeast>
                 <lat>40.7160330</lat>
                 <lng>-73.9602140</lng>
                </northeast>
               </viewport>
              </geometry>
             </result>
             <result>
              <type>bus_station</type>
              <type>transit_station</type>
              <formatted_address>Bedford Av - Grand St, Brooklyn, NY 11211, USA</formatted_address>
              <address_component>
               <long_name>Bedford Av - Grand St</long_name>
               <short_name>Bedford Av - Grand St</short_name>
               <type>bus_station</type>
               <type>transit_station</type>
              </address_component>
              <address_component>
               <long_name>Williamsburg</long_name>
               <short_name>Williamsburg</short_name>
               <type>neighborhood</type>
               <type>political</type>
              </address_component>
              <address_component>
               <long_name>Brooklyn</long_name>
               <short_name>Brooklyn</short_name>
               <type>sublocality</type>
               <type>political</type>
              </address_component>
              <address_component>
               <long_name>Kings</long_name>
               <short_name>Kings</short_name>
               <type>administrative_area_level_2</type>
               <type>political</type>
              </address_component>
              <address_component>
               <long_name>New York</long_name>
               <short_name>NY</short_name>
               <type>administrative_area_level_1</type>
               <type>political</type>
              </address_component>
              <address_component>
               <long_name>United States</long_name>
               <short_name>US</short_name>
               <type>country</type>
               <type>political</type>
              </address_component>
              <address_component>
               <long_name>11211</long_name>
               <short_name>11211</short_name>
               <type>postal_code</type>
              </address_component>
              <geometry>
               <location>
                <lat>40.7147100</lat>
                <lng>-73.9609990</lng>
               </location>
               <location_type>APPROXIMATE</location_type>
               <viewport>
                <southwest>
                 <lat>40.7133610</lat>
                 <lng>-73.9623480</lng>
                </southwest>
                <northeast>
                 <lat>40.7160590</lat>
                 <lng>-73.9596500</lng>
                </northeast>
               </viewport>
              </geometry>
             </result>
             <result>
              <type>neighborhood</type>
              <type>political</type>
              <formatted_address>Williamsburg, Brooklyn, NY, USA</formatted_address>
              <address_component>
               <long_name>Williamsburg</long_name>
               <short_name>Williamsburg</short_name>
               <type>neighborhood</type>
               <type>political</type>
              </address_component>
              <address_component>
               <long_name>Brooklyn</long_name>
               <short_name>Brooklyn</short_name>
               <type>sublocality</type>
               <type>political</type>
              </address_component>
              <address_component>
               <long_name>New York</long_name>
               <short_name>New York</short_name>
               <type>locality</type>
               <type>political</type>
              </address_component>
              <address_component>
               <long_name>Kings</long_name>
               <short_name>Kings</short_name>
               <type>administrative_area_level_2</type>
               <type>political</type>
              </address_component>
              <address_component>
               <long_name>New York</long_name>
               <short_name>NY</short_name>
               <type>administrative_area_level_1</type>
               <type>political</type>
              </address_component>
              <address_component>
               <long_name>United States</long_name>
               <short_name>US</short_name>
               <type>country</type>
               <type>political</type>
              </address_component>
              <geometry>
               <location>
                <lat>40.7064461</lat>
                <lng>-73.9536163</lng>
               </location>
               <location_type>APPROXIMATE</location_type>
               <viewport>
                <southwest>
                 <lat>40.6979330</lat>
                 <lng>-73.9698451</lng>
                </southwest>
                <northeast>
                 <lat>40.7182050</lat>
                 <lng>-73.9202810</lng>
                </northeast>
               </viewport>
               <bounds>
                <southwest>
                 <lat>40.6979330</lat>
                 <lng>-73.9698451</lng>
                </southwest>
                <northeast>
                 <lat>40.7182050</lat>
                 <lng>-73.9202810</lng>
                </northeast>
               </bounds>
              </geometry>
             </result>
             <result>
              <type>postal_code</type>
              <formatted_address>Brooklyn, NY 11211, USA</formatted_address>
              <address_component>
               <long_name>11211</long_name>
               <short_name>11211</short_name>
               <type>postal_code</type>
              </address_component>
              <address_component>
               <long_name>Brooklyn</long_name>
               <short_name>Brooklyn</short_name>
               <type>sublocality</type>
               <type>political</type>
              </address_component>
              <address_component>
               <long_name>New York</long_name>
               <short_name>New York</short_name>
               <type>locality</type>
               <type>political</type>
              </address_component>
              <address_component>
               <long_name>New York</long_name>
               <short_name>NY</short_name>
               <type>administrative_area_level_1</type>
               <type>political</type>
              </address_component>
              <address_component>
               <long_name>United States</long_name>
               <short_name>US</short_name>
               <type>country</type>
               <type>political</type>
              </address_component>
              <geometry>
               <location>
                <lat>40.7180036</lat>
                <lng>-73.9653715</lng>
               </location>
               <location_type>APPROXIMATE</location_type>
               <viewport>
                <southwest>
                 <lat>40.6976359</lat>
                 <lng>-73.9761669</lng>
                </southwest>
                <northeast>
                 <lat>40.7280090</lat>
                 <lng>-73.9207299</lng>
                </northeast>
               </viewport>
               <bounds>
                <southwest>
                 <lat>40.6976359</lat>
                 <lng>-73.9761669</lng>
                </southwest>
                <northeast>
                 <lat>40.7280090</lat>
                 <lng>-73.9207299</lng>
                </northeast>
               </bounds>
              </geometry>
             </result>
             <result>
              <type>sublocality</type>
              <type>political</type>
              <formatted_address>Brooklyn, NY, USA</formatted_address>
              <address_component>
               <long_name>Brooklyn</long_name>
               <short_name>Brooklyn</short_name>
               <type>sublocality</type>
               <type>political</type>
              </address_component>
              <address_component>
               <long_name>New York</long_name>
               <short_name>New York</short_name>
               <type>locality</type>
               <type>political</type>
              </address_component>
              <address_component>
               <long_name>Kings</long_name>
               <short_name>Kings</short_name>
               <type>administrative_area_level_2</type>
               <type>political</type>
              </address_component>
              <address_component>
               <long_name>New York</long_name>
               <short_name>NY</short_name>
               <type>administrative_area_level_1</type>
               <type>political</type>
              </address_component>
              <address_component>
               <long_name>United States</long_name>
               <short_name>US</short_name>
               <type>country</type>
               <type>political</type>
              </address_component>
              <geometry>
               <location>
                <lat>40.6500000</lat>
                <lng>-73.9500000</lng>
               </location>
               <location_type>APPROXIMATE</location_type>
               <viewport>
                <southwest>
                 <lat>40.5510419</lat>
                 <lng>-74.0566300</lng>
                </southwest>
                <northeast>
                 <lat>40.7394460</lat>
                 <lng>-73.8333650</lng>
                </northeast>
               </viewport>
               <bounds>
                <southwest>
                 <lat>40.5510419</lat>
                 <lng>-74.0566300</lng>
                </southwest>
                <northeast>
                 <lat>40.7394460</lat>
                 <lng>-73.8333650</lng>
                </northeast>
               </bounds>
              </geometry>
             </result>
             <result>
              <type>administrative_area_level_2</type>
              <type>political</type>
              <formatted_address>Kings, New York, USA</formatted_address>
              <address_component>
               <long_name>Kings</long_name>
               <short_name>Kings</short_name>
               <type>administrative_area_level_2</type>
               <type>political</type>
              </address_component>
              <address_component>
               <long_name>New York</long_name>
               <short_name>NY</short_name>
               <type>administrative_area_level_1</type>
               <type>political</type>
              </address_component>
              <address_component>
               <long_name>United States</long_name>
               <short_name>US</short_name>
               <type>country</type>
               <type>political</type>
              </address_component>
              <geometry>
               <location>
                <lat>40.6528762</lat>
                <lng>-73.9594940</lng>
               </location>
               <location_type>APPROXIMATE</location_type>
               <viewport>
                <southwest>
                 <lat>40.5510419</lat>
                 <lng>-74.0566300</lng>
                </southwest>
                <northeast>
                 <lat>40.7394460</lat>
                 <lng>-73.8333650</lng>
                </northeast>
               </viewport>
               <bounds>
                <southwest>
                 <lat>40.5510419</lat>
                 <lng>-74.0566300</lng>
                </southwest>
                <northeast>
                 <lat>40.7394460</lat>
                 <lng>-73.8333650</lng>
                </northeast>
               </bounds>
              </geometry>
             </result>
             <result>
              <type>locality</type>
              <type>political</type>
              <formatted_address>New York, NY, USA</formatted_address>
              <address_component>
               <long_name>New York</long_name>
               <short_name>New York</short_name>
               <type>locality</type>
               <type>political</type>
              </address_component>
              <address_component>
               <long_name>New York</long_name>
               <short_name>New York</short_name>
               <type>administrative_area_level_2</type>
               <type>political</type>
              </address_component>
              <address_component>
               <long_name>New York</long_name>
               <short_name>NY</short_name>
               <type>administrative_area_level_1</type>
               <type>political</type>
              </address_component>
              <address_component>
               <long_name>United States</long_name>
               <short_name>US</short_name>
               <type>country</type>
               <type>political</type>
              </address_component>
              <geometry>
               <location>
                <lat>40.7143528</lat>
                <lng>-74.0059731</lng>
               </location>
               <location_type>APPROXIMATE</location_type>
               <viewport>
                <southwest>
                 <lat>40.4773990</lat>
                 <lng>-74.2590900</lng>
                </southwest>
                <northeast>
                 <lat>40.9175770</lat>
                 <lng>-73.7002720</lng>
                </northeast>
               </viewport>
               <bounds>
                <southwest>
                 <lat>40.4773990</lat>
                 <lng>-74.2590900</lng>
                </southwest>
                <northeast>
                 <lat>40.9175770</lat>
                 <lng>-73.7002720</lng>
                </northeast>
               </bounds>
              </geometry>
             </result>
             <result>
              <type>administrative_area_level_1</type>
              <type>political</type>
              <formatted_address>New York, USA</formatted_address>
              <address_component>
               <long_name>New York</long_name>
               <short_name>NY</short_name>
               <type>administrative_area_level_1</type>
               <type>political</type>
              </address_component>
              <address_component>
               <long_name>United States</long_name>
               <short_name>US</short_name>
               <type>country</type>
               <type>political</type>
              </address_component>
              <geometry>
               <location>
                <lat>43.2994285</lat>
                <lng>-74.2179326</lng>
               </location>
               <location_type>APPROXIMATE</location_type>
               <viewport>
                <southwest>
                 <lat>40.4773990</lat>
                 <lng>-79.7625900</lng>
                </southwest>
                <northeast>
                 <lat>45.0158650</lat>
                 <lng>-71.7774910</lng>
                </northeast>
               </viewport>
               <bounds>
                <southwest>
                 <lat>40.4773990</lat>
                 <lng>-79.7625900</lng>
                </southwest>
                <northeast>
                 <lat>45.0158650</lat>
                 <lng>-71.7774910</lng>
                </northeast>
               </bounds>
              </geometry>
             </result>
             <result>
              <type>country</type>
              <type>political</type>
              <formatted_address>United States</formatted_address>
              <address_component>
               <long_name>United States</long_name>
               <short_name>US</short_name>
               <type>country</type>
               <type>political</type>
              </address_component>
              <geometry>
               <location>
                <lat>37.0902400</lat>
                <lng>-95.7128910</lng>
               </location>
               <location_type>APPROXIMATE</location_type>
               <viewport>
                <southwest>
                 <lat>18.7763000</lat>
                 <lng>170.5957000</lng>
                </southwest>
                <northeast>
                 <lat>71.5388000</lat>
                 <lng>-66.8854170</lng>
                </northeast>
               </viewport>
               <bounds>
                <southwest>
                 <lat>18.7763000</lat>
                 <lng>170.5957000</lng>
                </southwest>
                <northeast>
                 <lat>71.5388000</lat>
                 <lng>-66.8854170</lng>
                </northeast>
               </bounds>
              </geometry>
             </result>
            </GeocodeResponse>
         -->
         <description>
The term geocoding generally refers to translating a human-readable address into a location on a map. The process of doing the converse, translating a location on the map into a human-readable address, is known as reverse geocoding.
         </description>
         <request name="Request">
           <group name="Latitude and longitude">
             <field name="Latitude and longitude" http-name="latlng" value="40.714224,-73.961452"/>
             <field name="Sensor" value="false">
               <value>true</value>
               <value>false</value>
             </field>
           </group>
         </request>
         <response name="Response">
           <group name="Status">
             <field name="Status" subtype="error" path="/GeocodeResponse/status"/>
           </group>
           <group name="Results">
             <field name="Results">
               <group name="Result" path="/GeocodeResponse/result">
                 <field name="Type 1" path="type[1]"/>
                 <field name="Type 2" path="type[2]"/>
                 <field name="Formatted address" path="formatted_address"/>
                 <field name="Address components">
                   <group name="Address component" path="address_component">
                     <field name="Long name" path="long_name"/>
                     <field name="Short name" path="short_name"/>
                     <field name="Type 1" path="type[1]"/>
                     <field name="Type 2" path="type[2]"/>
                   </group>
                 </field>
                 <field name="Latitude" path="geometry/location/lat"/>
                 <field name="Longitude" path="geometry/location/lng"/>
                 <field name="Location type" path="geometry/location_type"/>
                 <field name="Viewport southwest" path="geometry/viewport/southwest/lat"/>
                 <field name="Viewport northeast" path="geometry/viewport/northeast/lng"/>
               </group>
             </field>
           </group>
         </response>
       </operation>
    </service>
    <errors>
      <error code="OK" type="success">No errors occurred</error>
      <error code="ZERO_RESULTS">The geocode was successful but returned no results</error>
      <error code="OVER_QUERY_LIMIT">Over quota</error>
      <error code="REQUEST_DENIED">Request denied</error>
      <error code="INVALID_REQUEST">Invalid request</error>
    </errors>
  </application>
  <application name="Yahoo! PlaceFinder" url="http://where.yahooapis.com/geocode" method="get" timeout="5">
    <description>
Yahoo! PlaceFinder is a REST Web service that supports world-wide geocoding of street addresses, points of interest, airports, and place names. Points of interest are locations such as schools, shopping malls, museums, and transit stations. Place names supported include counties, states, countries, and continents (see http://developer.yahoo.com/geo/placefinder/guide/).
    </description>
    <service name="Geocoding">
       <operation name="Single line input (XML)">
          <!--
            Request (http GET): http://where.yahooapis.com/geocode?location=701+First+Ave,+Sunnyvale,+CA
            Response (XML):
            <?xml version="1.0" encoding="UTF-8"?>
            <ResultSet version="1.0">
              <Error>0</Error>
              <ErrorMessage>No error</ErrorMessage>
              <Locale>us_US</Locale>
              <Quality>87</Quality>
              <Found>1</Found>
              <Result>
                <quality>87</quality>
                <latitude>37.416275</latitude>
                <longitude>-122.025092</longitude>
                <offsetlat>37.416397</offsetlat>
                <offsetlon>-122.025055</offsetlon>
                <radius>500</radius>
                <name>
            </name>
                <line1>701 1st Ave</line1>
                <line2>Sunnyvale, CA  94089-1019</line2>
                <line3>
            </line3>
                <line4>United States</line4>
                <house>701</house>
                <street>1st Ave</street>
                <xstreet>
            </xstreet>
                <unittype>
            </unittype>
           -->
          <description>
With free-form format, the entire address is specified in a single parameter. In this example, the address is "170 South Market St., San Jose, CA".
          </description>
          <request name="Request">
            <group name="Location">
              <field name="Location" value="701 First Ave, Sunnyvale, CA"/>
            </group>
          </request>
          <response name="Response">
            <group name="Status">
              <field name="Error Code" subtype="error" path="/ResultSet/Error"/>
              <field name="Error Message" path="/ResultSet/ErrorMessage"/>
              <field name="Locale" path="/ResultSet/Locale"/>
              <field name="Quality" path="/ResultSet/Quality"/>
              <field name="Found" path="/ResultSet/Found"/>
            </group>
            <group name="Results">
              <field name="Results">
                <group name="Result" path="/ResultSet/Result">
                  <field name="Latitude" path="latitude"/>
                  <field name="Longitude" path="longitude"/>
                  <field name="Offset Latitude" path="offsetlat"/>
                  <field name="Offset Longitude" path="offsetlon"/>
                  <field name="Radius" path="radius"/>
                  <field name="Name" path="name"/>
                  <field name="Line 1" path="line1"/>
                  <field name="Line 2" path="line2"/>
                  <field name="Line 3" path="line3"/>
                  <field name="Line 4" path="line4"/>
                  <field name="House" path="house"/>
                  <field name="Street" path="street"/>
                  <field name="Postal code" path="postal"/>
                  <field name="Neighborhood" path="neighborhood"/>
                  <field name="City" path="city"/>
                  <field name="County" path="county"/>
                  <field name="State" path="state"/>
                  <field name="Country" path="country"/>
                  <field name="Country code" path="countrycode"/>
                  <field name="State code" path="statecode"/>
                  <field name="Uzip" path="uzip"/>
                  <field name="Hash" path="hash"/>
                  <field name="WOE id" path="woeid"/>
                  <field name="WOE type" path="woetype"/>
                </group>
              </field>
            </group>
          </response>
       </operation>
       <operation name="Single line input (JSON)">
          <!--
            Request (http GET): http://where.yahooapis.com/geocode?flags=J&location=701+First+Ave,+Sunnyvale,+CA
            Response (JSON):
            { "ResultSet":
               { "version":"1.0",
                 "Error":0,
                 "ErrorMessage":"No error",
                 "Locale":"us_US",
                 "Quality":87,
                 "Found":1,
                 "Results":[
                    { "quality":87,
                      "latitude":"37.416289",
                      "longitude":"-122.025171",
                      "offsetlat":"37.416410",
                      "offsetlon":"-122.025131",
                      "radius":500,
                              "name":"",
                      "line1":"701 1st Ave",
                      "line2":"Sunnyvale, CA  94089-1019",
                      "line3":"",
                      "line4":"United States",
                      "house":"701",
                      "street":"1st Ave",
                      "xstreet":"",
                      "unittype":"",
                      "unit":"",
                      "postal":"94089-1019",
                      "neighborhood":"",
                      "city":"Sunnyvale",
                      "county":"Santa Clara County",
                      "state":"California",
                      "country":"United States",
                      "countrycode":"US",
                      "statecode":"CA",
                      "countycode":"",
                      "uzip":"94089",
                      "hash":"DDAD1896CC0CDC41",
                      "woeid":12797150,
                      "woetype":11
                   } ]
                }
             }
         XML response equivalent to JSON response
         used to get JSON field values through XPATH formulas (where "/root" is implicit):
         <?xml version="1.0"?>
         <root>
           <ResultSet>
             <version>1.0</version>
             <Error>0</Error>
             <ErrorMessage>No error</ErrorMessage>
             <Locale>us_US</Locale>
             <Quality>87</Quality>
             <Found>1</Found>
             <Results>
               <quality>87</quality>
               <latitude>37.416289</latitude>
               <longitude>-122.025171</longitude>
               <offsetlat>37.416410</offsetlat>
               <offsetlon>-122.025131</offsetlon>
               <radius>500</radius>
               <name/>
               <line1>701 1st Ave</line1>
               <line2>Sunnyvale, CA  94089-1019</line2>
               <line3/>
               <line4>United States</line4>
               <house>701</house>
               <street>1st Ave</street>
               <xstreet/>
               <unittype/>
               <unit/>
               <postal>94089-1019</postal>
               <neighborhood/>
               <city>Sunnyvale</city>
               <county>Santa Clara County</county>
               <state>California</state>
               <country>United States</country>
               <countrycode>US</countrycode>
               <statecode>CA</statecode>
               <countycode/>
               <uzip>94089</uzip>
               <hash>DDAD1896CC0CDC41</hash>
               <woeid>12797150</woeid>
               <woetype>11</woetype>
             </Results>
           </ResultSet>
         </root>
           -->
          <description>
With free-form format, the entire address is specified in a single parameter. In this example, the response format is JSON and the address is "170 South Market St., San Jose, CA".
          </description>
          <request name="Request">
            <group name="Location">
              <field name="Flags" value="J" read-only="true"/>
              <field name="Location" value="701 First Ave, Sunnyvale, CA"/>
            </group>
          </request>
          <response name="Response" type="json">
            <group name="Status">
              <field name="Error Code" subtype="error" path="/ResultSet/Error"/>
              <field name="Error Message" path="/ResultSet/ErrorMessage"/>
              <field name="Locale" path="/ResultSet/Locale"/>
              <field name="Quality" path="/ResultSet/Quality"/>
              <field name="Found" path="/ResultSet/Found"/>
            </group>
            <group name="Results">
              <field name="Results">
                <group name="Result" path="/ResultSet/Results">
                  <field name="Latitude" path="latitude"/>
                  <field name="Longitude" path="longitude"/>
                  <field name="Offset Latitude" path="offsetlat"/>
                  <field name="Offset Longitude" path="offsetlon"/>
                  <field name="Radius" path="radius"/>
                  <field name="Name" path="name"/>
                  <field name="Line 1" path="line1"/>
                  <field name="Line 2" path="line2"/>
                  <field name="Line 3" path="line3"/>
                  <field name="Line 4" path="line4"/>
                  <field name="House" path="house"/>
                  <field name="Street" path="street"/>
                  <field name="Postal code" path="postal"/>
                  <field name="Neighborhood" path="neighborhood"/>
                  <field name="City" path="city"/>
                  <field name="County" path="county"/>
                  <field name="State" path="state"/>
                  <field name="Country" path="country"/>
                  <field name="Country code" path="countrycode"/>
                  <field name="State code" path="statecode"/>
                  <field name="Uzip" path="uzip"/>
                  <field name="Hash" path="hash"/>
                  <field name="WOE id" path="woeid"/>
                  <field name="WOE type" path="woetype"/>
                </group>
              </field>
            </group>
          </response>
       </operation>
       <operation name="Area of interest">
          <!--
            Request (http GET): http://where.yahooapis.com/geocode?name=Yosemite+National+Park
            Response (XML):
               <?xml version="1.0" encoding="UTF-8"?>
               <ResultSet version="1.0">
                 <Error>0</Error>
                 <ErrorMessage>No error</ErrorMessage>
                 <Locale>us_US</Locale>
                 <Quality>63</Quality>
                 <Found>1</Found>
                 <Result>
                   <quality>63</quality>
                   <latitude>37.840120</latitude>
                   <longitude>-119.542854</longitude>
                   <offsetlat>37.667542</offsetlat>
                   <offsetlon>-119.805389</offsetlon>
                   <radius>48900</radius>
                   <name>Yosemite National Park</name>
                   <line1>Yosemite National Park</line1>
                   <line2>El Portal, CA  95318</line2>
                   <line3/>
                   <line4>United States</line4>
                   <house/>
                   <street/>
                   <xstreet/>
                   <unittype/>
                   <unit/>
                   <postal>95318</postal>
                   <neighborhood/>
                   <city>El Portal</city>
                   <county>Mariposa County</county>
                   <state>California</state>
                   <country>United States</country>
                   <countrycode>US</countrycode>
                   <statecode>CA</statecode>
                   <countycode/>
                   <uzip>95318</uzip>
                   <hash/>
                   <woeid>55813396</woeid>
                   <woetype>16</woetype>
                 </Result>
               </ResultSet>
              -->
          <description>
In this example, the area of interest is "Yosemite National Park".
          </description>
          <request name="Request">
            <group name="Name">
              <field name="Name" value="Yosemite National Park"/>
            </group>
          </request>
          <response name="Response">
            <group name="Status">
              <field name="Error Code" subtype="error" path="/ResultSet/Error"/>
              <field name="Error Message" path="/ResultSet/ErrorMessage"/>
              <field name="Locale" path="/ResultSet/Locale"/>
              <field name="Quality" path="/ResultSet/Quality"/>
              <field name="Found" path="/ResultSet/Found"/>
            </group>
            <group name="Results">
              <field name="Results">
                <group name="Result" path="/ResultSet/Result">
                  <field name="Latitude" path="latitude"/>
                  <field name="Longitude" path="longitude"/>
                  <field name="Offset Latitude" path="offsetlat"/>
                  <field name="Offset Longitude" path="offsetlon"/>
                  <field name="Radius" path="radius"/>
                  <field name="Name" path="name"/>
                  <field name="Line 1" path="line1"/>
                  <field name="Line 2" path="line2"/>
                  <field name="Line 3" path="line3"/>
                  <field name="Line 4" path="line4"/>
                  <field name="House" path="house"/>
                  <field name="Street" path="street"/>
                  <field name="XStreet" path="xstreet"/>
                  <field name="Unit type" path="unittype"/>
                  <field name="Unit" path="unit"/>
                  <field name="Postal code" path="postal"/>
                  <field name="Neighborhood" path="neighborhood"/>
                  <field name="City" path="city"/>
                  <field name="County" path="county"/>
                  <field name="State" path="state"/>
                  <field name="Country" path="country"/>
                  <field name="Country code" path="countrycode"/>
                  <field name="State code" path="statecode"/>
                  <field name="Uzip" path="uzip"/>
                  <field name="Hash" path="hash"/>
                  <field name="WOE id" path="woeid"/>
                  <field name="WOE type" path="woetype"/>
                </group>
              </field>
            </group>
          </response>
       </operation>
       <operation name="Multiple line input">
          <!--
            Request (http GET): http://where.yahooapis.com/geocode?line1=100+Market+St.&line2=San+Francisco,+CA
            Response (XML):
            <?xml version="1.0" encoding="UTF-8"?>
            <ResultSet version="1.0">
              <Error>0</Error>
              <ErrorMessage>No error</ErrorMessage>
              <Locale>us_US</Locale>
              <Quality>87</Quality>
              <Found>1</Found>
              <Result>
                <quality>87</quality>
                <latitude>37.793704</latitude>
                <longitude>-122.395804</longitude>
                <offsetlat>37.793738</offsetlat>
                <offsetlon>-122.395851</offsetlon>
                <radius>500</radius>
                <name/>
                <line1>100 Market St</line1>
                <line2>San Francisco, CA  94111-4802</line2>
                <line3/>
                <line4>United States</line4>
                <house>100</house>
                <street>Market St</street>
                <xstreet/>
                <unittype/>
                <unit/>
                <postal>94111-4802</postal>
                <neighborhood/>
                <city>San Francisco</city>
                <county>San Francisco County</county>
                <state>California</state>
                <country>United States</country>
                <countrycode>US</countrycode>
                <statecode>CA</statecode>
                <countycode/>
                <uzip>94111</uzip>
                <hash>E827D6E012051EB9</hash>
                <woeid>12797162</woeid>
                <woetype>11</woetype>
              </Result>
            </ResultSet>
           -->
          <description>
In this example, the house number and street (100 Market St.) are in line1. The city and state (San Francisco, CA) are in line2.
          </description>
          <request name="Request">
            <group name="Location">
              <field name="Line1" value="100 Market St."/>
              <field name="Line2" value="San Francisco, CA"/>
            </group>
          </request>
          <response name="Response">
            <group name="Status">
              <field name="Error Code" subtype="error" path="/ResultSet/Error"/>
              <field name="Error Message" path="/ResultSet/ErrorMessage"/>
              <field name="Locale" path="/ResultSet/Locale"/>
              <field name="Quality" path="/ResultSet/Quality"/>
              <field name="Found" path="/ResultSet/Found"/>
            </group>
            <group name="Results">
              <field name="Results">
                <group name="Result" path="/ResultSet/Result">
                  <field name="Latitude" path="latitude"/>
                  <field name="Longitude" path="longitude"/>
                  <field name="Offset Latitude" path="offsetlat"/>
                  <field name="Offset Longitude" path="offsetlon"/>
                  <field name="Radius" path="radius"/>
                  <field name="Name" path="name"/>
                  <field name="Line 1" path="line1"/>
                  <field name="Line 2" path="line2"/>
                  <field name="Line 3" path="line3"/>
                  <field name="Line 4" path="line4"/>
                  <field name="House" path="house"/>
                  <field name="Street" path="street"/>
                  <field name="XStreet" path="xstreet"/>
                  <field name="Unit type" path="unittype"/>
                  <field name="Unit" path="unit"/>
                  <field name="Postal code" path="postal"/>
                  <field name="Neighborhood" path="neighborhood"/>
                  <field name="City" path="city"/>
                  <field name="County" path="county"/>
                  <field name="State" path="state"/>
                  <field name="Country" path="country"/>
                  <field name="Country code" path="countrycode"/>
                  <field name="State code" path="statecode"/>
                  <field name="Uzip" path="uzip"/>
                  <field name="Hash" path="hash"/>
                  <field name="WOE id" path="woeid"/>
                  <field name="WOE type" path="woetype"/>
                </group>
              </field>
            </group>
          </response>
       </operation>
       <operation name="Fully parsed input">
          <!--
            Request (http GET): http://where.yahooapis.com/geocode?house=151&street=3rd+St&postal=94103&city=San+Francisco&state=CA&country=US
            Response (XML):
            <?xml version="1.0" encoding="UTF-8"?>
            <ResultSet version="1.0">
              <Error>0</Error>
              <ErrorMessage>No error</ErrorMessage>
              <Locale>us_US</Locale>
              <Quality>60</Quality>
              <Found>1</Found>
              <Result>
                <quality>87</quality>
                <latitude>37.785483</latitude>
                <longitude>-122.401028</longitude>
                <offsetlat>37.785549</offsetlat>
                <offsetlon>-122.400939</offsetlon>
                <radius>500</radius>
                <name/>
                <line1>151 3rd St</line1>
                <line2>San Francisco, CA  94103-3107</line2>
                <line3/>
                <line4>United States</line4>
                <house>151</house>
                <street>3rd St</street>
                <xstreet/>
                <unittype/>
                <unit/>
                <postal>94103-3107</postal>
                <neighborhood/>
                <city>San Francisco</city>
                <county>San Francisco County</county>
                <state>California</state>
                <country>United States</country>
                <countrycode>US</countrycode>
                <statecode>CA</statecode>
                <countycode/>
                <uzip>94103</uzip>
                <hash>05B44B427D1BEC8F</hash>
                <woeid>12797154</woeid>
                <woetype>11</woetype>
              </Result>
            </ResultSet>
           -->
          <description>
With a fully-parsed address, each address component is in a separate parameter, so delimiters are not needed. This example returns information for the following input address: "151 3rd St San Francisco CA 94103".
          </description>
          <request name="Request">
            <group name="Address">
              <field name="House" value="151"/>
              <field name="Street" value="3rd St"/>
              <field name="Postal" value="94103"/>
              <field name="City" value="San Francisco"/>
              <field name="State" value="CA"/>
              <field name="Country" value="US"/>
            </group>
          </request>
          <response name="Response">
            <group name="Status">
              <field name="Error Code" subtype="error" path="/ResultSet/Error"/>
              <field name="Error Message" path="/ResultSet/ErrorMessage"/>
              <field name="Locale" path="/ResultSet/Locale"/>
              <field name="Quality" path="/ResultSet/Quality"/>
              <field name="Found" path="/ResultSet/Found"/>
            </group>
            <group name="Results">
              <field name="Results">
                <group name="Result" path="/ResultSet/Result">
                  <field name="Latitude" path="latitude"/>
                  <field name="Longitude" path="longitude"/>
                  <field name="Offset Latitude" path="offsetlat"/>
                  <field name="Offset Longitude" path="offsetlon"/>
                  <field name="Radius" path="radius"/>
                  <field name="Name" path="name"/>
                  <field name="Line 1" path="line1"/>
                  <field name="Line 2" path="line2"/>
                  <field name="Line 3" path="line3"/>
                  <field name="Line 4" path="line4"/>
                  <field name="House" path="house"/>
                  <field name="Street" path="street"/>
                  <field name="XStreet" path="xstreet"/>
                  <field name="Unit type" path="unittype"/>
                  <field name="Unit" path="unit"/>
                  <field name="Postal code" path="postal"/>
                  <field name="Neighborhood" path="neighborhood"/>
                  <field name="City" path="city"/>
                  <field name="County" path="county"/>
                  <field name="State" path="state"/>
                  <field name="Country" path="country"/>
                  <field name="Country code" path="countrycode"/>
                  <field name="State code" path="statecode"/>
                  <field name="Uzip" path="uzip"/>
                  <field name="Hash" path="hash"/>
                  <field name="WOE id" path="woeid"/>
                  <field name="WOE type" path="woetype"/>
                </group>
              </field>
            </group>
          </response>
       </operation>
    </service>
    <service name="Reverse geocoding">
       <operation name="Reverse geocoding">
          <!--
            Request (http GET): http://where.yahooapis.com/geocode?location=37.787082+-122.400929&gflags=R
            Response (XML):
            <?xml version="1.0" encoding="UTF-8"?>
            <ResultSet version="1.0">
              <Error>0</Error>
              <ErrorMessage>No error</ErrorMessage>
              <Locale>us_US</Locale>
              <Quality>99</Quality>
              <Found>1</Found>
              <Result>
                <quality>99</quality>
                <latitude>37.787082</latitude>
                <longitude>-122.400929</longitude>
                <offsetlat>37.787082</offsetlat>
                <offsetlon>-122.400929</offsetlon>
                <radius>500</radius>
                <name>37.787082 -122.400929</name>
                <line1>655 Mission St</line1>
                <line2>San Francisco, CA  94105-4126</line2>
                <line3/>
                <line4>United States</line4>
                <house>655</house>
                <street>Mission St</street>
                <xstreet/>
                <unittype/>
                <unit/>
                <postal>94105-4126</postal>
                <neighborhood/>
                <city>San Francisco</city>
                <county>San Francisco County</county>
                <state>California</state>
                <country>United States</country>
                <countrycode>US</countrycode>
                <statecode>CA</statecode>
                <countycode/>
                <hash/>
                <woeid>12797156</woeid>
                <woetype>11</woetype>
                <uzip>94105</uzip>
              </Result>
            </ResultSet>
           -->
          <description>
To perform reverse geocoding, specify the latitude and longitude for the location parameter, and include "R" in the gflags parameter. In this example, the latitude is 37.787082 and the longitude is -122.400929. The plus sign in the location is a URL-encoded space.
          </description>
          <request name="Request">
            <group name="Location">
              <field name="Location" value="37.787082 -122.400929"/>
              <field name="GFlags" value="R"/>
            </group>
          </request>
          <response name="Response">
            <group name="Status">
              <field name="Error Code" subtype="error" path="/ResultSet/Error"/>
              <field name="Error Message" path="/ResultSet/ErrorMessage"/>
              <field name="Locale" path="/ResultSet/Locale"/>
              <field name="Quality" path="/ResultSet/Quality"/>
              <field name="Found" path="/ResultSet/Found"/>
            </group>
            <group name="Results">
              <field name="Results">
                <group name="Result" path="/ResultSet/Result">
                  <field name="Quality" path="quality"/>
                  <field name="Latitude" path="latitude"/>
                  <field name="Latitude" path="latitude"/>
                  <field name="Longitude" path="longitude"/>
                  <field name="Offset Latitude" path="offsetlat"/>
                  <field name="Offset Longitude" path="offsetlon"/>
                  <field name="Radius" path="radius"/>
                  <field name="Name" path="name"/>
                  <field name="Line 1" path="line1"/>
                  <field name="Line 2" path="line2"/>
                  <field name="Line 3" path="line3"/>
                  <field name="Line 4" path="line4"/>
                  <field name="House" path="house"/>
                  <field name="Street" path="street"/>
                  <field name="XStreet" path="xstreet"/>
                  <field name="Unit type" path="unittype"/>
                  <field name="Unit" path="unit"/>
                  <field name="Postal code" path="postal"/>
                  <field name="Neighborhood" path="neighborhood"/>
                  <field name="City" path="city"/>
                  <field name="County" path="county"/>
                  <field name="State" path="state"/>
                  <field name="Country" path="country"/>
                  <field name="Country code" path="countrycode"/>
                  <field name="State code" path="statecode"/>
                  <field name="County code" path="countycode"/>
                  <field name="Uzip" path="uzip"/>
                  <field name="Hash" path="hash"/>
                  <field name="WOE id" path="woeid"/>
                  <field name="WOE type" path="woetype"/>
                </group>
              </field>
            </group>
          </response>
       </operation>
    </service>
  </application>
</system>
<!-- mailing list for log export common to all systems -->
<emails>
  <email>email_4@gmail.com</email>
  <email type="cc">email_5@gmail.com</email>
  <email>email_6@gmail.com</email>
</emails>
</services>

Support