# TypeScript typings for Calendar API v3

Manipulates events and other calendar data.
For detailed description please check [documentation](https://developers.google.com/google-apps/calendar/firstapp).

## Installing

Install typings for Calendar API:

```
npm install @types/gapi.client.calendar@v3 --save-dev
```

## Usage

You need to initialize Google API client in your code:

```typescript
gapi.load('client', () => {
  // now we can use gapi.client
  // ...
});
```

Then load api client wrapper:

```typescript
gapi.client.load('calendar', 'v3', () => {
  // now we can use gapi.client.calendar
  // ...
});
```

Don't forget to authenticate your client before sending any request to resources:

```typescript
// declare client_id registered in Google Developers Console
var client_id = '',
  scope = [ 
      // See, edit, share, and permanently delete all the calendars you can access using Google Calendar
      'https://www.googleapis.com/auth/calendar',

      // View and edit events on all your calendars
      'https://www.googleapis.com/auth/calendar.events',

      // View events on all your calendars
      'https://www.googleapis.com/auth/calendar.events.readonly',

      // See and download any calendar you can access using your Google Calendar
      'https://www.googleapis.com/auth/calendar.readonly',

      // View your Calendar settings
      'https://www.googleapis.com/auth/calendar.settings.readonly',
    ],
    immediate = true;
// ...

gapi.auth.authorize(
  { client_id: client_id, scope: scope, immediate: immediate },
  authResult => {
    if (authResult && !authResult.error) {
        /* handle successful authorization */
    } else {
        /* handle authorization error */
    }
});
```

After that you can use Calendar API resources:

```typescript

/*
Deletes an access control rule.
*/
await gapi.client.calendar.acl.delete({ calendarId: "calendarId", ruleId: "ruleId",  });

/*
Returns an access control rule.
*/
await gapi.client.calendar.acl.get({ calendarId: "calendarId", ruleId: "ruleId",  });

/*
Creates an access control rule.
*/
await gapi.client.calendar.acl.insert({ calendarId: "calendarId",  });

/*
Returns the rules in the access control list for the calendar.
*/
await gapi.client.calendar.acl.list({ calendarId: "calendarId",  });

/*
Updates an access control rule. This method supports patch semantics.
*/
await gapi.client.calendar.acl.patch({ calendarId: "calendarId", ruleId: "ruleId",  });

/*
Updates an access control rule.
*/
await gapi.client.calendar.acl.update({ calendarId: "calendarId", ruleId: "ruleId",  });

/*
Watch for changes to ACL resources.
*/
await gapi.client.calendar.acl.watch({ calendarId: "calendarId",  });

/*
Removes a calendar from the user's calendar list.
*/
await gapi.client.calendar.calendarList.delete({ calendarId: "calendarId",  });

/*
Returns a calendar from the user's calendar list.
*/
await gapi.client.calendar.calendarList.get({ calendarId: "calendarId",  });

/*
Inserts an existing calendar into the user's calendar list.
*/
await gapi.client.calendar.calendarList.insert({  });

/*
Returns the calendars on the user's calendar list.
*/
await gapi.client.calendar.calendarList.list({  });

/*
Updates an existing calendar on the user's calendar list. This method supports patch semantics.
*/
await gapi.client.calendar.calendarList.patch({ calendarId: "calendarId",  });

/*
Updates an existing calendar on the user's calendar list.
*/
await gapi.client.calendar.calendarList.update({ calendarId: "calendarId",  });

/*
Watch for changes to CalendarList resources.
*/
await gapi.client.calendar.calendarList.watch({  });

/*
Clears a primary calendar. This operation deletes all events associated with the primary calendar of an account.
*/
await gapi.client.calendar.calendars.clear({ calendarId: "calendarId",  });

/*
Deletes a secondary calendar. Use calendars.clear for clearing all events on primary calendars.
*/
await gapi.client.calendar.calendars.delete({ calendarId: "calendarId",  });

/*
Returns metadata for a calendar.
*/
await gapi.client.calendar.calendars.get({ calendarId: "calendarId",  });

/*
Creates a secondary calendar.
*/
await gapi.client.calendar.calendars.insert({  });

/*
Updates metadata for a calendar. This method supports patch semantics.
*/
await gapi.client.calendar.calendars.patch({ calendarId: "calendarId",  });

/*
Updates metadata for a calendar.
*/
await gapi.client.calendar.calendars.update({ calendarId: "calendarId",  });

/*
Stop watching resources through this channel
*/
await gapi.client.calendar.channels.stop({  });

/*
Returns the color definitions for calendars and events.
*/
await gapi.client.calendar.colors.get({  });

/*
Deletes an event.
*/
await gapi.client.calendar.events.delete({ calendarId: "calendarId", eventId: "eventId",  });

/*
Returns an event based on its Google Calendar ID. To retrieve an event using its iCalendar ID, call the events.list method using the iCalUID parameter.
*/
await gapi.client.calendar.events.get({ calendarId: "calendarId", eventId: "eventId",  });

/*
Imports an event. This operation is used to add a private copy of an existing event to a calendar.
*/
await gapi.client.calendar.events.import({ calendarId: "calendarId",  });

/*
Creates an event.
*/
await gapi.client.calendar.events.insert({ calendarId: "calendarId",  });

/*
Returns instances of the specified recurring event.
*/
await gapi.client.calendar.events.instances({ calendarId: "calendarId", eventId: "eventId",  });

/*
Returns events on the specified calendar.
*/
await gapi.client.calendar.events.list({ calendarId: "calendarId",  });

/*
Moves an event to another calendar, i.e. changes an event's organizer.
*/
await gapi.client.calendar.events.move({ calendarId: "calendarId", destination: "destination", eventId: "eventId",  });

/*
Updates an event. This method supports patch semantics.
*/
await gapi.client.calendar.events.patch({ calendarId: "calendarId", eventId: "eventId",  });

/*
Creates an event based on a simple text string.
*/
await gapi.client.calendar.events.quickAdd({ calendarId: "calendarId", text: "text",  });

/*
Updates an event.
*/
await gapi.client.calendar.events.update({ calendarId: "calendarId", eventId: "eventId",  });

/*
Watch for changes to Events resources.
*/
await gapi.client.calendar.events.watch({ calendarId: "calendarId",  });

/*
Returns free/busy information for a set of calendars.
*/
await gapi.client.calendar.freebusy.query({  });

/*
Returns a single user setting.
*/
await gapi.client.calendar.settings.get({ setting: "setting",  });

/*
Returns all user settings for the authenticated user.
*/
await gapi.client.calendar.settings.list({  });

/*
Watch for changes to Settings resources.
*/
await gapi.client.calendar.settings.watch({  });
```
