Geocode WADL

<application xmlns="http://wadl.dev.java.net/2009/02" xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<grammars>
		<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified"
			elementFormDefault="qualified">
			<xs:element name="keyLookupRequest" type="keyLookupRequest"/>
			<xs:complexType name="keyLookupRequest">
				<xs:sequence>
					<xs:element form="unqualified" minOccurs="0" name="type" type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="preferences"
						type="Preferences"/>
					<xs:element form="unqualified" maxOccurs="unbounded" minOccurs="0" name="keys"
						nillable="true" type="key"/>
				</xs:sequence>
			</xs:complexType>
			<xs:element name="reverseGeocodeRequest" type="ReverseGeocodeRequest"/>
			<xs:complexType name="ReverseGeocodeRequest">
				<xs:sequence>
					<xs:element form="unqualified" minOccurs="0" name="preferences"
						type="Preferences"/>
					<xs:element form="unqualified" maxOccurs="unbounded" minOccurs="0" name="points"
						type="Points"/>
				</xs:sequence>
			</xs:complexType>
			<xs:complexType name="Preferences">
				<xs:sequence>
					<xs:element form="unqualified" name="returnAllCandidateInfo" nillable="true"
						type="xs:boolean"/>
					<xs:element form="unqualified" name="fallbackToGeographic" nillable="true"
						type="xs:string"/>
					<xs:element form="unqualified" name="fallbackToPostal" nillable="true"
						type="xs:string"/>
					<xs:element form="unqualified" name="maxReturnedCandidates" nillable="true"
						type="xs:string"/>
					<xs:element form="unqualified" name="distance" nillable="true" type="xs:string"/>
					<xs:element form="unqualified" name="streetOffset" nillable="true"
						type="xs:string"/>
					<xs:element form="unqualified" name="cornerOffset" nillable="true"
						type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="matchMode" nillable="true"
						type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="clientLocale"
						type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="clientCoordSysName"
						type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="distanceUnits"
						type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="streetOffsetUnits"
						type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="cornerOffsetUnits"
						type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="mustMatchFields"
						type="FieldsMatching"/>
					<xs:element form="unqualified" minOccurs="0" name="returnFieldsDescriptor"
						type="ReturnFieldsDescriptor"/>
					<xs:element form="unqualified" name="customPreferences">
						<xs:complexType>
							<xs:sequence>
								<xs:element maxOccurs="unbounded" minOccurs="0" name="entry">
									<xs:complexType>
										<xs:sequence>
											<xs:element minOccurs="0" name="key" type="xs:anyType"/>
											<xs:element minOccurs="0" name="value" type="xs:anyType"
											/>
										</xs:sequence>
									</xs:complexType>
								</xs:element>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element form="unqualified" maxOccurs="unbounded" minOccurs="0"
						name="preferredDictionaryOrders" nillable="true" type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="outputCasing" nillable="true"
						type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="defaultBufferWidth"
						nillable="true" type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="returnCensusFields"
						nillable="true" type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="returnLatLongFields"
						nillable="true" type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="latLongOffset"
						nillable="true" type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="squeeze" nillable="true"
						type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="useGeoTaxAuxiliaryFile"
						nillable="true" type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="latLongFormat"
						nillable="true" type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="taxRatetypeID"
						type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="outputRecordType"
						type="xs:string"/>
				</xs:sequence>
			</xs:complexType>
			<xs:complexType name="FieldsMatching">
				<xs:sequence>
					<xs:element form="unqualified" name="matchOnAddressNumber" type="xs:boolean"/>
					<xs:element form="unqualified" name="matchOnPostCode1" type="xs:boolean"/>
					<xs:element form="unqualified" name="matchOnPostCode2" type="xs:boolean"/>
					<xs:element form="unqualified" name="matchOnAreaName1" type="xs:boolean"/>
					<xs:element form="unqualified" name="matchOnAreaName2" type="xs:boolean"/>
					<xs:element form="unqualified" name="matchOnAreaName3" type="xs:boolean"/>
					<xs:element form="unqualified" name="matchOnAreaName4" type="xs:boolean"/>
					<xs:element form="unqualified" name="matchOnAllStreetFields" type="xs:boolean"/>
					<xs:element form="unqualified" name="matchOnStreetName" type="xs:boolean"/>
					<xs:element form="unqualified" name="matchOnStreetType" type="xs:boolean"/>
					<xs:element form="unqualified" name="matchOnStreetDirectional" type="xs:boolean"/>
					<xs:element form="unqualified" name="matchOnPlaceName" type="xs:boolean"/>
					<xs:element form="unqualified" name="matchOnInputFields" type="xs:boolean"/>
				</xs:sequence>
			</xs:complexType>
			<xs:complexType name="ReturnFieldsDescriptor">
				<xs:sequence>
					<xs:element form="unqualified" name="returnAllCustomFields" type="xs:boolean"/>
					<xs:element form="unqualified" name="returnMatchDescriptor" type="xs:boolean"/>
					<xs:element form="unqualified" name="returnStreetAddressFields"
						type="xs:boolean"/>
					<xs:element form="unqualified" name="returnUnitInformation" type="xs:boolean"/>
					<xs:element form="unqualified" maxOccurs="unbounded" minOccurs="0"
						name="returnedCustomFieldKeys" nillable="true" type="xs:string"/>
				</xs:sequence>
			</xs:complexType>
			<xs:complexType name="Points">
				<xs:sequence>
					<xs:element form="unqualified" name="country" type="xs:string"/>
					<xs:element form="unqualified" name="geometry" type="GeoPos"/>
					<xs:element form="unqualified" minOccurs="0" name="objectId" type="xs:string"/>
				</xs:sequence>
			</xs:complexType>
			<xs:complexType name="GeoPos">
				<xs:sequence>
					<xs:element form="unqualified" name="type" type="xs:string"/>
					<xs:element form="unqualified" maxOccurs="unbounded" minOccurs="0"
						name="coordinates" type="xs:double"/>
					<xs:element form="unqualified" name="crs" type="Crs"/>
				</xs:sequence>
			</xs:complexType>
			<xs:complexType name="Crs">
				<xs:sequence>
					<xs:element form="unqualified" name="type" type="xs:string"/>
					<xs:element form="unqualified" name="properties" type="Properties"/>
				</xs:sequence>
			</xs:complexType>
			<xs:complexType name="Properties">
				<xs:sequence>
					<xs:element form="unqualified" name="name" type="xs:string"/>
				</xs:sequence>
			</xs:complexType>
			<xs:element name="keyByAddressRequest" type="KeyByAddressRequest"/>
			<xs:complexType name="KeyByAddressRequest">
				<xs:sequence>
					<xs:element maxOccurs="unbounded" minOccurs="0" ref="address"/>
				</xs:sequence>
			</xs:complexType>
			<xs:element name="address" type="address"/>
			<xs:complexType name="address">
				<xs:sequence>
					<xs:element form="unqualified" minOccurs="0" name="objectId" type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="displayName" type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="streetSide" type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="addressLine1"
						type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="addressLine2"
						type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="addressLine3"
						type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="city" type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="stateProvince"
						type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="county" type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="postalCode" type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="latitude" type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="longitude" type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="status" type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="urbanizationName"
						type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="formattedAddress"
						type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="mainAddressLine"
						type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="addressLastLine"
						type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="placeName" type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="areaName1" type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="areaName2" type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="areaName3" type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="areaName4" type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="postCode" type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="postCodeExt" type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="country" type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="addressNumber"
						type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="streetName" type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="unitType" type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="unitValue" type="xs:string"/>
				</xs:sequence>
			</xs:complexType>
			<xs:element name="geocodeRequest" type="GeocodeRequest"/>
			<xs:complexType name="GeocodeRequest">
				<xs:sequence>
					<xs:element form="unqualified" minOccurs="0" name="type" type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="preferences"
						type="Preferences"/>
					<xs:element form="unqualified" maxOccurs="unbounded" minOccurs="0"
						name="addresses" type="Address"/>
				</xs:sequence>
			</xs:complexType>
			<xs:complexType name="Address">
				<xs:sequence>
					<xs:element form="unqualified" minOccurs="0" name="mainAddressLine"
						type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="addressLastLine"
						type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="placeName" type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="areaName1" type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="areaName2" type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="areaName3" type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="areaName4" type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="postCode1" type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="postCode2" type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="country" type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="addressNumber"
						type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="streetName" type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="unitType" type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="unitValue" type="xs:string"/>
					<xs:element form="unqualified" name="customFields">
						<xs:complexType>
							<xs:sequence>
								<xs:element maxOccurs="unbounded" minOccurs="0" name="entry">
									<xs:complexType>
										<xs:sequence>
											<xs:element minOccurs="0" name="key" type="xs:anyType"/>
											<xs:element minOccurs="0" name="value" type="xs:anyType"
											/>
										</xs:sequence>
									</xs:complexType>
								</xs:element>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element form="unqualified" minOccurs="0" name="objectId" type="xs:string"/>
				</xs:sequence>
			</xs:complexType>
			<xs:complexType name="GeocodeESRIRequest">
				<xs:sequence>
					<xs:element form="unqualified" minOccurs="0" name="records" type="GeocodeESRIRecords"/>
				</xs:sequence>
			</xs:complexType>
			<xs:complexType name="GeocodeESRIRecords">
				<xs:sequence>
					<xs:element form="unqualified" minOccurs="0" name="attributes" type="GeocodeESRIAttributes"/>
				</xs:sequence>
			</xs:complexType>
			<xs:complexType name="GeocodeESRIAttributes">
				<xs:sequence>
					<xs:element form="unqualified" minOccurs="0" name="OBJECTID" type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="Address" type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="Neighborhood" type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="countryCode" type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="singleLine" type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="City" type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="Subregion" type="xs:string"/>
					<xs:element form="unqualified" minOccurs="0" name="Region" type="xs:string"/>
									
				</xs:sequence>
			</xs:complexType>
		</xs:schema>
	</grammars>
	<resources base="https://api.precisely.com">
		<resource path="/geocode/v1">
			<resource path="/key/byaddress">
				<method name="GET">
					<request>
						<param name="address" style="query" type="xs:string"/>
						<param name="country" style="query" type="xs:string"/>
					</request>
					<response>
						<representation mediaType="application/json"/>
					</response>
				</method>
				<method name="POST">
					<request>
						<representation mediaType="*/*"/>
					</request>
					<response>
						<representation mediaType="application/json"/>
					</response>
				</method>
			</resource>
			<resource path="/keylookup">
				<method name="GET">
					<request>
						<param name="key" style="query" type="xs:string"/>
						<param name="type" style="query" type="xs:string"/>
						<param name="country" style="query" type="xs:string"/>
					</request>
					<response>
						<representation mediaType="application/json"/>
					</response>
				</method>
				<method name="POST">
					<request>
						<representation mediaType="*/*"/>
					</request>
					<response>
						<representation mediaType="application/json"/>
					</response>
				</method>
			</resource>
			<resource path="/{datapackBundle}/capabilities">
				<param name="datapackBundle" style="template" type="xs:string"/>
				<method name="GET">
					<request/>
					<response>
						<representation mediaType="application/json"/>
					</response>
				</method>
			</resource>
			<resource path="/{datapackBundle}/dictionaries">
				<param name="datapackBundle" style="template" type="xs:string"/>
				<method name="GET">
					<request>
						<param name="country" style="query" default="USA" type="xs:string"/>
					</request>
					<response>
						<representation mediaType="application/json"/>
					</response>
				</method>
			</resource>
			<resource path="/{datapackBundle}/geocode">
				<param name="datapackBundle" style="template" type="xs:string"/>
				<method name="GET">
					<request/>
					<response>
						<representation mediaType="application/json"/>
					</response>
				</method>
				<method name="POST">
					<request>
						<representation mediaType="application/json"/>
					</request>
					<response>
						<representation mediaType="application/json"/>
					</response>
				</method>
			</resource>
			<resource path="/{datapackBundle}/reverseGeocode">
				<param name="datapackBundle" style="template" type="xs:string"/>
				<method name="GET">
					<request/>
					<response>
						<representation mediaType="application/json"/>
					</response>
				</method>
				<method name="POST">
					<request>
						<representation mediaType="application/json"/>
					</request>
					<response>
						<representation mediaType="application/json"/>
					</response>
				</method>
			</resource>
			<resource path="/arcgis/rest/services/PBLocator/GeocodeServer">
				<method name="GET">
					<request>
						<param name="f" style="query" type="xs:string"/>
					</request>
					<response>
						<representation mediaType="application/json"/>
					</response>
				</method>

			</resource>
			<resource path="/arcgis/rest/services/PBLocator/GeocodeServer/geocodeAddresses">
				<method name="POST">
					<request>
						<representation mediaType="application/x-www-form-urlencoded"/>
						<param style="query" name="f"  default="JSON" type="xs:string"/>
                        <param name="addresses"  style="query" type="xs:string"/>													
					</request>
					<response>
						<representation mediaType="application/json"/>
					</response>
				</method>
			</resource>

     	<resource path="/transient/geocodeAddresses">
				<method name="POST">
					<request>
						<representation mediaType="application/x-www-form-urlencoded"/>
					</request>
					<response>
						<representation mediaType="application/json"/>
					</response>
				</method>
			</resource>

		</resource>
	</resources>
</application>