NAME WSDL::Compile - Compile SOAP WSDL from your Moose classes. SYNOPSIS # Name of your WebService: Example # Op stands for Operation # Your method is CreateCustomer # # Request - what you expect to receive package Example::Op::CreateCustomer::Request; use Moose; use MooseX::Types::XMLSchema qw( :all ); use WSDL::Compile::Meta::Attribute::WSDL; has 'FirstName' => ( metaclass => 'WSDL', is => 'rw', isa => 'xs:string', required => 1, xs_minOccurs => 1, ); has 'LastName' => ( metaclass => 'WSDL', is => 'rw', isa => 'xs:string', required => 1, xs_minOccurs => 1, ); has 'Contacts' => ( metaclass => 'WSDL', is => 'rw', isa => 'ArrayRef[Example::CT::Contact]', xs_maxOccurs => undef, ); # Response - that's what will be sent back package Example::Op::CreateCustomer::Response; use Moose; use MooseX::Types::XMLSchema qw( :all ); use WSDL::Compile::Meta::Attribute::WSDL; has 'CustomerID' => ( metaclass => 'WSDL', is => 'rw', isa => 'xs:int', required => 1, xs_minOccurs => 1, ); # Fault - class that defines faultdetails package Example::Op::CreateCustomer::Fault; use Moose; use MooseX::Types::XMLSchema qw( :all ); use WSDL::Compile::Meta::Attribute::WSDL; has 'Code' => ( metaclass => 'WSDL', is => 'rw', isa => 'xs:int', ); has 'Description' => ( metaclass => 'WSDL', is => 'rw', isa => 'xs:string', ); # CT stands for ComplexType # So you can have more complex data structures package Example::CT::Contact; use Moose; use MooseX::Types::XMLSchema qw( :all ); use WSDL::Compile::Meta::Attribute::WSDL; has 'AddressLine1' => ( metaclass => 'WSDL', is => 'rw', isa => 'xs:string', ); has 'AddressLine2' => ( metaclass => 'WSDL', is => 'rw', isa => 'Maybe[xs:string]', ); has 'City' => ( metaclass => 'WSDL', is => 'rw', isa => 'xs:string', ); # below could be put in a script package main; use strict; use warnings; use WSDL::Compile; my $gen = WSDL::Compile->new( service => { name => 'Example', tns => 'http://localhost/Example', documentation => 'Example Web Service', }, operations => [ qw/ CreateCustomer / ], ); my $wsdl = $gen->generate_wsdl(); print $wsdl; Please take a look at example/ directory and/or tests for more details. ATTRIBUTES namespace Namespace for SOAP classes. service Hashref with following elements: * name Name of web service * tns Target namaspace * documentation Description of web service operations Arrayref of all operations available in web service FUNCTIONS generate_wsdl Compile a WSDL file based on the classes. Returns string that you should save as .wsdl file. build_messages Builds wsdl:message. build_portType Builds wsdl:portType. build_binding Builds wsdl:binding. build_service Builds wsdl:service. build_definitions Builds wsdl:definitions. build_documentation Builds wsdl:documentation. build_types Builds wsdl:types. AUTHOR Alex J. G. Burzyński, "" BUGS Please report any bugs or feature requests to "bug-wsdl-compile at rt.cpan.org", or through the web interface at . I will be notified, and then you'll automatically be notified of progress on your bug as I make changes. COPYRIGHT & LICENSE Copyright 2009 Alex J. G. Burzyński. This program is free software; you can redistribute it and/or modify it under the terms of the Artistic License.