The Google Calendar API offers several concepts that are primarily useful for
[Google Workspace](https://workspace.google.com/)
customers. These customers often have resources, such as rooms and projectors,
that they need to book for specific events. In addition, you might need to
build internal apps that access all user calendars in a domain (for example,
to add company-wide events).

## Domain resources and rooms

To book a room or other resource, add its email address as an event attendee.
The resource then automatically accepts or declines the invitation based on
its availability and the inviting user's access rights.

> [!NOTE]
> **Note:** The Calendar API does not offer a way to create resource calendars. To do this, you need to use the Directory API's [Calendar Resource](https://developers.google.com/workspace/admin/directory/reference/rest/v1/resources.calendars) object. The `calendarId` corresponds to the `resourceEmail` field of the Calendar Resource representation.

## Access domain calendars as an app

An app can access domain-owned calendars without requiring
user credentials if it authenticates using a [service
account](https://developers.google.com/identity/protocols/OAuth2ServiceAccount). The service account must
have the necessary access using [domain-wide authority
delegation](https://developers.google.com/identity/protocols/OAuth2ServiceAccount#delegatingauthority). To
impersonate a user account, specify the email address of the user
account with the `setServiceAccountUser` method of the `GoogleCredential`
factory.