savon 0.9.6 → 0.9.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,7 +1,10 @@
1
+ # https://github.com/travis-ci/travis-ci/wiki/.travis.yml-options
2
+ bundler_args: --without developer_happiness
3
+ script: "bundle exec rake"
1
4
  rvm:
2
5
  - 1.8.7
3
6
  - 1.9.2
4
- - ruby-head
7
+ - 1.9.3
5
8
  - ree
6
9
  - rbx
7
10
  - rbx-2.0
@@ -1,3 +1,32 @@
1
+ ## 0.9.7 (2011-08-25)
2
+
3
+ * Feature: Merged [pull request 210](https://github.com/rubiii/savon/pull/210) by
4
+ [mboeh](https://github.com/mboeh) to add `Savon::SOAP::Response#doc` and
5
+ `Savon::SOAP::Response#xpath`.
6
+
7
+ * Feature: Merged [pull request 211](https://github.com/rubiii/savon/pull/211) by
8
+ [mattkirman](https://github.com/mattkirman) to fix [issue 202](https://github.com/rubiii/savon/issues/202).
9
+
10
+ * Feature: You can now pass a block to `Savon::SOAP::XML#body` and use Builder to create the XML:
11
+
12
+ ``` ruby
13
+ client.request(:find) do
14
+ soap.body do |xml|
15
+ xml.user do
16
+ xml.id 601173
17
+ end
18
+ end
19
+ end
20
+ ```
21
+
22
+ * Fix: [issue 218](https://github.com/rubiii/savon/pull/218) - Savon now correctly handles namespaced
23
+ Array items in a Hash passed to `Savon::SOAP::XML#body=`.
24
+
25
+ * Fix: Merged [pull request 212](https://github.com/rubiii/savon/pull/212) to fix
26
+ [savon_spec issue 2](https://github.com/rubiii/savon_spec/issues/2).
27
+
28
+ * Improvement: [issue 222](https://github.com/rubiii/savon/issues/222) - Set the Content-Length header.
29
+
1
30
  ## 0.9.6 (2011-07-07)
2
31
 
3
32
  * Improvement/Fix: Updated Savon to use the latest version of [Wasabi](http://rubygems.org/gems/wasabi).
@@ -5,9 +34,7 @@
5
34
  to SOAP requests based on the WSDL. Users shouldn't need to do anything differently or even notice whether their WSDL
6
35
  hits this case; the intention is that this will "Just Work" and follow the WSDL. The SOAP details are that if
7
36
  elementFormDefault is specified as qualified, Savon will automatically prepend the correct XML namespaces to the
8
- elements in a SOAP request.
9
-
10
- Thanks to [jkingdon](https://github.com/jkingdon) for this.
37
+ elements in a SOAP request. Thanks to [jkingdon](https://github.com/jkingdon) for this.
11
38
 
12
39
  * Fix: [issue 143](https://github.com/rubiii/savon/issues/143) - Updating Wasabi should solve this issue.
13
40
 
@@ -31,26 +58,27 @@
31
58
  * Change: Removed support for NTLM authentication until it's stable. If you need it, you can still
32
59
  add the following line to your Gemfile:
33
60
 
34
- gem "httpi", "0.9.4"
61
+ ``` ruby
62
+ gem "httpi", "0.9.4"
63
+ ```
35
64
 
36
65
  * Refactoring:
37
66
 
38
67
  * `Hash#map_soap_response` and some of its helpers are moved to [Nori v1.0.0](http://rubygems.org/gems/nori/versions/1.0.0).
39
68
  Along with replacing core extensions with a proper implementation, Nori now contains a number of methods
40
- for configuring its default behavior:
69
+ for [configuring its default behavior](https://github.com/rubiii/nori/blob/master/CHANGELOG.md):
41
70
 
42
- * The option whether to strip namespaces was moved to Nori.strip_namespaces
43
- * You can disable "advanced typecasting" for SOAP response values
44
- * And you can configure how SOAP response keys should be converted
45
-
46
- Please take a look at [Nori's CHANGELOG](https://github.com/rubiii/nori/blob/master/CHANGELOG.md)
47
- for detailed information.
71
+ * The option whether to strip namespaces was moved to Nori.strip_namespaces
72
+ * You can disable "advanced typecasting" for SOAP response values
73
+ * And you can configure how SOAP response keys should be converted
48
74
 
49
75
  * `Savon::SOAP::XML.to_hash`, `Savon::SOAP::XML.parse` and `Savon::SOAP::XML.to_array` are gone.
50
76
  It wasn't worth keeping them around, because they didn't do much. You can simply parse a SOAP
51
77
  response and translate it to a Savon SOAP response Hash via:
52
78
 
79
+ ``` ruby
53
80
  Nori.parse(xml)[:envelope][:body]
81
+ ```
54
82
 
55
83
  * `Savon::SOAP::Response#basic_hash` is now `Savon::SOAP::Response#hash`.
56
84
 
@@ -66,7 +94,9 @@
66
94
  [Nori](http://rubygems.org/gems/nori). It's based on Crack and comes with pluggable parsers.
67
95
  It defaults to REXML, but you can switch to Nokogiri via:
68
96
 
69
- Nori.parser = :nokogiri
97
+ ``` ruby
98
+ Nori.parser = :nokogiri
99
+ ```
70
100
 
71
101
  * Improvement: WSDL parsing now uses Nokogiri instead of REXML.
72
102
 
@@ -75,12 +105,16 @@
75
105
  * Improvement: if you're only setting the local or remote address of your wsdl document, you can
76
106
  now pass an (optional) String to `Savon::Client.new` to set `wsdl.document`.
77
107
 
78
- Savon::Client.new "http://example.com/UserService?wsdl"
108
+ ``` ruby
109
+ Savon::Client.new "http://example.com/UserService?wsdl"
110
+ ```
79
111
 
80
112
  * Improvement: instead of calling the `to_hash` method of your response again and again and again,
81
113
  there is now a ' #[]` shortcut for you.
82
114
 
83
- response[:authenticate_response][:return]
115
+ ``` ruby
116
+ response[:authenticate_response][:return]
117
+ ```
84
118
 
85
119
  ## 0.9.0 (2011-04-05)
86
120
 
@@ -89,26 +123,32 @@
89
123
  configurable "Hash key Symbol to lowerCamelCase" conversion by using the latest version of
90
124
  [Gyoku](http://rubygems.org/gems/gyoku).
91
125
 
92
- Gyoku.convert_symbols_to(:camelcase)
93
- Gyoku.xml(:first_name => "Mac") # => "<FirstName></Firstname>"
126
+ ``` ruby
127
+ Gyoku.convert_symbols_to(:camelcase)
128
+ Gyoku.xml(:first_name => "Mac") # => "<FirstName></Firstname>"
129
+ ```
94
130
 
95
131
  You can even define your own conversion formular.
96
132
 
97
- Gyoku.convert_symbols_to { |key| key.upcase }
98
- Gyoku.xml(:first_name => "Mac") # => "<FIRST_NAME></FIRST_NAME>"
133
+ ``` ruby
134
+ Gyoku.convert_symbols_to { |key| key.upcase }
135
+ Gyoku.xml(:first_name => "Mac") # => "<FIRST_NAME></FIRST_NAME>"
136
+ ```
99
137
 
100
138
  This should also work for the SOAP input tag and SOAPAction header. So if you had to use a String for
101
139
  the SOAP action to call because your services uses CamelCase instead of lowerCamelCase, you can now
102
140
  change the default and use Symbols instead.
103
141
 
104
- Gyoku.convert_symbols_to(:camelcase)
142
+ ``` ruby
143
+ Gyoku.convert_symbols_to(:camelcase)
105
144
 
106
- # pre Gyoku 0.4.0
107
- client.request(:get_user) # => "<getUser/>"
108
- client.request("GetUser") # => "<GetUser/>"
145
+ # pre Gyoku 0.4.0
146
+ client.request(:get_user) # => "<getUser/>
147
+ client.request("GetUser") # => "<GetUser/>"
109
148
 
110
- # post Gyoku 0.4.0
111
- client.request(:get_user) # => "<GetUser/>"
149
+ # post Gyoku 0.4.0
150
+ client.request(:get_user) # => "<GetUser/>"
151
+ ```
112
152
 
113
153
  * Improvement: issues [#170](https://github.com/rubiii/savon/issues/170) and
114
154
  [#173](https://github.com/rubiii/savon/issues/173) Savon no longer rescues exceptions raised by
@@ -117,9 +157,11 @@
117
157
 
118
158
  * Improvement: issue [#172](https://github.com/rubiii/savon/issues/172) support for global env_namespace.
119
159
 
120
- Savon.configure do |config|
121
- config.env_namespace = :soapenv # changes the default :env namespace
122
- end
160
+ ``` ruby
161
+ Savon.configure do |config|
162
+ config.env_namespace = :soapenv # changes the default :env namespace
163
+ end
164
+ ```
123
165
 
124
166
  * Fix: [issue #163](https://github.com/rubiii/savon/issues/163) "Savon 0.8.6 not playing nicely
125
167
  with Httpi 0.9.0". Updating HTTPI to v0.9.1 should solve this problem.
data/Gemfile CHANGED
@@ -2,3 +2,8 @@ source :rubygems
2
2
  gemspec
3
3
 
4
4
  gem "httpclient", "~> 2.1.5"
5
+
6
+ # excluded from travis
7
+ group :developer_happiness do
8
+ gem "autotest"
9
+ end
@@ -110,7 +110,9 @@ module Savon
110
110
  soap.namespace_identifier = args[0]
111
111
  soap.namespace = wsdl.namespace
112
112
  soap.element_form_default = wsdl.element_form_default if wsdl.document?
113
- soap.body = args[2].delete(:body)
113
+
114
+ body = args[2].delete(:body)
115
+ soap.body = body if body
114
116
 
115
117
  wsdl.type_namespaces.each do |path, uri|
116
118
  soap.use_namespace(path, uri)
@@ -35,9 +35,13 @@ module Savon
35
35
 
36
36
  # Sets up the +request+ using a given +soap+ object.
37
37
  def setup(request, soap)
38
- request.url = soap.endpoint
38
+ url, body = soap.endpoint, soap.to_xml
39
+
40
+ request.url = url
41
+ request.body = body
39
42
  request.headers["Content-Type"] ||= ContentType[soap.version]
40
- request.body = soap.to_xml
43
+ request.headers["Content-Length"] ||= body.length.to_s
44
+
41
45
  request
42
46
  end
43
47
 
@@ -74,7 +74,7 @@ module Savon
74
74
 
75
75
  # Returns the complete SOAP response XML without normalization.
76
76
  def hash
77
- @hash ||= Nori.parse http.body
77
+ @hash ||= Nori.parse(to_xml)
78
78
  end
79
79
 
80
80
  # Returns the SOAP response XML.
@@ -82,6 +82,17 @@ module Savon
82
82
  http.body
83
83
  end
84
84
 
85
+ # Returns a <tt>Nokogiri::XML::Document</tt> for the SOAP response XML.
86
+ def doc
87
+ @doc ||= Nokogiri::XML(to_xml)
88
+ end
89
+
90
+ # Returns an Array of <tt>Nokogiri::XML::Node</tt> objects retrieved with the given +path+.
91
+ # Automatically adds all of the document's namespaces unless a +namespaces+ hash is provided.
92
+ def xpath(path, namespaces = nil)
93
+ doc.xpath(path, namespaces || xml_namespaces)
94
+ end
95
+
85
96
  private
86
97
 
87
98
  def raise_errors
@@ -89,6 +100,10 @@ module Savon
89
100
  raise http_error if http_error?
90
101
  end
91
102
 
103
+ def xml_namespaces
104
+ @xml_namespaces ||= doc.collect_namespaces
105
+ end
106
+
92
107
  end
93
108
  end
94
109
  end
@@ -125,13 +125,21 @@ module Savon
125
125
  # Accessor for the <tt>Savon::WSSE</tt> object.
126
126
  attr_accessor :wsse
127
127
 
128
- # Accessor for the SOAP +body+. Expected to be a Hash that can be translated to XML via Gyoku.xml
128
+ # Accepts a +block+ and yields a <tt>Builder::XmlMarkup</tt> object to let you create
129
+ # custom body XML.
130
+ def body
131
+ @body = yield builder(nil) if block_given?
132
+ @body
133
+ end
134
+
135
+ # Sets the SOAP +body+. Expected to be a Hash that can be translated to XML via `Gyoku.xml`
129
136
  # or any other Object responding to to_s.
130
- attr_accessor :body
137
+ attr_writer :body
131
138
 
132
- # Accepts a +block+ and yields a <tt>Builder::XmlMarkup</tt> object to let you create custom XML.
133
- def xml
134
- @xml = yield builder if block_given?
139
+ # Accepts a +block+ and yields a <tt>Builder::XmlMarkup</tt> object to let you create
140
+ # a completely custom XML.
141
+ def xml(directive_tag = :xml, attrs = {})
142
+ @xml = yield builder(directive_tag, attrs) if block_given?
135
143
  end
136
144
 
137
145
  # Accepts an XML String and lets you specify a completely custom request body.
@@ -153,9 +161,9 @@ module Savon
153
161
  private
154
162
 
155
163
  # Returns a new <tt>Builder::XmlMarkup</tt> object.
156
- def builder
164
+ def builder(directive_tag = :xml, attrs = {})
157
165
  builder = Builder::XmlMarkup.new
158
- builder.instruct!
166
+ builder.instruct!(directive_tag, attrs) if directive_tag
159
167
  builder
160
168
  end
161
169
 
@@ -191,6 +199,7 @@ module Savon
191
199
 
192
200
  def add_namespaces_to_body(hash, path = [input[1].to_s])
193
201
  return unless hash
202
+ return hash if hash.kind_of?(Array)
194
203
  return hash.to_s unless hash.kind_of? Hash
195
204
 
196
205
  hash.inject({}) do |newhash, (key, value)|
@@ -1,5 +1,5 @@
1
1
  module Savon
2
2
 
3
- Version = "0.9.6"
3
+ Version = "0.9.7"
4
4
 
5
5
  end
@@ -26,7 +26,6 @@ Gem::Specification.new do |s|
26
26
  s.add_development_dependency "rspec", "~> 2.5.0"
27
27
  s.add_development_dependency "mocha", "~> 0.9.8"
28
28
  s.add_development_dependency "timecop", "~> 0.3.5"
29
- s.add_development_dependency "autotest"
30
29
 
31
30
  s.files = `git ls-files`.split("\n")
32
31
  s.require_path = "lib"
@@ -0,0 +1 @@
1
+ <?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><LookupResponse xmlns="http://taxcloud.net"><LookupResult><ResponseType>Error</ResponseType><Messages><ResponseMessage><ResponseType>Error</ResponseType><Message>Invalid apiLoginID and/or apiKey</Message></ResponseMessage></Messages><CartItemsResponse /></LookupResult></LookupResponse></soap:Body></soap:Envelope>
@@ -0,0 +1,934 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <wsdl:definitions xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://taxcloud.net" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" targetNamespace="http://taxcloud.net" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
3
+ <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">TaxCloud Web Service</wsdl:documentation>
4
+ <wsdl:types>
5
+ <s:schema elementFormDefault="qualified" targetNamespace="http://taxcloud.net">
6
+ <s:element name="VerifyAddress">
7
+ <s:complexType>
8
+ <s:sequence>
9
+ <s:element minOccurs="0" maxOccurs="1" name="uspsUserID" type="s:string" />
10
+ <s:element minOccurs="0" maxOccurs="1" name="address1" type="s:string" />
11
+ <s:element minOccurs="0" maxOccurs="1" name="address2" type="s:string" />
12
+ <s:element minOccurs="0" maxOccurs="1" name="city" type="s:string" />
13
+ <s:element minOccurs="0" maxOccurs="1" name="state" type="s:string" />
14
+ <s:element minOccurs="0" maxOccurs="1" name="zip5" type="s:string" />
15
+ <s:element minOccurs="0" maxOccurs="1" name="zip4" type="s:string" />
16
+ </s:sequence>
17
+ </s:complexType>
18
+ </s:element>
19
+ <s:element name="VerifyAddressResponse">
20
+ <s:complexType>
21
+ <s:sequence>
22
+ <s:element minOccurs="0" maxOccurs="1" name="VerifyAddressResult" type="tns:VerifiedAddress" />
23
+ </s:sequence>
24
+ </s:complexType>
25
+ </s:element>
26
+ <s:complexType name="VerifiedAddress">
27
+ <s:complexContent mixed="false">
28
+ <s:extension base="tns:Address">
29
+ <s:sequence>
30
+ <s:element minOccurs="0" maxOccurs="1" name="ErrNumber" type="s:string" />
31
+ <s:element minOccurs="0" maxOccurs="1" name="ErrDescription" type="s:string" />
32
+ </s:sequence>
33
+ </s:extension>
34
+ </s:complexContent>
35
+ </s:complexType>
36
+ <s:complexType name="Address">
37
+ <s:sequence>
38
+ <s:element minOccurs="0" maxOccurs="1" name="Address1" type="s:string" />
39
+ <s:element minOccurs="0" maxOccurs="1" name="Address2" type="s:string" />
40
+ <s:element minOccurs="0" maxOccurs="1" name="City" type="s:string" />
41
+ <s:element minOccurs="0" maxOccurs="1" name="State" type="s:string" />
42
+ <s:element minOccurs="0" maxOccurs="1" name="Zip5" type="s:string" />
43
+ <s:element minOccurs="0" maxOccurs="1" name="Zip4" type="s:string" />
44
+ </s:sequence>
45
+ </s:complexType>
46
+ <s:element name="LookupForDate">
47
+ <s:complexType>
48
+ <s:sequence>
49
+ <s:element minOccurs="0" maxOccurs="1" name="apiLoginID" type="s:string" />
50
+ <s:element minOccurs="0" maxOccurs="1" name="apiKey" type="s:string" />
51
+ <s:element minOccurs="0" maxOccurs="1" name="customerID" type="s:string" />
52
+ <s:element minOccurs="0" maxOccurs="1" name="cartID" type="s:string" />
53
+ <s:element minOccurs="0" maxOccurs="1" name="cartItems" type="tns:ArrayOfCartItem" />
54
+ <s:element minOccurs="0" maxOccurs="1" name="origin" type="tns:Address" />
55
+ <s:element minOccurs="0" maxOccurs="1" name="destination" type="tns:Address" />
56
+ <s:element minOccurs="1" maxOccurs="1" name="deliveredBySeller" type="s:boolean" />
57
+ <s:element minOccurs="0" maxOccurs="1" name="exemptCert" type="tns:ExemptionCertificate" />
58
+ <s:element minOccurs="1" maxOccurs="1" name="useDate" type="s:dateTime" />
59
+ </s:sequence>
60
+ </s:complexType>
61
+ </s:element>
62
+ <s:complexType name="ArrayOfCartItem">
63
+ <s:sequence>
64
+ <s:element minOccurs="0" maxOccurs="unbounded" name="CartItem" nillable="true" type="tns:CartItem" />
65
+ </s:sequence>
66
+ </s:complexType>
67
+ <s:complexType name="CartItem">
68
+ <s:sequence>
69
+ <s:element minOccurs="1" maxOccurs="1" name="Index" type="s:int" />
70
+ <s:element minOccurs="0" maxOccurs="1" name="ItemID" type="s:string" />
71
+ <s:element minOccurs="1" maxOccurs="1" name="TIC" type="s:int" />
72
+ <s:element minOccurs="1" maxOccurs="1" name="Price" type="s:double" />
73
+ <s:element minOccurs="1" maxOccurs="1" name="Qty" type="s:float" />
74
+ </s:sequence>
75
+ </s:complexType>
76
+ <s:complexType name="ExemptionCertificate">
77
+ <s:sequence>
78
+ <s:element minOccurs="0" maxOccurs="1" name="CertificateID" type="s:string" />
79
+ <s:element minOccurs="0" maxOccurs="1" name="Detail" type="tns:ExemptionCertificateDetail" />
80
+ </s:sequence>
81
+ </s:complexType>
82
+ <s:complexType name="ExemptionCertificateDetail">
83
+ <s:sequence>
84
+ <s:element minOccurs="0" maxOccurs="1" name="ExemptStates" type="tns:ArrayOfExemptState" />
85
+ <s:element minOccurs="1" maxOccurs="1" name="SinglePurchase" type="s:boolean" />
86
+ <s:element minOccurs="0" maxOccurs="1" name="SinglePurchaseOrderNumber" type="s:string" />
87
+ <s:element minOccurs="0" maxOccurs="1" name="PurchaserFirstName" type="s:string" />
88
+ <s:element minOccurs="0" maxOccurs="1" name="PurchaserLastName" type="s:string" />
89
+ <s:element minOccurs="0" maxOccurs="1" name="PurchaserTitle" type="s:string" />
90
+ <s:element minOccurs="0" maxOccurs="1" name="PurchaserAddress1" type="s:string" />
91
+ <s:element minOccurs="0" maxOccurs="1" name="PurchaserAddress2" type="s:string" />
92
+ <s:element minOccurs="0" maxOccurs="1" name="PurchaserCity" type="s:string" />
93
+ <s:element minOccurs="1" maxOccurs="1" name="PurchaserState" type="tns:State" />
94
+ <s:element minOccurs="0" maxOccurs="1" name="PurchaserZip" type="s:string" />
95
+ <s:element minOccurs="0" maxOccurs="1" name="PurchaserTaxID" type="tns:TaxID" />
96
+ <s:element minOccurs="1" maxOccurs="1" name="PurchaserBusinessType" type="tns:BusinessType" />
97
+ <s:element minOccurs="0" maxOccurs="1" name="PurchaserBusinessTypeOtherValue" type="s:string" />
98
+ <s:element minOccurs="1" maxOccurs="1" name="PurchaserExemptionReason" type="tns:ExemptionReason" />
99
+ <s:element minOccurs="0" maxOccurs="1" name="PurchaserExemptionReasonValue" type="s:string" />
100
+ <s:element minOccurs="1" maxOccurs="1" name="CreatedDate" type="s:dateTime" />
101
+ </s:sequence>
102
+ </s:complexType>
103
+ <s:complexType name="ArrayOfExemptState">
104
+ <s:sequence>
105
+ <s:element minOccurs="0" maxOccurs="unbounded" name="ExemptState" nillable="true" type="tns:ExemptState" />
106
+ </s:sequence>
107
+ </s:complexType>
108
+ <s:complexType name="ExemptState">
109
+ <s:sequence>
110
+ <s:element minOccurs="1" maxOccurs="1" name="StateAbbr" type="tns:State" />
111
+ <s:element minOccurs="0" maxOccurs="1" name="ReasonForExemption" type="s:string" />
112
+ <s:element minOccurs="0" maxOccurs="1" name="IdentificationNumber" type="s:string" />
113
+ </s:sequence>
114
+ </s:complexType>
115
+ <s:simpleType name="State">
116
+ <s:restriction base="s:string">
117
+ <s:enumeration value="AL" />
118
+ <s:enumeration value="AK" />
119
+ <s:enumeration value="AZ" />
120
+ <s:enumeration value="AR" />
121
+ <s:enumeration value="CA" />
122
+ <s:enumeration value="CO" />
123
+ <s:enumeration value="CT" />
124
+ <s:enumeration value="DE" />
125
+ <s:enumeration value="DC" />
126
+ <s:enumeration value="FL" />
127
+ <s:enumeration value="GA" />
128
+ <s:enumeration value="HI" />
129
+ <s:enumeration value="ID" />
130
+ <s:enumeration value="IL" />
131
+ <s:enumeration value="IN" />
132
+ <s:enumeration value="IA" />
133
+ <s:enumeration value="KS" />
134
+ <s:enumeration value="KY" />
135
+ <s:enumeration value="LA" />
136
+ <s:enumeration value="ME" />
137
+ <s:enumeration value="MD" />
138
+ <s:enumeration value="MA" />
139
+ <s:enumeration value="MI" />
140
+ <s:enumeration value="MN" />
141
+ <s:enumeration value="MS" />
142
+ <s:enumeration value="MO" />
143
+ <s:enumeration value="MT" />
144
+ <s:enumeration value="NE" />
145
+ <s:enumeration value="NV" />
146
+ <s:enumeration value="NH" />
147
+ <s:enumeration value="NJ" />
148
+ <s:enumeration value="NM" />
149
+ <s:enumeration value="NY" />
150
+ <s:enumeration value="NC" />
151
+ <s:enumeration value="ND" />
152
+ <s:enumeration value="OH" />
153
+ <s:enumeration value="OK" />
154
+ <s:enumeration value="OR" />
155
+ <s:enumeration value="PA" />
156
+ <s:enumeration value="RI" />
157
+ <s:enumeration value="SC" />
158
+ <s:enumeration value="SD" />
159
+ <s:enumeration value="TN" />
160
+ <s:enumeration value="TX" />
161
+ <s:enumeration value="UT" />
162
+ <s:enumeration value="VT" />
163
+ <s:enumeration value="VA" />
164
+ <s:enumeration value="WA" />
165
+ <s:enumeration value="WV" />
166
+ <s:enumeration value="WI" />
167
+ <s:enumeration value="WY" />
168
+ </s:restriction>
169
+ </s:simpleType>
170
+ <s:complexType name="TaxID">
171
+ <s:sequence>
172
+ <s:element minOccurs="1" maxOccurs="1" name="TaxType" type="tns:TaxIDType" />
173
+ <s:element minOccurs="0" maxOccurs="1" name="IDNumber" type="s:string" />
174
+ <s:element minOccurs="0" maxOccurs="1" name="StateOfIssue" type="s:string" />
175
+ </s:sequence>
176
+ </s:complexType>
177
+ <s:simpleType name="TaxIDType">
178
+ <s:restriction base="s:string">
179
+ <s:enumeration value="SSN" />
180
+ <s:enumeration value="FEIN" />
181
+ <s:enumeration value="StateIssued" />
182
+ <s:enumeration value="ForeignDiplomat" />
183
+ </s:restriction>
184
+ </s:simpleType>
185
+ <s:simpleType name="BusinessType">
186
+ <s:restriction base="s:string">
187
+ <s:enumeration value="AccommodationAndFoodServices" />
188
+ <s:enumeration value="Agricultural_Forestry_Fishing_Hunting" />
189
+ <s:enumeration value="Construction" />
190
+ <s:enumeration value="FinanceAndInsurance" />
191
+ <s:enumeration value="Information_PublishingAndCommunications" />
192
+ <s:enumeration value="Manufacturing" />
193
+ <s:enumeration value="Mining" />
194
+ <s:enumeration value="RealEstate" />
195
+ <s:enumeration value="RentalAndLeasing" />
196
+ <s:enumeration value="RetailTrade" />
197
+ <s:enumeration value="TransportationAndWarehousing" />
198
+ <s:enumeration value="Utilities" />
199
+ <s:enumeration value="WholesaleTrade" />
200
+ <s:enumeration value="BusinessServices" />
201
+ <s:enumeration value="ProfessionalServices" />
202
+ <s:enumeration value="EducationAndHealthCareServices" />
203
+ <s:enumeration value="NonprofitOrganization" />
204
+ <s:enumeration value="Government" />
205
+ <s:enumeration value="NotABusiness" />
206
+ <s:enumeration value="Other" />
207
+ </s:restriction>
208
+ </s:simpleType>
209
+ <s:simpleType name="ExemptionReason">
210
+ <s:restriction base="s:string">
211
+ <s:enumeration value="FederalGovernmentDepartment" />
212
+ <s:enumeration value="StateOrLocalGovernmentName" />
213
+ <s:enumeration value="TribalGovernmentName" />
214
+ <s:enumeration value="ForeignDiplomat" />
215
+ <s:enumeration value="CharitableOrganization" />
216
+ <s:enumeration value="ReligiousOrEducationalOrganization" />
217
+ <s:enumeration value="Resale" />
218
+ <s:enumeration value="AgriculturalProduction" />
219
+ <s:enumeration value="IndustrialProductionOrManufacturing" />
220
+ <s:enumeration value="DirectPayPermit" />
221
+ <s:enumeration value="DirectMail" />
222
+ <s:enumeration value="Other" />
223
+ </s:restriction>
224
+ </s:simpleType>
225
+ <s:element name="LookupForDateResponse">
226
+ <s:complexType>
227
+ <s:sequence>
228
+ <s:element minOccurs="0" maxOccurs="1" name="LookupForDateResult" type="tns:LookupRsp" />
229
+ </s:sequence>
230
+ </s:complexType>
231
+ </s:element>
232
+ <s:complexType name="LookupRsp">
233
+ <s:complexContent mixed="false">
234
+ <s:extension base="tns:ResponseBase">
235
+ <s:sequence>
236
+ <s:element minOccurs="0" maxOccurs="1" name="CartID" type="s:string" />
237
+ <s:element minOccurs="0" maxOccurs="1" name="CartItemsResponse" type="tns:ArrayOfCartItemResponse" />
238
+ </s:sequence>
239
+ </s:extension>
240
+ </s:complexContent>
241
+ </s:complexType>
242
+ <s:complexType name="ResponseBase">
243
+ <s:sequence>
244
+ <s:element minOccurs="1" maxOccurs="1" name="ResponseType" type="tns:MessageType" />
245
+ <s:element minOccurs="0" maxOccurs="1" name="Messages" type="tns:ArrayOfResponseMessage" />
246
+ </s:sequence>
247
+ </s:complexType>
248
+ <s:simpleType name="MessageType">
249
+ <s:restriction base="s:string">
250
+ <s:enumeration value="Error" />
251
+ <s:enumeration value="Warning" />
252
+ <s:enumeration value="Informational" />
253
+ <s:enumeration value="OK" />
254
+ </s:restriction>
255
+ </s:simpleType>
256
+ <s:complexType name="ArrayOfResponseMessage">
257
+ <s:sequence>
258
+ <s:element minOccurs="0" maxOccurs="unbounded" name="ResponseMessage" nillable="true" type="tns:ResponseMessage" />
259
+ </s:sequence>
260
+ </s:complexType>
261
+ <s:complexType name="ResponseMessage">
262
+ <s:sequence>
263
+ <s:element minOccurs="1" maxOccurs="1" name="ResponseType" type="tns:MessageType" />
264
+ <s:element minOccurs="0" maxOccurs="1" name="Message" type="s:string" />
265
+ </s:sequence>
266
+ </s:complexType>
267
+ <s:complexType name="ArrayOfCartItemResponse">
268
+ <s:sequence>
269
+ <s:element minOccurs="0" maxOccurs="unbounded" name="CartItemResponse" nillable="true" type="tns:CartItemResponse" />
270
+ </s:sequence>
271
+ </s:complexType>
272
+ <s:complexType name="CartItemResponse">
273
+ <s:sequence>
274
+ <s:element minOccurs="1" maxOccurs="1" name="CartItemIndex" type="s:int" />
275
+ <s:element minOccurs="1" maxOccurs="1" name="TaxAmount" type="s:float" />
276
+ </s:sequence>
277
+ </s:complexType>
278
+ <s:element name="Lookup">
279
+ <s:complexType>
280
+ <s:sequence>
281
+ <s:element minOccurs="0" maxOccurs="1" name="apiLoginID" type="s:string" />
282
+ <s:element minOccurs="0" maxOccurs="1" name="apiKey" type="s:string" />
283
+ <s:element minOccurs="0" maxOccurs="1" name="customerID" type="s:string" />
284
+ <s:element minOccurs="0" maxOccurs="1" name="cartID" type="s:string" />
285
+ <s:element minOccurs="0" maxOccurs="1" name="cartItems" type="tns:ArrayOfCartItem" />
286
+ <s:element minOccurs="0" maxOccurs="1" name="origin" type="tns:Address" />
287
+ <s:element minOccurs="0" maxOccurs="1" name="destination" type="tns:Address" />
288
+ <s:element minOccurs="1" maxOccurs="1" name="deliveredBySeller" type="s:boolean" />
289
+ <s:element minOccurs="0" maxOccurs="1" name="exemptCert" type="tns:ExemptionCertificate" />
290
+ </s:sequence>
291
+ </s:complexType>
292
+ </s:element>
293
+ <s:element name="LookupResponse">
294
+ <s:complexType>
295
+ <s:sequence>
296
+ <s:element minOccurs="0" maxOccurs="1" name="LookupResult" type="tns:LookupRsp" />
297
+ </s:sequence>
298
+ </s:complexType>
299
+ </s:element>
300
+ <s:element name="Authorized">
301
+ <s:complexType>
302
+ <s:sequence>
303
+ <s:element minOccurs="0" maxOccurs="1" name="apiLoginID" type="s:string" />
304
+ <s:element minOccurs="0" maxOccurs="1" name="apiKey" type="s:string" />
305
+ <s:element minOccurs="0" maxOccurs="1" name="customerID" type="s:string" />
306
+ <s:element minOccurs="0" maxOccurs="1" name="cartID" type="s:string" />
307
+ <s:element minOccurs="0" maxOccurs="1" name="orderID" type="s:string" />
308
+ <s:element minOccurs="1" maxOccurs="1" name="dateAuthorized" type="s:dateTime" />
309
+ </s:sequence>
310
+ </s:complexType>
311
+ </s:element>
312
+ <s:element name="AuthorizedResponse">
313
+ <s:complexType>
314
+ <s:sequence>
315
+ <s:element minOccurs="0" maxOccurs="1" name="AuthorizedResult" type="tns:AuthorizedRsp" />
316
+ </s:sequence>
317
+ </s:complexType>
318
+ </s:element>
319
+ <s:complexType name="AuthorizedRsp">
320
+ <s:complexContent mixed="false">
321
+ <s:extension base="tns:ResponseBase" />
322
+ </s:complexContent>
323
+ </s:complexType>
324
+ <s:element name="AuthorizedWithCapture">
325
+ <s:complexType>
326
+ <s:sequence>
327
+ <s:element minOccurs="0" maxOccurs="1" name="apiLoginID" type="s:string" />
328
+ <s:element minOccurs="0" maxOccurs="1" name="apiKey" type="s:string" />
329
+ <s:element minOccurs="0" maxOccurs="1" name="customerID" type="s:string" />
330
+ <s:element minOccurs="0" maxOccurs="1" name="cartID" type="s:string" />
331
+ <s:element minOccurs="0" maxOccurs="1" name="orderID" type="s:string" />
332
+ <s:element minOccurs="1" maxOccurs="1" name="dateAuthorized" type="s:dateTime" />
333
+ <s:element minOccurs="1" maxOccurs="1" name="dateCaptured" type="s:dateTime" />
334
+ </s:sequence>
335
+ </s:complexType>
336
+ </s:element>
337
+ <s:element name="AuthorizedWithCaptureResponse">
338
+ <s:complexType>
339
+ <s:sequence>
340
+ <s:element minOccurs="0" maxOccurs="1" name="AuthorizedWithCaptureResult" type="tns:AuthorizedRsp" />
341
+ </s:sequence>
342
+ </s:complexType>
343
+ </s:element>
344
+ <s:element name="Captured">
345
+ <s:complexType>
346
+ <s:sequence>
347
+ <s:element minOccurs="0" maxOccurs="1" name="apiLoginID" type="s:string" />
348
+ <s:element minOccurs="0" maxOccurs="1" name="apiKey" type="s:string" />
349
+ <s:element minOccurs="0" maxOccurs="1" name="orderID" type="s:string" />
350
+ </s:sequence>
351
+ </s:complexType>
352
+ </s:element>
353
+ <s:element name="CapturedResponse">
354
+ <s:complexType>
355
+ <s:sequence>
356
+ <s:element minOccurs="0" maxOccurs="1" name="CapturedResult" type="tns:CapturedRsp" />
357
+ </s:sequence>
358
+ </s:complexType>
359
+ </s:element>
360
+ <s:complexType name="CapturedRsp">
361
+ <s:complexContent mixed="false">
362
+ <s:extension base="tns:ResponseBase" />
363
+ </s:complexContent>
364
+ </s:complexType>
365
+ <s:element name="Returned">
366
+ <s:complexType>
367
+ <s:sequence>
368
+ <s:element minOccurs="0" maxOccurs="1" name="apiLoginID" type="s:string" />
369
+ <s:element minOccurs="0" maxOccurs="1" name="apiKey" type="s:string" />
370
+ <s:element minOccurs="0" maxOccurs="1" name="orderID" type="s:string" />
371
+ <s:element minOccurs="0" maxOccurs="1" name="cartItems" type="tns:ArrayOfCartItem" />
372
+ <s:element minOccurs="1" maxOccurs="1" name="returnedDate" type="s:dateTime" />
373
+ </s:sequence>
374
+ </s:complexType>
375
+ </s:element>
376
+ <s:element name="ReturnedResponse">
377
+ <s:complexType>
378
+ <s:sequence>
379
+ <s:element minOccurs="0" maxOccurs="1" name="ReturnedResult" type="tns:ReturnedRsp" />
380
+ </s:sequence>
381
+ </s:complexType>
382
+ </s:element>
383
+ <s:complexType name="ReturnedRsp">
384
+ <s:complexContent mixed="false">
385
+ <s:extension base="tns:ResponseBase" />
386
+ </s:complexContent>
387
+ </s:complexType>
388
+ <s:element name="GetTICGroups">
389
+ <s:complexType>
390
+ <s:sequence>
391
+ <s:element minOccurs="0" maxOccurs="1" name="apiLoginID" type="s:string" />
392
+ <s:element minOccurs="0" maxOccurs="1" name="apiKey" type="s:string" />
393
+ </s:sequence>
394
+ </s:complexType>
395
+ </s:element>
396
+ <s:element name="GetTICGroupsResponse">
397
+ <s:complexType>
398
+ <s:sequence>
399
+ <s:element minOccurs="0" maxOccurs="1" name="GetTICGroupsResult" type="tns:GetTICGroupsRsp" />
400
+ </s:sequence>
401
+ </s:complexType>
402
+ </s:element>
403
+ <s:complexType name="GetTICGroupsRsp">
404
+ <s:complexContent mixed="false">
405
+ <s:extension base="tns:ResponseBase">
406
+ <s:sequence>
407
+ <s:element minOccurs="0" maxOccurs="1" name="TICGroups" type="tns:ArrayOfTICGroup" />
408
+ </s:sequence>
409
+ </s:extension>
410
+ </s:complexContent>
411
+ </s:complexType>
412
+ <s:complexType name="ArrayOfTICGroup">
413
+ <s:sequence>
414
+ <s:element minOccurs="0" maxOccurs="unbounded" name="TICGroup" nillable="true" type="tns:TICGroup" />
415
+ </s:sequence>
416
+ </s:complexType>
417
+ <s:complexType name="TICGroup">
418
+ <s:sequence>
419
+ <s:element minOccurs="1" maxOccurs="1" name="GroupID" type="s:int" />
420
+ <s:element minOccurs="0" maxOccurs="1" name="Description" type="s:string" />
421
+ </s:sequence>
422
+ </s:complexType>
423
+ <s:element name="GetTICs">
424
+ <s:complexType>
425
+ <s:sequence>
426
+ <s:element minOccurs="0" maxOccurs="1" name="apiLoginID" type="s:string" />
427
+ <s:element minOccurs="0" maxOccurs="1" name="apiKey" type="s:string" />
428
+ </s:sequence>
429
+ </s:complexType>
430
+ </s:element>
431
+ <s:element name="GetTICsResponse">
432
+ <s:complexType>
433
+ <s:sequence>
434
+ <s:element minOccurs="0" maxOccurs="1" name="GetTICsResult" type="tns:GetTICsRsp" />
435
+ </s:sequence>
436
+ </s:complexType>
437
+ </s:element>
438
+ <s:complexType name="GetTICsRsp">
439
+ <s:complexContent mixed="false">
440
+ <s:extension base="tns:ResponseBase">
441
+ <s:sequence>
442
+ <s:element minOccurs="0" maxOccurs="1" name="TICs" type="tns:ArrayOfTIC" />
443
+ </s:sequence>
444
+ </s:extension>
445
+ </s:complexContent>
446
+ </s:complexType>
447
+ <s:complexType name="ArrayOfTIC">
448
+ <s:sequence>
449
+ <s:element minOccurs="0" maxOccurs="unbounded" name="TIC" nillable="true" type="tns:TIC" />
450
+ </s:sequence>
451
+ </s:complexType>
452
+ <s:complexType name="TIC">
453
+ <s:sequence>
454
+ <s:element minOccurs="1" maxOccurs="1" name="TICID" type="s:int" />
455
+ <s:element minOccurs="0" maxOccurs="1" name="Description" type="s:string" />
456
+ </s:sequence>
457
+ </s:complexType>
458
+ <s:element name="GetTICsByGroup">
459
+ <s:complexType>
460
+ <s:sequence>
461
+ <s:element minOccurs="0" maxOccurs="1" name="apiLoginID" type="s:string" />
462
+ <s:element minOccurs="0" maxOccurs="1" name="apiKey" type="s:string" />
463
+ <s:element minOccurs="1" maxOccurs="1" name="ticGroup" type="s:int" />
464
+ </s:sequence>
465
+ </s:complexType>
466
+ </s:element>
467
+ <s:element name="GetTICsByGroupResponse">
468
+ <s:complexType>
469
+ <s:sequence>
470
+ <s:element minOccurs="0" maxOccurs="1" name="GetTICsByGroupResult" type="tns:GetTICsRsp" />
471
+ </s:sequence>
472
+ </s:complexType>
473
+ </s:element>
474
+ <s:element name="AddExemptCertificate">
475
+ <s:complexType>
476
+ <s:sequence>
477
+ <s:element minOccurs="0" maxOccurs="1" name="apiLoginID" type="s:string" />
478
+ <s:element minOccurs="0" maxOccurs="1" name="apiKey" type="s:string" />
479
+ <s:element minOccurs="0" maxOccurs="1" name="customerID" type="s:string" />
480
+ <s:element minOccurs="0" maxOccurs="1" name="exemptCert" type="tns:ExemptionCertificate" />
481
+ </s:sequence>
482
+ </s:complexType>
483
+ </s:element>
484
+ <s:element name="AddExemptCertificateResponse">
485
+ <s:complexType>
486
+ <s:sequence>
487
+ <s:element minOccurs="0" maxOccurs="1" name="AddExemptCertificateResult" type="tns:AddCertificateRsp" />
488
+ </s:sequence>
489
+ </s:complexType>
490
+ </s:element>
491
+ <s:complexType name="AddCertificateRsp">
492
+ <s:complexContent mixed="false">
493
+ <s:extension base="tns:ResponseBase">
494
+ <s:sequence>
495
+ <s:element minOccurs="0" maxOccurs="1" name="CertificateID" type="s:string" />
496
+ </s:sequence>
497
+ </s:extension>
498
+ </s:complexContent>
499
+ </s:complexType>
500
+ <s:element name="DeleteExemptCertificate">
501
+ <s:complexType>
502
+ <s:sequence>
503
+ <s:element minOccurs="0" maxOccurs="1" name="apiLoginID" type="s:string" />
504
+ <s:element minOccurs="0" maxOccurs="1" name="apiKey" type="s:string" />
505
+ <s:element minOccurs="0" maxOccurs="1" name="certificateID" type="s:string" />
506
+ </s:sequence>
507
+ </s:complexType>
508
+ </s:element>
509
+ <s:element name="DeleteExemptCertificateResponse">
510
+ <s:complexType>
511
+ <s:sequence>
512
+ <s:element minOccurs="0" maxOccurs="1" name="DeleteExemptCertificateResult" type="tns:DeleteCertificateRsp" />
513
+ </s:sequence>
514
+ </s:complexType>
515
+ </s:element>
516
+ <s:complexType name="DeleteCertificateRsp">
517
+ <s:complexContent mixed="false">
518
+ <s:extension base="tns:ResponseBase" />
519
+ </s:complexContent>
520
+ </s:complexType>
521
+ <s:element name="GetExemptCertificates">
522
+ <s:complexType>
523
+ <s:sequence>
524
+ <s:element minOccurs="0" maxOccurs="1" name="apiLoginID" type="s:string" />
525
+ <s:element minOccurs="0" maxOccurs="1" name="apiKey" type="s:string" />
526
+ <s:element minOccurs="0" maxOccurs="1" name="customerID" type="s:string" />
527
+ </s:sequence>
528
+ </s:complexType>
529
+ </s:element>
530
+ <s:element name="GetExemptCertificatesResponse">
531
+ <s:complexType>
532
+ <s:sequence>
533
+ <s:element minOccurs="0" maxOccurs="1" name="GetExemptCertificatesResult" type="tns:GetCertificatesRsp" />
534
+ </s:sequence>
535
+ </s:complexType>
536
+ </s:element>
537
+ <s:complexType name="GetCertificatesRsp">
538
+ <s:complexContent mixed="false">
539
+ <s:extension base="tns:ResponseBase">
540
+ <s:sequence>
541
+ <s:element minOccurs="0" maxOccurs="1" name="ExemptCertificates" type="tns:ArrayOfExemptionCertificate" />
542
+ </s:sequence>
543
+ </s:extension>
544
+ </s:complexContent>
545
+ </s:complexType>
546
+ <s:complexType name="ArrayOfExemptionCertificate">
547
+ <s:sequence>
548
+ <s:element minOccurs="0" maxOccurs="unbounded" name="ExemptionCertificate" nillable="true" type="tns:ExemptionCertificate" />
549
+ </s:sequence>
550
+ </s:complexType>
551
+ </s:schema>
552
+ </wsdl:types>
553
+ <wsdl:message name="VerifyAddressSoapIn">
554
+ <wsdl:part name="parameters" element="tns:VerifyAddress" />
555
+ </wsdl:message>
556
+ <wsdl:message name="VerifyAddressSoapOut">
557
+ <wsdl:part name="parameters" element="tns:VerifyAddressResponse" />
558
+ </wsdl:message>
559
+ <wsdl:message name="LookupForDateSoapIn">
560
+ <wsdl:part name="parameters" element="tns:LookupForDate" />
561
+ </wsdl:message>
562
+ <wsdl:message name="LookupForDateSoapOut">
563
+ <wsdl:part name="parameters" element="tns:LookupForDateResponse" />
564
+ </wsdl:message>
565
+ <wsdl:message name="LookupSoapIn">
566
+ <wsdl:part name="parameters" element="tns:Lookup" />
567
+ </wsdl:message>
568
+ <wsdl:message name="LookupSoapOut">
569
+ <wsdl:part name="parameters" element="tns:LookupResponse" />
570
+ </wsdl:message>
571
+ <wsdl:message name="AuthorizedSoapIn">
572
+ <wsdl:part name="parameters" element="tns:Authorized" />
573
+ </wsdl:message>
574
+ <wsdl:message name="AuthorizedSoapOut">
575
+ <wsdl:part name="parameters" element="tns:AuthorizedResponse" />
576
+ </wsdl:message>
577
+ <wsdl:message name="AuthorizedWithCaptureSoapIn">
578
+ <wsdl:part name="parameters" element="tns:AuthorizedWithCapture" />
579
+ </wsdl:message>
580
+ <wsdl:message name="AuthorizedWithCaptureSoapOut">
581
+ <wsdl:part name="parameters" element="tns:AuthorizedWithCaptureResponse" />
582
+ </wsdl:message>
583
+ <wsdl:message name="CapturedSoapIn">
584
+ <wsdl:part name="parameters" element="tns:Captured" />
585
+ </wsdl:message>
586
+ <wsdl:message name="CapturedSoapOut">
587
+ <wsdl:part name="parameters" element="tns:CapturedResponse" />
588
+ </wsdl:message>
589
+ <wsdl:message name="ReturnedSoapIn">
590
+ <wsdl:part name="parameters" element="tns:Returned" />
591
+ </wsdl:message>
592
+ <wsdl:message name="ReturnedSoapOut">
593
+ <wsdl:part name="parameters" element="tns:ReturnedResponse" />
594
+ </wsdl:message>
595
+ <wsdl:message name="GetTICGroupsSoapIn">
596
+ <wsdl:part name="parameters" element="tns:GetTICGroups" />
597
+ </wsdl:message>
598
+ <wsdl:message name="GetTICGroupsSoapOut">
599
+ <wsdl:part name="parameters" element="tns:GetTICGroupsResponse" />
600
+ </wsdl:message>
601
+ <wsdl:message name="GetTICsSoapIn">
602
+ <wsdl:part name="parameters" element="tns:GetTICs" />
603
+ </wsdl:message>
604
+ <wsdl:message name="GetTICsSoapOut">
605
+ <wsdl:part name="parameters" element="tns:GetTICsResponse" />
606
+ </wsdl:message>
607
+ <wsdl:message name="GetTICsByGroupSoapIn">
608
+ <wsdl:part name="parameters" element="tns:GetTICsByGroup" />
609
+ </wsdl:message>
610
+ <wsdl:message name="GetTICsByGroupSoapOut">
611
+ <wsdl:part name="parameters" element="tns:GetTICsByGroupResponse" />
612
+ </wsdl:message>
613
+ <wsdl:message name="AddExemptCertificateSoapIn">
614
+ <wsdl:part name="parameters" element="tns:AddExemptCertificate" />
615
+ </wsdl:message>
616
+ <wsdl:message name="AddExemptCertificateSoapOut">
617
+ <wsdl:part name="parameters" element="tns:AddExemptCertificateResponse" />
618
+ </wsdl:message>
619
+ <wsdl:message name="DeleteExemptCertificateSoapIn">
620
+ <wsdl:part name="parameters" element="tns:DeleteExemptCertificate" />
621
+ </wsdl:message>
622
+ <wsdl:message name="DeleteExemptCertificateSoapOut">
623
+ <wsdl:part name="parameters" element="tns:DeleteExemptCertificateResponse" />
624
+ </wsdl:message>
625
+ <wsdl:message name="GetExemptCertificatesSoapIn">
626
+ <wsdl:part name="parameters" element="tns:GetExemptCertificates" />
627
+ </wsdl:message>
628
+ <wsdl:message name="GetExemptCertificatesSoapOut">
629
+ <wsdl:part name="parameters" element="tns:GetExemptCertificatesResponse" />
630
+ </wsdl:message>
631
+ <wsdl:portType name="TaxCloudSoap">
632
+ <wsdl:operation name="VerifyAddress">
633
+ <wsdl:input message="tns:VerifyAddressSoapIn" />
634
+ <wsdl:output message="tns:VerifyAddressSoapOut" />
635
+ </wsdl:operation>
636
+ <wsdl:operation name="LookupForDate">
637
+ <wsdl:input message="tns:LookupForDateSoapIn" />
638
+ <wsdl:output message="tns:LookupForDateSoapOut" />
639
+ </wsdl:operation>
640
+ <wsdl:operation name="Lookup">
641
+ <wsdl:input message="tns:LookupSoapIn" />
642
+ <wsdl:output message="tns:LookupSoapOut" />
643
+ </wsdl:operation>
644
+ <wsdl:operation name="Authorized">
645
+ <wsdl:input message="tns:AuthorizedSoapIn" />
646
+ <wsdl:output message="tns:AuthorizedSoapOut" />
647
+ </wsdl:operation>
648
+ <wsdl:operation name="AuthorizedWithCapture">
649
+ <wsdl:input message="tns:AuthorizedWithCaptureSoapIn" />
650
+ <wsdl:output message="tns:AuthorizedWithCaptureSoapOut" />
651
+ </wsdl:operation>
652
+ <wsdl:operation name="Captured">
653
+ <wsdl:input message="tns:CapturedSoapIn" />
654
+ <wsdl:output message="tns:CapturedSoapOut" />
655
+ </wsdl:operation>
656
+ <wsdl:operation name="Returned">
657
+ <wsdl:input message="tns:ReturnedSoapIn" />
658
+ <wsdl:output message="tns:ReturnedSoapOut" />
659
+ </wsdl:operation>
660
+ <wsdl:operation name="GetTICGroups">
661
+ <wsdl:input message="tns:GetTICGroupsSoapIn" />
662
+ <wsdl:output message="tns:GetTICGroupsSoapOut" />
663
+ </wsdl:operation>
664
+ <wsdl:operation name="GetTICs">
665
+ <wsdl:input message="tns:GetTICsSoapIn" />
666
+ <wsdl:output message="tns:GetTICsSoapOut" />
667
+ </wsdl:operation>
668
+ <wsdl:operation name="GetTICsByGroup">
669
+ <wsdl:input message="tns:GetTICsByGroupSoapIn" />
670
+ <wsdl:output message="tns:GetTICsByGroupSoapOut" />
671
+ </wsdl:operation>
672
+ <wsdl:operation name="AddExemptCertificate">
673
+ <wsdl:input message="tns:AddExemptCertificateSoapIn" />
674
+ <wsdl:output message="tns:AddExemptCertificateSoapOut" />
675
+ </wsdl:operation>
676
+ <wsdl:operation name="DeleteExemptCertificate">
677
+ <wsdl:input message="tns:DeleteExemptCertificateSoapIn" />
678
+ <wsdl:output message="tns:DeleteExemptCertificateSoapOut" />
679
+ </wsdl:operation>
680
+ <wsdl:operation name="GetExemptCertificates">
681
+ <wsdl:input message="tns:GetExemptCertificatesSoapIn" />
682
+ <wsdl:output message="tns:GetExemptCertificatesSoapOut" />
683
+ </wsdl:operation>
684
+ </wsdl:portType>
685
+ <wsdl:binding name="TaxCloudSoap" type="tns:TaxCloudSoap">
686
+ <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
687
+ <wsdl:operation name="VerifyAddress">
688
+ <soap:operation soapAction="http://taxcloud.net/VerifyAddress" style="document" />
689
+ <wsdl:input>
690
+ <soap:body use="literal" />
691
+ </wsdl:input>
692
+ <wsdl:output>
693
+ <soap:body use="literal" />
694
+ </wsdl:output>
695
+ </wsdl:operation>
696
+ <wsdl:operation name="LookupForDate">
697
+ <soap:operation soapAction="http://taxcloud.net/LookupForDate" style="document" />
698
+ <wsdl:input>
699
+ <soap:body use="literal" />
700
+ </wsdl:input>
701
+ <wsdl:output>
702
+ <soap:body use="literal" />
703
+ </wsdl:output>
704
+ </wsdl:operation>
705
+ <wsdl:operation name="Lookup">
706
+ <soap:operation soapAction="http://taxcloud.net/Lookup" style="document" />
707
+ <wsdl:input>
708
+ <soap:body use="literal" />
709
+ </wsdl:input>
710
+ <wsdl:output>
711
+ <soap:body use="literal" />
712
+ </wsdl:output>
713
+ </wsdl:operation>
714
+ <wsdl:operation name="Authorized">
715
+ <soap:operation soapAction="http://taxcloud.net/Authorized" style="document" />
716
+ <wsdl:input>
717
+ <soap:body use="literal" />
718
+ </wsdl:input>
719
+ <wsdl:output>
720
+ <soap:body use="literal" />
721
+ </wsdl:output>
722
+ </wsdl:operation>
723
+ <wsdl:operation name="AuthorizedWithCapture">
724
+ <soap:operation soapAction="http://taxcloud.net/AuthorizedWithCapture" style="document" />
725
+ <wsdl:input>
726
+ <soap:body use="literal" />
727
+ </wsdl:input>
728
+ <wsdl:output>
729
+ <soap:body use="literal" />
730
+ </wsdl:output>
731
+ </wsdl:operation>
732
+ <wsdl:operation name="Captured">
733
+ <soap:operation soapAction="http://taxcloud.net/Captured" style="document" />
734
+ <wsdl:input>
735
+ <soap:body use="literal" />
736
+ </wsdl:input>
737
+ <wsdl:output>
738
+ <soap:body use="literal" />
739
+ </wsdl:output>
740
+ </wsdl:operation>
741
+ <wsdl:operation name="Returned">
742
+ <soap:operation soapAction="http://taxcloud.net/Returned" style="document" />
743
+ <wsdl:input>
744
+ <soap:body use="literal" />
745
+ </wsdl:input>
746
+ <wsdl:output>
747
+ <soap:body use="literal" />
748
+ </wsdl:output>
749
+ </wsdl:operation>
750
+ <wsdl:operation name="GetTICGroups">
751
+ <soap:operation soapAction="http://taxcloud.net/GetTICGroups" style="document" />
752
+ <wsdl:input>
753
+ <soap:body use="literal" />
754
+ </wsdl:input>
755
+ <wsdl:output>
756
+ <soap:body use="literal" />
757
+ </wsdl:output>
758
+ </wsdl:operation>
759
+ <wsdl:operation name="GetTICs">
760
+ <soap:operation soapAction="http://taxcloud.net/GetTICs" style="document" />
761
+ <wsdl:input>
762
+ <soap:body use="literal" />
763
+ </wsdl:input>
764
+ <wsdl:output>
765
+ <soap:body use="literal" />
766
+ </wsdl:output>
767
+ </wsdl:operation>
768
+ <wsdl:operation name="GetTICsByGroup">
769
+ <soap:operation soapAction="http://taxcloud.net/GetTICsByGroup" style="document" />
770
+ <wsdl:input>
771
+ <soap:body use="literal" />
772
+ </wsdl:input>
773
+ <wsdl:output>
774
+ <soap:body use="literal" />
775
+ </wsdl:output>
776
+ </wsdl:operation>
777
+ <wsdl:operation name="AddExemptCertificate">
778
+ <soap:operation soapAction="http://taxcloud.net/AddExemptCertificate" style="document" />
779
+ <wsdl:input>
780
+ <soap:body use="literal" />
781
+ </wsdl:input>
782
+ <wsdl:output>
783
+ <soap:body use="literal" />
784
+ </wsdl:output>
785
+ </wsdl:operation>
786
+ <wsdl:operation name="DeleteExemptCertificate">
787
+ <soap:operation soapAction="http://taxcloud.net/DeleteExemptCertificate" style="document" />
788
+ <wsdl:input>
789
+ <soap:body use="literal" />
790
+ </wsdl:input>
791
+ <wsdl:output>
792
+ <soap:body use="literal" />
793
+ </wsdl:output>
794
+ </wsdl:operation>
795
+ <wsdl:operation name="GetExemptCertificates">
796
+ <soap:operation soapAction="http://taxcloud.net/GetExemptCertificates" style="document" />
797
+ <wsdl:input>
798
+ <soap:body use="literal" />
799
+ </wsdl:input>
800
+ <wsdl:output>
801
+ <soap:body use="literal" />
802
+ </wsdl:output>
803
+ </wsdl:operation>
804
+ </wsdl:binding>
805
+ <wsdl:binding name="TaxCloudSoap12" type="tns:TaxCloudSoap">
806
+ <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
807
+ <wsdl:operation name="VerifyAddress">
808
+ <soap12:operation soapAction="http://taxcloud.net/VerifyAddress" style="document" />
809
+ <wsdl:input>
810
+ <soap12:body use="literal" />
811
+ </wsdl:input>
812
+ <wsdl:output>
813
+ <soap12:body use="literal" />
814
+ </wsdl:output>
815
+ </wsdl:operation>
816
+ <wsdl:operation name="LookupForDate">
817
+ <soap12:operation soapAction="http://taxcloud.net/LookupForDate" style="document" />
818
+ <wsdl:input>
819
+ <soap12:body use="literal" />
820
+ </wsdl:input>
821
+ <wsdl:output>
822
+ <soap12:body use="literal" />
823
+ </wsdl:output>
824
+ </wsdl:operation>
825
+ <wsdl:operation name="Lookup">
826
+ <soap12:operation soapAction="http://taxcloud.net/Lookup" style="document" />
827
+ <wsdl:input>
828
+ <soap12:body use="literal" />
829
+ </wsdl:input>
830
+ <wsdl:output>
831
+ <soap12:body use="literal" />
832
+ </wsdl:output>
833
+ </wsdl:operation>
834
+ <wsdl:operation name="Authorized">
835
+ <soap12:operation soapAction="http://taxcloud.net/Authorized" style="document" />
836
+ <wsdl:input>
837
+ <soap12:body use="literal" />
838
+ </wsdl:input>
839
+ <wsdl:output>
840
+ <soap12:body use="literal" />
841
+ </wsdl:output>
842
+ </wsdl:operation>
843
+ <wsdl:operation name="AuthorizedWithCapture">
844
+ <soap12:operation soapAction="http://taxcloud.net/AuthorizedWithCapture" style="document" />
845
+ <wsdl:input>
846
+ <soap12:body use="literal" />
847
+ </wsdl:input>
848
+ <wsdl:output>
849
+ <soap12:body use="literal" />
850
+ </wsdl:output>
851
+ </wsdl:operation>
852
+ <wsdl:operation name="Captured">
853
+ <soap12:operation soapAction="http://taxcloud.net/Captured" style="document" />
854
+ <wsdl:input>
855
+ <soap12:body use="literal" />
856
+ </wsdl:input>
857
+ <wsdl:output>
858
+ <soap12:body use="literal" />
859
+ </wsdl:output>
860
+ </wsdl:operation>
861
+ <wsdl:operation name="Returned">
862
+ <soap12:operation soapAction="http://taxcloud.net/Returned" style="document" />
863
+ <wsdl:input>
864
+ <soap12:body use="literal" />
865
+ </wsdl:input>
866
+ <wsdl:output>
867
+ <soap12:body use="literal" />
868
+ </wsdl:output>
869
+ </wsdl:operation>
870
+ <wsdl:operation name="GetTICGroups">
871
+ <soap12:operation soapAction="http://taxcloud.net/GetTICGroups" style="document" />
872
+ <wsdl:input>
873
+ <soap12:body use="literal" />
874
+ </wsdl:input>
875
+ <wsdl:output>
876
+ <soap12:body use="literal" />
877
+ </wsdl:output>
878
+ </wsdl:operation>
879
+ <wsdl:operation name="GetTICs">
880
+ <soap12:operation soapAction="http://taxcloud.net/GetTICs" style="document" />
881
+ <wsdl:input>
882
+ <soap12:body use="literal" />
883
+ </wsdl:input>
884
+ <wsdl:output>
885
+ <soap12:body use="literal" />
886
+ </wsdl:output>
887
+ </wsdl:operation>
888
+ <wsdl:operation name="GetTICsByGroup">
889
+ <soap12:operation soapAction="http://taxcloud.net/GetTICsByGroup" style="document" />
890
+ <wsdl:input>
891
+ <soap12:body use="literal" />
892
+ </wsdl:input>
893
+ <wsdl:output>
894
+ <soap12:body use="literal" />
895
+ </wsdl:output>
896
+ </wsdl:operation>
897
+ <wsdl:operation name="AddExemptCertificate">
898
+ <soap12:operation soapAction="http://taxcloud.net/AddExemptCertificate" style="document" />
899
+ <wsdl:input>
900
+ <soap12:body use="literal" />
901
+ </wsdl:input>
902
+ <wsdl:output>
903
+ <soap12:body use="literal" />
904
+ </wsdl:output>
905
+ </wsdl:operation>
906
+ <wsdl:operation name="DeleteExemptCertificate">
907
+ <soap12:operation soapAction="http://taxcloud.net/DeleteExemptCertificate" style="document" />
908
+ <wsdl:input>
909
+ <soap12:body use="literal" />
910
+ </wsdl:input>
911
+ <wsdl:output>
912
+ <soap12:body use="literal" />
913
+ </wsdl:output>
914
+ </wsdl:operation>
915
+ <wsdl:operation name="GetExemptCertificates">
916
+ <soap12:operation soapAction="http://taxcloud.net/GetExemptCertificates" style="document" />
917
+ <wsdl:input>
918
+ <soap12:body use="literal" />
919
+ </wsdl:input>
920
+ <wsdl:output>
921
+ <soap12:body use="literal" />
922
+ </wsdl:output>
923
+ </wsdl:operation>
924
+ </wsdl:binding>
925
+ <wsdl:service name="TaxCloud">
926
+ <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">TaxCloud Web Service</wsdl:documentation>
927
+ <wsdl:port name="TaxCloudSoap" binding="tns:TaxCloudSoap">
928
+ <soap:address location="https://api.taxcloud.net/1.0/TaxCloud.asmx" />
929
+ </wsdl:port>
930
+ <wsdl:port name="TaxCloudSoap12" binding="tns:TaxCloudSoap12">
931
+ <soap12:address location="https://api.taxcloud.net/1.0/TaxCloud.asmx" />
932
+ </wsdl:port>
933
+ </wsdl:service>
934
+ </wsdl:definitions>