purolator_ruby 0.0.6 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. checksums.yaml +4 -4
  2. data/lib/purolator_ruby.rb +8 -1
  3. data/lib/purolator_ruby/client.rb +19 -8
  4. data/lib/purolator_ruby/create_shipment_response.rb +15 -0
  5. data/lib/purolator_ruby/environment_credentials.rb +22 -10
  6. data/lib/purolator_ruby/get_documents_payload.rb +28 -0
  7. data/lib/purolator_ruby/get_documents_response.rb +13 -0
  8. data/lib/purolator_ruby/purolator_response.rb +36 -0
  9. data/lib/purolator_ruby/request.rb +45 -0
  10. data/lib/purolator_ruby/validate_city_postal_code_zip_payload.rb +27 -0
  11. data/lib/purolator_ruby/validate_city_postal_code_zip_response.rb +13 -0
  12. data/lib/purolator_ruby/version.rb +1 -1
  13. data/lib/purolator_ruby/wsdl_location.rb +35 -0
  14. data/spec/fixtures/ServiceAvailabilityService.wsdl +1055 -0
  15. data/spec/fixtures/ShippingDocumentsService.wsdl +704 -0
  16. data/spec/fixtures/vcr_cassettes/get_documents.yml +55 -0
  17. data/spec/fixtures/vcr_cassettes/shipping_service_integration.yml +5 -5
  18. data/spec/fixtures/vcr_cassettes/shipping_service_integration_2.yml +60 -0
  19. data/spec/fixtures/vcr_cassettes/validate_address.yml +56 -0
  20. data/spec/fixtures/vcr_cassettes/validate_address_invalid.yml +57 -0
  21. data/spec/purolator_ruby/client_spec.rb +39 -12
  22. data/spec/purolator_ruby/create_shipment_response_spec.rb +57 -0
  23. data/spec/purolator_ruby/get_documents_payload_spec.rb +16 -0
  24. data/spec/purolator_ruby/get_documents_response_spec.rb +40 -0
  25. data/spec/purolator_ruby/integration/create_shipment_spec.rb +53 -0
  26. data/spec/purolator_ruby/integration/get_documents_spec.rb +29 -0
  27. data/spec/purolator_ruby/integration/validate_address_spec.rb +51 -0
  28. data/spec/purolator_ruby/validate_city_postal_code_zip_payload_spec.rb +31 -0
  29. data/spec/purolator_ruby/wsdl_location_spec.rb +37 -0
  30. data/spec/spec_helper.rb +9 -0
  31. metadata +38 -5
  32. data/lib/purolator_ruby/create_shipment_request.rb +0 -55
  33. data/spec/purolator_ruby/create_shipment_request_spec.rb +0 -64
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8fc4eeac1e5ce71eb87107f4d662925fdedb0c99
4
- data.tar.gz: 53a77989dbacc488ccb22f93f4336d17057e9727
3
+ metadata.gz: 1d9bb4dc12d646ad9497e04aca37f02aa3b8e188
4
+ data.tar.gz: 402be4eaf0eeea2c67161a5a3006ab9dfbfcc80c
5
5
  SHA512:
6
- metadata.gz: b5faffc68d0db22afc08f426745cb060c2b2ec4e2ac71e314cdde8d143cfd8bb36c09be1fa205efe76a741f9cfd747f6350e090d6c291fa659239bea98c96c7a
7
- data.tar.gz: 64fb9375838b3fe135597ee30ba5dd0614b279ab4d1e175abdac46415f566998bdb4972c2c44661c125d85cda3ac3bc0545998f1eab7b0884f11afddf8ddf0a6
6
+ metadata.gz: 0fdae87ca2b79226808e601579972cbeddd6890409584195ca2a81cca457c021796cd146a52a1ebfe90683d1dee1a66ac87438ca6e27a1c07152c5c468a12306
7
+ data.tar.gz: 1c8d8c7f38a275a4532a29cbc753939e9629ce844f5013ba3d51e60647834cf42936edb3ece665dc2c5bb552d025f068a136ef58392ef99ccc98a85d976a5988
@@ -2,8 +2,15 @@ require "savon"
2
2
  require "purolator_ruby/version"
3
3
  require "purolator_ruby/environment_credentials"
4
4
  require "purolator_ruby/client"
5
- require "purolator_ruby/create_shipment_request"
5
+ require "purolator_ruby/purolator_response"
6
+ require "purolator_ruby/request"
6
7
  require "purolator_ruby/create_shipment_payload"
8
+ require "purolator_ruby/create_shipment_response"
9
+ require "purolator_ruby/validate_city_postal_code_zip_payload"
10
+ require "purolator_ruby/validate_city_postal_code_zip_response"
11
+ require "purolator_ruby/get_documents_payload"
12
+ require "purolator_ruby/get_documents_response"
13
+ require "purolator_ruby/wsdl_location"
7
14
 
8
15
  module PurolatorRuby
9
16
  end
@@ -11,24 +11,30 @@ module PurolatorRuby
11
11
 
12
12
  def initialize(options = {})
13
13
  @credentials = options.fetch(:credentials) { EnvironmentCredentials.new }
14
- @client = build_client
15
14
  end
16
15
 
17
16
  def call(*args)
18
- @client.call(*args)
17
+ Request.new(method: args.first, params: args.drop(1).first, client: self).send
19
18
  end
20
19
 
21
- def build_shipment(options)
22
- PurolatorRuby::CreateShipmentRequest.new(options.merge(client: self))
20
+ def purolator_call(*args)
21
+ with_client(args.first) do |purolator|
22
+ purolator.call(*args)
23
+ end
24
+ end
25
+
26
+ def create_shipment(params)
27
+ call(:create_shipment, params)
23
28
  end
24
29
 
25
30
  private
26
- def build_client
27
- Savon.client(
28
- wsdl: File.open(credentials.wsdl_location),
31
+
32
+ def with_client(method)
33
+ yield Savon.client(
34
+ wsdl: wsdl_location.location_for(method),
29
35
  # digest_auth: credentials.basic_auth,
30
36
  basic_auth: credentials.basic_auth,
31
- soap_header: credentials.soap_header,
37
+ soap_header: wsdl_location.soap_header_for(method),
32
38
  namespace: 'http://purolator.com/pws/datatypes/v1',
33
39
  element_form_default: :qualified,
34
40
  # log: true,
@@ -39,5 +45,10 @@ module PurolatorRuby
39
45
  ) { convert_request_keys_to :none }
40
46
  end
41
47
 
48
+
49
+ def wsdl_location
50
+ WsdlLocation.new(credentials: credentials)
51
+ end
52
+
42
53
  end
43
54
  end
@@ -0,0 +1,15 @@
1
+ module PurolatorRuby
2
+
3
+ class CreateShipmentResponse < PurolatorResponse
4
+
5
+ def response_key
6
+ :create_shipment_response
7
+ end
8
+
9
+ def shipment_pin
10
+ response[response_key][:shipment_pin][:value]
11
+ end
12
+
13
+ end
14
+
15
+ end
@@ -24,16 +24,28 @@ module PurolatorRuby
24
24
  soap_header_v15
25
25
  end
26
26
 
27
- private
28
- def soap_header_v15
29
- {'ns1:RequestContext' =>
30
- {'ns1:Version' => '1.5',
31
- 'ns1:Language' => 'en',
32
- 'ns1:GroupID' => 'xxx',
33
- 'ns1:RequestReference' => 'Rating Example',
34
- 'ns1:UserToken' => client_id,
35
- }
27
+ def soap_header_v15
28
+ {'ns1:RequestContext' =>
29
+ {'ns1:Version' => '1.5',
30
+ 'ns1:Language' => 'en',
31
+ 'ns1:GroupID' => 'xxx',
32
+ 'ns1:RequestReference' => 'Rating Example',
33
+ 'ns1:UserToken' => client_id,
36
34
  }
37
- end
35
+ }
36
+ end
37
+
38
+
39
+ def soap_header_v13
40
+ {'ns1:RequestContext' =>
41
+ {'ns1:Version' => '1.3',
42
+ 'ns1:Language' => 'en',
43
+ 'ns1:GroupID' => 'xxx',
44
+ 'ns1:RequestReference' => 'Rating Example',
45
+ 'ns1:UserToken' => client_id,
46
+ }
47
+ }
48
+ end
49
+
38
50
  end
39
51
  end
@@ -0,0 +1,28 @@
1
+ module PurolatorRuby
2
+
3
+ class GetDocumentsPayload
4
+
5
+ attr_reader :params
6
+
7
+ def initialize(params)
8
+ @params = params
9
+ end
10
+
11
+ def to_h
12
+ {
13
+ 'DocumentCriterium' => {
14
+ 'DocumentCriteria' => {
15
+ 'PIN' => {
16
+ 'Value' => params[:pin]
17
+ },
18
+ 'DocumentTypes' => {
19
+ 'DocumentType' => params[:document_type]
20
+ }
21
+ }
22
+ }
23
+ }
24
+ end
25
+
26
+ end
27
+
28
+ end
@@ -0,0 +1,13 @@
1
+ module PurolatorRuby
2
+ class GetDocumentsResponse < PurolatorResponse
3
+
4
+ def response_key
5
+ :get_documents_response
6
+ end
7
+
8
+ def url
9
+ response[response_key][:documents][:document][:document_details][:document_detail][:url]
10
+ end
11
+
12
+ end
13
+ end
@@ -0,0 +1,36 @@
1
+ module PurolatorRuby
2
+
3
+ class PurolatorResponse
4
+
5
+ attr_reader :response
6
+
7
+ def initialize(response)
8
+ @response = response
9
+ end
10
+
11
+ def status
12
+ if response[response_key][:response_information][:errors]
13
+ :error
14
+ else
15
+ :ok
16
+ end
17
+ end
18
+
19
+ def errors
20
+ if response[response_key][:response_information][:errors]
21
+ begin
22
+ response[response_key][:response_information][:errors].map {|k, v| v[:description]}
23
+ rescue TypeError
24
+ response[response_key][:response_information][:errors].map(&:to_s)
25
+ end
26
+ end
27
+ end
28
+
29
+ protected
30
+ def response_key
31
+ raise ArgumentError, "Please subclass and implement response_key"
32
+ end
33
+
34
+ end
35
+
36
+ end
@@ -0,0 +1,45 @@
1
+ module PurolatorRuby
2
+
3
+ class Request
4
+
5
+ attr_reader :client, :method, :params
6
+
7
+ def initialize(options)
8
+ @client = options.fetch(:client)
9
+ @method = options.fetch(:method)
10
+ @params = options.fetch(:params)
11
+ end
12
+
13
+ def send
14
+ payload = payload_class.new(
15
+ params.merge(
16
+ account_number: client.account_number,
17
+ billing_number: client.billing_number)).to_h
18
+
19
+ raw_response = @client.purolator_call(method, message: payload).body
20
+
21
+ response_class.new(raw_response)
22
+ end
23
+
24
+ private
25
+ def payload_class
26
+ resolve(base_name + "Payload")
27
+ end
28
+
29
+ def response_class
30
+ resolve(base_name + "Response")
31
+ end
32
+
33
+ def resolve(klass)
34
+ PurolatorRuby.const_get(klass)
35
+ end
36
+
37
+ def base_name
38
+ classify(method.to_s)
39
+ end
40
+
41
+ def classify(snake_case)
42
+ snake_case.split('_').map(&:capitalize).join
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,27 @@
1
+ module PurolatorRuby
2
+
3
+ class ValidateCityPostalCodeZipPayload
4
+
5
+ attr_reader :payload
6
+
7
+ def initialize(payload)
8
+ @payload = payload
9
+ end
10
+
11
+ def to_h
12
+ {
13
+ 'Addresses' => {
14
+ 'ShortAddress' => {
15
+ 'City' => payload[:city],
16
+ 'Province' => payload[:province],
17
+ 'Country' => payload[:country],
18
+ 'PostalCode' => payload[:postal_code],
19
+ }
20
+ }
21
+ }
22
+ end
23
+
24
+
25
+ end
26
+
27
+ end
@@ -0,0 +1,13 @@
1
+ module PurolatorRuby
2
+ class ValidateCityPostalCodeZipResponse < PurolatorResponse
3
+
4
+ def response_key
5
+ :validate_city_postal_code_zip_response
6
+ end
7
+
8
+ def valid?
9
+ !errors
10
+ end
11
+
12
+ end
13
+ end
@@ -1,3 +1,3 @@
1
1
  module PurolatorRuby
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.7"
3
3
  end
@@ -0,0 +1,35 @@
1
+ module PurolatorRuby
2
+
3
+ class WsdlLocation
4
+
5
+ attr_reader :credentials
6
+
7
+ def initialize(options)
8
+ @credentials = options.fetch(:credentials)
9
+ end
10
+
11
+ def location_for(api_method)
12
+ case api_method
13
+ when :create_shipment
14
+ File.join(credentials.wsdl_location, 'ShippingService.wsdl')
15
+ when :validate_city_postal_code_zip
16
+ File.join(credentials.wsdl_location, 'ServiceAvailabilityService.wsdl')
17
+ when :get_documents
18
+ File.join(credentials.wsdl_location, 'ShippingDocumentsService.wsdl')
19
+ else
20
+ raise ArgumentError, "Missing WSDL mapping for :#{api_method}"
21
+ end
22
+ end
23
+
24
+ def soap_header_for(api_method)
25
+ case api_method
26
+ when :create_shipment
27
+ credentials.soap_header_v15
28
+ when :validate_city_postal_code_zip, :get_documents
29
+ credentials.soap_header_v13
30
+ end
31
+ end
32
+
33
+ end
34
+
35
+ end
@@ -0,0 +1,1055 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <wsdl:definitions name="ServiceAvailabilityService" targetNamespace="http://purolator.com/pws/service/v1" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:tns="http://purolator.com/pws/service/v1" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata">
3
+ <wsdl:types>
4
+ <xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/2003/10/Serialization/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://schemas.microsoft.com/2003/10/Serialization/">
5
+ <xs:element name="anyType" nillable="true" type="xs:anyType"/>
6
+ <xs:element name="anyURI" nillable="true" type="xs:anyURI"/>
7
+ <xs:element name="base64Binary" nillable="true" type="xs:base64Binary"/>
8
+ <xs:element name="boolean" nillable="true" type="xs:boolean"/>
9
+ <xs:element name="byte" nillable="true" type="xs:byte"/>
10
+ <xs:element name="dateTime" nillable="true" type="xs:dateTime"/>
11
+ <xs:element name="decimal" nillable="true" type="xs:decimal"/>
12
+ <xs:element name="double" nillable="true" type="xs:double"/>
13
+ <xs:element name="float" nillable="true" type="xs:float"/>
14
+ <xs:element name="int" nillable="true" type="xs:int"/>
15
+ <xs:element name="long" nillable="true" type="xs:long"/>
16
+ <xs:element name="QName" nillable="true" type="xs:QName"/>
17
+ <xs:element name="short" nillable="true" type="xs:short"/>
18
+ <xs:element name="string" nillable="true" type="xs:string"/>
19
+ <xs:element name="unsignedByte" nillable="true" type="xs:unsignedByte"/>
20
+ <xs:element name="unsignedInt" nillable="true" type="xs:unsignedInt"/>
21
+ <xs:element name="unsignedLong" nillable="true" type="xs:unsignedLong"/>
22
+ <xs:element name="unsignedShort" nillable="true" type="xs:unsignedShort"/>
23
+ <xs:element name="char" nillable="true" type="tns:char"/>
24
+ <xs:simpleType name="char">
25
+ <xs:restriction base="xs:int"/>
26
+ </xs:simpleType>
27
+ <xs:element name="duration" nillable="true" type="tns:duration"/>
28
+ <xs:simpleType name="duration">
29
+ <xs:restriction base="xs:duration">
30
+ <xs:pattern value="\-?P(\d*D)?(T(\d*H)?(\d*M)?(\d*(\.\d*)?S)?)?"/>
31
+ <xs:minInclusive value="-P10675199DT2H48M5.4775808S"/>
32
+ <xs:maxInclusive value="P10675199DT2H48M5.4775807S"/>
33
+ </xs:restriction>
34
+ </xs:simpleType>
35
+ <xs:element name="guid" nillable="true" type="tns:guid"/>
36
+ <xs:simpleType name="guid">
37
+ <xs:restriction base="xs:string">
38
+ <xs:pattern value="[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}"/>
39
+ </xs:restriction>
40
+ </xs:simpleType>
41
+ <xs:attribute name="FactoryType" type="xs:QName"/>
42
+ <xs:attribute name="Id" type="xs:ID"/>
43
+ <xs:attribute name="Ref" type="xs:IDREF"/>
44
+ </xs:schema>
45
+ <xsd:schema elementFormDefault="qualified" targetNamespace="http://purolator.com/pws/datatypes/v1" xmlns:tns="http://purolator.com/pws/datatypes/v1">
46
+ <xsd:complexType name="GetServicesOptionsRequestContainer">
47
+ <xsd:annotation>
48
+ <xsd:appinfo/>
49
+ <xsd:documentation>GetServicesOptionsRequest</xsd:documentation>
50
+ </xsd:annotation>
51
+ <xsd:complexContent mixed="false">
52
+ <xsd:extension base="tns:RequestContainer">
53
+ <xsd:sequence>
54
+ <xsd:element name="BillingAccountNumber" nillable="true" type="xsd:string">
55
+ <xsd:annotation>
56
+ <xsd:appinfo/>
57
+ <xsd:documentation>BillingAccountNumber - string</xsd:documentation>
58
+ </xsd:annotation>
59
+ </xsd:element>
60
+ <xsd:element name="SenderAddress" nillable="true" type="tns:ShortAddress">
61
+ <xsd:annotation>
62
+ <xsd:appinfo/>
63
+ <xsd:documentation>SenderAddress - Address</xsd:documentation>
64
+ </xsd:annotation>
65
+ </xsd:element>
66
+ <xsd:element name="ReceiverAddress" nillable="true" type="tns:ShortAddress">
67
+ <xsd:annotation>
68
+ <xsd:appinfo/>
69
+ <xsd:documentation>ReceiverAddress - Address</xsd:documentation>
70
+ </xsd:annotation>
71
+ </xsd:element>
72
+ <xsd:element minOccurs="0" name="ShipmentDate" nillable="true" type="xsd:string">
73
+ <xsd:annotation>
74
+ <xsd:appinfo/>
75
+ <xsd:documentation>ShipmentDate - string</xsd:documentation>
76
+ </xsd:annotation>
77
+ </xsd:element>
78
+ </xsd:sequence>
79
+ </xsd:extension>
80
+ </xsd:complexContent>
81
+ </xsd:complexType>
82
+ <xsd:element name="GetServicesOptionsRequestContainer" nillable="true" type="tns:GetServicesOptionsRequestContainer"/>
83
+ <xsd:complexType name="RequestContainer">
84
+ <xsd:sequence/>
85
+ </xsd:complexType>
86
+ <xsd:element name="RequestContainer" nillable="true" type="tns:RequestContainer"/>
87
+ <xsd:complexType name="ShortAddress">
88
+ <xsd:annotation>
89
+ <xsd:appinfo/>
90
+ <xsd:documentation>ShortAddress</xsd:documentation>
91
+ </xsd:annotation>
92
+ <xsd:sequence>
93
+ <xsd:element name="City" nillable="true" type="xsd:string">
94
+ <xsd:annotation>
95
+ <xsd:appinfo/>
96
+ <xsd:documentation>City - string</xsd:documentation>
97
+ </xsd:annotation>
98
+ </xsd:element>
99
+ <xsd:element name="Province" nillable="true" type="xsd:string">
100
+ <xsd:annotation>
101
+ <xsd:appinfo/>
102
+ <xsd:documentation>Province - string</xsd:documentation>
103
+ </xsd:annotation>
104
+ </xsd:element>
105
+ <xsd:element name="Country" nillable="true" type="xsd:string">
106
+ <xsd:annotation>
107
+ <xsd:appinfo/>
108
+ <xsd:documentation>Country - string</xsd:documentation>
109
+ </xsd:annotation>
110
+ </xsd:element>
111
+ <xsd:element name="PostalCode" nillable="true" type="xsd:string">
112
+ <xsd:annotation>
113
+ <xsd:appinfo/>
114
+ <xsd:documentation>PostalCode; - string</xsd:documentation>
115
+ </xsd:annotation>
116
+ </xsd:element>
117
+ </xsd:sequence>
118
+ </xsd:complexType>
119
+ <xsd:element name="ShortAddress" nillable="true" type="tns:ShortAddress"/>
120
+ <xsd:element name="GetServicesOptionsRequest" nillable="true" type="tns:GetServicesOptionsRequestContainer"/>
121
+ <xsd:complexType name="RequestContext">
122
+ <xsd:annotation>
123
+ <xsd:appinfo/>
124
+ <xsd:documentation>RequestContext</xsd:documentation>
125
+ </xsd:annotation>
126
+ <xsd:sequence>
127
+ <xsd:element name="Version" nillable="true" type="xsd:string">
128
+ <xsd:annotation>
129
+ <xsd:appinfo/>
130
+ <xsd:documentation>Version - string</xsd:documentation>
131
+ </xsd:annotation>
132
+ </xsd:element>
133
+ <xsd:element name="Language" type="tns:Language">
134
+ <xsd:annotation>
135
+ <xsd:appinfo/>
136
+ <xsd:documentation>Language - string</xsd:documentation>
137
+ </xsd:annotation>
138
+ </xsd:element>
139
+ <xsd:element name="GroupID" nillable="true" type="xsd:string">
140
+ <xsd:annotation>
141
+ <xsd:appinfo/>
142
+ <xsd:documentation>GroupID - string</xsd:documentation>
143
+ </xsd:annotation>
144
+ </xsd:element>
145
+ <xsd:element name="RequestReference" nillable="true" type="xsd:string">
146
+ <xsd:annotation>
147
+ <xsd:appinfo/>
148
+ <xsd:documentation>RequestReference - string</xsd:documentation>
149
+ </xsd:annotation>
150
+ </xsd:element>
151
+ <xsd:element minOccurs="0" name="UserToken" nillable="true" type="xsd:string">
152
+ <xsd:annotation>
153
+ <xsd:appinfo/>
154
+ <xsd:documentation>UserToken - string</xsd:documentation>
155
+ </xsd:annotation>
156
+ </xsd:element>
157
+ </xsd:sequence>
158
+ </xsd:complexType>
159
+ <xsd:element name="RequestContext" nillable="true" type="tns:RequestContext"/>
160
+ <xsd:simpleType name="Language">
161
+ <xsd:annotation>
162
+ <xsd:appinfo/>
163
+ <xsd:documentation>Language - enum</xsd:documentation>
164
+ </xsd:annotation>
165
+ <xsd:restriction base="xsd:string">
166
+ <xsd:enumeration value="en">
167
+ <xsd:annotation>
168
+ <xsd:documentation>en</xsd:documentation>
169
+ </xsd:annotation>
170
+ </xsd:enumeration>
171
+ <xsd:enumeration value="fr">
172
+ <xsd:annotation>
173
+ <xsd:documentation>fr</xsd:documentation>
174
+ </xsd:annotation>
175
+ </xsd:enumeration>
176
+ </xsd:restriction>
177
+ </xsd:simpleType>
178
+ <xsd:element name="Language" nillable="true" type="tns:Language"/>
179
+ <xsd:complexType name="GetServicesOptionsResponseContainer">
180
+ <xsd:annotation>
181
+ <xsd:appinfo/>
182
+ <xsd:documentation>GetServicesOptionsResponse</xsd:documentation>
183
+ </xsd:annotation>
184
+ <xsd:complexContent mixed="false">
185
+ <xsd:extension base="tns:ResponseContainer">
186
+ <xsd:sequence>
187
+ <xsd:element minOccurs="0" name="Services" nillable="true" type="tns:ArrayOfService">
188
+ <xsd:annotation>
189
+ <xsd:appinfo/>
190
+ <xsd:documentation>Services - Service[]</xsd:documentation>
191
+ </xsd:annotation>
192
+ </xsd:element>
193
+ </xsd:sequence>
194
+ </xsd:extension>
195
+ </xsd:complexContent>
196
+ </xsd:complexType>
197
+ <xsd:element name="GetServicesOptionsResponseContainer" nillable="true" type="tns:GetServicesOptionsResponseContainer"/>
198
+ <xsd:complexType name="ResponseContainer">
199
+ <xsd:sequence>
200
+ <xsd:element name="ResponseInformation" nillable="true" type="tns:ResponseInformation">
201
+ <xsd:annotation>
202
+ <xsd:appinfo/>
203
+ <xsd:documentation>ResponseInformation - ResponseInformation</xsd:documentation>
204
+ </xsd:annotation>
205
+ </xsd:element>
206
+ </xsd:sequence>
207
+ </xsd:complexType>
208
+ <xsd:element name="ResponseContainer" nillable="true" type="tns:ResponseContainer"/>
209
+ <xsd:complexType name="ResponseInformation">
210
+ <xsd:annotation>
211
+ <xsd:appinfo/>
212
+ <xsd:documentation>ResponseInformation</xsd:documentation>
213
+ </xsd:annotation>
214
+ <xsd:sequence>
215
+ <xsd:element name="Errors" nillable="true" type="tns:ArrayOfError">
216
+ <xsd:annotation>
217
+ <xsd:appinfo/>
218
+ <xsd:documentation>Errors - Error[]</xsd:documentation>
219
+ </xsd:annotation>
220
+ </xsd:element>
221
+ <xsd:element name="InformationalMessages" nillable="true" type="tns:ArrayOfInformationalMessage">
222
+ <xsd:annotation>
223
+ <xsd:appinfo/>
224
+ <xsd:documentation>InformationalMessages - InformationalMessage[]</xsd:documentation>
225
+ </xsd:annotation>
226
+ </xsd:element>
227
+ </xsd:sequence>
228
+ </xsd:complexType>
229
+ <xsd:element name="ResponseInformation" nillable="true" type="tns:ResponseInformation"/>
230
+ <xsd:complexType name="ArrayOfError">
231
+ <xsd:sequence>
232
+ <xsd:element minOccurs="0" maxOccurs="unbounded" name="Error" nillable="true" type="tns:Error"/>
233
+ </xsd:sequence>
234
+ </xsd:complexType>
235
+ <xsd:element name="ArrayOfError" nillable="true" type="tns:ArrayOfError"/>
236
+ <xsd:complexType name="Error">
237
+ <xsd:annotation>
238
+ <xsd:appinfo/>
239
+ <xsd:documentation>Error</xsd:documentation>
240
+ </xsd:annotation>
241
+ <xsd:sequence>
242
+ <xsd:element name="Code" nillable="true" type="xsd:string">
243
+ <xsd:annotation>
244
+ <xsd:appinfo/>
245
+ <xsd:documentation>Code - string</xsd:documentation>
246
+ </xsd:annotation>
247
+ </xsd:element>
248
+ <xsd:element name="Description" nillable="true" type="xsd:string">
249
+ <xsd:annotation>
250
+ <xsd:appinfo/>
251
+ <xsd:documentation>Description - string</xsd:documentation>
252
+ </xsd:annotation>
253
+ </xsd:element>
254
+ <xsd:element name="AdditionalInformation" nillable="true" type="xsd:string">
255
+ <xsd:annotation>
256
+ <xsd:appinfo/>
257
+ <xsd:documentation>AdditionalInformation - string</xsd:documentation>
258
+ </xsd:annotation>
259
+ </xsd:element>
260
+ </xsd:sequence>
261
+ </xsd:complexType>
262
+ <xsd:element name="Error" nillable="true" type="tns:Error"/>
263
+ <xsd:complexType name="ArrayOfInformationalMessage">
264
+ <xsd:sequence>
265
+ <xsd:element minOccurs="0" maxOccurs="unbounded" name="InformationalMessage" nillable="true" type="tns:InformationalMessage"/>
266
+ </xsd:sequence>
267
+ </xsd:complexType>
268
+ <xsd:element name="ArrayOfInformationalMessage" nillable="true" type="tns:ArrayOfInformationalMessage"/>
269
+ <xsd:complexType name="InformationalMessage">
270
+ <xsd:annotation>
271
+ <xsd:appinfo/>
272
+ <xsd:documentation>InformationalMessage</xsd:documentation>
273
+ </xsd:annotation>
274
+ <xsd:sequence>
275
+ <xsd:element name="Code" nillable="true" type="xsd:string">
276
+ <xsd:annotation>
277
+ <xsd:appinfo/>
278
+ <xsd:documentation>Code - string</xsd:documentation>
279
+ </xsd:annotation>
280
+ </xsd:element>
281
+ <xsd:element name="Message" nillable="true" type="xsd:string">
282
+ <xsd:annotation>
283
+ <xsd:appinfo/>
284
+ <xsd:documentation>Message - string</xsd:documentation>
285
+ </xsd:annotation>
286
+ </xsd:element>
287
+ </xsd:sequence>
288
+ </xsd:complexType>
289
+ <xsd:element name="InformationalMessage" nillable="true" type="tns:InformationalMessage"/>
290
+ <xsd:complexType name="ArrayOfService">
291
+ <xsd:sequence>
292
+ <xsd:element minOccurs="0" maxOccurs="unbounded" name="Service" nillable="true" type="tns:Service"/>
293
+ </xsd:sequence>
294
+ </xsd:complexType>
295
+ <xsd:element name="ArrayOfService" nillable="true" type="tns:ArrayOfService"/>
296
+ <xsd:complexType name="Service">
297
+ <xsd:annotation>
298
+ <xsd:appinfo/>
299
+ <xsd:documentation>Service</xsd:documentation>
300
+ </xsd:annotation>
301
+ <xsd:sequence>
302
+ <xsd:element name="ID" nillable="true" type="xsd:string">
303
+ <xsd:annotation>
304
+ <xsd:appinfo/>
305
+ <xsd:documentation>ID - string</xsd:documentation>
306
+ </xsd:annotation>
307
+ </xsd:element>
308
+ <xsd:element name="Description" nillable="true" type="xsd:string">
309
+ <xsd:annotation>
310
+ <xsd:appinfo/>
311
+ <xsd:documentation>Description - string</xsd:documentation>
312
+ </xsd:annotation>
313
+ </xsd:element>
314
+ <xsd:element name="PackageType" nillable="true" type="xsd:string">
315
+ <xsd:annotation>
316
+ <xsd:appinfo/>
317
+ <xsd:documentation>PackageType - string</xsd:documentation>
318
+ </xsd:annotation>
319
+ </xsd:element>
320
+ <xsd:element name="PackageTypeDescription" nillable="true" type="xsd:string">
321
+ <xsd:annotation>
322
+ <xsd:appinfo/>
323
+ <xsd:documentation>PackageTypeDescription - string</xsd:documentation>
324
+ </xsd:annotation>
325
+ </xsd:element>
326
+ <xsd:element minOccurs="0" name="Options" nillable="true" type="tns:ArrayOfOption">
327
+ <xsd:annotation>
328
+ <xsd:appinfo/>
329
+ <xsd:documentation>Options - Option[]</xsd:documentation>
330
+ </xsd:annotation>
331
+ </xsd:element>
332
+ </xsd:sequence>
333
+ </xsd:complexType>
334
+ <xsd:element name="Service" nillable="true" type="tns:Service"/>
335
+ <xsd:complexType name="ArrayOfOption">
336
+ <xsd:sequence>
337
+ <xsd:element minOccurs="0" maxOccurs="unbounded" name="Option" nillable="true" type="tns:Option"/>
338
+ </xsd:sequence>
339
+ </xsd:complexType>
340
+ <xsd:element name="ArrayOfOption" nillable="true" type="tns:ArrayOfOption"/>
341
+ <xsd:complexType name="Option">
342
+ <xsd:annotation>
343
+ <xsd:appinfo/>
344
+ <xsd:documentation>Option</xsd:documentation>
345
+ </xsd:annotation>
346
+ <xsd:sequence>
347
+ <xsd:element name="ID" nillable="true" type="xsd:string">
348
+ <xsd:annotation>
349
+ <xsd:appinfo/>
350
+ <xsd:documentation>ID - string</xsd:documentation>
351
+ </xsd:annotation>
352
+ </xsd:element>
353
+ <xsd:element name="Description" nillable="true" type="xsd:string">
354
+ <xsd:annotation>
355
+ <xsd:appinfo/>
356
+ <xsd:documentation>Description - string</xsd:documentation>
357
+ </xsd:annotation>
358
+ </xsd:element>
359
+ <xsd:element name="ValueType" type="tns:ValueType">
360
+ <xsd:annotation>
361
+ <xsd:appinfo/>
362
+ <xsd:documentation>ValueType - ValueType</xsd:documentation>
363
+ </xsd:annotation>
364
+ </xsd:element>
365
+ <xsd:element name="AvailableForPieces" type="xsd:boolean">
366
+ <xsd:annotation>
367
+ <xsd:appinfo/>
368
+ <xsd:documentation>AvailableForPieces - bool</xsd:documentation>
369
+ </xsd:annotation>
370
+ </xsd:element>
371
+ <xsd:element name="PossibleValues" nillable="true" type="tns:ArrayOfOptionValue">
372
+ <xsd:annotation>
373
+ <xsd:appinfo/>
374
+ <xsd:documentation>PossibleValues - OptionValue[]</xsd:documentation>
375
+ </xsd:annotation>
376
+ </xsd:element>
377
+ <xsd:element minOccurs="0" name="ChildServiceOptions" nillable="true" type="tns:ArrayOfOption">
378
+ <xsd:annotation>
379
+ <xsd:appinfo/>
380
+ <xsd:documentation>ChildServiceOptions - Option[]</xsd:documentation>
381
+ </xsd:annotation>
382
+ </xsd:element>
383
+ </xsd:sequence>
384
+ </xsd:complexType>
385
+ <xsd:element name="Option" nillable="true" type="tns:Option"/>
386
+ <xsd:simpleType name="ValueType">
387
+ <xsd:annotation>
388
+ <xsd:appinfo/>
389
+ <xsd:documentation>ValueType - enum</xsd:documentation>
390
+ </xsd:annotation>
391
+ <xsd:restriction base="xsd:string">
392
+ <xsd:enumeration value="String">
393
+ <xsd:annotation>
394
+ <xsd:documentation>String</xsd:documentation>
395
+ </xsd:annotation>
396
+ </xsd:enumeration>
397
+ <xsd:enumeration value="Decimal">
398
+ <xsd:annotation>
399
+ <xsd:documentation>Decimal</xsd:documentation>
400
+ </xsd:annotation>
401
+ </xsd:enumeration>
402
+ <xsd:enumeration value="DateTime">
403
+ <xsd:annotation>
404
+ <xsd:documentation>DateTime</xsd:documentation>
405
+ </xsd:annotation>
406
+ </xsd:enumeration>
407
+ <xsd:enumeration value="Enumeration">
408
+ <xsd:annotation>
409
+ <xsd:documentation>Enumeration</xsd:documentation>
410
+ </xsd:annotation>
411
+ </xsd:enumeration>
412
+ </xsd:restriction>
413
+ </xsd:simpleType>
414
+ <xsd:element name="ValueType" nillable="true" type="tns:ValueType"/>
415
+ <xsd:complexType name="ArrayOfOptionValue">
416
+ <xsd:sequence>
417
+ <xsd:element minOccurs="0" maxOccurs="unbounded" name="OptionValue" nillable="true" type="tns:OptionValue"/>
418
+ </xsd:sequence>
419
+ </xsd:complexType>
420
+ <xsd:element name="ArrayOfOptionValue" nillable="true" type="tns:ArrayOfOptionValue"/>
421
+ <xsd:complexType name="OptionValue">
422
+ <xsd:annotation>
423
+ <xsd:appinfo/>
424
+ <xsd:documentation>OptionValue</xsd:documentation>
425
+ </xsd:annotation>
426
+ <xsd:sequence>
427
+ <xsd:element name="Value" nillable="true" type="xsd:string">
428
+ <xsd:annotation>
429
+ <xsd:appinfo/>
430
+ <xsd:documentation>Value - string</xsd:documentation>
431
+ </xsd:annotation>
432
+ </xsd:element>
433
+ <xsd:element name="Description" nillable="true" type="xsd:string">
434
+ <xsd:annotation>
435
+ <xsd:appinfo/>
436
+ <xsd:documentation>Description - string</xsd:documentation>
437
+ </xsd:annotation>
438
+ </xsd:element>
439
+ </xsd:sequence>
440
+ </xsd:complexType>
441
+ <xsd:element name="OptionValue" nillable="true" type="tns:OptionValue"/>
442
+ <xsd:element name="GetServicesOptionsResponse" nillable="true" type="tns:GetServicesOptionsResponseContainer"/>
443
+ <xsd:complexType name="ResponseContext">
444
+ <xsd:annotation>
445
+ <xsd:appinfo/>
446
+ <xsd:documentation>ResponseContext</xsd:documentation>
447
+ </xsd:annotation>
448
+ <xsd:sequence>
449
+ <xsd:element name="ResponseReference" nillable="true" type="xsd:string">
450
+ <xsd:annotation>
451
+ <xsd:appinfo/>
452
+ <xsd:documentation>ResponseReference - string</xsd:documentation>
453
+ </xsd:annotation>
454
+ </xsd:element>
455
+ </xsd:sequence>
456
+ </xsd:complexType>
457
+ <xsd:element name="ResponseContext" nillable="true" type="tns:ResponseContext"/>
458
+ <xsd:complexType name="GetServiceRulesRequestContainer">
459
+ <xsd:annotation>
460
+ <xsd:appinfo/>
461
+ <xsd:documentation>GetServiceRulesRequest</xsd:documentation>
462
+ </xsd:annotation>
463
+ <xsd:complexContent mixed="false">
464
+ <xsd:extension base="tns:RequestContainer">
465
+ <xsd:sequence>
466
+ <xsd:element name="BillingAccountNumber" nillable="true" type="xsd:string">
467
+ <xsd:annotation>
468
+ <xsd:appinfo/>
469
+ <xsd:documentation>BillingAccountNumber - string</xsd:documentation>
470
+ </xsd:annotation>
471
+ </xsd:element>
472
+ <xsd:element name="SenderAddress" nillable="true" type="tns:ShortAddress">
473
+ <xsd:annotation>
474
+ <xsd:appinfo/>
475
+ <xsd:documentation>SenderAddress - Address</xsd:documentation>
476
+ </xsd:annotation>
477
+ </xsd:element>
478
+ <xsd:element name="ReceiverAddress" nillable="true" type="tns:ShortAddress">
479
+ <xsd:annotation>
480
+ <xsd:appinfo/>
481
+ <xsd:documentation>ReceiverAddress - Address</xsd:documentation>
482
+ </xsd:annotation>
483
+ </xsd:element>
484
+ </xsd:sequence>
485
+ </xsd:extension>
486
+ </xsd:complexContent>
487
+ </xsd:complexType>
488
+ <xsd:element name="GetServiceRulesRequestContainer" nillable="true" type="tns:GetServiceRulesRequestContainer"/>
489
+ <xsd:element name="GetServiceRulesRequest" nillable="true" type="tns:GetServiceRulesRequestContainer"/>
490
+ <xsd:complexType name="GetServiceRulesResponseContainer">
491
+ <xsd:annotation>
492
+ <xsd:appinfo/>
493
+ <xsd:documentation>GetServiceRulesResponse</xsd:documentation>
494
+ </xsd:annotation>
495
+ <xsd:complexContent mixed="false">
496
+ <xsd:extension base="tns:ResponseContainer">
497
+ <xsd:sequence>
498
+ <xsd:element minOccurs="0" name="ServiceRules" nillable="true" type="tns:ArrayOfServiceRule">
499
+ <xsd:annotation>
500
+ <xsd:appinfo/>
501
+ <xsd:documentation>ServiceRules - ServiceRules[]</xsd:documentation>
502
+ </xsd:annotation>
503
+ </xsd:element>
504
+ <xsd:element minOccurs="0" name="ServiceOptionRules" nillable="true" type="tns:ArrayOfServiceOptionRules">
505
+ <xsd:annotation>
506
+ <xsd:appinfo/>
507
+ <xsd:documentation>ServiceOptionRules - ServiceOptionRules[]</xsd:documentation>
508
+ </xsd:annotation>
509
+ </xsd:element>
510
+ <xsd:element minOccurs="0" name="OptionRules" nillable="true" type="tns:ArrayOfOptionRule">
511
+ <xsd:annotation>
512
+ <xsd:appinfo/>
513
+ <xsd:documentation>OptionRules - OptionRule[]</xsd:documentation>
514
+ </xsd:annotation>
515
+ </xsd:element>
516
+ </xsd:sequence>
517
+ </xsd:extension>
518
+ </xsd:complexContent>
519
+ </xsd:complexType>
520
+ <xsd:element name="GetServiceRulesResponseContainer" nillable="true" type="tns:GetServiceRulesResponseContainer"/>
521
+ <xsd:complexType name="ArrayOfServiceRule">
522
+ <xsd:sequence>
523
+ <xsd:element minOccurs="0" maxOccurs="unbounded" name="ServiceRule" nillable="true" type="tns:ServiceRule"/>
524
+ </xsd:sequence>
525
+ </xsd:complexType>
526
+ <xsd:element name="ArrayOfServiceRule" nillable="true" type="tns:ArrayOfServiceRule"/>
527
+ <xsd:complexType name="ServiceRule">
528
+ <xsd:annotation>
529
+ <xsd:appinfo/>
530
+ <xsd:documentation>ServiceRules</xsd:documentation>
531
+ </xsd:annotation>
532
+ <xsd:sequence>
533
+ <xsd:element name="ServiceID" nillable="true" type="xsd:string">
534
+ <xsd:annotation>
535
+ <xsd:appinfo/>
536
+ <xsd:documentation>ServiceID - string</xsd:documentation>
537
+ </xsd:annotation>
538
+ </xsd:element>
539
+ <xsd:element name="MinimumTotalPieces" type="xsd:int">
540
+ <xsd:annotation>
541
+ <xsd:appinfo/>
542
+ <xsd:documentation>MinimumTotalPieces - int</xsd:documentation>
543
+ </xsd:annotation>
544
+ </xsd:element>
545
+ <xsd:element name="MaximumTotalPieces" type="xsd:int">
546
+ <xsd:annotation>
547
+ <xsd:appinfo/>
548
+ <xsd:documentation>MaximumTotalPieces - int</xsd:documentation>
549
+ </xsd:annotation>
550
+ </xsd:element>
551
+ <xsd:element name="MinimumTotalWeight" nillable="true" type="tns:Weight">
552
+ <xsd:annotation>
553
+ <xsd:appinfo/>
554
+ <xsd:documentation>MinimumTotalWeight - Weight</xsd:documentation>
555
+ </xsd:annotation>
556
+ </xsd:element>
557
+ <xsd:element name="MaximumTotalWeight" nillable="true" type="tns:Weight">
558
+ <xsd:annotation>
559
+ <xsd:appinfo/>
560
+ <xsd:documentation>MaximumTotalWeight - Weight</xsd:documentation>
561
+ </xsd:annotation>
562
+ </xsd:element>
563
+ <xsd:element name="MinimumPieceWeight" nillable="true" type="tns:Weight">
564
+ <xsd:annotation>
565
+ <xsd:appinfo/>
566
+ <xsd:documentation>MinimumPieceWeight - Weight</xsd:documentation>
567
+ </xsd:annotation>
568
+ </xsd:element>
569
+ <xsd:element name="MaximumPieceWeight" nillable="true" type="tns:Weight">
570
+ <xsd:annotation>
571
+ <xsd:appinfo/>
572
+ <xsd:documentation>MaximumPieceWeight - Weight</xsd:documentation>
573
+ </xsd:annotation>
574
+ </xsd:element>
575
+ <xsd:element minOccurs="0" name="MinimumPieceLength" nillable="true" type="tns:Dimension">
576
+ <xsd:annotation>
577
+ <xsd:appinfo/>
578
+ <xsd:documentation>MinimumPieceLength - Dimension</xsd:documentation>
579
+ </xsd:annotation>
580
+ </xsd:element>
581
+ <xsd:element minOccurs="0" name="MaximumPieceLength" nillable="true" type="tns:Dimension">
582
+ <xsd:annotation>
583
+ <xsd:appinfo/>
584
+ <xsd:documentation>MaximumPieceLength - Dimension</xsd:documentation>
585
+ </xsd:annotation>
586
+ </xsd:element>
587
+ <xsd:element minOccurs="0" name="MinimumPieceWidth" nillable="true" type="tns:Dimension">
588
+ <xsd:annotation>
589
+ <xsd:appinfo/>
590
+ <xsd:documentation>MinimumPieceWidth - Dimension</xsd:documentation>
591
+ </xsd:annotation>
592
+ </xsd:element>
593
+ <xsd:element minOccurs="0" name="MaximumPieceWidth" nillable="true" type="tns:Dimension">
594
+ <xsd:annotation>
595
+ <xsd:appinfo/>
596
+ <xsd:documentation>MaximumPieceWidth - Dimension</xsd:documentation>
597
+ </xsd:annotation>
598
+ </xsd:element>
599
+ <xsd:element minOccurs="0" name="MinimumPieceHeight" nillable="true" type="tns:Dimension">
600
+ <xsd:annotation>
601
+ <xsd:appinfo/>
602
+ <xsd:documentation>MinimumPieceHeight - Dimension</xsd:documentation>
603
+ </xsd:annotation>
604
+ </xsd:element>
605
+ <xsd:element minOccurs="0" name="MaximumPieceHeight" nillable="true" type="tns:Dimension">
606
+ <xsd:annotation>
607
+ <xsd:appinfo/>
608
+ <xsd:documentation>MaximumPieceHeight - Dimension</xsd:documentation>
609
+ </xsd:annotation>
610
+ </xsd:element>
611
+ <xsd:element minOccurs="0" name="MaximumSize" nillable="true" type="tns:Dimension">
612
+ <xsd:annotation>
613
+ <xsd:appinfo/>
614
+ <xsd:documentation>MaximumSize - Size</xsd:documentation>
615
+ </xsd:annotation>
616
+ </xsd:element>
617
+ <xsd:element minOccurs="0" name="MaximumDeclaredValue" type="xsd:decimal">
618
+ <xsd:annotation>
619
+ <xsd:appinfo/>
620
+ <xsd:documentation>MaximumDeclaredValue - decimal</xsd:documentation>
621
+ </xsd:annotation>
622
+ </xsd:element>
623
+ </xsd:sequence>
624
+ </xsd:complexType>
625
+ <xsd:element name="ServiceRule" nillable="true" type="tns:ServiceRule"/>
626
+ <xsd:complexType name="Weight">
627
+ <xsd:annotation>
628
+ <xsd:appinfo/>
629
+ <xsd:documentation>Weight</xsd:documentation>
630
+ </xsd:annotation>
631
+ <xsd:sequence>
632
+ <xsd:element name="Value" nillable="true" type="xsd:decimal">
633
+ <xsd:annotation>
634
+ <xsd:appinfo/>
635
+ <xsd:documentation>Value - decimal</xsd:documentation>
636
+ </xsd:annotation>
637
+ </xsd:element>
638
+ <xsd:element name="WeightUnit" type="tns:WeightUnit">
639
+ <xsd:annotation>
640
+ <xsd:appinfo/>
641
+ <xsd:documentation>WeightUnit - WeightUnit</xsd:documentation>
642
+ </xsd:annotation>
643
+ </xsd:element>
644
+ </xsd:sequence>
645
+ </xsd:complexType>
646
+ <xsd:element name="Weight" nillable="true" type="tns:Weight"/>
647
+ <xsd:simpleType name="WeightUnit">
648
+ <xsd:annotation>
649
+ <xsd:appinfo/>
650
+ <xsd:documentation>WeightUnit - enum</xsd:documentation>
651
+ </xsd:annotation>
652
+ <xsd:restriction base="xsd:string">
653
+ <xsd:enumeration value="lb">
654
+ <xsd:annotation>
655
+ <xsd:documentation>lb</xsd:documentation>
656
+ </xsd:annotation>
657
+ </xsd:enumeration>
658
+ <xsd:enumeration value="kg">
659
+ <xsd:annotation>
660
+ <xsd:documentation>kg</xsd:documentation>
661
+ </xsd:annotation>
662
+ </xsd:enumeration>
663
+ </xsd:restriction>
664
+ </xsd:simpleType>
665
+ <xsd:element name="WeightUnit" nillable="true" type="tns:WeightUnit"/>
666
+ <xsd:complexType name="Dimension">
667
+ <xsd:annotation>
668
+ <xsd:appinfo/>
669
+ <xsd:documentation>Dimension</xsd:documentation>
670
+ </xsd:annotation>
671
+ <xsd:sequence>
672
+ <xsd:element name="Value" nillable="true" type="xsd:decimal">
673
+ <xsd:annotation>
674
+ <xsd:appinfo/>
675
+ <xsd:documentation>Value - decimal</xsd:documentation>
676
+ </xsd:annotation>
677
+ </xsd:element>
678
+ <xsd:element name="DimensionUnit" type="tns:DimensionUnit">
679
+ <xsd:annotation>
680
+ <xsd:appinfo/>
681
+ <xsd:documentation>DimensionUnit - DimensionUnit</xsd:documentation>
682
+ </xsd:annotation>
683
+ </xsd:element>
684
+ </xsd:sequence>
685
+ </xsd:complexType>
686
+ <xsd:element name="Dimension" nillable="true" type="tns:Dimension"/>
687
+ <xsd:simpleType name="DimensionUnit">
688
+ <xsd:annotation>
689
+ <xsd:appinfo/>
690
+ <xsd:documentation>DimensionUnit - enum</xsd:documentation>
691
+ </xsd:annotation>
692
+ <xsd:restriction base="xsd:string">
693
+ <xsd:enumeration value="in">
694
+ <xsd:annotation>
695
+ <xsd:documentation>in</xsd:documentation>
696
+ </xsd:annotation>
697
+ </xsd:enumeration>
698
+ <xsd:enumeration value="cm">
699
+ <xsd:annotation>
700
+ <xsd:documentation>cm</xsd:documentation>
701
+ </xsd:annotation>
702
+ </xsd:enumeration>
703
+ </xsd:restriction>
704
+ </xsd:simpleType>
705
+ <xsd:element name="DimensionUnit" nillable="true" type="tns:DimensionUnit"/>
706
+ <xsd:complexType name="ArrayOfServiceOptionRules">
707
+ <xsd:sequence>
708
+ <xsd:element minOccurs="0" maxOccurs="unbounded" name="ServiceOptionRules" nillable="true" type="tns:ServiceOptionRules"/>
709
+ </xsd:sequence>
710
+ </xsd:complexType>
711
+ <xsd:element name="ArrayOfServiceOptionRules" nillable="true" type="tns:ArrayOfServiceOptionRules"/>
712
+ <xsd:complexType name="ServiceOptionRules">
713
+ <xsd:annotation>
714
+ <xsd:appinfo/>
715
+ <xsd:documentation>ServiceOptionRules</xsd:documentation>
716
+ </xsd:annotation>
717
+ <xsd:sequence>
718
+ <xsd:element name="ServiceID" nillable="true" type="xsd:string">
719
+ <xsd:annotation>
720
+ <xsd:appinfo/>
721
+ <xsd:documentation>ServiceID - string</xsd:documentation>
722
+ </xsd:annotation>
723
+ </xsd:element>
724
+ <xsd:element minOccurs="0" name="Exclusions" nillable="true" type="tns:ArrayOfOptionIDValuePair">
725
+ <xsd:annotation>
726
+ <xsd:appinfo/>
727
+ <xsd:documentation>Exclusions - OptionIDValuePair[]</xsd:documentation>
728
+ </xsd:annotation>
729
+ </xsd:element>
730
+ <xsd:element minOccurs="0" name="Inclusions" nillable="true" type="tns:ArrayOfOptionIDValuePair">
731
+ <xsd:annotation>
732
+ <xsd:appinfo/>
733
+ <xsd:documentation>Inclusions - OptionIDValuePair[]</xsd:documentation>
734
+ </xsd:annotation>
735
+ </xsd:element>
736
+ </xsd:sequence>
737
+ </xsd:complexType>
738
+ <xsd:element name="ServiceOptionRules" nillable="true" type="tns:ServiceOptionRules"/>
739
+ <xsd:complexType name="ArrayOfOptionIDValuePair">
740
+ <xsd:sequence>
741
+ <xsd:element minOccurs="0" maxOccurs="unbounded" name="OptionIDValuePair" nillable="true" type="tns:OptionIDValuePair"/>
742
+ </xsd:sequence>
743
+ </xsd:complexType>
744
+ <xsd:element name="ArrayOfOptionIDValuePair" nillable="true" type="tns:ArrayOfOptionIDValuePair"/>
745
+ <xsd:complexType name="OptionIDValuePair">
746
+ <xsd:annotation>
747
+ <xsd:appinfo/>
748
+ <xsd:documentation>OptionIDValuePair</xsd:documentation>
749
+ </xsd:annotation>
750
+ <xsd:sequence>
751
+ <xsd:element name="ID" nillable="true" type="xsd:string">
752
+ <xsd:annotation>
753
+ <xsd:appinfo/>
754
+ <xsd:documentation>ID - string</xsd:documentation>
755
+ </xsd:annotation>
756
+ </xsd:element>
757
+ <xsd:element name="Value" nillable="true" type="xsd:string">
758
+ <xsd:annotation>
759
+ <xsd:appinfo/>
760
+ <xsd:documentation>Value - string</xsd:documentation>
761
+ </xsd:annotation>
762
+ </xsd:element>
763
+ </xsd:sequence>
764
+ </xsd:complexType>
765
+ <xsd:element name="OptionIDValuePair" nillable="true" type="tns:OptionIDValuePair"/>
766
+ <xsd:complexType name="ArrayOfOptionRule">
767
+ <xsd:sequence>
768
+ <xsd:element minOccurs="0" maxOccurs="unbounded" name="OptionRule" nillable="true" type="tns:OptionRule"/>
769
+ </xsd:sequence>
770
+ </xsd:complexType>
771
+ <xsd:element name="ArrayOfOptionRule" nillable="true" type="tns:ArrayOfOptionRule"/>
772
+ <xsd:complexType name="OptionRule">
773
+ <xsd:annotation>
774
+ <xsd:appinfo/>
775
+ <xsd:documentation>OptionRule</xsd:documentation>
776
+ </xsd:annotation>
777
+ <xsd:sequence>
778
+ <xsd:element name="OptionIDValuePair" nillable="true" type="tns:OptionIDValuePair">
779
+ <xsd:annotation>
780
+ <xsd:appinfo/>
781
+ <xsd:documentation>OptionIDValuePair - OptionIDValuePair</xsd:documentation>
782
+ </xsd:annotation>
783
+ </xsd:element>
784
+ <xsd:element minOccurs="0" name="Exclusions" nillable="true" type="tns:ArrayOfOptionIDValuePair">
785
+ <xsd:annotation>
786
+ <xsd:appinfo/>
787
+ <xsd:documentation>Exclusions - OptionIDValuePair[]</xsd:documentation>
788
+ </xsd:annotation>
789
+ </xsd:element>
790
+ <xsd:element minOccurs="0" name="Inclusions" nillable="true" type="tns:ArrayOfOptionIDValuePair">
791
+ <xsd:annotation>
792
+ <xsd:appinfo/>
793
+ <xsd:documentation>Inclusions - OptionIDValuePair[]</xsd:documentation>
794
+ </xsd:annotation>
795
+ </xsd:element>
796
+ </xsd:sequence>
797
+ </xsd:complexType>
798
+ <xsd:element name="OptionRule" nillable="true" type="tns:OptionRule"/>
799
+ <xsd:element name="GetServiceRulesResponse" nillable="true" type="tns:GetServiceRulesResponseContainer"/>
800
+ <xsd:complexType name="ValidateCityPostalCodeZipRequestContainer">
801
+ <xsd:annotation>
802
+ <xsd:appinfo/>
803
+ <xsd:documentation>ValidateCityPostalCodeZipRequest</xsd:documentation>
804
+ </xsd:annotation>
805
+ <xsd:complexContent mixed="false">
806
+ <xsd:extension base="tns:RequestContainer">
807
+ <xsd:sequence>
808
+ <xsd:element name="Addresses" nillable="true" type="tns:ArrayOfShortAddress">
809
+ <xsd:annotation>
810
+ <xsd:appinfo/>
811
+ <xsd:documentation>SenderAddress - ShortAddress[]</xsd:documentation>
812
+ </xsd:annotation>
813
+ </xsd:element>
814
+ </xsd:sequence>
815
+ </xsd:extension>
816
+ </xsd:complexContent>
817
+ </xsd:complexType>
818
+ <xsd:element name="ValidateCityPostalCodeZipRequestContainer" nillable="true" type="tns:ValidateCityPostalCodeZipRequestContainer"/>
819
+ <xsd:complexType name="ArrayOfShortAddress">
820
+ <xsd:sequence>
821
+ <xsd:element minOccurs="0" maxOccurs="unbounded" name="ShortAddress" nillable="true" type="tns:ShortAddress"/>
822
+ </xsd:sequence>
823
+ </xsd:complexType>
824
+ <xsd:element name="ArrayOfShortAddress" nillable="true" type="tns:ArrayOfShortAddress"/>
825
+ <xsd:element name="ValidateCityPostalCodeZipRequest" nillable="true" type="tns:ValidateCityPostalCodeZipRequestContainer"/>
826
+ <xsd:complexType name="ValidateCityPostalCodeZipResponseContainer">
827
+ <xsd:annotation>
828
+ <xsd:appinfo/>
829
+ <xsd:documentation>ValidateCityPostalCodeZipResponse</xsd:documentation>
830
+ </xsd:annotation>
831
+ <xsd:complexContent mixed="false">
832
+ <xsd:extension base="tns:ResponseContainer">
833
+ <xsd:sequence>
834
+ <xsd:element minOccurs="0" name="SuggestedAddresses" nillable="true" type="tns:ArrayOfSuggestedAddress">
835
+ <xsd:annotation>
836
+ <xsd:appinfo/>
837
+ <xsd:documentation>SuggestedAddresses - SuggestedAddress[]</xsd:documentation>
838
+ </xsd:annotation>
839
+ </xsd:element>
840
+ </xsd:sequence>
841
+ </xsd:extension>
842
+ </xsd:complexContent>
843
+ </xsd:complexType>
844
+ <xsd:element name="ValidateCityPostalCodeZipResponseContainer" nillable="true" type="tns:ValidateCityPostalCodeZipResponseContainer"/>
845
+ <xsd:complexType name="ArrayOfSuggestedAddress">
846
+ <xsd:sequence>
847
+ <xsd:element minOccurs="0" maxOccurs="unbounded" name="SuggestedAddress" nillable="true" type="tns:SuggestedAddress"/>
848
+ </xsd:sequence>
849
+ </xsd:complexType>
850
+ <xsd:element name="ArrayOfSuggestedAddress" nillable="true" type="tns:ArrayOfSuggestedAddress"/>
851
+ <xsd:complexType name="SuggestedAddress">
852
+ <xsd:annotation>
853
+ <xsd:appinfo/>
854
+ <xsd:documentation>SuggestedShortAddress</xsd:documentation>
855
+ </xsd:annotation>
856
+ <xsd:sequence>
857
+ <xsd:element name="Address" nillable="true" type="tns:ShortAddress">
858
+ <xsd:annotation>
859
+ <xsd:appinfo/>
860
+ <xsd:documentation>SuggestedAddress - ShortAddress</xsd:documentation>
861
+ </xsd:annotation>
862
+ </xsd:element>
863
+ <xsd:element name="ResponseInformation" nillable="true" type="tns:ResponseInformation">
864
+ <xsd:annotation>
865
+ <xsd:appinfo/>
866
+ <xsd:documentation>ResponseInformation - ResponseInformation</xsd:documentation>
867
+ </xsd:annotation>
868
+ </xsd:element>
869
+ </xsd:sequence>
870
+ </xsd:complexType>
871
+ <xsd:element name="SuggestedAddress" nillable="true" type="tns:SuggestedAddress"/>
872
+ <xsd:element name="ValidateCityPostalCodeZipResponse" nillable="true" type="tns:ValidateCityPostalCodeZipResponseContainer"/>
873
+ </xsd:schema>
874
+ <xsd:schema elementFormDefault="qualified" targetNamespace="http://www.microsoft.com/practices/EnterpriseLibrary/2007/01/wcf/validation" xmlns:tns="http://www.microsoft.com/practices/EnterpriseLibrary/2007/01/wcf/validation">
875
+ <xsd:complexType name="ValidationFault">
876
+ <xsd:annotation>
877
+ <xsd:appinfo/>
878
+ <xsd:documentation>This class is used to return information to a WCF client when validation fails on a service parameter.</xsd:documentation>
879
+ </xsd:annotation>
880
+ <xsd:sequence>
881
+ <xsd:element minOccurs="0" name="Details" nillable="true" type="q1:ArrayOfValidationDetail" xmlns:q1="http://schemas.datacontract.org/2004/07/Microsoft.Practices.EnterpriseLibrary.Validation.Integration.WCF">
882
+ <xsd:annotation>
883
+ <xsd:appinfo/>
884
+ <xsd:documentation/>
885
+ </xsd:annotation>
886
+ </xsd:element>
887
+ </xsd:sequence>
888
+ </xsd:complexType>
889
+ <xsd:element name="ValidationFault" nillable="true" type="tns:ValidationFault"/>
890
+ </xsd:schema>
891
+ <xsd:schema elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/Microsoft.Practices.EnterpriseLibrary.Validation.Integration.WCF" xmlns:tns="http://schemas.datacontract.org/2004/07/Microsoft.Practices.EnterpriseLibrary.Validation.Integration.WCF">
892
+ <xsd:complexType name="ArrayOfValidationDetail">
893
+ <xsd:sequence>
894
+ <xsd:element minOccurs="0" maxOccurs="unbounded" name="ValidationDetail" nillable="true" type="tns:ValidationDetail"/>
895
+ </xsd:sequence>
896
+ </xsd:complexType>
897
+ <xsd:element name="ArrayOfValidationDetail" nillable="true" type="tns:ArrayOfValidationDetail"/>
898
+ <xsd:complexType name="ValidationDetail">
899
+ <xsd:annotation>
900
+ <xsd:appinfo/>
901
+ <xsd:documentation>This class holds the results of a single validation. Effectively, it's the same as a ValidationResult, but creating a separate class allows us to mark up a DataContract with impunity.</xsd:documentation>
902
+ </xsd:annotation>
903
+ <xsd:sequence>
904
+ <xsd:element minOccurs="0" name="Key" nillable="true" type="xsd:string">
905
+ <xsd:annotation>
906
+ <xsd:appinfo/>
907
+ <xsd:documentation>Get or set a name describing the location of the validation result.</xsd:documentation>
908
+ </xsd:annotation>
909
+ </xsd:element>
910
+ <xsd:element minOccurs="0" name="Message" nillable="true" type="xsd:string">
911
+ <xsd:annotation>
912
+ <xsd:appinfo/>
913
+ <xsd:documentation>Get or set a message describing the validation failure.</xsd:documentation>
914
+ </xsd:annotation>
915
+ </xsd:element>
916
+ <xsd:element minOccurs="0" name="Tag" nillable="true" type="xsd:string">
917
+ <xsd:annotation>
918
+ <xsd:appinfo/>
919
+ <xsd:documentation>Get or set a value characterizing the fault.</xsd:documentation>
920
+ </xsd:annotation>
921
+ </xsd:element>
922
+ </xsd:sequence>
923
+ </xsd:complexType>
924
+ <xsd:element name="ValidationDetail" nillable="true" type="tns:ValidationDetail"/>
925
+ </xsd:schema>
926
+ </wsdl:types>
927
+ <wsdl:message name="GetServicesOptionsRequest">
928
+ <wsdl:part name="GetServicesOptionsRequest" element="q2:GetServicesOptionsRequest" xmlns:q2="http://purolator.com/pws/datatypes/v1"/>
929
+ </wsdl:message>
930
+ <wsdl:message name="GetServicesOptionsRequest_Headers">
931
+ <wsdl:part name="RequestContext" element="q3:RequestContext" xmlns:q3="http://purolator.com/pws/datatypes/v1"/>
932
+ </wsdl:message>
933
+ <wsdl:message name="GetServicesOptionsResponse">
934
+ <wsdl:part name="GetServicesOptionsResponse" element="q4:GetServicesOptionsResponse" xmlns:q4="http://purolator.com/pws/datatypes/v1"/>
935
+ </wsdl:message>
936
+ <wsdl:message name="GetServicesOptionsResponse_Headers">
937
+ <wsdl:part name="ResponseContext" element="q5:ResponseContext" xmlns:q5="http://purolator.com/pws/datatypes/v1"/>
938
+ </wsdl:message>
939
+ <wsdl:message name="ServiceAvailabilityServiceContract_GetServicesOptions_ValidationFaultFault_FaultMessage">
940
+ <wsdl:part name="detail" element="q6:ValidationFault" xmlns:q6="http://www.microsoft.com/practices/EnterpriseLibrary/2007/01/wcf/validation"/>
941
+ </wsdl:message>
942
+ <wsdl:message name="GetServiceRulesRequest">
943
+ <wsdl:part name="GetServiceRulesRequest" element="q7:GetServiceRulesRequest" xmlns:q7="http://purolator.com/pws/datatypes/v1"/>
944
+ </wsdl:message>
945
+ <wsdl:message name="GetServiceRulesRequest_Headers">
946
+ <wsdl:part name="RequestContext" element="q8:RequestContext" xmlns:q8="http://purolator.com/pws/datatypes/v1"/>
947
+ </wsdl:message>
948
+ <wsdl:message name="GetServiceRulesResponse">
949
+ <wsdl:part name="GetServiceRulesResponse" element="q9:GetServiceRulesResponse" xmlns:q9="http://purolator.com/pws/datatypes/v1"/>
950
+ </wsdl:message>
951
+ <wsdl:message name="GetServiceRulesResponse_Headers">
952
+ <wsdl:part name="ResponseContext" element="q10:ResponseContext" xmlns:q10="http://purolator.com/pws/datatypes/v1"/>
953
+ </wsdl:message>
954
+ <wsdl:message name="ServiceAvailabilityServiceContract_GetServiceRules_ValidationFaultFault_FaultMessage">
955
+ <wsdl:part name="detail" element="q11:ValidationFault" xmlns:q11="http://www.microsoft.com/practices/EnterpriseLibrary/2007/01/wcf/validation"/>
956
+ </wsdl:message>
957
+ <wsdl:message name="ValidateCityPostalCodeZipRequest">
958
+ <wsdl:part name="ValidateCityPostalCodeZipRequest" element="q12:ValidateCityPostalCodeZipRequest" xmlns:q12="http://purolator.com/pws/datatypes/v1"/>
959
+ </wsdl:message>
960
+ <wsdl:message name="ValidateCityPostalCodeZipRequest_Headers">
961
+ <wsdl:part name="RequestContext" element="q13:RequestContext" xmlns:q13="http://purolator.com/pws/datatypes/v1"/>
962
+ </wsdl:message>
963
+ <wsdl:message name="ValidateCityPostalCodeZipResponse">
964
+ <wsdl:part name="ValidateCityPostalCodeZipResponse" element="q14:ValidateCityPostalCodeZipResponse" xmlns:q14="http://purolator.com/pws/datatypes/v1"/>
965
+ </wsdl:message>
966
+ <wsdl:message name="ValidateCityPostalCodeZipResponse_Headers">
967
+ <wsdl:part name="ResponseContext" element="q15:ResponseContext" xmlns:q15="http://purolator.com/pws/datatypes/v1"/>
968
+ </wsdl:message>
969
+ <wsdl:message name="ServiceAvailabilityServiceContract_ValidateCityPostalCodeZip_ValidationFaultFault_FaultMessage">
970
+ <wsdl:part name="detail" element="q16:ValidationFault" xmlns:q16="http://www.microsoft.com/practices/EnterpriseLibrary/2007/01/wcf/validation"/>
971
+ </wsdl:message>
972
+ <wsdl:portType name="ServiceAvailabilityServiceContract">
973
+ <wsdl:documentation>Service Contract Class - ServiceAvailabilityServiceContract</wsdl:documentation>
974
+ <wsdl:operation name="GetServicesOptions">
975
+ <wsdl:documentation>
976
+ GetServicesOptions
977
+ @param request GetServicesOptionsRequest
978
+ @return GetServicesOptionsResponse
979
+ </wsdl:documentation>
980
+ <wsdl:input wsaw:Action="http://purolator.com/pws/service/v1/GetServicesOptions" name="GetServicesOptionsRequest" message="tns:GetServicesOptionsRequest"/>
981
+ <wsdl:output wsaw:Action="http://purolator.com/pws/service/v1/ServiceAvailabilityServiceContract/GetServicesOptionsResponse" name="GetServicesOptionsResponse" message="tns:GetServicesOptionsResponse"/>
982
+ <wsdl:fault wsaw:Action="http://purolator.com/pws/service/v1/ServiceAvailabilityServiceContract/GetServicesOptionsValidationFaultFault" name="ValidationFaultFault" message="tns:ServiceAvailabilityServiceContract_GetServicesOptions_ValidationFaultFault_FaultMessage"/>
983
+ </wsdl:operation>
984
+ <wsdl:operation name="GetServiceRules">
985
+ <wsdl:documentation>
986
+ GetServiceRules
987
+ @param request GetServiceRulesRequest
988
+ @return GetServiceRulesResponse
989
+ </wsdl:documentation>
990
+ <wsdl:input wsaw:Action="http://purolator.com/pws/service/v1/GetServiceRules" name="GetServiceRulesRequest" message="tns:GetServiceRulesRequest"/>
991
+ <wsdl:output wsaw:Action="http://purolator.com/pws/service/v1/ServiceAvailabilityServiceContract/GetServiceRulesResponse" name="GetServiceRulesResponse" message="tns:GetServiceRulesResponse"/>
992
+ <wsdl:fault wsaw:Action="http://purolator.com/pws/service/v1/ServiceAvailabilityServiceContract/GetServiceRulesValidationFaultFault" name="ValidationFaultFault" message="tns:ServiceAvailabilityServiceContract_GetServiceRules_ValidationFaultFault_FaultMessage"/>
993
+ </wsdl:operation>
994
+ <wsdl:operation name="ValidateCityPostalCodeZip">
995
+ <wsdl:documentation>
996
+ ValidateCityPostalCodeZip
997
+ @param request ValidateCityPostalCodeZipRequest
998
+ @return ValidateCityPostalCodeZipResponse
999
+ </wsdl:documentation>
1000
+ <wsdl:input wsaw:Action="http://purolator.com/pws/service/v1/ValidateCityPostalCodeZip" name="ValidateCityPostalCodeZipRequest" message="tns:ValidateCityPostalCodeZipRequest"/>
1001
+ <wsdl:output wsaw:Action="http://purolator.com/pws/service/v1/ServiceAvailabilityServiceContract/ValidateCityPostalCodeZipResponse" name="ValidateCityPostalCodeZipResponse" message="tns:ValidateCityPostalCodeZipResponse"/>
1002
+ <wsdl:fault wsaw:Action="http://purolator.com/pws/service/v1/ServiceAvailabilityServiceContract/ValidateCityPostalCodeZipValidationFaultFault" name="ValidationFaultFault" message="tns:ServiceAvailabilityServiceContract_ValidateCityPostalCodeZip_ValidationFaultFault_FaultMessage"/>
1003
+ </wsdl:operation>
1004
+ </wsdl:portType>
1005
+ <wsdl:binding name="ServiceAvailabilityServiceEndpoint" type="tns:ServiceAvailabilityServiceContract">
1006
+ <soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
1007
+ <wsdl:operation name="GetServicesOptions">
1008
+ <soap:operation soapAction="http://purolator.com/pws/service/v1/GetServicesOptions" style="document"/>
1009
+ <wsdl:input name="GetServicesOptionsRequest">
1010
+ <soap:header message="tns:GetServicesOptionsRequest_Headers" part="RequestContext" use="literal"/>
1011
+ <soap:body use="literal"/>
1012
+ </wsdl:input>
1013
+ <wsdl:output name="GetServicesOptionsResponse">
1014
+ <soap:header message="tns:GetServicesOptionsResponse_Headers" part="ResponseContext" use="literal"/>
1015
+ <soap:body use="literal"/>
1016
+ </wsdl:output>
1017
+ <wsdl:fault name="ValidationFaultFault">
1018
+ <soap:fault name="ValidationFaultFault" use="literal"/>
1019
+ </wsdl:fault>
1020
+ </wsdl:operation>
1021
+ <wsdl:operation name="GetServiceRules">
1022
+ <soap:operation soapAction="http://purolator.com/pws/service/v1/GetServiceRules" style="document"/>
1023
+ <wsdl:input name="GetServiceRulesRequest">
1024
+ <soap:header message="tns:GetServiceRulesRequest_Headers" part="RequestContext" use="literal"/>
1025
+ <soap:body use="literal"/>
1026
+ </wsdl:input>
1027
+ <wsdl:output name="GetServiceRulesResponse">
1028
+ <soap:header message="tns:GetServiceRulesResponse_Headers" part="ResponseContext" use="literal"/>
1029
+ <soap:body use="literal"/>
1030
+ </wsdl:output>
1031
+ <wsdl:fault name="ValidationFaultFault">
1032
+ <soap:fault name="ValidationFaultFault" use="literal"/>
1033
+ </wsdl:fault>
1034
+ </wsdl:operation>
1035
+ <wsdl:operation name="ValidateCityPostalCodeZip">
1036
+ <soap:operation soapAction="http://purolator.com/pws/service/v1/ValidateCityPostalCodeZip" style="document"/>
1037
+ <wsdl:input name="ValidateCityPostalCodeZipRequest">
1038
+ <soap:header message="tns:ValidateCityPostalCodeZipRequest_Headers" part="RequestContext" use="literal"/>
1039
+ <soap:body use="literal"/>
1040
+ </wsdl:input>
1041
+ <wsdl:output name="ValidateCityPostalCodeZipResponse">
1042
+ <soap:header message="tns:ValidateCityPostalCodeZipResponse_Headers" part="ResponseContext" use="literal"/>
1043
+ <soap:body use="literal"/>
1044
+ </wsdl:output>
1045
+ <wsdl:fault name="ValidationFaultFault">
1046
+ <soap:fault name="ValidationFaultFault" use="literal"/>
1047
+ </wsdl:fault>
1048
+ </wsdl:operation>
1049
+ </wsdl:binding>
1050
+ <wsdl:service name="ServiceAvailabilityService">
1051
+ <wsdl:port name="ServiceAvailabilityServiceEndpoint" binding="tns:ServiceAvailabilityServiceEndpoint">
1052
+ <soap:address location="https://devwebservices.purolator.com/EWS/V1/ServiceAvailability/ServiceAvailabilityService.asmx"/>
1053
+ </wsdl:port>
1054
+ </wsdl:service>
1055
+ </wsdl:definitions>