package Example::Op::CreateCustomer::Request;

use Moose;

use MooseX::Types::XMLSchema qw( :all );
use WSDL::Compile::Meta::Attribute::WSDL;

has '_operation_documentation' => (
    is => 'ro',
    isa => 'Str',
    default => 'This is an example of documentation of an CreateCustomer operation',
);
has 'TemplateCode' => (
    metaclass => 'WSDL',
    is => 'rw',
    isa => 'Maybe[xs:string]',
    required => 1,
    xs_minOccurs => 1,
    xs_maxOccurs => 1,
);
has 'CustomerID' => (
    metaclass => 'WSDL',
    is => 'rw',
    isa => 'ArrayRef[xs:string]',
    xs_maxOccurs => undef,
);
has 'CustomerType' => (
    metaclass => 'WSDL',
    is => 'rw',
    isa => 'ArrayRef[Maybe[xs:string]]',
    xs_minOccurs => 0,
    xs_maxOccurs => undef,
);
has 'Title' => (
    metaclass => 'WSDL',
    is => 'rw',
    isa => 'xs:string',
);
has 'Contact' => (
    metaclass => 'WSDL',
    is => 'rw',
    isa => 'Example::CT::Contact',
    xs_minOccurs => 0,
);
has 'Contacts' => (
    metaclass => 'WSDL',
    is => 'rw',
    isa => 'ArrayRef[Example::CT::Contact]',
    xs_minOccurs => 0,
    xs_maxOccurs => undef,
);
has 'BuildingNumber' => (
    metaclass => 'WSDL',
    is => 'rw',
    isa => 'Maybe[xs:int]',
);
has 'loaded' => (
    is => 'rw',
    isa => 'Bool',
);

=head3 BUILD

WSDL::Compile allows you to call your own methods - in this example just after
$self was created.

=cut

sub BUILD {
    my $self = shift;

    $self->loaded(1);
}

no Moose;

1;