Provided by: libvuser-google-api-perl_1.0.1-1_all bug


       VUser::Google::ProvisioningAPI::V1_0 - Perl module that implements version 1.0 of the
       Google Apps for Your Domain Provisioning API


         use VUser::Google::ProvisioningAPI;
         my $google = new VUser::Google::ProvisioningAPI($domain,$admin,$password);

         $google->CreateAccount($userName, $firstName, $lastName, $password);


       VUser::Google::ProvisioningAPI requires the following modules to be installed:

       ·   "LWP::UserAgent"

       ·   "HTTP::Request"

       ·   "Encode"

       ·   "XML::Simple"


       VUser::Google::ProvisioningAPI provides a simple interface to the Google Apps for Your
       Domain Provisioning API.  It uses the "LWP::UserAgent" module for the HTTP transport, and
       the "HTTP::Request" module for the HTTP request and response.

       For a complete description of the meaning of the following methods, see the Google API
       documentation referenced in the SEE ALSO section.

               #create the object
               $google = new Google:ProvisioningAPI($domain,$admin,$password) || die "Cannot create google object";

               print 'Module version: ' . $google->VERSION . "\nAPI Version: " . $google->version() . "\n";

               #create a hosted account
               if( $google->CreateAccount( $userName, $firstName, $lastName, $password ) )
                       print "Account created!\N";

               #add email services to the account

               #retrieving account data
                       print 'Username: ' . $google->{result}->{RetrievalSection}->{userName} . "\n";
                       print 'firstName: ' . $google->{result}->{RetrievalSection}->{firstName} . "\n";
                       print 'lastName: ' . $google->{result}->{RetrievalSection}->{lastName} . "\n";
                       print 'accountStatus: ' . $google->{result}->{RetrievalSection}->{accountStatus} . "\n";


               #see what the result hash after a request looks like
               use Data::Dumper;
               print Dumper($google->{result});

               #delete an account
               $ret = DeleteAccount($userName);

               #accessing the HTML data as it was received from the Google servers:
               print $google->replyheaders();
               print $google->replycontent();


       new ( $domain, $admin, $adminpassword )

       This is the constructor for a new VUser::Google::ProvisioningAPI object.  $domain is the
       domain name registered with Google Apps For Your Domain, $admin is an account in the above
       domain that has the right to manage that domain, and $adminpassword is the password for
       that account.

       Note that the constructor will NOT attempt to perform the 'ClientLogin' call to the Google
       Provisioning API (see below).  Authentication happens automatically when the first API
       call is performed. The token will be remembered for the duration of the object, and will
       be automatically refreshed as needed.  If you want to verify that you can get a valid
       token before performing any operations, follow the constructor with a call to
       IsAuthenticated() as such:

               print "Authentication OK\n" unless not $google->IsAuthenticated();


       Below are all the methods available on the object. For the Google API specific methods,
       see the Google API documentation for more details.  When a request is properly handled by
       Google's API engine, the webpost to the API succeeds. This results in a valid page being
       returned. The content of this page then defines whether the request succeeded or not.  All
       pages returing the 'Success(2000)' status code will result in the API method succeeding,
       and returning a 1. All failures return 0.  Please see the section below on how to access
       the result data, and how to determine the reasons for errors.

       If the web post fails (as determined by the "HTTP::Request" method IsSuccess() ), the
       method returns 0, and the {reason} hash is set to a descriptive error.  You can then
       examine the raw data to get an idea of what went wrong.

   Checking Authentication

           will check if the object has been able to authenticate with Google's api engine, and
           get an authentication ticket.  Returns 1 if successful, 0 on failure. To see why it
           may fail, see the $@ variable, and the $google->{results}->{reason} hash, and parse
           the returned page (see the 'content' and 'header' variables.)

   Methods to Create/Retrieve/Delete
       'Hosted account' methods

       CreateAccountEmail(  $userName, $firstName, $lastName, $password, $quota )

           Creates a hosted account with email services in your domains name space.  The first 4
           arguments are required. The $quota argument is optional. If $quota is given, the
           <quota> tag will be sent with the request, otherwize is will be omitted.  See the
           Google API docs for the API call for more details.

       CreateAccount(  $userName, $firstName, $lastName, $password )

           Creates a hosted account in your domains name space. This account does NOT have email
           services by default.  You need to call UpdateAccountEmail() to add email services.
           NOTE: this API call may be discontinued! See CreateAccountEmail() for a replacement.

       UpdateAccount( $username, $firstName, $lastName, $password )

           $username is the mandatory name of the hosted account. The remaining paramaters are
           optional, and can be set to 'undef' if you do not wish to change them Eg. to change
           the password on an account, call this as;

               UpdateAccount( $username, undef, undef, 'newpassword' );

           to change names only, you would call it as such:

               UpdateAccount( $username, 'newfirstname', 'newlastname', undef );

       UpdateAccountEmail( $userName )

           Adds email services to a hosted account created with CreateAccount().  NOTE: this API
           call may be discontinued! See CreateAccountEmail() for a replacement.

       UpdateAccountStatus( $userName, $status )

           $status is either 'locked' or 'unlocked'

       RetrieveAccount( $userName )

       DeleteAccount( $userName )

       RenameAccount( $oldName, $newName, $alias )

           $alias is either '1' or '0'

           WARNING: this method is derived from the Python sample code provided by Google: (Ie.
           this may not work yet) "Username change. Note that this feature must be explicitly
           enabled by the domain administrator, and is not enabled by default.  Args:

               oldname: user to rename newname: new username to set for the user alias: if 1,
               create an alias of oldname for newname"

       'Alias' methods

       CreateAlias( $userName, $alias )

       RetrieveAlias( $userName );

       DeleteAlias( $alias );

       'Mailing List' methods

       CreateMailingList( $mailingListName )

       UpdateMailingList( $mailingListName, $userName, $listOperation )

           $listOperation is either 'add' or 'remove'

       RetrieveMailingList( $mailingListName )

       DeleteMailingList( $mailingListName )

   Methods to set/get variables
       After creating the object you can get/set the administrator account and set the password
       with these methods.  Note this will cause a re-authentication next time a Google API
       method is called.

       admin( $admin )

           set the administrative user, and will return administator username.

       password( $string )

           set the password, returns an empty string

   Miscelleaneous statistics methods
       There are a few methods to access some statistics data that is collected while the object
       performing Google API calls.


           returns the time of last authentication, as generated by the time() function


           returns the create time of the object, as generated by the time() function


           returns the time of the most recent request, as generated by the time() function


           returns the number of API logins that have been performed


           returns the numbers of API requests that have been submitted to Google


           returns the numbers of successful api request performed

       And finally,


           returns a string with the api version implemented. This is currently '1.0'


       Valid return data from Google is parsed into a hash named 'result', available through the
       object. In this hash you can find all elements as returned by Google.  This hash is
       produced by XML::Simple. See the Google API documentation in the SEE ALSO section for
       complete details.  Some of the more useful elements you may need to look at are:

               $google->{result}->{reason}             #this typically has the textual reason for a failure
               $google->{result}->{extendedMessage}    #a more extensive description of the failure reason may be here
               $google->{result}->{result}             #typically empty!
               $google->{result}->{type}               #should be same of query type, eg 'Account', 'Alias', 'MailingList'

       The retrieval section contains data when you are querying. Here is what this section looks
       like when you call the RetrieveAccount method:


       To see the structure of the result hash, use the Data::Dumper module as such:

               use Data::Dumper;
               print Dumper($google->{result});


       The data from the most recent post to the Google servers is available. You can access it

               print $google->requestcontent();

       The most recent received HTML data is stored in two parts, the headers and the content.
       Both are strings. They can be accessed as such:

               print $google->replyheaders();
               print $google->replycontent();

       Note the headers are new-line separated and can easily be parsed:

               foreach my $headerline ( split/\n/, $g->replyheaders() )
                       my ($header, $value) = split/:/, $headerline;


       None by default.


       The official Google documentation can be found at

       For support, see the Google Group at

       For additional support specific to this modules, email me at johan at reinalda dot net.


       Johan Reinalda, johan at reinalda dot net


       Copyright (C) 2006 by Johan Reinalda, johan at reinalda dot net

       This library is free software; you can redistribute it and/or modify it under the same
       terms as Perl itself, either Perl version 5.8.5 or, at your option, any later version of
       Perl 5 you may have available.

       If you make useful modification, kindly consider emailing then to me for inclusion in a
       future version of this module.