--- /dev/null
+blib/
+*.sw?
+Makefile
+Makefile.old
+MYMETA.yml
+pm_to_blib
--- /dev/null
+Revision history for WebService-Northern911
+
+0.01 Jul 7 2014
+ Initial release
+
--- /dev/null
+Changes
+lib/WebService/Northern911.pm
+lib/WebService/Northern911/Response.pm
+Makefile.PL
+MANIFEST This list of files
+README
+t/00-load.t
+t/manifest.t
+t/pod.t
+share/schema/test/xsd2
+share/schema/test/wsdl
+share/schema/test/xsd0
+share/schema/test/xsd1
+share/schema/live/xsd2
+share/schema/live/wsdl
+share/schema/live/xsd0
+share/schema/live/xsd1
+ignore.txt
--- /dev/null
+{
+ "abstract" : "Interface to the Northern 911 ALI database",
+ "author" : [
+ "Mark Wells <mark@freeside.biz>"
+ ],
+ "dynamic_config" : 0,
+ "generated_by" : "ExtUtils::MakeMaker version 6.8, CPAN::Meta::Converter version 2.120351",
+ "license" : [
+ "unknown"
+ ],
+ "meta-spec" : {
+ "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
+ "version" : "2"
+ },
+ "name" : "WebService-Northern911",
+ "no_index" : {
+ "directory" : [
+ "t",
+ "inc"
+ ]
+ },
+ "prereqs" : {
+ "build" : {
+ "requires" : {
+ "File::ShareDir::Install" : "0",
+ "Test::More" : "0"
+ }
+ },
+ "configure" : {
+ "requires" : {
+ "ExtUtils::MakeMaker" : "0"
+ }
+ },
+ "runtime" : {
+ "requires" : {
+ "DateTime" : "0",
+ "File::ShareDir" : "0",
+ "XML::Compile" : "1",
+ "XML::Compile::SOAP" : "3",
+ "XML::Compile::WSDL11" : "3",
+ "perl" : "5.006"
+ }
+ }
+ },
+ "release_status" : "stable",
+ "version" : "0.1"
+}
--- /dev/null
+use 5.006;
+use strict;
+use warnings FATAL => 'all';
+use ExtUtils::MakeMaker;
+use File::ShareDir::Install;
+
+install_share dist => 'share';
+
+WriteMakefile(
+ NAME => 'WebService::Northern911',
+ AUTHOR => q{Mark Wells <mark@freeside.biz>},
+ VERSION_FROM => 'lib/WebService/Northern911.pm',
+ ABSTRACT_FROM => 'lib/WebService/Northern911.pm',
+ LICENSE => 'Artistic_2_0',
+ PL_FILES => {},
+ MIN_PERL_VERSION => 5.006,
+ CONFIGURE_REQUIRES => {
+ 'ExtUtils::MakeMaker' => 0,
+ },
+ BUILD_REQUIRES => {
+ 'Test::More' => 0,
+ 'File::ShareDir::Install' => 0,
+ },
+ PREREQ_PM => {
+ 'XML::Compile' => 1.0,
+ 'XML::Compile::SOAP' => 3.0,
+ 'XML::Compile::WSDL11'=> 3.0,
+ 'File::ShareDir' => 0,
+ 'DateTime' => 0,
+ },
+ dist => { COMPRESS => 'gzip -9f', SUFFIX => 'gz', },
+ clean => { FILES => 'WebService-Northern911-*' },
+);
+
+package MY;
+use File::ShareDir::Install qw(postamble);
+
--- /dev/null
+WebService-Northern911
+
+Interface to Northern 911's ALI database.
+
+Requires XML::Compile::WSDL11 and XML::Compile::SOAP.
+
+INSTALLATION
+
+To install this module, run the following commands:
+
+ perl Makefile.PL
+ make
+ make test
+ make install
+
+SUPPORT AND DOCUMENTATION
+
+After installing, you can find documentation for this module with the
+perldoc command.
+
+ perldoc WebService::Northern911
+
+You can also look for information at:
+
+ RT, CPAN's request tracker (report bugs here)
+ http://rt.cpan.org/NoAuth/Bugs.html?Dist=WebService-Northern911
+
+ AnnoCPAN, Annotated CPAN documentation
+ http://annocpan.org/dist/WebService-Northern911
+
+ CPAN Ratings
+ http://cpanratings.perl.org/d/WebService-Northern911
+
+ Search CPAN
+ http://search.cpan.org/dist/WebService-Northern911/
+
+
+LICENSE AND COPYRIGHT
+
+Copyright (C) 2014 Mark Wells
+
+This program is free software; you can redistribute it and/or modify it
+under the terms of the the Artistic License (2.0). You may obtain a
+copy of the full license at:
+
+L<http://www.perlfoundation.org/artistic_license_2_0>
+
+Any use, modification, and distribution of the Standard or Modified
+Versions is governed by this Artistic License. By using, modifying or
+distributing the Package, you accept this license. Do not use, modify,
+or distribute the Package, if you do not accept this license.
+
+If your Modified Version has been derived from a Modified Version made
+by someone other than you, you are nevertheless required to ensure that
+your Modified Version complies with the requirements of this license.
+
+This license does not grant you the right to use any trademark, service
+mark, tradename, or logo of the Copyright Holder.
+
+This license includes the non-exclusive, worldwide, free-of-charge
+patent license to make, have made, use, offer to sell, sell, import and
+otherwise transfer the Package with respect to any patent claims
+licensable by the Copyright Holder that are necessarily infringed by the
+Package. If you institute patent litigation (including a cross-claim or
+counterclaim) against any party alleging that the Package constitutes
+direct or contributory patent infringement, then this Artistic License
+to you shall terminate on the date that such litigation is filed.
+
+Disclaimer of Warranty: THE PACKAGE IS PROVIDED BY THE COPYRIGHT HOLDER
+AND CONTRIBUTORS "AS IS' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES.
+THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+PURPOSE, OR NON-INFRINGEMENT ARE DISCLAIMED TO THE EXTENT PERMITTED BY
+YOUR LOCAL LAW. UNLESS REQUIRED BY LAW, NO COPYRIGHT HOLDER OR
+CONTRIBUTOR WILL BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, OR
+CONSEQUENTIAL DAMAGES ARISING IN ANY WAY OUT OF THE USE OF THE PACKAGE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
--- /dev/null
+libwebservice-northern911-perl (0.1-1) unstable; urgency=low
+
+ * Initial Release.
+
+ -- Mark Wells <mark@dancingmad.dyndns.org> Sun, 6 Jul 2014 20:25:33 -0700
--- /dev/null
+Source: libwebservice-northern911-perl
+Section: perl
+Priority: optional
+Maintainer: Mark Wells <mark@dancingmad.dyndns.org>
+Build-Depends: debhelper (>= 9)
+Build-Depends-Indep: libdatetime-perl,
+ libfile-sharedir-install-perl,
+ libfile-sharedir-perl,
+ libxml-compile-perl (>= 1),
+ libxml-compile-soap-perl (>= 3),
+ libxml-compile-wsdl11-perl (>= 3),
+ perl
+Standards-Version: 3.9.5
+Homepage: https://metacpan.org/release/WebService-Northern911
+
+Package: libwebservice-northern911-perl
+Architecture: all
+Depends: ${misc:Depends}, ${perl:Depends},
+ libdatetime-perl,
+ libfile-sharedir-perl,
+ libxml-compile-perl (>= 1),
+ libxml-compile-soap-perl (>= 3),
+ libxml-compile-wsdl11-perl (>= 3)
+Description: Interface to the Northern 911 ALI database
+ (no description was found)
+ .
+ This description was automagically extracted from the module by dh-make-perl.
--- /dev/null
+Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Source: https://metacpan.org/release/WebService-Northern911
+Upstream-Contact: Mark Wells, <mark@freeside.biz>
+ .
+ Commercial support is available from Freeside Internet Services, Inc.
+Upstream-Name: WebService-Northern911
+DISCLAIMER: This copyright info was automatically extracted
+ from the perl module. It may not be accurate, so you better
+ check the module sources in order to ensure the module for its
+ inclusion in Debian or for general legal information. Please,
+ if licensing information is incorrectly generated, file a bug
+ on dh-make-perl.
+ NOTE: Don't forget to remove this disclaimer once you are happy
+ with this file.
+
+Files: *
+Copyright: Mark Wells, <mark@freeside.biz>
+ .
+ Commercial support is available from Freeside Internet Services, Inc.
+License: unparsable
+
+Files: debian/*
+Copyright: 2014, Mark Wells <mark@dancingmad.dyndns.org>
+License: Artistic or GPL-1+ or unparsable
+
+License: Artistic
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the Artistic License, which comes with Perl.
+ .
+ On Debian systems, the complete text of the Artistic License can be
+ found in `/usr/share/common-licenses/Artistic'.
+
+License: GPL-1+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 1, or (at your option)
+ any later version.
+ .
+ On Debian systems, the complete text of version 1 of the GNU General
+ Public License can be found in `/usr/share/common-licenses/GPL-1'.
+
+License: unparsable
+ No known license could be automatically determined for this module.
+ If this module conforms to a commonly used license, please report this
+ as a bug in dh-make-perl. In any case, please find the proper license
+ and fix this file!
--- /dev/null
+#!/usr/bin/make -f
+
+%:
+ dh $@
--- /dev/null
+3.0 (quilt)
--- /dev/null
+version=3
+https://metacpan.org/release/WebService-Northern911 .*/WebService-Northern911-v?(\d[\d.-]*)\.(?:tar(?:\.gz|\.bz2)?|tgz|zip)$
--- /dev/null
+Makefile
+Makefile.old
+Build
+Build.bat
+META.*
+MYMETA.*
+.build/
+_build/
+cover_db/
+blib/
+inc/
+.lwpcookies
+.last_cover_stats
+nytprof.out
+pod2htm*.tmp
+pm_to_blib
+WebService-Northern911-*
+WebService-Northern911-*.tar.gz
+.gitignore
+.git/*
--- /dev/null
+package WebService::Northern911;
+
+use Digest::MD5 'md5_hex';
+use DateTime;
+use XML::Compile::WSDL11;
+use XML::Compile::SOAP11;
+use XML::Compile::Transport::SOAPHTTP;
+use File::ShareDir 'dist_dir';
+
+use WebService::Northern911::Response;
+
+our $VERSION = 0.1;
+
+=head1 NAME
+
+WebService::Northern911 - Interface to the Northern 911 ALI database
+
+=head1 SYNOPSIS
+
+use WebService::Northern911;
+
+my $n911 = WebService::Northern911->new( vendor_code => '007',
+ password => '280fip1@' );
+
+my $result = $n911->AddorUpdateCustomer(
+ PHONE_NUMBER => '4015559988',
+ FIRST_NAME => 'John',
+ LAST_NAME => 'Doe',
+ STREET_NUMBER => 1024,
+ STREET_NAME => 'Main St',
+ CITY => 'Calgary',
+ PROVINCE_STATE => 'AB',
+ POSTAL_CODE_ZIP => 'Z1A A2Z',
+);
+if ($result->is_success) {
+ print "Updated customer."
+} else
+ print $result->error_message;
+}
+
+=head1 METHODS
+
+=over 4
+
+=item new OPTIONS
+
+Creates an object to access the API. OPTIONS must include C<vendor_code>
+and C<password>. By default, this will connect to the development API;
+for access to the live service, pass C<live> => 1.
+
+=cut
+
+sub new {
+ my $class = shift;
+ my %opt = @_;
+ my $vendor_code = $opt{vendor_code} or die "WebService::Northern911::new() requires vendor_code\n";
+ my $password = $opt{password} or die "WebService::Northern911::new() requires password\n";
+
+ # create the interface
+ # expensive, so reuse this object as much as possible
+ my $schema = dist_dir('WebService-Northern911') . '/schema';
+ if ($opt{'live'}) {
+ $schema .= '/live';
+ } else {
+ $schema .= '/test';
+ }
+
+ # yes, that's right, we have to distribute the schema with this module.
+ # XML::Compile::WSDL11 makes the argument that
+ my $client = XML::Compile::WSDL11->new("$schema/wsdl");
+ for my $xsd (<$schema/xsd*>) {
+ $client->importDefinitions($xsd);
+ }
+
+ $client->compileCalls;
+ my $self = {
+ vendor_code => $vendor_code,
+ password => $password,
+ client => $client,
+ };
+ bless $self, $class;
+}
+
+# internal method: returns the authentication string (referred to as the
+# "hash" in the docs)
+
+sub _auth {
+ my $self = shift;
+
+ my $now = DateTime->now;
+ $now->set_time_zone('UTC');
+ md5_hex($self->{vendor_code} .
+ $self->{password} .
+ $now->strftime('%Y%m%d')
+ );
+}
+
+# internal method: dispatch a request to the service
+
+sub _call {
+ my $self = shift;
+ $self->{client}->call(@_);
+}
+
+=item AddorUpdateCustomer OPTIONS
+
+Adds or updates a customer. Note the idiosyncratic capitalization; this
+is the spelling of the underlying API method. OPTIONS may include:
+
+- PHONE_NUMBER: 10 digits, no punctuation
+- FIRST_NAME: customer first name, up to 38 characters
+- LAST_NAME: customer last name or company name, up to 100 characters
+- STREET_NUMBER: up to 10 characters
+- STREET_NAME: up to 84 characters
+- CITY: up to 38 characters
+- PROVINCE_STATE: 2 letter code
+- POSTAL_CODE_ZIP: Canadian postal code or U.S. zip code
+- OTHER_ADDRESS_INFO: up to 250 characters
+
+Returns a L<WebService::Northern911::Result> object.
+
+=cut
+
+sub AddorUpdateCustomer {
+ my $self = shift;
+ my %opt = @_;
+ my %customer = map { $_ => $opt{$_} }
+ qw( PHONE_NUMBER FIRST_NAME LAST_NAME STREET_NUMBER STREET_NAME
+ CITY PROVINCE_STATE POSTAL_CODE_ZIP OTHER_ADDRESS_INFO
+ );
+ # according to Northern 911 support, this is for a future feature,
+ # and should always be 'N' for now
+ $customer{ENHANCED_CAPABLE} = 'N';
+
+ $customer{VENDOR_CODE} = $self->{vendor_code};
+
+ my ($answer, $trace) = $self->_call( 'AddorUpdateCustomer',
+ hash => $self->_auth,
+ customer => \%customer,
+ );
+
+ WebService::Northern911::Response->new($answer);
+}
+
+=item DeleteCustomer PHONE
+
+Deletes a customer record. PHONE must be the phone number (10 digits,
+as in C<AddorUpdateCustomer>).
+
+=cut
+
+sub DeleteCustomer {
+ my $self = shift;
+ my $phone = shift;
+
+ my ($answer, $trace) = $self->_call( 'DeleteCustomer',
+ vendorCode => $self->{vendor_code},
+ hash => $self->_auth,
+ phoneNumber => $phone,
+ );
+
+ WebService::Northern911::Response->new($answer);
+}
+
+=item QueryCustomer PHONE
+
+Queries a customer record. PHONE must be the phone number. The response
+object will have a "customer" method which returns a hashref of customer
+information, in the same format as the arguments to C<AddorUpdateCustomer>.
+
+=cut
+
+sub QueryCustomer {
+ my $self = shift;
+ my $phone = shift;
+
+ my ($answer, $trace) = $self->_call( 'QueryCustomer',
+ vendorCode => $self->{vendor_code},
+ hash => $self->_auth,
+ phoneNumber => $phone,
+ );
+
+ WebService::Northern911::Response->new($answer);
+}
+
+=item GetVendorDumpURL
+
+Returns a URL to download a CSV dump of your customer data. The response
+object will have a 'url' method to return the URL.
+
+Note that this feature is heavily throttled (at most once per week, unless
+you pay for more frequent access) and the URL can only be used once.
+
+=cut
+
+sub GetVendorDumpURL {
+ my $self = shift;
+
+ my ($answer, $trace) = $self->_call( 'GetVendorDumpURL',
+ vendorCode => $self->{vendor_code},
+ hash => $self->_auth,
+ );
+
+ WebService::Northern911::Response->new($answer);
+}
+
+=back
+
+=head1 AUTHOR
+
+Mark Wells, <mark@freeside.biz>
+
+Commercial support is available from Freeside Internet Services, Inc.
+
+=head1 COPYRIGHT
+
+Copyright (c) 2014 Mark Wells
+
+=cut
+
+1;
--- /dev/null
+package WebService::Northern911::Response;
+
+use strict;
+
+sub new {
+ my $class = shift;
+ my $self;
+
+ my $tree = shift;
+ $tree = $tree->{'parameters'} if exists $tree->{'parameters'};
+ my ($key) = grep /Result$/, keys(%$tree); # should only ever be one key
+ $tree = $tree->{$key} or die "can't parse transaction result";
+
+ my $error_message = join("\n",
+ map { $_->{ErrorMessage} }
+ @{ $tree->{Errors}{Error} }
+ );
+
+ $self = {
+ is_success => $tree->{Accepted},
+ error_message => $error_message,
+ };
+
+ if ( $key eq 'QueryCustomerResult' ) {
+ if ($tree->{Accepted}) {
+ $self->{customer} = $tree->{Customer};
+ } elsif ( $tree->{Errors}{Error}[0]{ErrorCode} == 101 ) {
+ # 101 = Customer does not exist. But the query was successful...
+ $self->{is_success} = 1;
+ }
+ } elsif ( $key eq 'GetVendorDumpURL' ) {
+ $self->{url} = $tree->{VendorDumpURL};
+ }
+
+ bless $self, $class;
+}
+
+sub is_success {
+ $_[0]->{is_success};
+}
+
+sub error_message {
+ $_[0]->{error_message};
+}
+
+sub customer {
+ $_[0]->{customer};
+}
+
+sub url {
+ $_[0]->{url};
+}
+
+=head1 NAME
+
+WebService::Northern911::Response - Response object returned by
+WebService::Northern911 API calls
+
+=head1 METHODS
+
+=over 4
+
+=item is_success
+
+1 if the API method was a success, 0 if not. If it's 0, C<error_message>
+will contain any error returned. Note that we report the C<QueryCustomer>
+method as a success if it returns a negative result; in that case,
+C<customer> will be undef.
+
+=item error_message
+
+Any error messages returned from the web service, separated by newlines.
+
+=item customer
+
+For C<QueryCustomer> calls, returns a hashref of the customer information
+per the field names used by C<AddorUpdateCustomer>.
+
+=item url
+
+For C<GetVendorDumpURL> calls, returns the URL where the data dump can be
+downloaded.
+
+=back
+
+=cut
+
+1;
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?><wsdl:definitions name="Service" targetNamespace="http://tempuri.org/" 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://tempuri.org/" 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"><wsp:Policy wsu:Id="BasicHttpBinding_IService_policy"><wsp:ExactlyOne><wsp:All><sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"><wsp:Policy><sp:TransportToken><wsp:Policy><sp:HttpsToken RequireClientCertificate="false"/></wsp:Policy></sp:TransportToken><sp:AlgorithmSuite><wsp:Policy><sp:Basic256/></wsp:Policy></sp:AlgorithmSuite><sp:Layout><wsp:Policy><sp:Strict/></wsp:Policy></sp:Layout></wsp:Policy></sp:TransportBinding></wsp:All></wsp:ExactlyOne></wsp:Policy><wsdl:types><xsd:schema targetNamespace="http://tempuri.org/Imports"><xsd:import schemaLocation="https://addressinfo.northern911.com/soap/Service.svc?xsd=xsd0" namespace="http://tempuri.org/"/><xsd:import schemaLocation="https://addressinfo.northern911.com/soap/Service.svc?xsd=xsd1" namespace="http://schemas.microsoft.com/2003/10/Serialization/"/><xsd:import schemaLocation="https://addressinfo.northern911.com/soap/Service.svc?xsd=xsd2" namespace="http://schemas.datacontract.org/2004/07/"/></xsd:schema></wsdl:types><wsdl:message name="IService_AddorUpdateCustomer_InputMessage"><wsdl:part name="parameters" element="tns:AddorUpdateCustomer"/></wsdl:message><wsdl:message name="IService_AddorUpdateCustomer_OutputMessage"><wsdl:part name="parameters" element="tns:AddorUpdateCustomerResponse"/></wsdl:message><wsdl:message name="IService_DeleteCustomer_InputMessage"><wsdl:part name="parameters" element="tns:DeleteCustomer"/></wsdl:message><wsdl:message name="IService_DeleteCustomer_OutputMessage"><wsdl:part name="parameters" element="tns:DeleteCustomerResponse"/></wsdl:message><wsdl:message name="IService_QueryCustomer_InputMessage"><wsdl:part name="parameters" element="tns:QueryCustomer"/></wsdl:message><wsdl:message name="IService_QueryCustomer_OutputMessage"><wsdl:part name="parameters" element="tns:QueryCustomerResponse"/></wsdl:message><wsdl:message name="IService_GetVendorDumpURL_InputMessage"><wsdl:part name="parameters" element="tns:GetVendorDumpURL"/></wsdl:message><wsdl:message name="IService_GetVendorDumpURL_OutputMessage"><wsdl:part name="parameters" element="tns:GetVendorDumpURLResponse"/></wsdl:message><wsdl:message name="IService_VerifyCustomer_InputMessage"><wsdl:part name="parameters" element="tns:VerifyCustomer"/></wsdl:message><wsdl:message name="IService_VerifyCustomer_OutputMessage"><wsdl:part name="parameters" element="tns:VerifyCustomerResponse"/></wsdl:message><wsdl:portType name="IService"><wsdl:operation name="AddorUpdateCustomer"><wsdl:input wsaw:Action="http://tempuri.org/IService/AddorUpdateCustomer" message="tns:IService_AddorUpdateCustomer_InputMessage"/><wsdl:output wsaw:Action="http://tempuri.org/IService/AddorUpdateCustomerResponse" message="tns:IService_AddorUpdateCustomer_OutputMessage"/></wsdl:operation><wsdl:operation name="DeleteCustomer"><wsdl:input wsaw:Action="http://tempuri.org/IService/DeleteCustomer" message="tns:IService_DeleteCustomer_InputMessage"/><wsdl:output wsaw:Action="http://tempuri.org/IService/DeleteCustomerResponse" message="tns:IService_DeleteCustomer_OutputMessage"/></wsdl:operation><wsdl:operation name="QueryCustomer"><wsdl:input wsaw:Action="http://tempuri.org/IService/QueryCustomer" message="tns:IService_QueryCustomer_InputMessage"/><wsdl:output wsaw:Action="http://tempuri.org/IService/QueryCustomerResponse" message="tns:IService_QueryCustomer_OutputMessage"/></wsdl:operation><wsdl:operation name="GetVendorDumpURL"><wsdl:input wsaw:Action="http://tempuri.org/IService/GetVendorDumpURL" message="tns:IService_GetVendorDumpURL_InputMessage"/><wsdl:output wsaw:Action="http://tempuri.org/IService/GetVendorDumpURLResponse" message="tns:IService_GetVendorDumpURL_OutputMessage"/></wsdl:operation><wsdl:operation name="VerifyCustomer"><wsdl:input wsaw:Action="http://tempuri.org/IService/VerifyCustomer" message="tns:IService_VerifyCustomer_InputMessage"/><wsdl:output wsaw:Action="http://tempuri.org/IService/VerifyCustomerResponse" message="tns:IService_VerifyCustomer_OutputMessage"/></wsdl:operation></wsdl:portType><wsdl:binding name="BasicHttpBinding_IService" type="tns:IService"><wsp:PolicyReference URI="#BasicHttpBinding_IService_policy"/><soap:binding transport="http://schemas.xmlsoap.org/soap/http"/><wsdl:operation name="AddorUpdateCustomer"><soap:operation soapAction="http://tempuri.org/IService/AddorUpdateCustomer" style="document"/><wsdl:input><soap:body use="literal"/></wsdl:input><wsdl:output><soap:body use="literal"/></wsdl:output></wsdl:operation><wsdl:operation name="DeleteCustomer"><soap:operation soapAction="http://tempuri.org/IService/DeleteCustomer" style="document"/><wsdl:input><soap:body use="literal"/></wsdl:input><wsdl:output><soap:body use="literal"/></wsdl:output></wsdl:operation><wsdl:operation name="QueryCustomer"><soap:operation soapAction="http://tempuri.org/IService/QueryCustomer" style="document"/><wsdl:input><soap:body use="literal"/></wsdl:input><wsdl:output><soap:body use="literal"/></wsdl:output></wsdl:operation><wsdl:operation name="GetVendorDumpURL"><soap:operation soapAction="http://tempuri.org/IService/GetVendorDumpURL" style="document"/><wsdl:input><soap:body use="literal"/></wsdl:input><wsdl:output><soap:body use="literal"/></wsdl:output></wsdl:operation><wsdl:operation name="VerifyCustomer"><soap:operation soapAction="http://tempuri.org/IService/VerifyCustomer" style="document"/><wsdl:input><soap:body use="literal"/></wsdl:input><wsdl:output><soap:body use="literal"/></wsdl:output></wsdl:operation></wsdl:binding><wsdl:service name="Service"><wsdl:port name="BasicHttpBinding_IService" binding="tns:BasicHttpBinding_IService"><soap:address location="https://addressinfo.northern911.com/soap/Service.svc"/></wsdl:port></wsdl:service></wsdl:definitions>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?><xs:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://tempuri.org/"><xs:import schemaLocation="https://addressinfo.northern911.com/soap/Service.svc?xsd=xsd2" namespace="http://schemas.datacontract.org/2004/07/"/><xs:element name="AddorUpdateCustomer"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="customer" nillable="true" type="q1:Customer" xmlns:q1="http://schemas.datacontract.org/2004/07/"/><xs:element minOccurs="0" name="hash" nillable="true" type="xs:string"/></xs:sequence></xs:complexType></xs:element><xs:element name="AddorUpdateCustomerResponse"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="AddorUpdateCustomerResult" nillable="true" type="q2:N911Response" xmlns:q2="http://schemas.datacontract.org/2004/07/"/></xs:sequence></xs:complexType></xs:element><xs:element name="DeleteCustomer"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="vendorCode" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="phoneNumber" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="hash" nillable="true" type="xs:string"/></xs:sequence></xs:complexType></xs:element><xs:element name="DeleteCustomerResponse"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="DeleteCustomerResult" nillable="true" type="q3:N911Response" xmlns:q3="http://schemas.datacontract.org/2004/07/"/></xs:sequence></xs:complexType></xs:element><xs:element name="QueryCustomer"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="vendorCode" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="phoneNumber" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="hash" nillable="true" type="xs:string"/></xs:sequence></xs:complexType></xs:element><xs:element name="QueryCustomerResponse"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="QueryCustomerResult" nillable="true" type="q4:N911Response" xmlns:q4="http://schemas.datacontract.org/2004/07/"/></xs:sequence></xs:complexType></xs:element><xs:element name="GetVendorDumpURL"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="vendorCode" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="hash" nillable="true" type="xs:string"/></xs:sequence></xs:complexType></xs:element><xs:element name="GetVendorDumpURLResponse"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="GetVendorDumpURLResult" nillable="true" type="q5:N911Response" xmlns:q5="http://schemas.datacontract.org/2004/07/"/></xs:sequence></xs:complexType></xs:element><xs:element name="VerifyCustomer"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="customer" nillable="true" type="q6:Customer" xmlns:q6="http://schemas.datacontract.org/2004/07/"/><xs:element minOccurs="0" name="hash" nillable="true" type="xs:string"/></xs:sequence></xs:complexType></xs:element><xs:element name="VerifyCustomerResponse"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="VerifyCustomerResult" nillable="true" type="q7:N911Response" xmlns:q7="http://schemas.datacontract.org/2004/07/"/></xs:sequence></xs:complexType></xs:element></xs:schema>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?><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/"><xs:element name="anyType" nillable="true" type="xs:anyType"/><xs:element name="anyURI" nillable="true" type="xs:anyURI"/><xs:element name="base64Binary" nillable="true" type="xs:base64Binary"/><xs:element name="boolean" nillable="true" type="xs:boolean"/><xs:element name="byte" nillable="true" type="xs:byte"/><xs:element name="dateTime" nillable="true" type="xs:dateTime"/><xs:element name="decimal" nillable="true" type="xs:decimal"/><xs:element name="double" nillable="true" type="xs:double"/><xs:element name="float" nillable="true" type="xs:float"/><xs:element name="int" nillable="true" type="xs:int"/><xs:element name="long" nillable="true" type="xs:long"/><xs:element name="QName" nillable="true" type="xs:QName"/><xs:element name="short" nillable="true" type="xs:short"/><xs:element name="string" nillable="true" type="xs:string"/><xs:element name="unsignedByte" nillable="true" type="xs:unsignedByte"/><xs:element name="unsignedInt" nillable="true" type="xs:unsignedInt"/><xs:element name="unsignedLong" nillable="true" type="xs:unsignedLong"/><xs:element name="unsignedShort" nillable="true" type="xs:unsignedShort"/><xs:element name="char" nillable="true" type="tns:char"/><xs:simpleType name="char"><xs:restriction base="xs:int"/></xs:simpleType><xs:element name="duration" nillable="true" type="tns:duration"/><xs:simpleType name="duration"><xs:restriction base="xs:duration"><xs:pattern value="\-?P(\d*D)?(T(\d*H)?(\d*M)?(\d*(\.\d*)?S)?)?"/><xs:minInclusive value="-P10675199DT2H48M5.4775808S"/><xs:maxInclusive value="P10675199DT2H48M5.4775807S"/></xs:restriction></xs:simpleType><xs:element name="guid" nillable="true" type="tns:guid"/><xs:simpleType name="guid"><xs:restriction base="xs:string"><xs:pattern value="[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}"/></xs:restriction></xs:simpleType><xs:attribute name="FactoryType" type="xs:QName"/><xs:attribute name="Id" type="xs:ID"/><xs:attribute name="Ref" type="xs:IDREF"/></xs:schema>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?><xs:schema elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://schemas.datacontract.org/2004/07/"><xs:complexType name="Customer"><xs:sequence><xs:element minOccurs="0" name="CITY" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="ENHANCED_CAPABLE" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="FIRST_NAME" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="LAST_DATETIME_MODIFIED" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="LAST_DATETIME_MODIFIED_UNIXTIME" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="LAST_NAME" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="OTHER_ADDRESS_INFO" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="PHONE_NUMBER" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="POSTAL_CODE_ZIP" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="PROVINCE_STATE" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="STREET_NAME" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="STREET_NUMBER" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="SUITE_APT" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="VENDOR_CODE" nillable="true" type="xs:string"/></xs:sequence></xs:complexType><xs:element name="Customer" nillable="true" type="tns:Customer"/><xs:complexType name="N911Response"><xs:sequence><xs:element minOccurs="0" name="Accepted" type="xs:boolean"/><xs:element minOccurs="0" name="Customer" nillable="true" type="tns:Customer"/><xs:element minOccurs="0" name="Errors" nillable="true" type="tns:ArrayOfError"/><xs:element minOccurs="0" name="VendorDumpURL" nillable="true" type="xs:string"/></xs:sequence></xs:complexType><xs:element name="N911Response" nillable="true" type="tns:N911Response"/><xs:complexType name="ArrayOfError"><xs:sequence><xs:element minOccurs="0" maxOccurs="unbounded" name="Error" nillable="true" type="tns:Error"/></xs:sequence></xs:complexType><xs:element name="ArrayOfError" nillable="true" type="tns:ArrayOfError"/><xs:complexType name="Error"><xs:sequence><xs:element minOccurs="0" name="ErrorCode" type="xs:int"/><xs:element minOccurs="0" name="ErrorMessage" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="SuggestedCity" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="SuggestedProvinceState" nillable="true" type="xs:string"/></xs:sequence></xs:complexType><xs:element name="Error" nillable="true" type="tns:Error"/></xs:schema>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?><wsdl:definitions name="Service" targetNamespace="http://tempuri.org/" 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://tempuri.org/" 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"><wsp:Policy wsu:Id="BasicHttpBinding_IService_policy"><wsp:ExactlyOne><wsp:All><sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"><wsp:Policy><sp:TransportToken><wsp:Policy><sp:HttpsToken RequireClientCertificate="false"/></wsp:Policy></sp:TransportToken><sp:AlgorithmSuite><wsp:Policy><sp:Basic256/></wsp:Policy></sp:AlgorithmSuite><sp:Layout><wsp:Policy><sp:Strict/></wsp:Policy></sp:Layout></wsp:Policy></sp:TransportBinding></wsp:All></wsp:ExactlyOne></wsp:Policy><wsdl:types><xsd:schema targetNamespace="http://tempuri.org/Imports"><xsd:import schemaLocation="https://soapdev.northern911.com/soap/Service.svc?xsd=xsd0" namespace="http://tempuri.org/"/><xsd:import schemaLocation="https://soapdev.northern911.com/soap/Service.svc?xsd=xsd1" namespace="http://schemas.microsoft.com/2003/10/Serialization/"/><xsd:import schemaLocation="https://soapdev.northern911.com/soap/Service.svc?xsd=xsd2" namespace="http://schemas.datacontract.org/2004/07/"/></xsd:schema></wsdl:types><wsdl:message name="IService_AddorUpdateCustomer_InputMessage"><wsdl:part name="parameters" element="tns:AddorUpdateCustomer"/></wsdl:message><wsdl:message name="IService_AddorUpdateCustomer_OutputMessage"><wsdl:part name="parameters" element="tns:AddorUpdateCustomerResponse"/></wsdl:message><wsdl:message name="IService_DeleteCustomer_InputMessage"><wsdl:part name="parameters" element="tns:DeleteCustomer"/></wsdl:message><wsdl:message name="IService_DeleteCustomer_OutputMessage"><wsdl:part name="parameters" element="tns:DeleteCustomerResponse"/></wsdl:message><wsdl:message name="IService_QueryCustomer_InputMessage"><wsdl:part name="parameters" element="tns:QueryCustomer"/></wsdl:message><wsdl:message name="IService_QueryCustomer_OutputMessage"><wsdl:part name="parameters" element="tns:QueryCustomerResponse"/></wsdl:message><wsdl:message name="IService_GetVendorDumpURL_InputMessage"><wsdl:part name="parameters" element="tns:GetVendorDumpURL"/></wsdl:message><wsdl:message name="IService_GetVendorDumpURL_OutputMessage"><wsdl:part name="parameters" element="tns:GetVendorDumpURLResponse"/></wsdl:message><wsdl:message name="IService_VerifyCustomer_InputMessage"><wsdl:part name="parameters" element="tns:VerifyCustomer"/></wsdl:message><wsdl:message name="IService_VerifyCustomer_OutputMessage"><wsdl:part name="parameters" element="tns:VerifyCustomerResponse"/></wsdl:message><wsdl:portType name="IService"><wsdl:operation name="AddorUpdateCustomer"><wsdl:input wsaw:Action="http://tempuri.org/IService/AddorUpdateCustomer" message="tns:IService_AddorUpdateCustomer_InputMessage"/><wsdl:output wsaw:Action="http://tempuri.org/IService/AddorUpdateCustomerResponse" message="tns:IService_AddorUpdateCustomer_OutputMessage"/></wsdl:operation><wsdl:operation name="DeleteCustomer"><wsdl:input wsaw:Action="http://tempuri.org/IService/DeleteCustomer" message="tns:IService_DeleteCustomer_InputMessage"/><wsdl:output wsaw:Action="http://tempuri.org/IService/DeleteCustomerResponse" message="tns:IService_DeleteCustomer_OutputMessage"/></wsdl:operation><wsdl:operation name="QueryCustomer"><wsdl:input wsaw:Action="http://tempuri.org/IService/QueryCustomer" message="tns:IService_QueryCustomer_InputMessage"/><wsdl:output wsaw:Action="http://tempuri.org/IService/QueryCustomerResponse" message="tns:IService_QueryCustomer_OutputMessage"/></wsdl:operation><wsdl:operation name="GetVendorDumpURL"><wsdl:input wsaw:Action="http://tempuri.org/IService/GetVendorDumpURL" message="tns:IService_GetVendorDumpURL_InputMessage"/><wsdl:output wsaw:Action="http://tempuri.org/IService/GetVendorDumpURLResponse" message="tns:IService_GetVendorDumpURL_OutputMessage"/></wsdl:operation><wsdl:operation name="VerifyCustomer"><wsdl:input wsaw:Action="http://tempuri.org/IService/VerifyCustomer" message="tns:IService_VerifyCustomer_InputMessage"/><wsdl:output wsaw:Action="http://tempuri.org/IService/VerifyCustomerResponse" message="tns:IService_VerifyCustomer_OutputMessage"/></wsdl:operation></wsdl:portType><wsdl:binding name="BasicHttpBinding_IService" type="tns:IService"><wsp:PolicyReference URI="#BasicHttpBinding_IService_policy"/><soap:binding transport="http://schemas.xmlsoap.org/soap/http"/><wsdl:operation name="AddorUpdateCustomer"><soap:operation soapAction="http://tempuri.org/IService/AddorUpdateCustomer" style="document"/><wsdl:input><soap:body use="literal"/></wsdl:input><wsdl:output><soap:body use="literal"/></wsdl:output></wsdl:operation><wsdl:operation name="DeleteCustomer"><soap:operation soapAction="http://tempuri.org/IService/DeleteCustomer" style="document"/><wsdl:input><soap:body use="literal"/></wsdl:input><wsdl:output><soap:body use="literal"/></wsdl:output></wsdl:operation><wsdl:operation name="QueryCustomer"><soap:operation soapAction="http://tempuri.org/IService/QueryCustomer" style="document"/><wsdl:input><soap:body use="literal"/></wsdl:input><wsdl:output><soap:body use="literal"/></wsdl:output></wsdl:operation><wsdl:operation name="GetVendorDumpURL"><soap:operation soapAction="http://tempuri.org/IService/GetVendorDumpURL" style="document"/><wsdl:input><soap:body use="literal"/></wsdl:input><wsdl:output><soap:body use="literal"/></wsdl:output></wsdl:operation><wsdl:operation name="VerifyCustomer"><soap:operation soapAction="http://tempuri.org/IService/VerifyCustomer" style="document"/><wsdl:input><soap:body use="literal"/></wsdl:input><wsdl:output><soap:body use="literal"/></wsdl:output></wsdl:operation></wsdl:binding><wsdl:service name="Service"><wsdl:port name="BasicHttpBinding_IService" binding="tns:BasicHttpBinding_IService"><soap:address location="https://soapdev.northern911.com/soap/Service.svc"/></wsdl:port></wsdl:service></wsdl:definitions>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?><xs:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://tempuri.org/"><xs:import schemaLocation="https://soapdev.northern911.com/soap/Service.svc?xsd=xsd2" namespace="http://schemas.datacontract.org/2004/07/"/><xs:element name="AddorUpdateCustomer"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="customer" nillable="true" type="q1:Customer" xmlns:q1="http://schemas.datacontract.org/2004/07/"/><xs:element minOccurs="0" name="hash" nillable="true" type="xs:string"/></xs:sequence></xs:complexType></xs:element><xs:element name="AddorUpdateCustomerResponse"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="AddorUpdateCustomerResult" nillable="true" type="q2:N911Response" xmlns:q2="http://schemas.datacontract.org/2004/07/"/></xs:sequence></xs:complexType></xs:element><xs:element name="DeleteCustomer"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="vendorCode" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="phoneNumber" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="hash" nillable="true" type="xs:string"/></xs:sequence></xs:complexType></xs:element><xs:element name="DeleteCustomerResponse"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="DeleteCustomerResult" nillable="true" type="q3:N911Response" xmlns:q3="http://schemas.datacontract.org/2004/07/"/></xs:sequence></xs:complexType></xs:element><xs:element name="QueryCustomer"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="vendorCode" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="phoneNumber" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="hash" nillable="true" type="xs:string"/></xs:sequence></xs:complexType></xs:element><xs:element name="QueryCustomerResponse"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="QueryCustomerResult" nillable="true" type="q4:N911Response" xmlns:q4="http://schemas.datacontract.org/2004/07/"/></xs:sequence></xs:complexType></xs:element><xs:element name="GetVendorDumpURL"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="vendorCode" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="hash" nillable="true" type="xs:string"/></xs:sequence></xs:complexType></xs:element><xs:element name="GetVendorDumpURLResponse"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="GetVendorDumpURLResult" nillable="true" type="q5:N911Response" xmlns:q5="http://schemas.datacontract.org/2004/07/"/></xs:sequence></xs:complexType></xs:element><xs:element name="VerifyCustomer"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="customer" nillable="true" type="q6:Customer" xmlns:q6="http://schemas.datacontract.org/2004/07/"/><xs:element minOccurs="0" name="hash" nillable="true" type="xs:string"/></xs:sequence></xs:complexType></xs:element><xs:element name="VerifyCustomerResponse"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="VerifyCustomerResult" nillable="true" type="q7:N911Response" xmlns:q7="http://schemas.datacontract.org/2004/07/"/></xs:sequence></xs:complexType></xs:element></xs:schema>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?><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/"><xs:element name="anyType" nillable="true" type="xs:anyType"/><xs:element name="anyURI" nillable="true" type="xs:anyURI"/><xs:element name="base64Binary" nillable="true" type="xs:base64Binary"/><xs:element name="boolean" nillable="true" type="xs:boolean"/><xs:element name="byte" nillable="true" type="xs:byte"/><xs:element name="dateTime" nillable="true" type="xs:dateTime"/><xs:element name="decimal" nillable="true" type="xs:decimal"/><xs:element name="double" nillable="true" type="xs:double"/><xs:element name="float" nillable="true" type="xs:float"/><xs:element name="int" nillable="true" type="xs:int"/><xs:element name="long" nillable="true" type="xs:long"/><xs:element name="QName" nillable="true" type="xs:QName"/><xs:element name="short" nillable="true" type="xs:short"/><xs:element name="string" nillable="true" type="xs:string"/><xs:element name="unsignedByte" nillable="true" type="xs:unsignedByte"/><xs:element name="unsignedInt" nillable="true" type="xs:unsignedInt"/><xs:element name="unsignedLong" nillable="true" type="xs:unsignedLong"/><xs:element name="unsignedShort" nillable="true" type="xs:unsignedShort"/><xs:element name="char" nillable="true" type="tns:char"/><xs:simpleType name="char"><xs:restriction base="xs:int"/></xs:simpleType><xs:element name="duration" nillable="true" type="tns:duration"/><xs:simpleType name="duration"><xs:restriction base="xs:duration"><xs:pattern value="\-?P(\d*D)?(T(\d*H)?(\d*M)?(\d*(\.\d*)?S)?)?"/><xs:minInclusive value="-P10675199DT2H48M5.4775808S"/><xs:maxInclusive value="P10675199DT2H48M5.4775807S"/></xs:restriction></xs:simpleType><xs:element name="guid" nillable="true" type="tns:guid"/><xs:simpleType name="guid"><xs:restriction base="xs:string"><xs:pattern value="[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}"/></xs:restriction></xs:simpleType><xs:attribute name="FactoryType" type="xs:QName"/><xs:attribute name="Id" type="xs:ID"/><xs:attribute name="Ref" type="xs:IDREF"/></xs:schema>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?><xs:schema elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://schemas.datacontract.org/2004/07/"><xs:complexType name="Customer"><xs:sequence><xs:element minOccurs="0" name="CITY" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="ENHANCED_CAPABLE" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="FIRST_NAME" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="LAST_DATETIME_MODIFIED" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="LAST_DATETIME_MODIFIED_UNIXTIME" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="LAST_NAME" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="OTHER_ADDRESS_INFO" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="PHONE_NUMBER" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="POSTAL_CODE_ZIP" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="PROVINCE_STATE" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="STREET_NAME" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="STREET_NUMBER" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="SUITE_APT" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="VENDOR_CODE" nillable="true" type="xs:string"/></xs:sequence></xs:complexType><xs:element name="Customer" nillable="true" type="tns:Customer"/><xs:complexType name="N911Response"><xs:sequence><xs:element minOccurs="0" name="Accepted" type="xs:boolean"/><xs:element minOccurs="0" name="Customer" nillable="true" type="tns:Customer"/><xs:element minOccurs="0" name="Errors" nillable="true" type="tns:ArrayOfError"/><xs:element minOccurs="0" name="VendorDumpURL" nillable="true" type="xs:string"/></xs:sequence></xs:complexType><xs:element name="N911Response" nillable="true" type="tns:N911Response"/><xs:complexType name="ArrayOfError"><xs:sequence><xs:element minOccurs="0" maxOccurs="unbounded" name="Error" nillable="true" type="tns:Error"/></xs:sequence></xs:complexType><xs:element name="ArrayOfError" nillable="true" type="tns:ArrayOfError"/><xs:complexType name="Error"><xs:sequence><xs:element minOccurs="0" name="ErrorCode" type="xs:int"/><xs:element minOccurs="0" name="ErrorMessage" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="SuggestedCity" nillable="true" type="xs:string"/><xs:element minOccurs="0" name="SuggestedProvinceState" nillable="true" type="xs:string"/></xs:sequence></xs:complexType><xs:element name="Error" nillable="true" type="tns:Error"/></xs:schema>
\ No newline at end of file
--- /dev/null
+#!perl -T
+use 5.006;
+use strict;
+use warnings FATAL => 'all';
+use Test::More;
+
+plan tests => 1;
+
+BEGIN {
+ use_ok( 'WebService::Northern911' ) || print "Bail out!\n";
+}
+
+diag( "Testing WebService::Northern911 $WebService::Northern911::VERSION, Perl $], $^X" );
--- /dev/null
+#!perl -T
+use 5.006;
+use strict;
+use warnings FATAL => 'all';
+use Test::More;
+
+unless ( $ENV{RELEASE_TESTING} ) {
+ plan( skip_all => "Author tests not required for installation" );
+}
+
+my $min_tcm = 0.9;
+eval "use Test::CheckManifest $min_tcm";
+plan skip_all => "Test::CheckManifest $min_tcm required" if $@;
+
+ok_manifest();
--- /dev/null
+#!perl -T
+use 5.006;
+use strict;
+use warnings FATAL => 'all';
+use Test::More;
+
+# Ensure a recent version of Test::Pod
+my $min_tp = 1.22;
+eval "use Test::Pod $min_tp";
+plan skip_all => "Test::Pod $min_tp required for testing POD" if $@;
+
+all_pod_files_ok();