---
name: "VUser::Google::ApiProtocol"
section: "3pm"
platform: "linux"
package: "libvuser-google-api-perl"
version: "1.0.1-1.1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/VUser::Google::ApiProtocol"
---

# VUser::Google::ApiProtocol(3pm)

Base class for implementation of the Google APIs

## NAME

VUser::Google::ApiProtocol - Base class for implementation of the Google APIs

## SYNOPSIS

This class is not meant to be used directly. Instead use VUser::Google::ApiProtocol::V2\_0.

## DESCRIPTION

## MEMBERS

These are the members of the ApiProtocol class. You get and set the values by using the method of the same name. For example:

```
 # Get the domain from the ApiProtocol object
 my $domain = $google->domain;

 # Set the domain
 $google->domain('myappsdomain.com');
```

Most of the member can be set when the object is created with `"new()"`.

```
 my $google = VUser::ApiProtocol->new(
     domain => 'myappsdomain.com'
 );
```

**Note:** VUser::Google::ApiProtocol is not meant to be used directly. Please see the version specific subclasses, such as VUser::Google::ApiProtocol::V2\_0, to create a usable object.

### Read-write Members

- admin

  The administrative user. This user must have be set as an admin in the Google Apps control panel. Also, be sure to log into the Google Apps control panel once with this user to accept all of the legal garbage or you will see intermittent auth errors.

- debug

  Turn on debugging output.

- domain

  The Google Apps domain to work on.

- password

  The plain text password of the admin user.

- refresh\_token

  If set to a true value, `"Login()"` will refresh the authentication token even if it's not necessary.

### Read-only members

- authtime

  The unix timestamp of the last authentication.

- authtoken

  The authentication token retrieved from Google on a successful login. The token is only valid for 24 hours.

- reply\_headers

  The HTTP headers of the last reply

- reply\_content

  The HTTP content of the last reply

- result

  The resulting hash from the last reply data as parsed by XML::Simple

- useragent

  The user agent VUser::Google::ApiProtocol uses when talking to Google. It is set to the *classname/version*. For example, *VUser::Google::ApiProtocol::V2\_0/0.25*.

## METHODS

### new (%defaults)

Create a new ApiProtocol object. Any read-write member may be set in the call to `"new()"`.

### Login

Login to the Google API. `"Login()"` takes no parameters. Instead, you must set the `"domain"`, `"admin"`, and `"password"` members, then call `"Login()"`.

`"Login()"` will use the existing authentication token if it exists and hasn't yet timed out. You may force it to do a full re-authentication by setting `"refresh_token"` to a true value before calling `"Login()"`.

### IsAuthenticated

Returns true if the **object** thinks that it has already authenticated and the token hasn't timed out and a false value otherwise.

**Note:** `"IsAuthenticated()"` only knows if there's an authtoken and if it's still fresh. It may be possible for Google to decide that a token is not valid which `"IsAuthenticated()"` cannot check.

### Request ($method, $url\[, $body\])

Sends an API request to Google.

`$method` is the HTTP method to use, e.g. *GET*, *POST*, etc. **Note:** Many of the API calls use different methods. Double check the API docs to make sure you are using the correct method.

`$url` is the url to use to make the API call. The URLs are defined in  the API docs.

`$body` is the XML specific action. Again, see the API docs for the specific format for each API call. `$body` is not needed when the method is *GET* or *DELETE*.

### dprint ($message)

Prints `$message` to STDERR if `"debug"` is set to a true value.

## SEE ALSO

XML::Simple

## AUTHOR

Randy Smith \<perlstalker@vuser.org\>

## LICENSE
