From 17a8e86c2c711851432f85ebfd37d46902190ced Mon Sep 17 00:00:00 2001 From: Paul Schneider Date: Mon, 3 Jul 2017 15:54:18 +0200 Subject: [PATCH] cleaning duplicated definitions --- Yavsc/Controllers/CommandController.cs | 4 + .../Haircut/HairCutCommandController.cs | 34 +- Yavsc/Controllers/ManageController.cs | 11 +- Yavsc/Helpers/GoogleHelpers.cs | 84 +- Yavsc/Makefile | 3 +- Yavsc/Models/ApplicationDbContext.cs | 2 + .../Google/Calendar/CalendarEventList.cs | 3 + Yavsc/Models/Google/Calendar/CalendarList.cs | 3 + .../Google/Calendar/CalendarListEntry.cs | 4 + Yavsc/Models/Google/Calendar/Reminder.cs | 5 +- Yavsc/Models/Google/GDate.cs | 4 +- Yavsc/Services/GoogleApis/CalendarClient.cs | 39 + Yavsc/Services/GoogleApis/CalendarManager.cs | 505 +- .../GoogleApis/Google.Apis.Calendar.v3.cs | 5636 +++++++++++++++++ Yavsc/Services/ICalendarManager.cs | 10 +- Yavsc/Startup/Startup.cs | 2 - Yavsc/ViewComponents/CalendarViewComponent.cs | 2 +- Yavsc/Views/Manage/SetGoogleCalendar.cshtml | 3 +- .../Shared/Components/Calendar/Default.cshtml | 5 +- Yavsc/Yavsc.csproj | 16 + 20 files changed, 5815 insertions(+), 560 deletions(-) create mode 100644 Yavsc/Services/GoogleApis/CalendarClient.cs create mode 100644 Yavsc/Services/GoogleApis/Google.Apis.Calendar.v3.cs diff --git a/Yavsc/Controllers/CommandController.cs b/Yavsc/Controllers/CommandController.cs index 5f4db71e..fbeaee72 100644 --- a/Yavsc/Controllers/CommandController.cs +++ b/Yavsc/Controllers/CommandController.cs @@ -30,10 +30,13 @@ namespace Yavsc.Controllers protected SiteSettings _siteSettings; protected SmtpSettings _smtpSettings; + protected ICalendarManager _calendarManager; + protected readonly ILogger _logger; public CommandController(ApplicationDbContext context, IOptions googleSettings, IGoogleCloudMessageSender GCMSender, UserManager userManager, + ICalendarManager calendarManager, IStringLocalizer localizer, IEmailSender emailSender, IOptions smtpSettings, @@ -47,6 +50,7 @@ namespace Yavsc.Controllers _userManager = userManager; _smtpSettings = smtpSettings.Value; _siteSettings = siteSettings.Value; + _calendarManager = calendarManager; _localizer = localizer; _logger = loggerFactory.CreateLogger(); } diff --git a/Yavsc/Controllers/Haircut/HairCutCommandController.cs b/Yavsc/Controllers/Haircut/HairCutCommandController.cs index 66d72803..5be9e52d 100644 --- a/Yavsc/Controllers/Haircut/HairCutCommandController.cs +++ b/Yavsc/Controllers/Haircut/HairCutCommandController.cs @@ -38,14 +38,13 @@ namespace Yavsc.Controllers IEmailSender emailSender, IOptions smtpSettings, IOptions siteSettings, - ILoggerFactory loggerFactory) : base(context,googleSettings,GCMSender,userManager, - localizer,emailSender,smtpSettings,siteSettings,loggerFactory) + ICalendarManager calManager, + ILoggerFactory loggerFactory) : base(context, googleSettings, GCMSender, userManager, + calManager, localizer, emailSender, smtpSettings, siteSettings, loggerFactory) { this.payPalSettings = payPalSettings.Value; } PayPalSettings payPalSettings; - - private async Task GetQuery(long id) { var query = await _context.HairCutQueries @@ -288,6 +287,7 @@ Le client final: {clientFinal} if (pro.AcceptPublicContact) { + if (pro.AcceptNotifications) { if (pro.Performer.Devices.Count > 0) { var regids = model.PerformerProfile.Performer @@ -301,6 +301,19 @@ Le client final: {clientFinal} if (grep!=null) _logger.LogWarning($"Performer: {model.PerformerProfile.Performer.UserName} success: {grep.success} failure: {grep.failure}"); } + // TODO if pro.AllowCalendarEventInsert + if (pro.Performer.DedicatedGoogleCalendar != null && yaev.EventDate != null) { + _logger.LogInformation("Inserting an event in the calendar"); + DateTime evdate = yaev.EventDate ?? new DateTime(); + var result = await _calendarManager.CreateEventAsync( + pro.Performer.DedicatedGoogleCalendar, + evdate, 3600, yaev.Topic, yaev.Message, + yaev.Location?.Address, false + ); + if (result.Id == null) + _logger.LogWarning("Something went wrong, calendar event not created"); + } + else _logger.LogWarning($"Calendar: {pro.Performer.DedicatedGoogleCalendar != null}\nEventDate: {yaev.EventDate != null}"); await _emailSender.SendEmailAsync( _siteSettings, _smtpSettings, @@ -432,11 +445,22 @@ Le client final: {clientFinal} grep = await _GCMSender.NotifyHairCutQueryAsync(_googleSettings,regids,yaev); } // TODO setup a profile choice to allow notifications - // both on mailbox and mobile + // both on mailbox and mobile, and to allow calendar event insertion. // if (grep==null || grep.success<=0 || grep.failure>0) ViewBag.GooglePayload=grep; if (grep!=null) _logger.LogWarning($"Performer: {command.PerformerProfile.Performer.UserName} success: {grep.success} failure: {grep.failure}"); + + + if (pro.Performer.DedicatedGoogleCalendar != null && yaev.EventDate != null) { + DateTime evdate = yaev.EventDate ?? new DateTime(); + await _calendarManager.CreateEventAsync( + pro.Performer.DedicatedGoogleCalendar, + evdate, 3600, yaev.Topic, yaev.Message, + yaev.Location?.ToString(), false + ); + + } await _emailSender.SendEmailAsync( _siteSettings, _smtpSettings, diff --git a/Yavsc/Controllers/ManageController.cs b/Yavsc/Controllers/ManageController.cs index adf5dba6..b30ff829 100644 --- a/Yavsc/Controllers/ManageController.cs +++ b/Yavsc/Controllers/ManageController.cs @@ -24,7 +24,6 @@ namespace Yavsc.Controllers using Yavsc.Models; using Yavsc.Services; using Yavsc.ViewModels.Manage; - using Yavsc.Models.Calendar; using System.IO; [Authorize] @@ -123,7 +122,7 @@ namespace Yavsc.Controllers model.HaveProfessionalSettings = _dbContext.Performers.Any(x => x.PerformerId == user.Id); var usrActs = _dbContext.UserActivities.Include(a=>a.Does).Where(a=> a.UserId == user.Id); - model.HaveActivityToConfigure = usrActs.Any( a=> a.Settings == null && a.Does.SettingsClassName!=null ); + model.HaveActivityToConfigure = usrActs.Where( a => ( a.Does.SettingsClassName != null )).Count( a => a.Settings == null)>0; model.Activity = _dbContext.UserActivities.Include(a=>a.Does).Where(u=>u.UserId == user.Id).ToList(); return View(model); } @@ -282,11 +281,9 @@ namespace Yavsc.Controllers catch (WebException ex) { // a bug - _logger.LogError("Google token, an Forbidden calendar"); - if (ex.HResult == (int)HttpStatusCode.Forbidden) - { - return RedirectToAction("LinkLogin", new { provider = "Google" }); - } + _logger.LogError("Google Api error"); + _logger.LogError("Code: "+ex.HResult+"\n"+ ex.Message); + return RedirectToAction("LinkLogin", new { provider = "Google" }); } return View(new SetGoogleCalendarViewModel { ReturnUrl = returnUrl }); } diff --git a/Yavsc/Helpers/GoogleHelpers.cs b/Yavsc/Helpers/GoogleHelpers.cs index ad45524b..d069bb7a 100644 --- a/Yavsc/Helpers/GoogleHelpers.cs +++ b/Yavsc/Helpers/GoogleHelpers.cs @@ -18,13 +18,6 @@ // // You should have received a copy of the GNU Lesser General Public License // along with this program. If not, see . -using Newtonsoft.Json; -using System.Security.Cryptography; -using System.Security.Cryptography.X509Certificates; -using System.Text; -using System.Net; -using System.Web; -using System.IO; using System; using System.Collections.Generic; using System.Linq; @@ -37,15 +30,13 @@ namespace Yavsc.Helpers using Models.Messaging; using Models; using Interfaces.Workflow; - using Yavsc.Models.Google; using Yavsc.Models.Calendar; using Google.Apis.Auth.OAuth2; - using Google.Apis.Auth.OAuth2.Responses; using Microsoft.Data.Entity; using Google.Apis.Auth.OAuth2.Flows; using Microsoft.AspNet.Identity.EntityFramework; - - + using Yavsc.Services; + /// /// Google helpers. /// @@ -105,81 +96,32 @@ namespace Yavsc.Helpers ); return googleLogin; } - public static UserCredential GetGoogleCredential(IdentityUserLogin googleUserLogin) + public static UserCredential GetGoogleCredential(string googleUserLoginKey) { - var googleId = googleUserLogin.ProviderKey; - if (string.IsNullOrEmpty(googleId)) + if (string.IsNullOrEmpty(googleUserLoginKey)) throw new InvalidOperationException("No Google login"); - TokenResponse resp = null; var flow = new GoogleAuthorizationCodeFlow(new GoogleAuthorizationCodeFlow.Initializer()); - return new UserCredential(flow, googleId, resp); + throw new NotImplementedException(); + // TokenResponse resp = flow. ; + // return new UserCredential(flow, googleUserLoginKey, resp); } - static string evStatusDispo = "Dispo"; public static async Task GetFreeTime (this ICalendarManager manager, string calId, DateTime startDate, DateTime endDate) { - CalendarEventList evlist = await manager.GetCalendarAsync(calId, startDate, endDate) ; - var result = evlist.items + var evlist = await manager.GetCalendarAsync(calId, startDate, endDate) ; + var result = evlist.Items .Where( - ev => ev.status == evStatusDispo - ) + ev => ev.Transparency == "transparent" + ) .Select( ev => new Period { - Start = ev.start.datetime, - End = ev.end.datetime + Start = ev.Start.DateTime.Value, + End = ev.End.DateTime.Value } ); return result.ToArray(); } - const string jwtHeader="{\"alg\":\"RS256\",\"typ\":\"JWT\"}"; - const string tokenEndPoint = "https://www.googleapis.com/oauth2/v4/token"; - - static long GetTimeSpan(long seconds) { - var zero = new DateTime(1970,1,1); - return zero.AddSeconds(seconds).ToFileTimeUtc(); - } - - static object CreateGoogleServiceClaimSet(string scope, int expiresInSeconds) { - return new { - iss = Startup.GoogleSettings.Account.client_email, - scope = scope, - aud = "https://www.googleapis.com/oauth2/v4/token", - exp = GetTimeSpan(expiresInSeconds), - iat = DateTime.Now.ToFileTimeUtc() - }; - } - - public static async Task GetJsonTokenAsync(string scope) - { - - var claimSet = CreateGoogleServiceClaimSet(scope, 3600); - string jsonClaims = JsonConvert.SerializeObject(claimSet); - string encClaims = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(jsonClaims)); - string tokenHeader = Convert.ToBase64String(Encoding.UTF8.GetBytes(jwtHeader))+"."+encClaims; - - X509Certificate2 cert = new X509Certificate2(); - cert.Import(Convert.FromBase64String(Startup.GoogleSettings.Account.private_key)); - RSACryptoServiceProvider key = new RSACryptoServiceProvider(); - key.FromXmlString(cert.PrivateKey.ToXmlString(true)); - byte[] sig = key.SignData(Encoding.UTF8.GetBytes(tokenHeader), CryptoConfig.MapNameToOID("SHA256")); - string assertion = tokenHeader+"."+Convert.ToBase64String(sig); - HttpWebRequest webreq = WebRequest.CreateHttp ("https://www.googleapis.com/oauth2/v4/token"); - webreq.ContentType = "application/x-www-form-urlencoded"; - using (var inputstream = await webreq.GetRequestStreamAsync()) { - var content = Encoding.UTF8.GetBytes( "grant_type="+ HttpUtility.UrlEncode(" urn:ietf:params:oauth:grant-type:jwt-bearer")+ - "&assertion="+HttpUtility.UrlEncode(assertion)); - await inputstream.WriteAsync(content,0,content.Length); - } - using (WebResponse resp = await webreq.GetResponseAsync ()) { - using (Stream respstream = resp.GetResponseStream ()) { - using (var rdr = new StreamReader(respstream)) { - return await rdr.ReadToEndAsync(); - } - } - } - } - } } diff --git a/Yavsc/Makefile b/Yavsc/Makefile index 3b796bc4..91750ab3 100644 --- a/Yavsc/Makefile +++ b/Yavsc/Makefile @@ -2,6 +2,7 @@ DESTDIR=/srv/www/yavscpre PRODDESTDIR=/srv/www/yavsc ASPNET_ENV=Development CONFIGURATION=Release +ASPNET_LOG_LEVEL=warn all: bin/$(CONFIGURATION) @@ -21,7 +22,7 @@ project.lock.json: project.json dnu restore watch: project.lock.json - ASPNET_ENV=$(ASPNET_ENV) dnx-watch web --configuration=$(CONFIGURATION) + ASPNET_ENV=$(ASPNET_ENV) ASPNET_LOG_LEVEL=$(ASPNET_LOG_LEVEL) dnx-watch web --configuration=$(CONFIGURATION) run: ASPNET_ENV=$(ASPNET_ENV) dnx web --configuration=$(CONFIGURATION) diff --git a/Yavsc/Models/ApplicationDbContext.cs b/Yavsc/Models/ApplicationDbContext.cs index 012f00ab..8248f5fe 100644 --- a/Yavsc/Models/ApplicationDbContext.cs +++ b/Yavsc/Models/ApplicationDbContext.cs @@ -158,6 +158,8 @@ namespace Yavsc.Models using (var context = new ApplicationDbContext()) { var item = this.Tokens.FirstOrDefault(x => x.UserId == googleUserId); + // TODO Refresh token + return Task.FromResult(item); } } diff --git a/Yavsc/Models/Google/Calendar/CalendarEventList.cs b/Yavsc/Models/Google/Calendar/CalendarEventList.cs index d12e4d1f..095c28be 100644 --- a/Yavsc/Models/Google/Calendar/CalendarEventList.cs +++ b/Yavsc/Models/Google/Calendar/CalendarEventList.cs @@ -18,12 +18,15 @@ // // You should have received a copy of the GNU Lesser General Public License // along with this program. If not, see . +using System; + namespace Yavsc.Models.Google { /// /// Calendar event list. /// + [Obsolete("use GoogleUse.Apis")] public class CalendarEventList { /// diff --git a/Yavsc/Models/Google/Calendar/CalendarList.cs b/Yavsc/Models/Google/Calendar/CalendarList.cs index 5505f8b0..c7caccda 100644 --- a/Yavsc/Models/Google/Calendar/CalendarList.cs +++ b/Yavsc/Models/Google/Calendar/CalendarList.cs @@ -19,11 +19,14 @@ // You should have received a copy of the GNU Lesser General Public License // along with this program. If not, see . +using System; + namespace Yavsc.Models.Google.Calendar { /// /// Calendar list. /// + [Obsolete("use Google.Apis")] public class CalendarList { /// /// Gets or sets the kind. diff --git a/Yavsc/Models/Google/Calendar/CalendarListEntry.cs b/Yavsc/Models/Google/Calendar/CalendarListEntry.cs index b3cb0d2a..00a5ffcb 100644 --- a/Yavsc/Models/Google/Calendar/CalendarListEntry.cs +++ b/Yavsc/Models/Google/Calendar/CalendarListEntry.cs @@ -19,11 +19,15 @@ // You should have received a copy of the GNU Lesser General Public License // along with this program. If not, see . +using System; + namespace Yavsc.Models.Google.Calendar { /// /// Calendar list entry. /// + /// + [Obsolete("use GoogleUse.Apis")] public class CalendarListEntry { /// /// Gets or sets the kind. diff --git a/Yavsc/Models/Google/Calendar/Reminder.cs b/Yavsc/Models/Google/Calendar/Reminder.cs index 6e725ea3..8a48753c 100644 --- a/Yavsc/Models/Google/Calendar/Reminder.cs +++ b/Yavsc/Models/Google/Calendar/Reminder.cs @@ -1,6 +1,9 @@ +using System; + namespace Yavsc.Models.Google.Calendar { - public class Reminder { + [Obsolete("use GoogleUse.Apis")] + public class Reminder { /// /// Gets or sets the method. /// diff --git a/Yavsc/Models/Google/GDate.cs b/Yavsc/Models/Google/GDate.cs index 973d04ec..e1fe7f5c 100644 --- a/Yavsc/Models/Google/GDate.cs +++ b/Yavsc/Models/Google/GDate.cs @@ -29,11 +29,11 @@ namespace Yavsc.Models.Google /// /// The date. /// - public DateTime date; + public DateTime? date; /// /// The datetime. /// - public DateTime datetime; + public DateTime? datetime; /// /// The time zone. /// diff --git a/Yavsc/Services/GoogleApis/CalendarClient.cs b/Yavsc/Services/GoogleApis/CalendarClient.cs new file mode 100644 index 00000000..ff126bff --- /dev/null +++ b/Yavsc/Services/GoogleApis/CalendarClient.cs @@ -0,0 +1,39 @@ +using Google.Apis.Requests; +using Google.Apis.Services; +using Yavsc.Models.Google; + +namespace Yavsc.Services.GoogleApis +{ + public class CalendarClient : ClientServiceRequest + { + public CalendarClient(IClientService service) : base (service) { + + } + public override string HttpMethod + { + get + { + return "POST"; + } + } + public string calendarId + { + get; set; + } + public override string MethodName + { + get + { + return "calendar.events.insert"; + } + } + + public override string RestPath + { + get + { + return "calendars/{calendarId}/events"; + } + } + } +} \ No newline at end of file diff --git a/Yavsc/Services/GoogleApis/CalendarManager.cs b/Yavsc/Services/GoogleApis/CalendarManager.cs index 6b0a2d2c..1af958b4 100644 --- a/Yavsc/Services/GoogleApis/CalendarManager.cs +++ b/Yavsc/Services/GoogleApis/CalendarManager.cs @@ -20,25 +20,22 @@ // along with this program. If not, see . using System; -using System.Net; -using System.IO; -using System.Web; -using Newtonsoft.Json; using System.Threading.Tasks; using Microsoft.AspNet.Identity; using Microsoft.Extensions.Logging; using Microsoft.Extensions.OptionsModel; using Google.Apis.Auth.OAuth2; using Google.Apis.Util.Store; +using Google.Apis.Calendar.v3; +using Google.Apis.Calendar.v3.Data; -namespace Yavsc.Models.Google.Calendar +namespace Yavsc.Services { using System.Collections.Generic; using System.Linq; - using System.Net.Http; - using Models.Google; - using Newtonsoft.Json.Linq; + using Google.Apis.Services; using Yavsc.Helpers; + using Yavsc.Models; using Yavsc.Models.Calendar; using Yavsc.ViewModels.Calendar; @@ -47,6 +44,7 @@ namespace Yavsc.Models.Google.Calendar /// public class CalendarManager : ICalendarManager { + public class ExpiredTokenException : Exception {} protected static string scopeCalendar = "https://www.googleapis.com/auth/calendar"; private string _ApiKey; @@ -96,29 +94,11 @@ namespace Yavsc.Models.Google.Calendar /// Yavsc user id public async Task GetCalendarsAsync (string userId) { - - CalendarList res = null; - var login = await _userManager.GetGoogleUserLoginAsync(_dbContext,userId); - var token = await _dbContext.GetTokensAsync(login.ProviderKey); - if (token==null) - throw new InvalidOperationException("No Google token"); + var service = new CalendarService(); - HttpWebRequest webreq = WebRequest.CreateHttp(getCalListUri); - webreq.Headers.Add("Authorization", "Bearer "+ token.AccessToken); - webreq.Method = "GET"; - webreq.ContentType = "application/http"; - using (WebResponse resp = webreq.GetResponse ()) { - using (Stream respstream = resp.GetResponseStream ()) { - using (var rdr = new StreamReader(respstream)) { - string json = rdr.ReadToEnd(); - _logger.LogInformation(">> Json calendar list : "+json); - res = JsonConvert.DeserializeObject(json); - } - } - resp.Close (); - } - webreq.Abort (); - return res; + var listRequest = service.CalendarList.List(); + + return await listRequest.ExecuteAsync(); } @@ -138,49 +118,12 @@ namespace Yavsc.Models.Google.Calendar /// Mindate. /// Maxdate. /// credential string. - public async Task GetCalendarAsync (string calid, DateTime mindate, DateTime maxdate) + public async Task GetCalendarAsync (string calid, DateTime mindate, DateTime maxdate) { - if (string.IsNullOrWhiteSpace (calid)) - throw new Exception ("the calendar identifier is not specified"); - - var creds = GetServiceAccountCredential(); - string uri = string.Format ( - getCalEntriesUri, HttpUtility.UrlEncode (calid)) + - string.Format ("?orderBy=startTime&singleEvents=true&timeMin={0}&timeMax={1}&key=" + _ApiKey, - HttpUtility.UrlEncode (mindate.ToString (dateFormat) + timeZone), - HttpUtility.UrlEncode (maxdate.ToString (dateFormat) + timeZone)); + var service = new CalendarService(); - HttpWebRequest webreq = WebRequest.CreateHttp (uri); - - webreq.Headers.Add (HttpRequestHeader.Authorization, "Bearer "+ await creds.GetAccessTokenForRequestAsync()); - webreq.Method = "GET"; - webreq.ContentType = "application/http"; - CalendarEventList res = null; - - try { - using (WebResponse resp = await webreq.GetResponseAsync ()) { - using (Stream respstream = resp.GetResponseStream ()) { - try { - using (var rdr = new StreamReader(respstream)) { - string json = rdr.ReadToEnd(); - _logger.LogVerbose(">> Calendar: "+json); - res = JsonConvert.DeserializeObject(json); - } - } catch (Exception ) { - respstream.Close (); - resp.Close (); - webreq.Abort (); - throw ; - } - } - resp.Close (); - } - } catch (WebException ) { - webreq.Abort (); - throw; - } - webreq.Abort (); - return res; + var listRequest = service.Events.List(calid); + return await listRequest.ExecuteAsync(); } public async Task CreateViewModelAsync( string inputId, @@ -196,13 +139,17 @@ namespace Yavsc.Models.Google.Calendar List free = new List (); List busy = new List (); - foreach (var ev in eventList.items) + foreach (var ev in eventList.Items) { - if (ev.transparency == "transparent" ) + DateTime start = ev.Start.DateTime.Value; + DateTime end = ev.End.DateTime.Value; + + if (ev.Transparency == "transparent" ) { - free.Add(new Period { Start = ev.start.datetime, End = ev.end.datetime }); + + free.Add(new Period { Start = start, End = end }); } - else busy.Add(new Period { Start = ev.start.datetime, End = ev.end.datetime }); + else busy.Add(new Period { Start = start, End = end }); } return new DateTimeChooserViewModel { @@ -228,396 +175,32 @@ namespace Yavsc.Models.Google.Calendar /// /// /// - public async Task CreateResourceAsync(string calid, DateTime startDate, int lengthInSeconds, string summary, string description, string location, bool available) + public async Task CreateEventAsync(string calid, DateTime startDate, int lengthInSeconds, string summary, string description, string location, bool available) { - - /* "insert": { - "id": "calendar.events.insert", - "path": "calendars/{calendarId}/events", - "httpMethod": "POST", - "description": "Creates an event.", - "parameters": { - "calendarId": { - "type": "string", - "description": "Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the \"primary\" keyword.", - "required": true, - "location": "path" - }, - "maxAttendees": { - "type": "integer", - "description": "The maximum number of attendees to include in the response. If there are more than the specified number of attendees, only the participant is returned. Optional.", - "format": "int32", - "minimum": "1", - "location": "query" - }, - "sendNotifications": { - "type": "boolean", - "description": "Whether to send notifications about the creation of the new event. Optional. The default is False.", - "location": "query" - }, - "supportsAttachments": { - "type": "boolean", - "description": "Whether API client performing operation supports event attachments. Optional. The default is False.", - "location": "query" - } - }, - "parameterOrder": [ - "calendarId" - ], - "request": { - "$ref": "Event" - }, - "response": { - "$ref": "Event" - }, - "scopes": [ - "https://www.googleapis.com/auth/calendar" - ] - }, - - "Event": { - "id": "Event", - "type": "object", - "properties": { - "anyoneCanAddSelf": { - "type": "boolean", - "description": "Whether anyone can invite themselves to the event (currently works for Google+ events only). Optional. The default is False.", - "default": "false" - }, - "attachments": { - "type": "array", - "description": "File attachments for the event. Currently only Google Drive attachments are supported.\nIn order to modify attachments the supportsAttachments request parameter should be set to true.\nThere can be at most 25 attachments per event,", - "items": { - "$ref": "EventAttachment" - } - }, - "attendees": { - "type": "array", - "description": "The attendees of the event. See the Events with attendees guide for more information on scheduling events with other calendar users.", - "items": { - "$ref": "EventAttendee" - } - }, - "attendeesOmitted": { - "type": "boolean", - "description": "Whether attendees may have been omitted from the event's representation. When retrieving an event, this may be due to a restriction specified by the maxAttendee query parameter. When updating an event, this can be used to only update the participant's response. Optional. The default is False.", - "default": "false" - }, - "colorId": { - "type": "string", - "description": "The color of the event. This is an ID referring to an entry in the event section of the colors definition (see the colors endpoint). Optional." - }, - "created": { - "type": "string", - "description": "Creation time of the event (as a RFC3339 timestamp). Read-only.", - "format": "date-time" - }, - "creator": { - "type": "object", - "description": "The creator of the event. Read-only.", - "properties": { - "displayName": { - "type": "string", - "description": "The creator's name, if available." - }, - "email": { - "type": "string", - "description": "The creator's email address, if available." - }, - "id": { - "type": "string", - "description": "The creator's Profile ID, if available. It corresponds to theid field in the People collection of the Google+ API" - }, - "self": { - "type": "boolean", - "description": "Whether the creator corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.", - "default": "false" - } - } - }, - "description": { - "type": "string", - "description": "Description of the event. Optional." - }, - "end": { - "$ref": "EventDateTime", - "description": "The (exclusive) end time of the event. For a recurring event, this is the end time of the first instance.", - "annotations": { - "required": [ - "calendar.events.import", - "calendar.events.insert", - "calendar.events.update" - ] - } - }, - "endTimeUnspecified": { - "type": "boolean", - "description": "Whether the end time is actually unspecified. An end time is still provided for compatibility reasons, even if this attribute is set to True. The default is False.", - "default": "false" - }, - "etag": { - "type": "string", - "description": "ETag of the resource." - }, - "extendedProperties": { - "type": "object", - "description": "Extended properties of the event.", - "properties": { - "private": { - "type": "object", - "description": "Properties that are private to the copy of the event that appears on this calendar.", - "additionalProperties": { - "type": "string", - "description": "The name of the private property and the corresponding value." - } - }, - "shared": { - "type": "object", - "description": "Properties that are shared between copies of the event on other attendees' calendars.", - "additionalProperties": { - "type": "string", - "description": "The name of the shared property and the corresponding value." - } - } - } - }, - "gadget": { - "type": "object", - "description": "A gadget that extends this event.", - "properties": { - "display": { - "type": "string", - "description": "The gadget's display mode. Optional. Possible values are: \n- \"icon\" - The gadget displays next to the event's title in the calendar view. \n- \"chip\" - The gadget displays when the event is clicked." - }, - "height": { - "type": "integer", - "description": "The gadget's height in pixels. The height must be an integer greater than 0. Optional.", - "format": "int32" - }, - "iconLink": { - "type": "string", - "description": "The gadget's icon URL. The URL scheme must be HTTPS." - }, - "link": { - "type": "string", - "description": "The gadget's URL. The URL scheme must be HTTPS." - }, - "preferences": { - "type": "object", - "description": "Preferences.", - "additionalProperties": { - "type": "string", - "description": "The preference name and corresponding value." - } - }, - "title": { - "type": "string", - "description": "The gadget's title." - }, - "type": { - "type": "string", - "description": "The gadget's type." - }, - "width": { - "type": "integer", - "description": "The gadget's width in pixels. The width must be an integer greater than 0. Optional.", - "format": "int32" - } - } - }, - "guestsCanInviteOthers": { - "type": "boolean", - "description": "Whether attendees other than the organizer can invite others to the event. Optional. The default is True.", - "default": "true" - }, - "guestsCanModify": { - "type": "boolean", - "description": "Whether attendees other than the organizer can modify the event. Optional. The default is False.", - "default": "false" - }, - "guestsCanSeeOtherGuests": { - "type": "boolean", - "description": "Whether attendees other than the organizer can see who the event's attendees are. Optional. The default is True.", - "default": "true" - }, - "hangoutLink": { - "type": "string", - "description": "An absolute link to the Google+ hangout associated with this event. Read-only." - }, - "htmlLink": { - "type": "string", - "description": "An absolute link to this event in the Google Calendar Web UI. Read-only." - }, - "iCalUID": { - "type": "string", - "description": "Event unique identifier as defined in RFC5545. It is used to uniquely identify events accross calendaring systems and must be supplied when importing events via the import method.\nNote that the icalUID and the id are not identical and only one of them should be supplied at event creation time. One difference in their semantics is that in recurring events, all occurrences of one event have different ids while they all share the same icalUIDs.", - "annotations": { - "required": [ - "calendar.events.import" - ] - } - }, - "id": { - "type": "string", - "description": "Opaque identifier of the event. When creating new single or recurring events, you can specify their IDs. Provided IDs must follow these rules: \n- characters allowed in the ID are those used in base32hex encoding, i.e. lowercase letters a-v and digits 0-9, see section 3.1.2 in RFC2938 \n- the length of the ID must be between 5 and 1024 characters \n- the ID must be unique per calendar Due to the globally distributed nature of the system, we cannot guarantee that ID collisions will be detected at event creation time. To minimize the risk of collisions we recommend using an established UUID algorithm such as one described in RFC4122.\nIf you do not specify an ID, it will be automatically generated by the server.\nNote that the icalUID and the id are not identical and only one of them should be supplied at event creation time. One difference in their semantics is that in recurring events, all occurrences of one event have different ids while they all share the same icalUIDs." - }, - "kind": { - "type": "string", - "description": "Type of the resource (\"calendar#event\").", - "default": "calendar#event" - }, - "location": { - "type": "string", - "description": "Geographic location of the event as free-form text. Optional." - }, - "locked": { - "type": "boolean", - "description": "Whether this is a locked event copy where no changes can be made to the main event fields \"summary\", \"description\", \"location\", \"start\", \"end\" or \"recurrence\". The default is False. Read-Only.", - "default": "false" - }, - "organizer": { - "type": "object", - "description": "The organizer of the event. If the organizer is also an attendee, this is indicated with a separate entry in attendees with the organizer field set to True. To change the organizer, use the move operation. Read-only, except when importing an event.", - "properties": { - "displayName": { - "type": "string", - "description": "The organizer's name, if available." - }, - "email": { - "type": "string", - "description": "The organizer's email address, if available. It must be a valid email address as per RFC5322." - }, - "id": { - "type": "string", - "description": "The organizer's Profile ID, if available. It corresponds to theid field in the People collection of the Google+ API" - }, - "self": { - "type": "boolean", - "description": "Whether the organizer corresponds to the calendar on which this copy of the event appears. Read-only. The default is False.", - "default": "false" - } - } - }, - "originalStartTime": { - "$ref": "EventDateTime", - "description": "For an instance of a recurring event, this is the time at which this event would start according to the recurrence data in the recurring event identified by recurringEventId. Immutable." - }, - "privateCopy": { - "type": "boolean", - "description": "Whether this is a private event copy where changes are not shared with other copies on other calendars. Optional. Immutable. The default is False.", - "default": "false" - }, - "recurrence": { - "type": "array", - "description": "List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event, as specified in RFC5545. Note that DTSTART and DTEND lines are not allowed in this field; event start and end times are specified in the start and end fields. This field is omitted for single events or instances of recurring events.", - "items": { - "type": "string" - } - }, - "recurringEventId": { - "type": "string", - "description": "For an instance of a recurring event, this is the id of the recurring event to which this instance belongs. Immutable." - }, - "reminders": { - "type": "object", - "description": "Information about the event's reminders for the authenticated user.", - "properties": { - "overrides": { - "type": "array", - "description": "If the event doesn't use the default reminders, this lists the reminders specific to the event, or, if not set, indicates that no reminders are set for this event. The maximum number of override reminders is 5.", - "items": { - "$ref": "EventReminder" - } - }, - "useDefault": { - "type": "boolean", - "description": "Whether the default reminders of the calendar apply to the event." - } - } - }, - "sequence": { - "type": "integer", - "description": "Sequence number as per iCalendar.", - "format": "int32" - }, - "source": { - "type": "object", - "description": "Source from which the event was created. For example, a web page, an email message or any document identifiable by an URL with HTTP or HTTPS scheme. Can only be seen or modified by the creator of the event.", - "properties": { - "title": { - "type": "string", - "description": "Title of the source; for example a title of a web page or an email subject." - }, - "url": { - "type": "string", - "description": "URL of the source pointing to a resource. The URL scheme must be HTTP or HTTPS." - } - } - }, - "start": { - "$ref": "EventDateTime", - "description": "The (inclusive) start time of the event. For a recurring event, this is the start time of the first instance.", - "annotations": { - "required": [ - "calendar.events.import", - "calendar.events.insert", - "calendar.events.update" - ] - } - }, - "status": { - "type": "string", - "description": "Status of the event. Optional. Possible values are: \n- \"confirmed\" - The event is confirmed. This is the default status. \n- \"tentative\" - The event is tentatively confirmed. \n- \"cancelled\" - The event is cancelled." - }, - "summary": { - "type": "string", - "description": "Title of the event." - }, - "transparency": { - "type": "string", - "description": "Whether the event blocks time on the calendar. Optional. Possible values are: \n- \"opaque\" - The event blocks time on the calendar. This is the default value. \n- \"transparent\" - The event does not block time on the calendar.", - "default": "opaque" - }, - "updated": { - "type": "string", - "description": "Last modification time of the event (as a RFC3339 timestamp). Read-only.", - "format": "date-time" - }, - "visibility": { - "type": "string", - "description": "Visibility of the event. Optional. Possible values are: \n- \"default\" - Uses the default visibility for events on the calendar. This is the default value. \n- \"public\" - The event is public and event details are visible to all readers of the calendar. \n- \"private\" - The event is private and only event attendees may view event details. \n- \"confidential\" - The event is private. This value is provided for compatibility reasons.", - "default": "default" - } - } - }, - - */ - + if (string.IsNullOrWhiteSpace (calid)) throw new Exception ("the calendar identifier is not specified"); var creds = GetServiceAccountCredential(); +GoogleCredential credential = await GoogleCredential.GetApplicationDefaultAsync(); +var computeService = new BaseClientService.Initializer() +{ + HttpClientInitializer = credential +}; +computeService.ApiKey = Startup.GoogleSettings.ApiKey; +computeService.ApplicationName = "Yavsc"; +computeService.Validate(); - using (var client = new HttpClient()) { - using (var request = new HttpRequestMessage(HttpMethod.Post, - string.Format("calendars/{calendarId}/events",calid))) { - request.Content = new StringContent( - JsonConvert.SerializeObject( - new Resource { - summary = "", - description = "", - start = new GDate{ datetime = startDate }, - end = new GDate{ datetime = startDate.AddSeconds(lengthInSeconds) }, - location = location, - transparency = available ? "transparent" : null - } - )); - using (var response = await client.SendAsync(request)) { - var payload = JObject.Parse(await response.Content.ReadAsStringAsync()); - return payload.ToObject(); - } - } - - } - } + var service = new CalendarService(); + Event ev = new Event { + Start = new EventDateTime { DateTime = startDate }, + End = new EventDateTime { DateTime = startDate.AddSeconds(lengthInSeconds) }, + Summary = summary, + Description = description + }; + var insert = service.Events.Insert(ev,calid); + var inserted = await insert.ExecuteAsync(); + + return inserted; + } } } diff --git a/Yavsc/Services/GoogleApis/Google.Apis.Calendar.v3.cs b/Yavsc/Services/GoogleApis/Google.Apis.Calendar.v3.cs new file mode 100644 index 00000000..3a7f768a --- /dev/null +++ b/Yavsc/Services/GoogleApis/Google.Apis.Calendar.v3.cs @@ -0,0 +1,5636 @@ +// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with +// the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on +// an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +//------------------------------------------------------------------------------ +// +// This code was generated by google-apis-code-generator 1.5.1 +// C# generator version: 1.27.1 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +/** + * \brief + * Calendar API Version v3 + * + * \section ApiInfo API Version Information + * + *
API + * Calendar API + *
API Versionv3 + *
API Rev20170528 (878) + *
API Docs + * + * https://developers.google.com/google-apps/calendar/firstapp + *
Discovery Namecalendar + *
+ * + * \section ForMoreInfo For More Information + * + * The complete API documentation for using Calendar API can be found at + * https://developers.google.com/google-apps/calendar/firstapp. + * + * For more information about the Google APIs Client Library for .NET, see + * + * https://developers.google.com/api-client-library/dotnet/get_started + */ + +namespace Google.Apis.Calendar.v3 +{ + /// The Calendar Service. + public class CalendarService : Google.Apis.Services.BaseClientService + { + /// The API version. + public const string Version = "v3"; + + /// The discovery version used to generate this service. + public static Google.Apis.Discovery.DiscoveryVersion DiscoveryVersionUsed = + Google.Apis.Discovery.DiscoveryVersion.Version_1_0; + + /// Constructs a new service. + public CalendarService() : + this(new Google.Apis.Services.BaseClientService.Initializer()) {} + + /// Constructs a new service. + /// The service initializer. + public CalendarService(Google.Apis.Services.BaseClientService.Initializer initializer) + : base(initializer) + { + acl = new AclResource(this); + calendarList = new CalendarListResource(this); + calendars = new CalendarsResource(this); + channels = new ChannelsResource(this); + colors = new ColorsResource(this); + events = new EventsResource(this); + freebusy = new FreebusyResource(this); + settings = new SettingsResource(this); + } + + /// Gets the service supported features. + public override System.Collections.Generic.IList Features + { + get { return new string[0]; } + } + + /// Gets the service name. + public override string Name + { + get { return "calendar"; } + } + + /// Gets the service base URI. + public override string BaseUri + { + get { return "https://www.googleapis.com/calendar/v3/"; } + } + + /// Gets the service base path. + public override string BasePath + { + get { return "calendar/v3/"; } + } + + #if !NET40 + /// Gets the batch base URI; null if unspecified. + public override string BatchUri + { + get { return "https://www.googleapis.com/batch"; } + } + + /// Gets the batch base path; null if unspecified. + public override string BatchPath + { + get { return "batch"; } + } + #endif + + /// Available OAuth 2.0 scopes for use with the Calendar API. + public class Scope + { + /// Manage your calendars + public static string Calendar = "https://www.googleapis.com/auth/calendar"; + + /// View your calendars + public static string CalendarReadonly = "https://www.googleapis.com/auth/calendar.readonly"; + + } + + + + private readonly AclResource acl; + + /// Gets the Acl resource. + public virtual AclResource Acl + { + get { return acl; } + } + + private readonly CalendarListResource calendarList; + + /// Gets the CalendarList resource. + public virtual CalendarListResource CalendarList + { + get { return calendarList; } + } + + private readonly CalendarsResource calendars; + + /// Gets the Calendars resource. + public virtual CalendarsResource Calendars + { + get { return calendars; } + } + + private readonly ChannelsResource channels; + + /// Gets the Channels resource. + public virtual ChannelsResource Channels + { + get { return channels; } + } + + private readonly ColorsResource colors; + + /// Gets the Colors resource. + public virtual ColorsResource Colors + { + get { return colors; } + } + + private readonly EventsResource events; + + /// Gets the Events resource. + public virtual EventsResource Events + { + get { return events; } + } + + private readonly FreebusyResource freebusy; + + /// Gets the Freebusy resource. + public virtual FreebusyResource Freebusy + { + get { return freebusy; } + } + + private readonly SettingsResource settings; + + /// Gets the Settings resource. + public virtual SettingsResource Settings + { + get { return settings; } + } + } + + ///A base abstract class for Calendar requests. + public abstract class CalendarBaseServiceRequest : Google.Apis.Requests.ClientServiceRequest + { + ///Constructs a new CalendarBaseServiceRequest instance. + protected CalendarBaseServiceRequest(Google.Apis.Services.IClientService service) + : base(service) + { + } + + /// Data format for the response. + /// [default: json] + [Google.Apis.Util.RequestParameterAttribute("alt", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable Alt { get; set; } + + /// Data format for the response. + public enum AltEnum + { + /// Responses with Content-Type of application/json + [Google.Apis.Util.StringValueAttribute("json")] + Json, + } + + /// Selector specifying which fields to include in a partial response. + [Google.Apis.Util.RequestParameterAttribute("fields", Google.Apis.Util.RequestParameterType.Query)] + public virtual string Fields { get; set; } + + /// API key. Your API key identifies your project and provides you with API access, quota, and reports. + /// Required unless you provide an OAuth 2.0 token. + [Google.Apis.Util.RequestParameterAttribute("key", Google.Apis.Util.RequestParameterType.Query)] + public virtual string Key { get; set; } + + /// OAuth 2.0 token for the current user. + [Google.Apis.Util.RequestParameterAttribute("oauth_token", Google.Apis.Util.RequestParameterType.Query)] + public virtual string OauthToken { get; set; } + + /// Returns response with indentations and line breaks. + /// [default: true] + [Google.Apis.Util.RequestParameterAttribute("prettyPrint", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable PrettyPrint { get; set; } + + /// Available to use for quota purposes for server-side applications. Can be any arbitrary string + /// assigned to a user, but should not exceed 40 characters. Overrides userIp if both are provided. + [Google.Apis.Util.RequestParameterAttribute("quotaUser", Google.Apis.Util.RequestParameterType.Query)] + public virtual string QuotaUser { get; set; } + + /// IP address of the site where the request originates. Use this if you want to enforce per-user + /// limits. + [Google.Apis.Util.RequestParameterAttribute("userIp", Google.Apis.Util.RequestParameterType.Query)] + public virtual string UserIp { get; set; } + + /// Initializes Calendar parameter list. + protected override void InitParameters() + { + base.InitParameters(); + + RequestParameters.Add( + "alt", new Google.Apis.Discovery.Parameter + { + Name = "alt", + IsRequired = false, + ParameterType = "query", + DefaultValue = "json", + Pattern = null, + }); + RequestParameters.Add( + "fields", new Google.Apis.Discovery.Parameter + { + Name = "fields", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "key", new Google.Apis.Discovery.Parameter + { + Name = "key", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "oauth_token", new Google.Apis.Discovery.Parameter + { + Name = "oauth_token", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "prettyPrint", new Google.Apis.Discovery.Parameter + { + Name = "prettyPrint", + IsRequired = false, + ParameterType = "query", + DefaultValue = "true", + Pattern = null, + }); + RequestParameters.Add( + "quotaUser", new Google.Apis.Discovery.Parameter + { + Name = "quotaUser", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "userIp", new Google.Apis.Discovery.Parameter + { + Name = "userIp", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + } + } + + /// The "acl" collection of methods. + public class AclResource + { + private const string Resource = "acl"; + + /// The service which this resource belongs to. + private readonly Google.Apis.Services.IClientService service; + + /// Constructs a new resource. + public AclResource(Google.Apis.Services.IClientService service) + { + this.service = service; + + } + + + /// Deletes an access control rule. + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you + /// want to access the primary calendar of the currently logged in user, use the "primary" keyword. + /// + /// ACL rule identifier. + public virtual DeleteRequest Delete(string calendarId, string ruleId) + { + return new DeleteRequest(service, calendarId, ruleId); + } + + /// Deletes an access control rule. + public class DeleteRequest : CalendarBaseServiceRequest + { + /// Constructs a new Delete request. + public DeleteRequest(Google.Apis.Services.IClientService service, string calendarId, string ruleId) + : base(service) + { + CalendarId = calendarId; + RuleId = ruleId; + InitParameters(); + } + + + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to + /// access the primary calendar of the currently logged in user, use the "primary" keyword. + [Google.Apis.Util.RequestParameterAttribute("calendarId", Google.Apis.Util.RequestParameterType.Path)] + public virtual string CalendarId { get; private set; } + + /// ACL rule identifier. + [Google.Apis.Util.RequestParameterAttribute("ruleId", Google.Apis.Util.RequestParameterType.Path)] + public virtual string RuleId { get; private set; } + + + ///Gets the method name. + public override string MethodName + { + get { return "delete"; } + } + + ///Gets the HTTP method. + public override string HttpMethod + { + get { return "DELETE"; } + } + + ///Gets the REST path. + public override string RestPath + { + get { return "calendars/{calendarId}/acl/{ruleId}"; } + } + + /// Initializes Delete parameter list. + protected override void InitParameters() + { + base.InitParameters(); + + RequestParameters.Add( + "calendarId", new Google.Apis.Discovery.Parameter + { + Name = "calendarId", + IsRequired = true, + ParameterType = "path", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "ruleId", new Google.Apis.Discovery.Parameter + { + Name = "ruleId", + IsRequired = true, + ParameterType = "path", + DefaultValue = null, + Pattern = null, + }); + } + + } + + /// Returns an access control rule. + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you + /// want to access the primary calendar of the currently logged in user, use the "primary" keyword. + /// + /// ACL rule identifier. + public virtual GetRequest Get(string calendarId, string ruleId) + { + return new GetRequest(service, calendarId, ruleId); + } + + /// Returns an access control rule. + public class GetRequest : CalendarBaseServiceRequest + { + /// Constructs a new Get request. + public GetRequest(Google.Apis.Services.IClientService service, string calendarId, string ruleId) + : base(service) + { + CalendarId = calendarId; + RuleId = ruleId; + InitParameters(); + } + + + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to + /// access the primary calendar of the currently logged in user, use the "primary" keyword. + [Google.Apis.Util.RequestParameterAttribute("calendarId", Google.Apis.Util.RequestParameterType.Path)] + public virtual string CalendarId { get; private set; } + + /// ACL rule identifier. + [Google.Apis.Util.RequestParameterAttribute("ruleId", Google.Apis.Util.RequestParameterType.Path)] + public virtual string RuleId { get; private set; } + + + ///Gets the method name. + public override string MethodName + { + get { return "get"; } + } + + ///Gets the HTTP method. + public override string HttpMethod + { + get { return "GET"; } + } + + ///Gets the REST path. + public override string RestPath + { + get { return "calendars/{calendarId}/acl/{ruleId}"; } + } + + /// Initializes Get parameter list. + protected override void InitParameters() + { + base.InitParameters(); + + RequestParameters.Add( + "calendarId", new Google.Apis.Discovery.Parameter + { + Name = "calendarId", + IsRequired = true, + ParameterType = "path", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "ruleId", new Google.Apis.Discovery.Parameter + { + Name = "ruleId", + IsRequired = true, + ParameterType = "path", + DefaultValue = null, + Pattern = null, + }); + } + + } + + /// Creates an access control rule. + /// The body of the request. + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you + /// want to access the primary calendar of the currently logged in user, use the "primary" keyword. + public virtual InsertRequest Insert(Google.Apis.Calendar.v3.Data.AclRule body, string calendarId) + { + return new InsertRequest(service, body, calendarId); + } + + /// Creates an access control rule. + public class InsertRequest : CalendarBaseServiceRequest + { + /// Constructs a new Insert request. + public InsertRequest(Google.Apis.Services.IClientService service, Google.Apis.Calendar.v3.Data.AclRule body, string calendarId) + : base(service) + { + CalendarId = calendarId; + Body = body; + InitParameters(); + } + + + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to + /// access the primary calendar of the currently logged in user, use the "primary" keyword. + [Google.Apis.Util.RequestParameterAttribute("calendarId", Google.Apis.Util.RequestParameterType.Path)] + public virtual string CalendarId { get; private set; } + + + /// Gets or sets the body of this request. + Google.Apis.Calendar.v3.Data.AclRule Body { get; set; } + + ///Returns the body of the request. + protected override object GetBody() { return Body; } + + ///Gets the method name. + public override string MethodName + { + get { return "insert"; } + } + + ///Gets the HTTP method. + public override string HttpMethod + { + get { return "POST"; } + } + + ///Gets the REST path. + public override string RestPath + { + get { return "calendars/{calendarId}/acl"; } + } + + /// Initializes Insert parameter list. + protected override void InitParameters() + { + base.InitParameters(); + + RequestParameters.Add( + "calendarId", new Google.Apis.Discovery.Parameter + { + Name = "calendarId", + IsRequired = true, + ParameterType = "path", + DefaultValue = null, + Pattern = null, + }); + } + + } + + /// Returns the rules in the access control list for the calendar. + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you + /// want to access the primary calendar of the currently logged in user, use the "primary" keyword. + public virtual ListRequest List(string calendarId) + { + return new ListRequest(service, calendarId); + } + + /// Returns the rules in the access control list for the calendar. + public class ListRequest : CalendarBaseServiceRequest + { + /// Constructs a new List request. + public ListRequest(Google.Apis.Services.IClientService service, string calendarId) + : base(service) + { + CalendarId = calendarId; + InitParameters(); + } + + + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to + /// access the primary calendar of the currently logged in user, use the "primary" keyword. + [Google.Apis.Util.RequestParameterAttribute("calendarId", Google.Apis.Util.RequestParameterType.Path)] + public virtual string CalendarId { get; private set; } + + /// Maximum number of entries returned on one result page. By default the value is 100 entries. The + /// page size can never be larger than 250 entries. Optional. + /// [minimum: 1] + [Google.Apis.Util.RequestParameterAttribute("maxResults", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable MaxResults { get; set; } + + /// Token specifying which result page to return. Optional. + [Google.Apis.Util.RequestParameterAttribute("pageToken", Google.Apis.Util.RequestParameterType.Query)] + public virtual string PageToken { get; set; } + + /// Whether to include deleted ACLs in the result. Deleted ACLs are represented by role equal to + /// "none". Deleted ACLs will always be included if syncToken is provided. Optional. The default is + /// False. + [Google.Apis.Util.RequestParameterAttribute("showDeleted", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable ShowDeleted { get; set; } + + /// Token obtained from the nextSyncToken field returned on the last page of results from the + /// previous list request. It makes the result of this list request contain only entries that have changed + /// since then. All entries deleted since the previous list request will always be in the result set and it + /// is not allowed to set showDeleted to False. If the syncToken expires, the server will respond with a 410 + /// GONE response code and the client should clear its storage and perform a full synchronization without + /// any syncToken. Learn more about incremental synchronization. Optional. The default is to return all + /// entries. + [Google.Apis.Util.RequestParameterAttribute("syncToken", Google.Apis.Util.RequestParameterType.Query)] + public virtual string SyncToken { get; set; } + + + ///Gets the method name. + public override string MethodName + { + get { return "list"; } + } + + ///Gets the HTTP method. + public override string HttpMethod + { + get { return "GET"; } + } + + ///Gets the REST path. + public override string RestPath + { + get { return "calendars/{calendarId}/acl"; } + } + + /// Initializes List parameter list. + protected override void InitParameters() + { + base.InitParameters(); + + RequestParameters.Add( + "calendarId", new Google.Apis.Discovery.Parameter + { + Name = "calendarId", + IsRequired = true, + ParameterType = "path", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "maxResults", new Google.Apis.Discovery.Parameter + { + Name = "maxResults", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "pageToken", new Google.Apis.Discovery.Parameter + { + Name = "pageToken", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "showDeleted", new Google.Apis.Discovery.Parameter + { + Name = "showDeleted", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "syncToken", new Google.Apis.Discovery.Parameter + { + Name = "syncToken", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + } + + } + + /// Updates an access control rule. This method supports patch semantics. + /// The body of the request. + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you + /// want to access the primary calendar of the currently logged in user, use the "primary" keyword. + /// + /// ACL rule identifier. + public virtual PatchRequest Patch(Google.Apis.Calendar.v3.Data.AclRule body, string calendarId, string ruleId) + { + return new PatchRequest(service, body, calendarId, ruleId); + } + + /// Updates an access control rule. This method supports patch semantics. + public class PatchRequest : CalendarBaseServiceRequest + { + /// Constructs a new Patch request. + public PatchRequest(Google.Apis.Services.IClientService service, Google.Apis.Calendar.v3.Data.AclRule body, string calendarId, string ruleId) + : base(service) + { + CalendarId = calendarId; + RuleId = ruleId; + Body = body; + InitParameters(); + } + + + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to + /// access the primary calendar of the currently logged in user, use the "primary" keyword. + [Google.Apis.Util.RequestParameterAttribute("calendarId", Google.Apis.Util.RequestParameterType.Path)] + public virtual string CalendarId { get; private set; } + + /// ACL rule identifier. + [Google.Apis.Util.RequestParameterAttribute("ruleId", Google.Apis.Util.RequestParameterType.Path)] + public virtual string RuleId { get; private set; } + + + /// Gets or sets the body of this request. + Google.Apis.Calendar.v3.Data.AclRule Body { get; set; } + + ///Returns the body of the request. + protected override object GetBody() { return Body; } + + ///Gets the method name. + public override string MethodName + { + get { return "patch"; } + } + + ///Gets the HTTP method. + public override string HttpMethod + { + get { return "PATCH"; } + } + + ///Gets the REST path. + public override string RestPath + { + get { return "calendars/{calendarId}/acl/{ruleId}"; } + } + + /// Initializes Patch parameter list. + protected override void InitParameters() + { + base.InitParameters(); + + RequestParameters.Add( + "calendarId", new Google.Apis.Discovery.Parameter + { + Name = "calendarId", + IsRequired = true, + ParameterType = "path", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "ruleId", new Google.Apis.Discovery.Parameter + { + Name = "ruleId", + IsRequired = true, + ParameterType = "path", + DefaultValue = null, + Pattern = null, + }); + } + + } + + /// Updates an access control rule. + /// The body of the request. + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you + /// want to access the primary calendar of the currently logged in user, use the "primary" keyword. + /// + /// ACL rule identifier. + public virtual UpdateRequest Update(Google.Apis.Calendar.v3.Data.AclRule body, string calendarId, string ruleId) + { + return new UpdateRequest(service, body, calendarId, ruleId); + } + + /// Updates an access control rule. + public class UpdateRequest : CalendarBaseServiceRequest + { + /// Constructs a new Update request. + public UpdateRequest(Google.Apis.Services.IClientService service, Google.Apis.Calendar.v3.Data.AclRule body, string calendarId, string ruleId) + : base(service) + { + CalendarId = calendarId; + RuleId = ruleId; + Body = body; + InitParameters(); + } + + + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to + /// access the primary calendar of the currently logged in user, use the "primary" keyword. + [Google.Apis.Util.RequestParameterAttribute("calendarId", Google.Apis.Util.RequestParameterType.Path)] + public virtual string CalendarId { get; private set; } + + /// ACL rule identifier. + [Google.Apis.Util.RequestParameterAttribute("ruleId", Google.Apis.Util.RequestParameterType.Path)] + public virtual string RuleId { get; private set; } + + + /// Gets or sets the body of this request. + Google.Apis.Calendar.v3.Data.AclRule Body { get; set; } + + ///Returns the body of the request. + protected override object GetBody() { return Body; } + + ///Gets the method name. + public override string MethodName + { + get { return "update"; } + } + + ///Gets the HTTP method. + public override string HttpMethod + { + get { return "PUT"; } + } + + ///Gets the REST path. + public override string RestPath + { + get { return "calendars/{calendarId}/acl/{ruleId}"; } + } + + /// Initializes Update parameter list. + protected override void InitParameters() + { + base.InitParameters(); + + RequestParameters.Add( + "calendarId", new Google.Apis.Discovery.Parameter + { + Name = "calendarId", + IsRequired = true, + ParameterType = "path", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "ruleId", new Google.Apis.Discovery.Parameter + { + Name = "ruleId", + IsRequired = true, + ParameterType = "path", + DefaultValue = null, + Pattern = null, + }); + } + + } + + /// Watch for changes to ACL resources. + /// The body of the request. + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you + /// want to access the primary calendar of the currently logged in user, use the "primary" keyword. + public virtual WatchRequest Watch(Google.Apis.Calendar.v3.Data.Channel body, string calendarId) + { + return new WatchRequest(service, body, calendarId); + } + + /// Watch for changes to ACL resources. + public class WatchRequest : CalendarBaseServiceRequest + { + /// Constructs a new Watch request. + public WatchRequest(Google.Apis.Services.IClientService service, Google.Apis.Calendar.v3.Data.Channel body, string calendarId) + : base(service) + { + CalendarId = calendarId; + Body = body; + InitParameters(); + } + + + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to + /// access the primary calendar of the currently logged in user, use the "primary" keyword. + [Google.Apis.Util.RequestParameterAttribute("calendarId", Google.Apis.Util.RequestParameterType.Path)] + public virtual string CalendarId { get; private set; } + + /// Maximum number of entries returned on one result page. By default the value is 100 entries. The + /// page size can never be larger than 250 entries. Optional. + /// [minimum: 1] + [Google.Apis.Util.RequestParameterAttribute("maxResults", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable MaxResults { get; set; } + + /// Token specifying which result page to return. Optional. + [Google.Apis.Util.RequestParameterAttribute("pageToken", Google.Apis.Util.RequestParameterType.Query)] + public virtual string PageToken { get; set; } + + /// Whether to include deleted ACLs in the result. Deleted ACLs are represented by role equal to + /// "none". Deleted ACLs will always be included if syncToken is provided. Optional. The default is + /// False. + [Google.Apis.Util.RequestParameterAttribute("showDeleted", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable ShowDeleted { get; set; } + + /// Token obtained from the nextSyncToken field returned on the last page of results from the + /// previous list request. It makes the result of this list request contain only entries that have changed + /// since then. All entries deleted since the previous list request will always be in the result set and it + /// is not allowed to set showDeleted to False. If the syncToken expires, the server will respond with a 410 + /// GONE response code and the client should clear its storage and perform a full synchronization without + /// any syncToken. Learn more about incremental synchronization. Optional. The default is to return all + /// entries. + [Google.Apis.Util.RequestParameterAttribute("syncToken", Google.Apis.Util.RequestParameterType.Query)] + public virtual string SyncToken { get; set; } + + + /// Gets or sets the body of this request. + Google.Apis.Calendar.v3.Data.Channel Body { get; set; } + + ///Returns the body of the request. + protected override object GetBody() { return Body; } + + ///Gets the method name. + public override string MethodName + { + get { return "watch"; } + } + + ///Gets the HTTP method. + public override string HttpMethod + { + get { return "POST"; } + } + + ///Gets the REST path. + public override string RestPath + { + get { return "calendars/{calendarId}/acl/watch"; } + } + + /// Initializes Watch parameter list. + protected override void InitParameters() + { + base.InitParameters(); + + RequestParameters.Add( + "calendarId", new Google.Apis.Discovery.Parameter + { + Name = "calendarId", + IsRequired = true, + ParameterType = "path", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "maxResults", new Google.Apis.Discovery.Parameter + { + Name = "maxResults", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "pageToken", new Google.Apis.Discovery.Parameter + { + Name = "pageToken", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "showDeleted", new Google.Apis.Discovery.Parameter + { + Name = "showDeleted", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "syncToken", new Google.Apis.Discovery.Parameter + { + Name = "syncToken", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + } + + } + } + + /// The "calendarList" collection of methods. + public class CalendarListResource + { + private const string Resource = "calendarList"; + + /// The service which this resource belongs to. + private readonly Google.Apis.Services.IClientService service; + + /// Constructs a new resource. + public CalendarListResource(Google.Apis.Services.IClientService service) + { + this.service = service; + + } + + + /// Deletes an entry on the user's calendar list. + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you + /// want to access the primary calendar of the currently logged in user, use the "primary" keyword. + public virtual DeleteRequest Delete(string calendarId) + { + return new DeleteRequest(service, calendarId); + } + + /// Deletes an entry on the user's calendar list. + public class DeleteRequest : CalendarBaseServiceRequest + { + /// Constructs a new Delete request. + public DeleteRequest(Google.Apis.Services.IClientService service, string calendarId) + : base(service) + { + CalendarId = calendarId; + InitParameters(); + } + + + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to + /// access the primary calendar of the currently logged in user, use the "primary" keyword. + [Google.Apis.Util.RequestParameterAttribute("calendarId", Google.Apis.Util.RequestParameterType.Path)] + public virtual string CalendarId { get; private set; } + + + ///Gets the method name. + public override string MethodName + { + get { return "delete"; } + } + + ///Gets the HTTP method. + public override string HttpMethod + { + get { return "DELETE"; } + } + + ///Gets the REST path. + public override string RestPath + { + get { return "users/me/calendarList/{calendarId}"; } + } + + /// Initializes Delete parameter list. + protected override void InitParameters() + { + base.InitParameters(); + + RequestParameters.Add( + "calendarId", new Google.Apis.Discovery.Parameter + { + Name = "calendarId", + IsRequired = true, + ParameterType = "path", + DefaultValue = null, + Pattern = null, + }); + } + + } + + /// Returns an entry on the user's calendar list. + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you + /// want to access the primary calendar of the currently logged in user, use the "primary" keyword. + public virtual GetRequest Get(string calendarId) + { + return new GetRequest(service, calendarId); + } + + /// Returns an entry on the user's calendar list. + public class GetRequest : CalendarBaseServiceRequest + { + /// Constructs a new Get request. + public GetRequest(Google.Apis.Services.IClientService service, string calendarId) + : base(service) + { + CalendarId = calendarId; + InitParameters(); + } + + + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to + /// access the primary calendar of the currently logged in user, use the "primary" keyword. + [Google.Apis.Util.RequestParameterAttribute("calendarId", Google.Apis.Util.RequestParameterType.Path)] + public virtual string CalendarId { get; private set; } + + + ///Gets the method name. + public override string MethodName + { + get { return "get"; } + } + + ///Gets the HTTP method. + public override string HttpMethod + { + get { return "GET"; } + } + + ///Gets the REST path. + public override string RestPath + { + get { return "users/me/calendarList/{calendarId}"; } + } + + /// Initializes Get parameter list. + protected override void InitParameters() + { + base.InitParameters(); + + RequestParameters.Add( + "calendarId", new Google.Apis.Discovery.Parameter + { + Name = "calendarId", + IsRequired = true, + ParameterType = "path", + DefaultValue = null, + Pattern = null, + }); + } + + } + + /// Adds an entry to the user's calendar list. + /// The body of the request. + public virtual InsertRequest Insert(Google.Apis.Calendar.v3.Data.CalendarListEntry body) + { + return new InsertRequest(service, body); + } + + /// Adds an entry to the user's calendar list. + public class InsertRequest : CalendarBaseServiceRequest + { + /// Constructs a new Insert request. + public InsertRequest(Google.Apis.Services.IClientService service, Google.Apis.Calendar.v3.Data.CalendarListEntry body) + : base(service) + { + Body = body; + InitParameters(); + } + + + /// Whether to use the foregroundColor and backgroundColor fields to write the calendar colors + /// (RGB). If this feature is used, the index-based colorId field will be set to the best matching option + /// automatically. Optional. The default is False. + [Google.Apis.Util.RequestParameterAttribute("colorRgbFormat", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable ColorRgbFormat { get; set; } + + + /// Gets or sets the body of this request. + Google.Apis.Calendar.v3.Data.CalendarListEntry Body { get; set; } + + ///Returns the body of the request. + protected override object GetBody() { return Body; } + + ///Gets the method name. + public override string MethodName + { + get { return "insert"; } + } + + ///Gets the HTTP method. + public override string HttpMethod + { + get { return "POST"; } + } + + ///Gets the REST path. + public override string RestPath + { + get { return "users/me/calendarList"; } + } + + /// Initializes Insert parameter list. + protected override void InitParameters() + { + base.InitParameters(); + + RequestParameters.Add( + "colorRgbFormat", new Google.Apis.Discovery.Parameter + { + Name = "colorRgbFormat", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + } + + } + + /// Returns entries on the user's calendar list. + public virtual ListRequest List() + { + return new ListRequest(service); + } + + /// Returns entries on the user's calendar list. + public class ListRequest : CalendarBaseServiceRequest + { + /// Constructs a new List request. + public ListRequest(Google.Apis.Services.IClientService service) + : base(service) + { + InitParameters(); + } + + + /// Maximum number of entries returned on one result page. By default the value is 100 entries. The + /// page size can never be larger than 250 entries. Optional. + /// [minimum: 1] + [Google.Apis.Util.RequestParameterAttribute("maxResults", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable MaxResults { get; set; } + + /// The minimum access role for the user in the returned entries. Optional. The default is no + /// restriction. + [Google.Apis.Util.RequestParameterAttribute("minAccessRole", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable MinAccessRole { get; set; } + + /// The minimum access role for the user in the returned entries. Optional. The default is no + /// restriction. + public enum MinAccessRoleEnum + { + /// The user can read free/busy information. + [Google.Apis.Util.StringValueAttribute("freeBusyReader")] + FreeBusyReader, + /// The user can read and modify events and access control lists. + [Google.Apis.Util.StringValueAttribute("owner")] + Owner, + /// The user can read events that are not private. + [Google.Apis.Util.StringValueAttribute("reader")] + Reader, + /// The user can read and modify events. + [Google.Apis.Util.StringValueAttribute("writer")] + Writer, + } + + /// Token specifying which result page to return. Optional. + [Google.Apis.Util.RequestParameterAttribute("pageToken", Google.Apis.Util.RequestParameterType.Query)] + public virtual string PageToken { get; set; } + + /// Whether to include deleted calendar list entries in the result. Optional. The default is + /// False. + [Google.Apis.Util.RequestParameterAttribute("showDeleted", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable ShowDeleted { get; set; } + + /// Whether to show hidden entries. Optional. The default is False. + [Google.Apis.Util.RequestParameterAttribute("showHidden", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable ShowHidden { get; set; } + + /// Token obtained from the nextSyncToken field returned on the last page of results from the + /// previous list request. It makes the result of this list request contain only entries that have changed + /// since then. If only read-only fields such as calendar properties or ACLs have changed, the entry won't + /// be returned. All entries deleted and hidden since the previous list request will always be in the result + /// set and it is not allowed to set showDeleted neither showHidden to False. To ensure client state + /// consistency minAccessRole query parameter cannot be specified together with nextSyncToken. If the + /// syncToken expires, the server will respond with a 410 GONE response code and the client should clear its + /// storage and perform a full synchronization without any syncToken. Learn more about incremental + /// synchronization. Optional. The default is to return all entries. + [Google.Apis.Util.RequestParameterAttribute("syncToken", Google.Apis.Util.RequestParameterType.Query)] + public virtual string SyncToken { get; set; } + + + ///Gets the method name. + public override string MethodName + { + get { return "list"; } + } + + ///Gets the HTTP method. + public override string HttpMethod + { + get { return "GET"; } + } + + ///Gets the REST path. + public override string RestPath + { + get { return "users/me/calendarList"; } + } + + /// Initializes List parameter list. + protected override void InitParameters() + { + base.InitParameters(); + + RequestParameters.Add( + "maxResults", new Google.Apis.Discovery.Parameter + { + Name = "maxResults", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "minAccessRole", new Google.Apis.Discovery.Parameter + { + Name = "minAccessRole", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "pageToken", new Google.Apis.Discovery.Parameter + { + Name = "pageToken", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "showDeleted", new Google.Apis.Discovery.Parameter + { + Name = "showDeleted", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "showHidden", new Google.Apis.Discovery.Parameter + { + Name = "showHidden", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "syncToken", new Google.Apis.Discovery.Parameter + { + Name = "syncToken", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + } + + } + + /// Updates an entry on the user's calendar list. This method supports patch semantics. + /// The body of the request. + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you + /// want to access the primary calendar of the currently logged in user, use the "primary" keyword. + public virtual PatchRequest Patch(Google.Apis.Calendar.v3.Data.CalendarListEntry body, string calendarId) + { + return new PatchRequest(service, body, calendarId); + } + + /// Updates an entry on the user's calendar list. This method supports patch semantics. + public class PatchRequest : CalendarBaseServiceRequest + { + /// Constructs a new Patch request. + public PatchRequest(Google.Apis.Services.IClientService service, Google.Apis.Calendar.v3.Data.CalendarListEntry body, string calendarId) + : base(service) + { + CalendarId = calendarId; + Body = body; + InitParameters(); + } + + + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to + /// access the primary calendar of the currently logged in user, use the "primary" keyword. + [Google.Apis.Util.RequestParameterAttribute("calendarId", Google.Apis.Util.RequestParameterType.Path)] + public virtual string CalendarId { get; private set; } + + /// Whether to use the foregroundColor and backgroundColor fields to write the calendar colors + /// (RGB). If this feature is used, the index-based colorId field will be set to the best matching option + /// automatically. Optional. The default is False. + [Google.Apis.Util.RequestParameterAttribute("colorRgbFormat", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable ColorRgbFormat { get; set; } + + + /// Gets or sets the body of this request. + Google.Apis.Calendar.v3.Data.CalendarListEntry Body { get; set; } + + ///Returns the body of the request. + protected override object GetBody() { return Body; } + + ///Gets the method name. + public override string MethodName + { + get { return "patch"; } + } + + ///Gets the HTTP method. + public override string HttpMethod + { + get { return "PATCH"; } + } + + ///Gets the REST path. + public override string RestPath + { + get { return "users/me/calendarList/{calendarId}"; } + } + + /// Initializes Patch parameter list. + protected override void InitParameters() + { + base.InitParameters(); + + RequestParameters.Add( + "calendarId", new Google.Apis.Discovery.Parameter + { + Name = "calendarId", + IsRequired = true, + ParameterType = "path", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "colorRgbFormat", new Google.Apis.Discovery.Parameter + { + Name = "colorRgbFormat", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + } + + } + + /// Updates an entry on the user's calendar list. + /// The body of the request. + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you + /// want to access the primary calendar of the currently logged in user, use the "primary" keyword. + public virtual UpdateRequest Update(Google.Apis.Calendar.v3.Data.CalendarListEntry body, string calendarId) + { + return new UpdateRequest(service, body, calendarId); + } + + /// Updates an entry on the user's calendar list. + public class UpdateRequest : CalendarBaseServiceRequest + { + /// Constructs a new Update request. + public UpdateRequest(Google.Apis.Services.IClientService service, Google.Apis.Calendar.v3.Data.CalendarListEntry body, string calendarId) + : base(service) + { + CalendarId = calendarId; + Body = body; + InitParameters(); + } + + + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to + /// access the primary calendar of the currently logged in user, use the "primary" keyword. + [Google.Apis.Util.RequestParameterAttribute("calendarId", Google.Apis.Util.RequestParameterType.Path)] + public virtual string CalendarId { get; private set; } + + /// Whether to use the foregroundColor and backgroundColor fields to write the calendar colors + /// (RGB). If this feature is used, the index-based colorId field will be set to the best matching option + /// automatically. Optional. The default is False. + [Google.Apis.Util.RequestParameterAttribute("colorRgbFormat", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable ColorRgbFormat { get; set; } + + + /// Gets or sets the body of this request. + Google.Apis.Calendar.v3.Data.CalendarListEntry Body { get; set; } + + ///Returns the body of the request. + protected override object GetBody() { return Body; } + + ///Gets the method name. + public override string MethodName + { + get { return "update"; } + } + + ///Gets the HTTP method. + public override string HttpMethod + { + get { return "PUT"; } + } + + ///Gets the REST path. + public override string RestPath + { + get { return "users/me/calendarList/{calendarId}"; } + } + + /// Initializes Update parameter list. + protected override void InitParameters() + { + base.InitParameters(); + + RequestParameters.Add( + "calendarId", new Google.Apis.Discovery.Parameter + { + Name = "calendarId", + IsRequired = true, + ParameterType = "path", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "colorRgbFormat", new Google.Apis.Discovery.Parameter + { + Name = "colorRgbFormat", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + } + + } + + /// Watch for changes to CalendarList resources. + /// The body of the request. + public virtual WatchRequest Watch(Google.Apis.Calendar.v3.Data.Channel body) + { + return new WatchRequest(service, body); + } + + /// Watch for changes to CalendarList resources. + public class WatchRequest : CalendarBaseServiceRequest + { + /// Constructs a new Watch request. + public WatchRequest(Google.Apis.Services.IClientService service, Google.Apis.Calendar.v3.Data.Channel body) + : base(service) + { + Body = body; + InitParameters(); + } + + + /// Maximum number of entries returned on one result page. By default the value is 100 entries. The + /// page size can never be larger than 250 entries. Optional. + /// [minimum: 1] + [Google.Apis.Util.RequestParameterAttribute("maxResults", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable MaxResults { get; set; } + + /// The minimum access role for the user in the returned entries. Optional. The default is no + /// restriction. + [Google.Apis.Util.RequestParameterAttribute("minAccessRole", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable MinAccessRole { get; set; } + + /// The minimum access role for the user in the returned entries. Optional. The default is no + /// restriction. + public enum MinAccessRoleEnum + { + /// The user can read free/busy information. + [Google.Apis.Util.StringValueAttribute("freeBusyReader")] + FreeBusyReader, + /// The user can read and modify events and access control lists. + [Google.Apis.Util.StringValueAttribute("owner")] + Owner, + /// The user can read events that are not private. + [Google.Apis.Util.StringValueAttribute("reader")] + Reader, + /// The user can read and modify events. + [Google.Apis.Util.StringValueAttribute("writer")] + Writer, + } + + /// Token specifying which result page to return. Optional. + [Google.Apis.Util.RequestParameterAttribute("pageToken", Google.Apis.Util.RequestParameterType.Query)] + public virtual string PageToken { get; set; } + + /// Whether to include deleted calendar list entries in the result. Optional. The default is + /// False. + [Google.Apis.Util.RequestParameterAttribute("showDeleted", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable ShowDeleted { get; set; } + + /// Whether to show hidden entries. Optional. The default is False. + [Google.Apis.Util.RequestParameterAttribute("showHidden", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable ShowHidden { get; set; } + + /// Token obtained from the nextSyncToken field returned on the last page of results from the + /// previous list request. It makes the result of this list request contain only entries that have changed + /// since then. If only read-only fields such as calendar properties or ACLs have changed, the entry won't + /// be returned. All entries deleted and hidden since the previous list request will always be in the result + /// set and it is not allowed to set showDeleted neither showHidden to False. To ensure client state + /// consistency minAccessRole query parameter cannot be specified together with nextSyncToken. If the + /// syncToken expires, the server will respond with a 410 GONE response code and the client should clear its + /// storage and perform a full synchronization without any syncToken. Learn more about incremental + /// synchronization. Optional. The default is to return all entries. + [Google.Apis.Util.RequestParameterAttribute("syncToken", Google.Apis.Util.RequestParameterType.Query)] + public virtual string SyncToken { get; set; } + + + /// Gets or sets the body of this request. + Google.Apis.Calendar.v3.Data.Channel Body { get; set; } + + ///Returns the body of the request. + protected override object GetBody() { return Body; } + + ///Gets the method name. + public override string MethodName + { + get { return "watch"; } + } + + ///Gets the HTTP method. + public override string HttpMethod + { + get { return "POST"; } + } + + ///Gets the REST path. + public override string RestPath + { + get { return "users/me/calendarList/watch"; } + } + + /// Initializes Watch parameter list. + protected override void InitParameters() + { + base.InitParameters(); + + RequestParameters.Add( + "maxResults", new Google.Apis.Discovery.Parameter + { + Name = "maxResults", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "minAccessRole", new Google.Apis.Discovery.Parameter + { + Name = "minAccessRole", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "pageToken", new Google.Apis.Discovery.Parameter + { + Name = "pageToken", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "showDeleted", new Google.Apis.Discovery.Parameter + { + Name = "showDeleted", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "showHidden", new Google.Apis.Discovery.Parameter + { + Name = "showHidden", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "syncToken", new Google.Apis.Discovery.Parameter + { + Name = "syncToken", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + } + + } + } + + /// The "calendars" collection of methods. + public class CalendarsResource + { + private const string Resource = "calendars"; + + /// The service which this resource belongs to. + private readonly Google.Apis.Services.IClientService service; + + /// Constructs a new resource. + public CalendarsResource(Google.Apis.Services.IClientService service) + { + this.service = service; + + } + + + /// Clears a primary calendar. This operation deletes all events associated with the primary calendar + /// of an account. + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you + /// want to access the primary calendar of the currently logged in user, use the "primary" keyword. + public virtual ClearRequest Clear(string calendarId) + { + return new ClearRequest(service, calendarId); + } + + /// Clears a primary calendar. This operation deletes all events associated with the primary calendar + /// of an account. + public class ClearRequest : CalendarBaseServiceRequest + { + /// Constructs a new Clear request. + public ClearRequest(Google.Apis.Services.IClientService service, string calendarId) + : base(service) + { + CalendarId = calendarId; + InitParameters(); + } + + + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to + /// access the primary calendar of the currently logged in user, use the "primary" keyword. + [Google.Apis.Util.RequestParameterAttribute("calendarId", Google.Apis.Util.RequestParameterType.Path)] + public virtual string CalendarId { get; private set; } + + + ///Gets the method name. + public override string MethodName + { + get { return "clear"; } + } + + ///Gets the HTTP method. + public override string HttpMethod + { + get { return "POST"; } + } + + ///Gets the REST path. + public override string RestPath + { + get { return "calendars/{calendarId}/clear"; } + } + + /// Initializes Clear parameter list. + protected override void InitParameters() + { + base.InitParameters(); + + RequestParameters.Add( + "calendarId", new Google.Apis.Discovery.Parameter + { + Name = "calendarId", + IsRequired = true, + ParameterType = "path", + DefaultValue = null, + Pattern = null, + }); + } + + } + + /// Deletes a secondary calendar. Use calendars.clear for clearing all events on primary + /// calendars. + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you + /// want to access the primary calendar of the currently logged in user, use the "primary" keyword. + public virtual DeleteRequest Delete(string calendarId) + { + return new DeleteRequest(service, calendarId); + } + + /// Deletes a secondary calendar. Use calendars.clear for clearing all events on primary + /// calendars. + public class DeleteRequest : CalendarBaseServiceRequest + { + /// Constructs a new Delete request. + public DeleteRequest(Google.Apis.Services.IClientService service, string calendarId) + : base(service) + { + CalendarId = calendarId; + InitParameters(); + } + + + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to + /// access the primary calendar of the currently logged in user, use the "primary" keyword. + [Google.Apis.Util.RequestParameterAttribute("calendarId", Google.Apis.Util.RequestParameterType.Path)] + public virtual string CalendarId { get; private set; } + + + ///Gets the method name. + public override string MethodName + { + get { return "delete"; } + } + + ///Gets the HTTP method. + public override string HttpMethod + { + get { return "DELETE"; } + } + + ///Gets the REST path. + public override string RestPath + { + get { return "calendars/{calendarId}"; } + } + + /// Initializes Delete parameter list. + protected override void InitParameters() + { + base.InitParameters(); + + RequestParameters.Add( + "calendarId", new Google.Apis.Discovery.Parameter + { + Name = "calendarId", + IsRequired = true, + ParameterType = "path", + DefaultValue = null, + Pattern = null, + }); + } + + } + + /// Returns metadata for a calendar. + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you + /// want to access the primary calendar of the currently logged in user, use the "primary" keyword. + public virtual GetRequest Get(string calendarId) + { + return new GetRequest(service, calendarId); + } + + /// Returns metadata for a calendar. + public class GetRequest : CalendarBaseServiceRequest + { + /// Constructs a new Get request. + public GetRequest(Google.Apis.Services.IClientService service, string calendarId) + : base(service) + { + CalendarId = calendarId; + InitParameters(); + } + + + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to + /// access the primary calendar of the currently logged in user, use the "primary" keyword. + [Google.Apis.Util.RequestParameterAttribute("calendarId", Google.Apis.Util.RequestParameterType.Path)] + public virtual string CalendarId { get; private set; } + + + ///Gets the method name. + public override string MethodName + { + get { return "get"; } + } + + ///Gets the HTTP method. + public override string HttpMethod + { + get { return "GET"; } + } + + ///Gets the REST path. + public override string RestPath + { + get { return "calendars/{calendarId}"; } + } + + /// Initializes Get parameter list. + protected override void InitParameters() + { + base.InitParameters(); + + RequestParameters.Add( + "calendarId", new Google.Apis.Discovery.Parameter + { + Name = "calendarId", + IsRequired = true, + ParameterType = "path", + DefaultValue = null, + Pattern = null, + }); + } + + } + + /// Creates a secondary calendar. + /// The body of the request. + public virtual InsertRequest Insert(Google.Apis.Calendar.v3.Data.Calendar body) + { + return new InsertRequest(service, body); + } + + /// Creates a secondary calendar. + public class InsertRequest : CalendarBaseServiceRequest + { + /// Constructs a new Insert request. + public InsertRequest(Google.Apis.Services.IClientService service, Google.Apis.Calendar.v3.Data.Calendar body) + : base(service) + { + Body = body; + InitParameters(); + } + + + + /// Gets or sets the body of this request. + Google.Apis.Calendar.v3.Data.Calendar Body { get; set; } + + ///Returns the body of the request. + protected override object GetBody() { return Body; } + + ///Gets the method name. + public override string MethodName + { + get { return "insert"; } + } + + ///Gets the HTTP method. + public override string HttpMethod + { + get { return "POST"; } + } + + ///Gets the REST path. + public override string RestPath + { + get { return "calendars"; } + } + + /// Initializes Insert parameter list. + protected override void InitParameters() + { + base.InitParameters(); + + } + + } + + /// Updates metadata for a calendar. This method supports patch semantics. + /// The body of the request. + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you + /// want to access the primary calendar of the currently logged in user, use the "primary" keyword. + public virtual PatchRequest Patch(Google.Apis.Calendar.v3.Data.Calendar body, string calendarId) + { + return new PatchRequest(service, body, calendarId); + } + + /// Updates metadata for a calendar. This method supports patch semantics. + public class PatchRequest : CalendarBaseServiceRequest + { + /// Constructs a new Patch request. + public PatchRequest(Google.Apis.Services.IClientService service, Google.Apis.Calendar.v3.Data.Calendar body, string calendarId) + : base(service) + { + CalendarId = calendarId; + Body = body; + InitParameters(); + } + + + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to + /// access the primary calendar of the currently logged in user, use the "primary" keyword. + [Google.Apis.Util.RequestParameterAttribute("calendarId", Google.Apis.Util.RequestParameterType.Path)] + public virtual string CalendarId { get; private set; } + + + /// Gets or sets the body of this request. + Google.Apis.Calendar.v3.Data.Calendar Body { get; set; } + + ///Returns the body of the request. + protected override object GetBody() { return Body; } + + ///Gets the method name. + public override string MethodName + { + get { return "patch"; } + } + + ///Gets the HTTP method. + public override string HttpMethod + { + get { return "PATCH"; } + } + + ///Gets the REST path. + public override string RestPath + { + get { return "calendars/{calendarId}"; } + } + + /// Initializes Patch parameter list. + protected override void InitParameters() + { + base.InitParameters(); + + RequestParameters.Add( + "calendarId", new Google.Apis.Discovery.Parameter + { + Name = "calendarId", + IsRequired = true, + ParameterType = "path", + DefaultValue = null, + Pattern = null, + }); + } + + } + + /// Updates metadata for a calendar. + /// The body of the request. + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you + /// want to access the primary calendar of the currently logged in user, use the "primary" keyword. + public virtual UpdateRequest Update(Google.Apis.Calendar.v3.Data.Calendar body, string calendarId) + { + return new UpdateRequest(service, body, calendarId); + } + + /// Updates metadata for a calendar. + public class UpdateRequest : CalendarBaseServiceRequest + { + /// Constructs a new Update request. + public UpdateRequest(Google.Apis.Services.IClientService service, Google.Apis.Calendar.v3.Data.Calendar body, string calendarId) + : base(service) + { + CalendarId = calendarId; + Body = body; + InitParameters(); + } + + + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to + /// access the primary calendar of the currently logged in user, use the "primary" keyword. + [Google.Apis.Util.RequestParameterAttribute("calendarId", Google.Apis.Util.RequestParameterType.Path)] + public virtual string CalendarId { get; private set; } + + + /// Gets or sets the body of this request. + Google.Apis.Calendar.v3.Data.Calendar Body { get; set; } + + ///Returns the body of the request. + protected override object GetBody() { return Body; } + + ///Gets the method name. + public override string MethodName + { + get { return "update"; } + } + + ///Gets the HTTP method. + public override string HttpMethod + { + get { return "PUT"; } + } + + ///Gets the REST path. + public override string RestPath + { + get { return "calendars/{calendarId}"; } + } + + /// Initializes Update parameter list. + protected override void InitParameters() + { + base.InitParameters(); + + RequestParameters.Add( + "calendarId", new Google.Apis.Discovery.Parameter + { + Name = "calendarId", + IsRequired = true, + ParameterType = "path", + DefaultValue = null, + Pattern = null, + }); + } + + } + } + + /// The "channels" collection of methods. + public class ChannelsResource + { + private const string Resource = "channels"; + + /// The service which this resource belongs to. + private readonly Google.Apis.Services.IClientService service; + + /// Constructs a new resource. + public ChannelsResource(Google.Apis.Services.IClientService service) + { + this.service = service; + + } + + + /// Stop watching resources through this channel + /// The body of the request. + public virtual StopRequest Stop(Google.Apis.Calendar.v3.Data.Channel body) + { + return new StopRequest(service, body); + } + + /// Stop watching resources through this channel + public class StopRequest : CalendarBaseServiceRequest + { + /// Constructs a new Stop request. + public StopRequest(Google.Apis.Services.IClientService service, Google.Apis.Calendar.v3.Data.Channel body) + : base(service) + { + Body = body; + InitParameters(); + } + + + + /// Gets or sets the body of this request. + Google.Apis.Calendar.v3.Data.Channel Body { get; set; } + + ///Returns the body of the request. + protected override object GetBody() { return Body; } + + ///Gets the method name. + public override string MethodName + { + get { return "stop"; } + } + + ///Gets the HTTP method. + public override string HttpMethod + { + get { return "POST"; } + } + + ///Gets the REST path. + public override string RestPath + { + get { return "channels/stop"; } + } + + /// Initializes Stop parameter list. + protected override void InitParameters() + { + base.InitParameters(); + + } + + } + } + + /// The "colors" collection of methods. + public class ColorsResource + { + private const string Resource = "colors"; + + /// The service which this resource belongs to. + private readonly Google.Apis.Services.IClientService service; + + /// Constructs a new resource. + public ColorsResource(Google.Apis.Services.IClientService service) + { + this.service = service; + + } + + + /// Returns the color definitions for calendars and events. + public virtual GetRequest Get() + { + return new GetRequest(service); + } + + /// Returns the color definitions for calendars and events. + public class GetRequest : CalendarBaseServiceRequest + { + /// Constructs a new Get request. + public GetRequest(Google.Apis.Services.IClientService service) + : base(service) + { + InitParameters(); + } + + + + ///Gets the method name. + public override string MethodName + { + get { return "get"; } + } + + ///Gets the HTTP method. + public override string HttpMethod + { + get { return "GET"; } + } + + ///Gets the REST path. + public override string RestPath + { + get { return "colors"; } + } + + /// Initializes Get parameter list. + protected override void InitParameters() + { + base.InitParameters(); + + } + + } + } + + /// The "events" collection of methods. + public class EventsResource + { + private const string Resource = "events"; + + /// The service which this resource belongs to. + private readonly Google.Apis.Services.IClientService service; + + /// Constructs a new resource. + public EventsResource(Google.Apis.Services.IClientService service) + { + this.service = service; + + } + + + /// Deletes an event. + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you + /// want to access the primary calendar of the currently logged in user, use the "primary" keyword. + /// + /// Event identifier. + public virtual DeleteRequest Delete(string calendarId, string eventId) + { + return new DeleteRequest(service, calendarId, eventId); + } + + /// Deletes an event. + public class DeleteRequest : CalendarBaseServiceRequest + { + /// Constructs a new Delete request. + public DeleteRequest(Google.Apis.Services.IClientService service, string calendarId, string eventId) + : base(service) + { + CalendarId = calendarId; + EventId = eventId; + InitParameters(); + } + + + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to + /// access the primary calendar of the currently logged in user, use the "primary" keyword. + [Google.Apis.Util.RequestParameterAttribute("calendarId", Google.Apis.Util.RequestParameterType.Path)] + public virtual string CalendarId { get; private set; } + + /// Event identifier. + [Google.Apis.Util.RequestParameterAttribute("eventId", Google.Apis.Util.RequestParameterType.Path)] + public virtual string EventId { get; private set; } + + /// Whether to send notifications about the deletion of the event. Optional. The default is + /// False. + [Google.Apis.Util.RequestParameterAttribute("sendNotifications", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable SendNotifications { get; set; } + + + ///Gets the method name. + public override string MethodName + { + get { return "delete"; } + } + + ///Gets the HTTP method. + public override string HttpMethod + { + get { return "DELETE"; } + } + + ///Gets the REST path. + public override string RestPath + { + get { return "calendars/{calendarId}/events/{eventId}"; } + } + + /// Initializes Delete parameter list. + protected override void InitParameters() + { + base.InitParameters(); + + RequestParameters.Add( + "calendarId", new Google.Apis.Discovery.Parameter + { + Name = "calendarId", + IsRequired = true, + ParameterType = "path", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "eventId", new Google.Apis.Discovery.Parameter + { + Name = "eventId", + IsRequired = true, + ParameterType = "path", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "sendNotifications", new Google.Apis.Discovery.Parameter + { + Name = "sendNotifications", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + } + + } + + /// Returns an event. + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you + /// want to access the primary calendar of the currently logged in user, use the "primary" keyword. + /// + /// Event identifier. + public virtual GetRequest Get(string calendarId, string eventId) + { + return new GetRequest(service, calendarId, eventId); + } + + /// Returns an event. + public class GetRequest : CalendarBaseServiceRequest + { + /// Constructs a new Get request. + public GetRequest(Google.Apis.Services.IClientService service, string calendarId, string eventId) + : base(service) + { + CalendarId = calendarId; + EventId = eventId; + InitParameters(); + } + + + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to + /// access the primary calendar of the currently logged in user, use the "primary" keyword. + [Google.Apis.Util.RequestParameterAttribute("calendarId", Google.Apis.Util.RequestParameterType.Path)] + public virtual string CalendarId { get; private set; } + + /// Event identifier. + [Google.Apis.Util.RequestParameterAttribute("eventId", Google.Apis.Util.RequestParameterType.Path)] + public virtual string EventId { get; private set; } + + /// Whether to always include a value in the email field for the organizer, creator and attendees, + /// even if no real email is available (i.e. a generated, non-working value will be provided). The use of + /// this option is discouraged and should only be used by clients which cannot handle the absence of an + /// email address value in the mentioned places. Optional. The default is False. + [Google.Apis.Util.RequestParameterAttribute("alwaysIncludeEmail", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable AlwaysIncludeEmail { get; set; } + + /// The maximum number of attendees to include in the response. If there are more than the + /// specified number of attendees, only the participant is returned. Optional. + /// [minimum: 1] + [Google.Apis.Util.RequestParameterAttribute("maxAttendees", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable MaxAttendees { get; set; } + + /// Time zone used in the response. Optional. The default is the time zone of the + /// calendar. + [Google.Apis.Util.RequestParameterAttribute("timeZone", Google.Apis.Util.RequestParameterType.Query)] + public virtual string TimeZone { get; set; } + + + ///Gets the method name. + public override string MethodName + { + get { return "get"; } + } + + ///Gets the HTTP method. + public override string HttpMethod + { + get { return "GET"; } + } + + ///Gets the REST path. + public override string RestPath + { + get { return "calendars/{calendarId}/events/{eventId}"; } + } + + /// Initializes Get parameter list. + protected override void InitParameters() + { + base.InitParameters(); + + RequestParameters.Add( + "calendarId", new Google.Apis.Discovery.Parameter + { + Name = "calendarId", + IsRequired = true, + ParameterType = "path", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "eventId", new Google.Apis.Discovery.Parameter + { + Name = "eventId", + IsRequired = true, + ParameterType = "path", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "alwaysIncludeEmail", new Google.Apis.Discovery.Parameter + { + Name = "alwaysIncludeEmail", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "maxAttendees", new Google.Apis.Discovery.Parameter + { + Name = "maxAttendees", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "timeZone", new Google.Apis.Discovery.Parameter + { + Name = "timeZone", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + } + + } + + /// Imports an event. This operation is used to add a private copy of an existing event to a + /// calendar. + /// The body of the request. + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you + /// want to access the primary calendar of the currently logged in user, use the "primary" keyword. + public virtual ImportRequest Import(Google.Apis.Calendar.v3.Data.Event body, string calendarId) + { + return new ImportRequest(service, body, calendarId); + } + + /// Imports an event. This operation is used to add a private copy of an existing event to a + /// calendar. + public class ImportRequest : CalendarBaseServiceRequest + { + /// Constructs a new Import request. + public ImportRequest(Google.Apis.Services.IClientService service, Google.Apis.Calendar.v3.Data.Event body, string calendarId) + : base(service) + { + CalendarId = calendarId; + Body = body; + InitParameters(); + } + + + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to + /// access the primary calendar of the currently logged in user, use the "primary" keyword. + [Google.Apis.Util.RequestParameterAttribute("calendarId", Google.Apis.Util.RequestParameterType.Path)] + public virtual string CalendarId { get; private set; } + + /// Whether API client performing operation supports event attachments. Optional. The default is + /// False. + [Google.Apis.Util.RequestParameterAttribute("supportsAttachments", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable SupportsAttachments { get; set; } + + + /// Gets or sets the body of this request. + Google.Apis.Calendar.v3.Data.Event Body { get; set; } + + ///Returns the body of the request. + protected override object GetBody() { return Body; } + + ///Gets the method name. + public override string MethodName + { + get { return "import"; } + } + + ///Gets the HTTP method. + public override string HttpMethod + { + get { return "POST"; } + } + + ///Gets the REST path. + public override string RestPath + { + get { return "calendars/{calendarId}/events/import"; } + } + + /// Initializes Import parameter list. + protected override void InitParameters() + { + base.InitParameters(); + + RequestParameters.Add( + "calendarId", new Google.Apis.Discovery.Parameter + { + Name = "calendarId", + IsRequired = true, + ParameterType = "path", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "supportsAttachments", new Google.Apis.Discovery.Parameter + { + Name = "supportsAttachments", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + } + + } + + /// Creates an event. + /// The body of the request. + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you + /// want to access the primary calendar of the currently logged in user, use the "primary" keyword. + public virtual InsertRequest Insert(Google.Apis.Calendar.v3.Data.Event body, string calendarId) + { + return new InsertRequest(service, body, calendarId); + } + + /// Creates an event. + public class InsertRequest : CalendarBaseServiceRequest + { + /// Constructs a new Insert request. + public InsertRequest(Google.Apis.Services.IClientService service, Google.Apis.Calendar.v3.Data.Event body, string calendarId) + : base(service) + { + CalendarId = calendarId; + Body = body; + InitParameters(); + } + + + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to + /// access the primary calendar of the currently logged in user, use the "primary" keyword. + [Google.Apis.Util.RequestParameterAttribute("calendarId", Google.Apis.Util.RequestParameterType.Path)] + public virtual string CalendarId { get; private set; } + + /// The maximum number of attendees to include in the response. If there are more than the + /// specified number of attendees, only the participant is returned. Optional. + /// [minimum: 1] + [Google.Apis.Util.RequestParameterAttribute("maxAttendees", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable MaxAttendees { get; set; } + + /// Whether to send notifications about the creation of the new event. Optional. The default is + /// False. + [Google.Apis.Util.RequestParameterAttribute("sendNotifications", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable SendNotifications { get; set; } + + /// Whether API client performing operation supports event attachments. Optional. The default is + /// False. + [Google.Apis.Util.RequestParameterAttribute("supportsAttachments", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable SupportsAttachments { get; set; } + + + /// Gets or sets the body of this request. + Google.Apis.Calendar.v3.Data.Event Body { get; set; } + + ///Returns the body of the request. + protected override object GetBody() { return Body; } + + ///Gets the method name. + public override string MethodName + { + get { return "insert"; } + } + + ///Gets the HTTP method. + public override string HttpMethod + { + get { return "POST"; } + } + + ///Gets the REST path. + public override string RestPath + { + get { return "calendars/{calendarId}/events"; } + } + + /// Initializes Insert parameter list. + protected override void InitParameters() + { + base.InitParameters(); + + RequestParameters.Add( + "calendarId", new Google.Apis.Discovery.Parameter + { + Name = "calendarId", + IsRequired = true, + ParameterType = "path", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "maxAttendees", new Google.Apis.Discovery.Parameter + { + Name = "maxAttendees", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "sendNotifications", new Google.Apis.Discovery.Parameter + { + Name = "sendNotifications", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "supportsAttachments", new Google.Apis.Discovery.Parameter + { + Name = "supportsAttachments", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + } + + } + + /// Returns instances of the specified recurring event. + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you + /// want to access the primary calendar of the currently logged in user, use the "primary" keyword. + /// + /// Recurring event identifier. + public virtual InstancesRequest Instances(string calendarId, string eventId) + { + return new InstancesRequest(service, calendarId, eventId); + } + + /// Returns instances of the specified recurring event. + public class InstancesRequest : CalendarBaseServiceRequest + { + /// Constructs a new Instances request. + public InstancesRequest(Google.Apis.Services.IClientService service, string calendarId, string eventId) + : base(service) + { + CalendarId = calendarId; + EventId = eventId; + InitParameters(); + } + + + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to + /// access the primary calendar of the currently logged in user, use the "primary" keyword. + [Google.Apis.Util.RequestParameterAttribute("calendarId", Google.Apis.Util.RequestParameterType.Path)] + public virtual string CalendarId { get; private set; } + + /// Recurring event identifier. + [Google.Apis.Util.RequestParameterAttribute("eventId", Google.Apis.Util.RequestParameterType.Path)] + public virtual string EventId { get; private set; } + + /// Whether to always include a value in the email field for the organizer, creator and attendees, + /// even if no real email is available (i.e. a generated, non-working value will be provided). The use of + /// this option is discouraged and should only be used by clients which cannot handle the absence of an + /// email address value in the mentioned places. Optional. The default is False. + [Google.Apis.Util.RequestParameterAttribute("alwaysIncludeEmail", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable AlwaysIncludeEmail { get; set; } + + /// The maximum number of attendees to include in the response. If there are more than the + /// specified number of attendees, only the participant is returned. Optional. + /// [minimum: 1] + [Google.Apis.Util.RequestParameterAttribute("maxAttendees", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable MaxAttendees { get; set; } + + /// Maximum number of events returned on one result page. By default the value is 250 events. The + /// page size can never be larger than 2500 events. Optional. + /// [minimum: 1] + [Google.Apis.Util.RequestParameterAttribute("maxResults", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable MaxResults { get; set; } + + /// The original start time of the instance in the result. Optional. + [Google.Apis.Util.RequestParameterAttribute("originalStart", Google.Apis.Util.RequestParameterType.Query)] + public virtual string OriginalStart { get; set; } + + /// Token specifying which result page to return. Optional. + [Google.Apis.Util.RequestParameterAttribute("pageToken", Google.Apis.Util.RequestParameterType.Query)] + public virtual string PageToken { get; set; } + + /// Whether to include deleted events (with status equals "cancelled") in the result. Cancelled + /// instances of recurring events will still be included if singleEvents is False. Optional. The default is + /// False. + [Google.Apis.Util.RequestParameterAttribute("showDeleted", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable ShowDeleted { get; set; } + + /// Upper bound (exclusive) for an event's start time to filter by. Optional. The default is not to + /// filter by start time. Must be an RFC3339 timestamp with mandatory time zone offset. + [Google.Apis.Util.RequestParameterAttribute("timeMax", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable TimeMax { get; set; } + + /// Lower bound (inclusive) for an event's end time to filter by. Optional. The default is not to + /// filter by end time. Must be an RFC3339 timestamp with mandatory time zone offset. + [Google.Apis.Util.RequestParameterAttribute("timeMin", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable TimeMin { get; set; } + + /// Time zone used in the response. Optional. The default is the time zone of the + /// calendar. + [Google.Apis.Util.RequestParameterAttribute("timeZone", Google.Apis.Util.RequestParameterType.Query)] + public virtual string TimeZone { get; set; } + + + ///Gets the method name. + public override string MethodName + { + get { return "instances"; } + } + + ///Gets the HTTP method. + public override string HttpMethod + { + get { return "GET"; } + } + + ///Gets the REST path. + public override string RestPath + { + get { return "calendars/{calendarId}/events/{eventId}/instances"; } + } + + /// Initializes Instances parameter list. + protected override void InitParameters() + { + base.InitParameters(); + + RequestParameters.Add( + "calendarId", new Google.Apis.Discovery.Parameter + { + Name = "calendarId", + IsRequired = true, + ParameterType = "path", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "eventId", new Google.Apis.Discovery.Parameter + { + Name = "eventId", + IsRequired = true, + ParameterType = "path", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "alwaysIncludeEmail", new Google.Apis.Discovery.Parameter + { + Name = "alwaysIncludeEmail", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "maxAttendees", new Google.Apis.Discovery.Parameter + { + Name = "maxAttendees", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "maxResults", new Google.Apis.Discovery.Parameter + { + Name = "maxResults", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "originalStart", new Google.Apis.Discovery.Parameter + { + Name = "originalStart", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "pageToken", new Google.Apis.Discovery.Parameter + { + Name = "pageToken", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "showDeleted", new Google.Apis.Discovery.Parameter + { + Name = "showDeleted", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "timeMax", new Google.Apis.Discovery.Parameter + { + Name = "timeMax", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "timeMin", new Google.Apis.Discovery.Parameter + { + Name = "timeMin", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "timeZone", new Google.Apis.Discovery.Parameter + { + Name = "timeZone", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + } + + } + + /// Returns events on the specified calendar. + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you + /// want to access the primary calendar of the currently logged in user, use the "primary" keyword. + public virtual ListRequest List(string calendarId) + { + return new ListRequest(service, calendarId); + } + + /// Returns events on the specified calendar. + public class ListRequest : CalendarBaseServiceRequest + { + /// Constructs a new List request. + public ListRequest(Google.Apis.Services.IClientService service, string calendarId) + : base(service) + { + CalendarId = calendarId; + InitParameters(); + } + + + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to + /// access the primary calendar of the currently logged in user, use the "primary" keyword. + [Google.Apis.Util.RequestParameterAttribute("calendarId", Google.Apis.Util.RequestParameterType.Path)] + public virtual string CalendarId { get; private set; } + + /// Whether to always include a value in the email field for the organizer, creator and attendees, + /// even if no real email is available (i.e. a generated, non-working value will be provided). The use of + /// this option is discouraged and should only be used by clients which cannot handle the absence of an + /// email address value in the mentioned places. Optional. The default is False. + [Google.Apis.Util.RequestParameterAttribute("alwaysIncludeEmail", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable AlwaysIncludeEmail { get; set; } + + /// Specifies event ID in the iCalendar format to be included in the response. Optional. + [Google.Apis.Util.RequestParameterAttribute("iCalUID", Google.Apis.Util.RequestParameterType.Query)] + public virtual string ICalUID { get; set; } + + /// The maximum number of attendees to include in the response. If there are more than the + /// specified number of attendees, only the participant is returned. Optional. + /// [minimum: 1] + [Google.Apis.Util.RequestParameterAttribute("maxAttendees", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable MaxAttendees { get; set; } + + /// Maximum number of events returned on one result page. The number of events in the resulting + /// page may be less than this value, or none at all, even if there are more events matching the query. + /// Incomplete pages can be detected by a non-empty nextPageToken field in the response. By default the + /// value is 250 events. The page size can never be larger than 2500 events. Optional. + /// [default: 250] + /// [minimum: 1] + [Google.Apis.Util.RequestParameterAttribute("maxResults", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable MaxResults { get; set; } + + /// The order of the events returned in the result. Optional. The default is an unspecified, stable + /// order. + [Google.Apis.Util.RequestParameterAttribute("orderBy", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable OrderBy { get; set; } + + /// The order of the events returned in the result. Optional. The default is an unspecified, stable + /// order. + public enum OrderByEnum + { + /// Order by the start date/time (ascending). This is only available when querying single + /// events (i.e. the parameter singleEvents is True) + [Google.Apis.Util.StringValueAttribute("startTime")] + StartTime, + /// Order by last modification time (ascending). + [Google.Apis.Util.StringValueAttribute("updated")] + Updated, + } + + /// Token specifying which result page to return. Optional. + [Google.Apis.Util.RequestParameterAttribute("pageToken", Google.Apis.Util.RequestParameterType.Query)] + public virtual string PageToken { get; set; } + + /// Extended properties constraint specified as propertyName=value. Matches only private + /// properties. This parameter might be repeated multiple times to return events that match all given + /// constraints. + [Google.Apis.Util.RequestParameterAttribute("privateExtendedProperty", Google.Apis.Util.RequestParameterType.Query)] + public virtual Google.Apis.Util.Repeatable PrivateExtendedProperty { get; set; } + + /// Free text search terms to find events that match these terms in any field, except for extended + /// properties. Optional. + [Google.Apis.Util.RequestParameterAttribute("q", Google.Apis.Util.RequestParameterType.Query)] + public virtual string Q { get; set; } + + /// Extended properties constraint specified as propertyName=value. Matches only shared properties. + /// This parameter might be repeated multiple times to return events that match all given + /// constraints. + [Google.Apis.Util.RequestParameterAttribute("sharedExtendedProperty", Google.Apis.Util.RequestParameterType.Query)] + public virtual Google.Apis.Util.Repeatable SharedExtendedProperty { get; set; } + + /// Whether to include deleted events (with status equals "cancelled") in the result. Cancelled + /// instances of recurring events (but not the underlying recurring event) will still be included if + /// showDeleted and singleEvents are both False. If showDeleted and singleEvents are both True, only single + /// instances of deleted events (but not the underlying recurring events) are returned. Optional. The + /// default is False. + [Google.Apis.Util.RequestParameterAttribute("showDeleted", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable ShowDeleted { get; set; } + + /// Whether to include hidden invitations in the result. Optional. The default is False. + [Google.Apis.Util.RequestParameterAttribute("showHiddenInvitations", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable ShowHiddenInvitations { get; set; } + + /// Whether to expand recurring events into instances and only return single one-off events and + /// instances of recurring events, but not the underlying recurring events themselves. Optional. The default + /// is False. + [Google.Apis.Util.RequestParameterAttribute("singleEvents", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable SingleEvents { get; set; } + + /// Token obtained from the nextSyncToken field returned on the last page of results from the + /// previous list request. It makes the result of this list request contain only entries that have changed + /// since then. All events deleted since the previous list request will always be in the result set and it + /// is not allowed to set showDeleted to False. There are several query parameters that cannot be specified + /// together with nextSyncToken to ensure consistency of the client state. + /// + /// These are: - iCalUID - orderBy - privateExtendedProperty - q - sharedExtendedProperty - timeMin - + /// timeMax - updatedMin If the syncToken expires, the server will respond with a 410 GONE response code and + /// the client should clear its storage and perform a full synchronization without any syncToken. Learn more + /// about incremental synchronization. Optional. The default is to return all entries. + [Google.Apis.Util.RequestParameterAttribute("syncToken", Google.Apis.Util.RequestParameterType.Query)] + public virtual string SyncToken { get; set; } + + /// Upper bound (exclusive) for an event's start time to filter by. Optional. The default is not to + /// filter by start time. Must be an RFC3339 timestamp with mandatory time zone offset, e.g., + /// 2011-06-03T10:00:00-07:00, 2011-06-03T10:00:00Z. Milliseconds may be provided but will be + /// ignored. + [Google.Apis.Util.RequestParameterAttribute("timeMax", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable TimeMax { get; set; } + + /// Lower bound (inclusive) for an event's end time to filter by. Optional. The default is not to + /// filter by end time. Must be an RFC3339 timestamp with mandatory time zone offset, e.g., + /// 2011-06-03T10:00:00-07:00, 2011-06-03T10:00:00Z. Milliseconds may be provided but will be + /// ignored. + [Google.Apis.Util.RequestParameterAttribute("timeMin", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable TimeMin { get; set; } + + /// Time zone used in the response. Optional. The default is the time zone of the + /// calendar. + [Google.Apis.Util.RequestParameterAttribute("timeZone", Google.Apis.Util.RequestParameterType.Query)] + public virtual string TimeZone { get; set; } + + /// Lower bound for an event's last modification time (as a RFC3339 timestamp) to filter by. When + /// specified, entries deleted since this time will always be included regardless of showDeleted. Optional. + /// The default is not to filter by last modification time. + [Google.Apis.Util.RequestParameterAttribute("updatedMin", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable UpdatedMin { get; set; } + + + ///Gets the method name. + public override string MethodName + { + get { return "list"; } + } + + ///Gets the HTTP method. + public override string HttpMethod + { + get { return "GET"; } + } + + ///Gets the REST path. + public override string RestPath + { + get { return "calendars/{calendarId}/events"; } + } + + /// Initializes List parameter list. + protected override void InitParameters() + { + base.InitParameters(); + + RequestParameters.Add( + "calendarId", new Google.Apis.Discovery.Parameter + { + Name = "calendarId", + IsRequired = true, + ParameterType = "path", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "alwaysIncludeEmail", new Google.Apis.Discovery.Parameter + { + Name = "alwaysIncludeEmail", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "iCalUID", new Google.Apis.Discovery.Parameter + { + Name = "iCalUID", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "maxAttendees", new Google.Apis.Discovery.Parameter + { + Name = "maxAttendees", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "maxResults", new Google.Apis.Discovery.Parameter + { + Name = "maxResults", + IsRequired = false, + ParameterType = "query", + DefaultValue = "250", + Pattern = null, + }); + RequestParameters.Add( + "orderBy", new Google.Apis.Discovery.Parameter + { + Name = "orderBy", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "pageToken", new Google.Apis.Discovery.Parameter + { + Name = "pageToken", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "privateExtendedProperty", new Google.Apis.Discovery.Parameter + { + Name = "privateExtendedProperty", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "q", new Google.Apis.Discovery.Parameter + { + Name = "q", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "sharedExtendedProperty", new Google.Apis.Discovery.Parameter + { + Name = "sharedExtendedProperty", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "showDeleted", new Google.Apis.Discovery.Parameter + { + Name = "showDeleted", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "showHiddenInvitations", new Google.Apis.Discovery.Parameter + { + Name = "showHiddenInvitations", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "singleEvents", new Google.Apis.Discovery.Parameter + { + Name = "singleEvents", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "syncToken", new Google.Apis.Discovery.Parameter + { + Name = "syncToken", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "timeMax", new Google.Apis.Discovery.Parameter + { + Name = "timeMax", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "timeMin", new Google.Apis.Discovery.Parameter + { + Name = "timeMin", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "timeZone", new Google.Apis.Discovery.Parameter + { + Name = "timeZone", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "updatedMin", new Google.Apis.Discovery.Parameter + { + Name = "updatedMin", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + } + + } + + /// Moves an event to another calendar, i.e. changes an event's organizer. + /// Calendar identifier of the source calendar where the event currently is on. + /// + /// Event identifier. + /// Calendar identifier of the target + /// calendar where the event is to be moved to. + public virtual MoveRequest Move(string calendarId, string eventId, string destination) + { + return new MoveRequest(service, calendarId, eventId, destination); + } + + /// Moves an event to another calendar, i.e. changes an event's organizer. + public class MoveRequest : CalendarBaseServiceRequest + { + /// Constructs a new Move request. + public MoveRequest(Google.Apis.Services.IClientService service, string calendarId, string eventId, string destination) + : base(service) + { + CalendarId = calendarId; + EventId = eventId; + Destination = destination; + InitParameters(); + } + + + /// Calendar identifier of the source calendar where the event currently is on. + [Google.Apis.Util.RequestParameterAttribute("calendarId", Google.Apis.Util.RequestParameterType.Path)] + public virtual string CalendarId { get; private set; } + + /// Event identifier. + [Google.Apis.Util.RequestParameterAttribute("eventId", Google.Apis.Util.RequestParameterType.Path)] + public virtual string EventId { get; private set; } + + /// Calendar identifier of the target calendar where the event is to be moved to. + [Google.Apis.Util.RequestParameterAttribute("destination", Google.Apis.Util.RequestParameterType.Query)] + public virtual string Destination { get; private set; } + + /// Whether to send notifications about the change of the event's organizer. Optional. The default + /// is False. + [Google.Apis.Util.RequestParameterAttribute("sendNotifications", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable SendNotifications { get; set; } + + + ///Gets the method name. + public override string MethodName + { + get { return "move"; } + } + + ///Gets the HTTP method. + public override string HttpMethod + { + get { return "POST"; } + } + + ///Gets the REST path. + public override string RestPath + { + get { return "calendars/{calendarId}/events/{eventId}/move"; } + } + + /// Initializes Move parameter list. + protected override void InitParameters() + { + base.InitParameters(); + + RequestParameters.Add( + "calendarId", new Google.Apis.Discovery.Parameter + { + Name = "calendarId", + IsRequired = true, + ParameterType = "path", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "eventId", new Google.Apis.Discovery.Parameter + { + Name = "eventId", + IsRequired = true, + ParameterType = "path", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "destination", new Google.Apis.Discovery.Parameter + { + Name = "destination", + IsRequired = true, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "sendNotifications", new Google.Apis.Discovery.Parameter + { + Name = "sendNotifications", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + } + + } + + /// Updates an event. This method supports patch semantics. + /// The body of the request. + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you + /// want to access the primary calendar of the currently logged in user, use the "primary" keyword. + /// + /// Event identifier. + public virtual PatchRequest Patch(Google.Apis.Calendar.v3.Data.Event body, string calendarId, string eventId) + { + return new PatchRequest(service, body, calendarId, eventId); + } + + /// Updates an event. This method supports patch semantics. + public class PatchRequest : CalendarBaseServiceRequest + { + /// Constructs a new Patch request. + public PatchRequest(Google.Apis.Services.IClientService service, Google.Apis.Calendar.v3.Data.Event body, string calendarId, string eventId) + : base(service) + { + CalendarId = calendarId; + EventId = eventId; + Body = body; + InitParameters(); + } + + + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to + /// access the primary calendar of the currently logged in user, use the "primary" keyword. + [Google.Apis.Util.RequestParameterAttribute("calendarId", Google.Apis.Util.RequestParameterType.Path)] + public virtual string CalendarId { get; private set; } + + /// Event identifier. + [Google.Apis.Util.RequestParameterAttribute("eventId", Google.Apis.Util.RequestParameterType.Path)] + public virtual string EventId { get; private set; } + + /// Whether to always include a value in the email field for the organizer, creator and attendees, + /// even if no real email is available (i.e. a generated, non-working value will be provided). The use of + /// this option is discouraged and should only be used by clients which cannot handle the absence of an + /// email address value in the mentioned places. Optional. The default is False. + [Google.Apis.Util.RequestParameterAttribute("alwaysIncludeEmail", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable AlwaysIncludeEmail { get; set; } + + /// The maximum number of attendees to include in the response. If there are more than the + /// specified number of attendees, only the participant is returned. Optional. + /// [minimum: 1] + [Google.Apis.Util.RequestParameterAttribute("maxAttendees", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable MaxAttendees { get; set; } + + /// Whether to send notifications about the event update (e.g. attendee's responses, title changes, + /// etc.). Optional. The default is False. + [Google.Apis.Util.RequestParameterAttribute("sendNotifications", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable SendNotifications { get; set; } + + /// Whether API client performing operation supports event attachments. Optional. The default is + /// False. + [Google.Apis.Util.RequestParameterAttribute("supportsAttachments", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable SupportsAttachments { get; set; } + + + /// Gets or sets the body of this request. + Google.Apis.Calendar.v3.Data.Event Body { get; set; } + + ///Returns the body of the request. + protected override object GetBody() { return Body; } + + ///Gets the method name. + public override string MethodName + { + get { return "patch"; } + } + + ///Gets the HTTP method. + public override string HttpMethod + { + get { return "PATCH"; } + } + + ///Gets the REST path. + public override string RestPath + { + get { return "calendars/{calendarId}/events/{eventId}"; } + } + + /// Initializes Patch parameter list. + protected override void InitParameters() + { + base.InitParameters(); + + RequestParameters.Add( + "calendarId", new Google.Apis.Discovery.Parameter + { + Name = "calendarId", + IsRequired = true, + ParameterType = "path", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "eventId", new Google.Apis.Discovery.Parameter + { + Name = "eventId", + IsRequired = true, + ParameterType = "path", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "alwaysIncludeEmail", new Google.Apis.Discovery.Parameter + { + Name = "alwaysIncludeEmail", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "maxAttendees", new Google.Apis.Discovery.Parameter + { + Name = "maxAttendees", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "sendNotifications", new Google.Apis.Discovery.Parameter + { + Name = "sendNotifications", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "supportsAttachments", new Google.Apis.Discovery.Parameter + { + Name = "supportsAttachments", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + } + + } + + /// Creates an event based on a simple text string. + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you + /// want to access the primary calendar of the currently logged in user, use the "primary" keyword. + /// + /// The text describing the event to be created. + public virtual QuickAddRequest QuickAdd(string calendarId, string text) + { + return new QuickAddRequest(service, calendarId, text); + } + + /// Creates an event based on a simple text string. + public class QuickAddRequest : CalendarBaseServiceRequest + { + /// Constructs a new QuickAdd request. + public QuickAddRequest(Google.Apis.Services.IClientService service, string calendarId, string text) + : base(service) + { + CalendarId = calendarId; + Text = text; + InitParameters(); + } + + + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to + /// access the primary calendar of the currently logged in user, use the "primary" keyword. + [Google.Apis.Util.RequestParameterAttribute("calendarId", Google.Apis.Util.RequestParameterType.Path)] + public virtual string CalendarId { get; private set; } + + /// The text describing the event to be created. + [Google.Apis.Util.RequestParameterAttribute("text", Google.Apis.Util.RequestParameterType.Query)] + public virtual string Text { get; private set; } + + /// Whether to send notifications about the creation of the event. Optional. The default is + /// False. + [Google.Apis.Util.RequestParameterAttribute("sendNotifications", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable SendNotifications { get; set; } + + + ///Gets the method name. + public override string MethodName + { + get { return "quickAdd"; } + } + + ///Gets the HTTP method. + public override string HttpMethod + { + get { return "POST"; } + } + + ///Gets the REST path. + public override string RestPath + { + get { return "calendars/{calendarId}/events/quickAdd"; } + } + + /// Initializes QuickAdd parameter list. + protected override void InitParameters() + { + base.InitParameters(); + + RequestParameters.Add( + "calendarId", new Google.Apis.Discovery.Parameter + { + Name = "calendarId", + IsRequired = true, + ParameterType = "path", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "text", new Google.Apis.Discovery.Parameter + { + Name = "text", + IsRequired = true, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "sendNotifications", new Google.Apis.Discovery.Parameter + { + Name = "sendNotifications", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + } + + } + + /// Updates an event. + /// The body of the request. + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you + /// want to access the primary calendar of the currently logged in user, use the "primary" keyword. + /// + /// Event identifier. + public virtual UpdateRequest Update(Google.Apis.Calendar.v3.Data.Event body, string calendarId, string eventId) + { + return new UpdateRequest(service, body, calendarId, eventId); + } + + /// Updates an event. + public class UpdateRequest : CalendarBaseServiceRequest + { + /// Constructs a new Update request. + public UpdateRequest(Google.Apis.Services.IClientService service, Google.Apis.Calendar.v3.Data.Event body, string calendarId, string eventId) + : base(service) + { + CalendarId = calendarId; + EventId = eventId; + Body = body; + InitParameters(); + } + + + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to + /// access the primary calendar of the currently logged in user, use the "primary" keyword. + [Google.Apis.Util.RequestParameterAttribute("calendarId", Google.Apis.Util.RequestParameterType.Path)] + public virtual string CalendarId { get; private set; } + + /// Event identifier. + [Google.Apis.Util.RequestParameterAttribute("eventId", Google.Apis.Util.RequestParameterType.Path)] + public virtual string EventId { get; private set; } + + /// Whether to always include a value in the email field for the organizer, creator and attendees, + /// even if no real email is available (i.e. a generated, non-working value will be provided). The use of + /// this option is discouraged and should only be used by clients which cannot handle the absence of an + /// email address value in the mentioned places. Optional. The default is False. + [Google.Apis.Util.RequestParameterAttribute("alwaysIncludeEmail", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable AlwaysIncludeEmail { get; set; } + + /// The maximum number of attendees to include in the response. If there are more than the + /// specified number of attendees, only the participant is returned. Optional. + /// [minimum: 1] + [Google.Apis.Util.RequestParameterAttribute("maxAttendees", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable MaxAttendees { get; set; } + + /// Whether to send notifications about the event update (e.g. attendee's responses, title changes, + /// etc.). Optional. The default is False. + [Google.Apis.Util.RequestParameterAttribute("sendNotifications", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable SendNotifications { get; set; } + + /// Whether API client performing operation supports event attachments. Optional. The default is + /// False. + [Google.Apis.Util.RequestParameterAttribute("supportsAttachments", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable SupportsAttachments { get; set; } + + + /// Gets or sets the body of this request. + Google.Apis.Calendar.v3.Data.Event Body { get; set; } + + ///Returns the body of the request. + protected override object GetBody() { return Body; } + + ///Gets the method name. + public override string MethodName + { + get { return "update"; } + } + + ///Gets the HTTP method. + public override string HttpMethod + { + get { return "PUT"; } + } + + ///Gets the REST path. + public override string RestPath + { + get { return "calendars/{calendarId}/events/{eventId}"; } + } + + /// Initializes Update parameter list. + protected override void InitParameters() + { + base.InitParameters(); + + RequestParameters.Add( + "calendarId", new Google.Apis.Discovery.Parameter + { + Name = "calendarId", + IsRequired = true, + ParameterType = "path", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "eventId", new Google.Apis.Discovery.Parameter + { + Name = "eventId", + IsRequired = true, + ParameterType = "path", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "alwaysIncludeEmail", new Google.Apis.Discovery.Parameter + { + Name = "alwaysIncludeEmail", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "maxAttendees", new Google.Apis.Discovery.Parameter + { + Name = "maxAttendees", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "sendNotifications", new Google.Apis.Discovery.Parameter + { + Name = "sendNotifications", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "supportsAttachments", new Google.Apis.Discovery.Parameter + { + Name = "supportsAttachments", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + } + + } + + /// Watch for changes to Events resources. + /// The body of the request. + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you + /// want to access the primary calendar of the currently logged in user, use the "primary" keyword. + public virtual WatchRequest Watch(Google.Apis.Calendar.v3.Data.Channel body, string calendarId) + { + return new WatchRequest(service, body, calendarId); + } + + /// Watch for changes to Events resources. + public class WatchRequest : CalendarBaseServiceRequest + { + /// Constructs a new Watch request. + public WatchRequest(Google.Apis.Services.IClientService service, Google.Apis.Calendar.v3.Data.Channel body, string calendarId) + : base(service) + { + CalendarId = calendarId; + Body = body; + InitParameters(); + } + + + /// Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to + /// access the primary calendar of the currently logged in user, use the "primary" keyword. + [Google.Apis.Util.RequestParameterAttribute("calendarId", Google.Apis.Util.RequestParameterType.Path)] + public virtual string CalendarId { get; private set; } + + /// Whether to always include a value in the email field for the organizer, creator and attendees, + /// even if no real email is available (i.e. a generated, non-working value will be provided). The use of + /// this option is discouraged and should only be used by clients which cannot handle the absence of an + /// email address value in the mentioned places. Optional. The default is False. + [Google.Apis.Util.RequestParameterAttribute("alwaysIncludeEmail", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable AlwaysIncludeEmail { get; set; } + + /// Specifies event ID in the iCalendar format to be included in the response. Optional. + [Google.Apis.Util.RequestParameterAttribute("iCalUID", Google.Apis.Util.RequestParameterType.Query)] + public virtual string ICalUID { get; set; } + + /// The maximum number of attendees to include in the response. If there are more than the + /// specified number of attendees, only the participant is returned. Optional. + /// [minimum: 1] + [Google.Apis.Util.RequestParameterAttribute("maxAttendees", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable MaxAttendees { get; set; } + + /// Maximum number of events returned on one result page. The number of events in the resulting + /// page may be less than this value, or none at all, even if there are more events matching the query. + /// Incomplete pages can be detected by a non-empty nextPageToken field in the response. By default the + /// value is 250 events. The page size can never be larger than 2500 events. Optional. + /// [default: 250] + /// [minimum: 1] + [Google.Apis.Util.RequestParameterAttribute("maxResults", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable MaxResults { get; set; } + + /// The order of the events returned in the result. Optional. The default is an unspecified, stable + /// order. + [Google.Apis.Util.RequestParameterAttribute("orderBy", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable OrderBy { get; set; } + + /// The order of the events returned in the result. Optional. The default is an unspecified, stable + /// order. + public enum OrderByEnum + { + /// Order by the start date/time (ascending). This is only available when querying single + /// events (i.e. the parameter singleEvents is True) + [Google.Apis.Util.StringValueAttribute("startTime")] + StartTime, + /// Order by last modification time (ascending). + [Google.Apis.Util.StringValueAttribute("updated")] + Updated, + } + + /// Token specifying which result page to return. Optional. + [Google.Apis.Util.RequestParameterAttribute("pageToken", Google.Apis.Util.RequestParameterType.Query)] + public virtual string PageToken { get; set; } + + /// Extended properties constraint specified as propertyName=value. Matches only private + /// properties. This parameter might be repeated multiple times to return events that match all given + /// constraints. + [Google.Apis.Util.RequestParameterAttribute("privateExtendedProperty", Google.Apis.Util.RequestParameterType.Query)] + public virtual Google.Apis.Util.Repeatable PrivateExtendedProperty { get; set; } + + /// Free text search terms to find events that match these terms in any field, except for extended + /// properties. Optional. + [Google.Apis.Util.RequestParameterAttribute("q", Google.Apis.Util.RequestParameterType.Query)] + public virtual string Q { get; set; } + + /// Extended properties constraint specified as propertyName=value. Matches only shared properties. + /// This parameter might be repeated multiple times to return events that match all given + /// constraints. + [Google.Apis.Util.RequestParameterAttribute("sharedExtendedProperty", Google.Apis.Util.RequestParameterType.Query)] + public virtual Google.Apis.Util.Repeatable SharedExtendedProperty { get; set; } + + /// Whether to include deleted events (with status equals "cancelled") in the result. Cancelled + /// instances of recurring events (but not the underlying recurring event) will still be included if + /// showDeleted and singleEvents are both False. If showDeleted and singleEvents are both True, only single + /// instances of deleted events (but not the underlying recurring events) are returned. Optional. The + /// default is False. + [Google.Apis.Util.RequestParameterAttribute("showDeleted", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable ShowDeleted { get; set; } + + /// Whether to include hidden invitations in the result. Optional. The default is False. + [Google.Apis.Util.RequestParameterAttribute("showHiddenInvitations", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable ShowHiddenInvitations { get; set; } + + /// Whether to expand recurring events into instances and only return single one-off events and + /// instances of recurring events, but not the underlying recurring events themselves. Optional. The default + /// is False. + [Google.Apis.Util.RequestParameterAttribute("singleEvents", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable SingleEvents { get; set; } + + /// Token obtained from the nextSyncToken field returned on the last page of results from the + /// previous list request. It makes the result of this list request contain only entries that have changed + /// since then. All events deleted since the previous list request will always be in the result set and it + /// is not allowed to set showDeleted to False. There are several query parameters that cannot be specified + /// together with nextSyncToken to ensure consistency of the client state. + /// + /// These are: - iCalUID - orderBy - privateExtendedProperty - q - sharedExtendedProperty - timeMin - + /// timeMax - updatedMin If the syncToken expires, the server will respond with a 410 GONE response code and + /// the client should clear its storage and perform a full synchronization without any syncToken. Learn more + /// about incremental synchronization. Optional. The default is to return all entries. + [Google.Apis.Util.RequestParameterAttribute("syncToken", Google.Apis.Util.RequestParameterType.Query)] + public virtual string SyncToken { get; set; } + + /// Upper bound (exclusive) for an event's start time to filter by. Optional. The default is not to + /// filter by start time. Must be an RFC3339 timestamp with mandatory time zone offset, e.g., + /// 2011-06-03T10:00:00-07:00, 2011-06-03T10:00:00Z. Milliseconds may be provided but will be + /// ignored. + [Google.Apis.Util.RequestParameterAttribute("timeMax", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable TimeMax { get; set; } + + /// Lower bound (inclusive) for an event's end time to filter by. Optional. The default is not to + /// filter by end time. Must be an RFC3339 timestamp with mandatory time zone offset, e.g., + /// 2011-06-03T10:00:00-07:00, 2011-06-03T10:00:00Z. Milliseconds may be provided but will be + /// ignored. + [Google.Apis.Util.RequestParameterAttribute("timeMin", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable TimeMin { get; set; } + + /// Time zone used in the response. Optional. The default is the time zone of the + /// calendar. + [Google.Apis.Util.RequestParameterAttribute("timeZone", Google.Apis.Util.RequestParameterType.Query)] + public virtual string TimeZone { get; set; } + + /// Lower bound for an event's last modification time (as a RFC3339 timestamp) to filter by. When + /// specified, entries deleted since this time will always be included regardless of showDeleted. Optional. + /// The default is not to filter by last modification time. + [Google.Apis.Util.RequestParameterAttribute("updatedMin", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable UpdatedMin { get; set; } + + + /// Gets or sets the body of this request. + Google.Apis.Calendar.v3.Data.Channel Body { get; set; } + + ///Returns the body of the request. + protected override object GetBody() { return Body; } + + ///Gets the method name. + public override string MethodName + { + get { return "watch"; } + } + + ///Gets the HTTP method. + public override string HttpMethod + { + get { return "POST"; } + } + + ///Gets the REST path. + public override string RestPath + { + get { return "calendars/{calendarId}/events/watch"; } + } + + /// Initializes Watch parameter list. + protected override void InitParameters() + { + base.InitParameters(); + + RequestParameters.Add( + "calendarId", new Google.Apis.Discovery.Parameter + { + Name = "calendarId", + IsRequired = true, + ParameterType = "path", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "alwaysIncludeEmail", new Google.Apis.Discovery.Parameter + { + Name = "alwaysIncludeEmail", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "iCalUID", new Google.Apis.Discovery.Parameter + { + Name = "iCalUID", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "maxAttendees", new Google.Apis.Discovery.Parameter + { + Name = "maxAttendees", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "maxResults", new Google.Apis.Discovery.Parameter + { + Name = "maxResults", + IsRequired = false, + ParameterType = "query", + DefaultValue = "250", + Pattern = null, + }); + RequestParameters.Add( + "orderBy", new Google.Apis.Discovery.Parameter + { + Name = "orderBy", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "pageToken", new Google.Apis.Discovery.Parameter + { + Name = "pageToken", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "privateExtendedProperty", new Google.Apis.Discovery.Parameter + { + Name = "privateExtendedProperty", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "q", new Google.Apis.Discovery.Parameter + { + Name = "q", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "sharedExtendedProperty", new Google.Apis.Discovery.Parameter + { + Name = "sharedExtendedProperty", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "showDeleted", new Google.Apis.Discovery.Parameter + { + Name = "showDeleted", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "showHiddenInvitations", new Google.Apis.Discovery.Parameter + { + Name = "showHiddenInvitations", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "singleEvents", new Google.Apis.Discovery.Parameter + { + Name = "singleEvents", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "syncToken", new Google.Apis.Discovery.Parameter + { + Name = "syncToken", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "timeMax", new Google.Apis.Discovery.Parameter + { + Name = "timeMax", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "timeMin", new Google.Apis.Discovery.Parameter + { + Name = "timeMin", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "timeZone", new Google.Apis.Discovery.Parameter + { + Name = "timeZone", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "updatedMin", new Google.Apis.Discovery.Parameter + { + Name = "updatedMin", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + } + + } + } + + /// The "freebusy" collection of methods. + public class FreebusyResource + { + private const string Resource = "freebusy"; + + /// The service which this resource belongs to. + private readonly Google.Apis.Services.IClientService service; + + /// Constructs a new resource. + public FreebusyResource(Google.Apis.Services.IClientService service) + { + this.service = service; + + } + + + /// Returns free/busy information for a set of calendars. + /// The body of the request. + public virtual QueryRequest Query(Google.Apis.Calendar.v3.Data.FreeBusyRequest body) + { + return new QueryRequest(service, body); + } + + /// Returns free/busy information for a set of calendars. + public class QueryRequest : CalendarBaseServiceRequest + { + /// Constructs a new Query request. + public QueryRequest(Google.Apis.Services.IClientService service, Google.Apis.Calendar.v3.Data.FreeBusyRequest body) + : base(service) + { + Body = body; + InitParameters(); + } + + + + /// Gets or sets the body of this request. + Google.Apis.Calendar.v3.Data.FreeBusyRequest Body { get; set; } + + ///Returns the body of the request. + protected override object GetBody() { return Body; } + + ///Gets the method name. + public override string MethodName + { + get { return "query"; } + } + + ///Gets the HTTP method. + public override string HttpMethod + { + get { return "POST"; } + } + + ///Gets the REST path. + public override string RestPath + { + get { return "freeBusy"; } + } + + /// Initializes Query parameter list. + protected override void InitParameters() + { + base.InitParameters(); + + } + + } + } + + /// The "settings" collection of methods. + public class SettingsResource + { + private const string Resource = "settings"; + + /// The service which this resource belongs to. + private readonly Google.Apis.Services.IClientService service; + + /// Constructs a new resource. + public SettingsResource(Google.Apis.Services.IClientService service) + { + this.service = service; + + } + + + /// Returns a single user setting. + /// The id of the user setting. + public virtual GetRequest Get(string setting) + { + return new GetRequest(service, setting); + } + + /// Returns a single user setting. + public class GetRequest : CalendarBaseServiceRequest + { + /// Constructs a new Get request. + public GetRequest(Google.Apis.Services.IClientService service, string setting) + : base(service) + { + Setting = setting; + InitParameters(); + } + + + /// The id of the user setting. + [Google.Apis.Util.RequestParameterAttribute("setting", Google.Apis.Util.RequestParameterType.Path)] + public virtual string Setting { get; private set; } + + + ///Gets the method name. + public override string MethodName + { + get { return "get"; } + } + + ///Gets the HTTP method. + public override string HttpMethod + { + get { return "GET"; } + } + + ///Gets the REST path. + public override string RestPath + { + get { return "users/me/settings/{setting}"; } + } + + /// Initializes Get parameter list. + protected override void InitParameters() + { + base.InitParameters(); + + RequestParameters.Add( + "setting", new Google.Apis.Discovery.Parameter + { + Name = "setting", + IsRequired = true, + ParameterType = "path", + DefaultValue = null, + Pattern = null, + }); + } + + } + + /// Returns all user settings for the authenticated user. + public virtual ListRequest List() + { + return new ListRequest(service); + } + + /// Returns all user settings for the authenticated user. + public class ListRequest : CalendarBaseServiceRequest + { + /// Constructs a new List request. + public ListRequest(Google.Apis.Services.IClientService service) + : base(service) + { + InitParameters(); + } + + + /// Maximum number of entries returned on one result page. By default the value is 100 entries. The + /// page size can never be larger than 250 entries. Optional. + /// [minimum: 1] + [Google.Apis.Util.RequestParameterAttribute("maxResults", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable MaxResults { get; set; } + + /// Token specifying which result page to return. Optional. + [Google.Apis.Util.RequestParameterAttribute("pageToken", Google.Apis.Util.RequestParameterType.Query)] + public virtual string PageToken { get; set; } + + /// Token obtained from the nextSyncToken field returned on the last page of results from the + /// previous list request. It makes the result of this list request contain only entries that have changed + /// since then. If the syncToken expires, the server will respond with a 410 GONE response code and the + /// client should clear its storage and perform a full synchronization without any syncToken. Learn more + /// about incremental synchronization. Optional. The default is to return all entries. + [Google.Apis.Util.RequestParameterAttribute("syncToken", Google.Apis.Util.RequestParameterType.Query)] + public virtual string SyncToken { get; set; } + + + ///Gets the method name. + public override string MethodName + { + get { return "list"; } + } + + ///Gets the HTTP method. + public override string HttpMethod + { + get { return "GET"; } + } + + ///Gets the REST path. + public override string RestPath + { + get { return "users/me/settings"; } + } + + /// Initializes List parameter list. + protected override void InitParameters() + { + base.InitParameters(); + + RequestParameters.Add( + "maxResults", new Google.Apis.Discovery.Parameter + { + Name = "maxResults", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "pageToken", new Google.Apis.Discovery.Parameter + { + Name = "pageToken", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "syncToken", new Google.Apis.Discovery.Parameter + { + Name = "syncToken", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + } + + } + + /// Watch for changes to Settings resources. + /// The body of the request. + public virtual WatchRequest Watch(Google.Apis.Calendar.v3.Data.Channel body) + { + return new WatchRequest(service, body); + } + + /// Watch for changes to Settings resources. + public class WatchRequest : CalendarBaseServiceRequest + { + /// Constructs a new Watch request. + public WatchRequest(Google.Apis.Services.IClientService service, Google.Apis.Calendar.v3.Data.Channel body) + : base(service) + { + Body = body; + InitParameters(); + } + + + /// Maximum number of entries returned on one result page. By default the value is 100 entries. The + /// page size can never be larger than 250 entries. Optional. + /// [minimum: 1] + [Google.Apis.Util.RequestParameterAttribute("maxResults", Google.Apis.Util.RequestParameterType.Query)] + public virtual System.Nullable MaxResults { get; set; } + + /// Token specifying which result page to return. Optional. + [Google.Apis.Util.RequestParameterAttribute("pageToken", Google.Apis.Util.RequestParameterType.Query)] + public virtual string PageToken { get; set; } + + /// Token obtained from the nextSyncToken field returned on the last page of results from the + /// previous list request. It makes the result of this list request contain only entries that have changed + /// since then. If the syncToken expires, the server will respond with a 410 GONE response code and the + /// client should clear its storage and perform a full synchronization without any syncToken. Learn more + /// about incremental synchronization. Optional. The default is to return all entries. + [Google.Apis.Util.RequestParameterAttribute("syncToken", Google.Apis.Util.RequestParameterType.Query)] + public virtual string SyncToken { get; set; } + + + /// Gets or sets the body of this request. + Google.Apis.Calendar.v3.Data.Channel Body { get; set; } + + ///Returns the body of the request. + protected override object GetBody() { return Body; } + + ///Gets the method name. + public override string MethodName + { + get { return "watch"; } + } + + ///Gets the HTTP method. + public override string HttpMethod + { + get { return "POST"; } + } + + ///Gets the REST path. + public override string RestPath + { + get { return "users/me/settings/watch"; } + } + + /// Initializes Watch parameter list. + protected override void InitParameters() + { + base.InitParameters(); + + RequestParameters.Add( + "maxResults", new Google.Apis.Discovery.Parameter + { + Name = "maxResults", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "pageToken", new Google.Apis.Discovery.Parameter + { + Name = "pageToken", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + RequestParameters.Add( + "syncToken", new Google.Apis.Discovery.Parameter + { + Name = "syncToken", + IsRequired = false, + ParameterType = "query", + DefaultValue = null, + Pattern = null, + }); + } + + } + } +} + +namespace Google.Apis.Calendar.v3.Data +{ + + public class Acl : Google.Apis.Requests.IDirectResponseSchema + { + /// ETag of the collection. + [Newtonsoft.Json.JsonPropertyAttribute("etag")] + public virtual string ETag { get; set; } + + /// List of rules on the access control list. + [Newtonsoft.Json.JsonPropertyAttribute("items")] + public virtual System.Collections.Generic.IList Items { get; set; } + + /// Type of the collection ("calendar#acl"). + [Newtonsoft.Json.JsonPropertyAttribute("kind")] + public virtual string Kind { get; set; } + + /// Token used to access the next page of this result. Omitted if no further results are available, in + /// which case nextSyncToken is provided. + [Newtonsoft.Json.JsonPropertyAttribute("nextPageToken")] + public virtual string NextPageToken { get; set; } + + /// Token used at a later point in time to retrieve only the entries that have changed since this + /// result was returned. Omitted if further results are available, in which case nextPageToken is + /// provided. + [Newtonsoft.Json.JsonPropertyAttribute("nextSyncToken")] + public virtual string NextSyncToken { get; set; } + + } + + public class AclRule : Google.Apis.Requests.IDirectResponseSchema + { + /// ETag of the resource. + [Newtonsoft.Json.JsonPropertyAttribute("etag")] + public virtual string ETag { get; set; } + + /// Identifier of the ACL rule. + [Newtonsoft.Json.JsonPropertyAttribute("id")] + public virtual string Id { get; set; } + + /// Type of the resource ("calendar#aclRule"). + [Newtonsoft.Json.JsonPropertyAttribute("kind")] + public virtual string Kind { get; set; } + + /// The role assigned to the scope. Possible values are: - "none" - Provides no access. - + /// "freeBusyReader" - Provides read access to free/busy information. - "reader" - Provides read access to the + /// calendar. Private events will appear to users with reader access, but event details will be hidden. - + /// "writer" - Provides read and write access to the calendar. Private events will appear to users with writer + /// access, and event details will be visible. - "owner" - Provides ownership of the calendar. This role has all + /// of the permissions of the writer role with the additional ability to see and manipulate ACLs. + [Newtonsoft.Json.JsonPropertyAttribute("role")] + public virtual string Role { get; set; } + + /// The scope of the rule. + [Newtonsoft.Json.JsonPropertyAttribute("scope")] + public virtual AclRule.ScopeData Scope { get; set; } + + + + /// The scope of the rule. + public class ScopeData + { + /// The type of the scope. Possible values are: - "default" - The public scope. This is the default + /// value. - "user" - Limits the scope to a single user. - "group" - Limits the scope to a group. - "domain" + /// - Limits the scope to a domain. Note: The permissions granted to the "default", or public, scope apply + /// to any user, authenticated or not. + [Newtonsoft.Json.JsonPropertyAttribute("type")] + public virtual string Type { get; set; } + + /// The email address of a user or group, or the name of a domain, depending on the scope type. + /// Omitted for type "default". + [Newtonsoft.Json.JsonPropertyAttribute("value")] + public virtual string Value { get; set; } + + } + } + + public class Calendar : Google.Apis.Requests.IDirectResponseSchema + { + /// Description of the calendar. Optional. + [Newtonsoft.Json.JsonPropertyAttribute("description")] + public virtual string Description { get; set; } + + /// ETag of the resource. + [Newtonsoft.Json.JsonPropertyAttribute("etag")] + public virtual string ETag { get; set; } + + /// Identifier of the calendar. To retrieve IDs call the calendarList.list() method. + [Newtonsoft.Json.JsonPropertyAttribute("id")] + public virtual string Id { get; set; } + + /// Type of the resource ("calendar#calendar"). + [Newtonsoft.Json.JsonPropertyAttribute("kind")] + public virtual string Kind { get; set; } + + /// Geographic location of the calendar as free-form text. Optional. + [Newtonsoft.Json.JsonPropertyAttribute("location")] + public virtual string Location { get; set; } + + /// Title of the calendar. + [Newtonsoft.Json.JsonPropertyAttribute("summary")] + public virtual string Summary { get; set; } + + /// The time zone of the calendar. (Formatted as an IANA Time Zone Database name, e.g. + /// "Europe/Zurich".) Optional. + [Newtonsoft.Json.JsonPropertyAttribute("timeZone")] + public virtual string TimeZone { get; set; } + + } + + public class CalendarList : Google.Apis.Requests.IDirectResponseSchema + { + /// ETag of the collection. + [Newtonsoft.Json.JsonPropertyAttribute("etag")] + public virtual string ETag { get; set; } + + /// Calendars that are present on the user's calendar list. + [Newtonsoft.Json.JsonPropertyAttribute("items")] + public virtual System.Collections.Generic.IList Items { get; set; } + + /// Type of the collection ("calendar#calendarList"). + [Newtonsoft.Json.JsonPropertyAttribute("kind")] + public virtual string Kind { get; set; } + + /// Token used to access the next page of this result. Omitted if no further results are available, in + /// which case nextSyncToken is provided. + [Newtonsoft.Json.JsonPropertyAttribute("nextPageToken")] + public virtual string NextPageToken { get; set; } + + /// Token used at a later point in time to retrieve only the entries that have changed since this + /// result was returned. Omitted if further results are available, in which case nextPageToken is + /// provided. + [Newtonsoft.Json.JsonPropertyAttribute("nextSyncToken")] + public virtual string NextSyncToken { get; set; } + + } + + public class CalendarListEntry : Google.Apis.Requests.IDirectResponseSchema + { + /// The effective access role that the authenticated user has on the calendar. Read-only. Possible + /// values are: - "freeBusyReader" - Provides read access to free/busy information. - "reader" - Provides read + /// access to the calendar. Private events will appear to users with reader access, but event details will be + /// hidden. - "writer" - Provides read and write access to the calendar. Private events will appear to users + /// with writer access, and event details will be visible. - "owner" - Provides ownership of the calendar. This + /// role has all of the permissions of the writer role with the additional ability to see and manipulate + /// ACLs. + [Newtonsoft.Json.JsonPropertyAttribute("accessRole")] + public virtual string AccessRole { get; set; } + + /// The main color of the calendar in the hexadecimal format "#0088aa". This property supersedes the + /// index-based colorId property. To set or change this property, you need to specify colorRgbFormat=true in the + /// parameters of the insert, update and patch methods. Optional. + [Newtonsoft.Json.JsonPropertyAttribute("backgroundColor")] + public virtual string BackgroundColor { get; set; } + + /// The color of the calendar. This is an ID referring to an entry in the calendar section of the + /// colors definition (see the colors endpoint). This property is superseded by the backgroundColor and + /// foregroundColor properties and can be ignored when using these properties. Optional. + [Newtonsoft.Json.JsonPropertyAttribute("colorId")] + public virtual string ColorId { get; set; } + + /// The default reminders that the authenticated user has for this calendar. + [Newtonsoft.Json.JsonPropertyAttribute("defaultReminders")] + public virtual System.Collections.Generic.IList DefaultReminders { get; set; } + + /// Whether this calendar list entry has been deleted from the calendar list. Read-only. Optional. The + /// default is False. + [Newtonsoft.Json.JsonPropertyAttribute("deleted")] + public virtual System.Nullable Deleted { get; set; } + + /// Description of the calendar. Optional. Read-only. + [Newtonsoft.Json.JsonPropertyAttribute("description")] + public virtual string Description { get; set; } + + /// ETag of the resource. + [Newtonsoft.Json.JsonPropertyAttribute("etag")] + public virtual string ETag { get; set; } + + /// The foreground color of the calendar in the hexadecimal format "#ffffff". This property supersedes + /// the index-based colorId property. To set or change this property, you need to specify colorRgbFormat=true in + /// the parameters of the insert, update and patch methods. Optional. + [Newtonsoft.Json.JsonPropertyAttribute("foregroundColor")] + public virtual string ForegroundColor { get; set; } + + /// Whether the calendar has been hidden from the list. Optional. The default is False. + [Newtonsoft.Json.JsonPropertyAttribute("hidden")] + public virtual System.Nullable Hidden { get; set; } + + /// Identifier of the calendar. + [Newtonsoft.Json.JsonPropertyAttribute("id")] + public virtual string Id { get; set; } + + /// Type of the resource ("calendar#calendarListEntry"). + [Newtonsoft.Json.JsonPropertyAttribute("kind")] + public virtual string Kind { get; set; } + + /// Geographic location of the calendar as free-form text. Optional. Read-only. + [Newtonsoft.Json.JsonPropertyAttribute("location")] + public virtual string Location { get; set; } + + /// The notifications that the authenticated user is receiving for this calendar. + [Newtonsoft.Json.JsonPropertyAttribute("notificationSettings")] + public virtual CalendarListEntry.NotificationSettingsData NotificationSettings { get; set; } + + /// Whether the calendar is the primary calendar of the authenticated user. Read-only. Optional. The + /// default is False. + [Newtonsoft.Json.JsonPropertyAttribute("primary")] + public virtual System.Nullable Primary { get; set; } + + /// Whether the calendar content shows up in the calendar UI. Optional. The default is False. + [Newtonsoft.Json.JsonPropertyAttribute("selected")] + public virtual System.Nullable Selected { get; set; } + + /// Title of the calendar. Read-only. + [Newtonsoft.Json.JsonPropertyAttribute("summary")] + public virtual string Summary { get; set; } + + /// The summary that the authenticated user has set for this calendar. Optional. + [Newtonsoft.Json.JsonPropertyAttribute("summaryOverride")] + public virtual string SummaryOverride { get; set; } + + /// The time zone of the calendar. Optional. Read-only. + [Newtonsoft.Json.JsonPropertyAttribute("timeZone")] + public virtual string TimeZone { get; set; } + + + + /// The notifications that the authenticated user is receiving for this calendar. + public class NotificationSettingsData + { + /// The list of notifications set for this calendar. + [Newtonsoft.Json.JsonPropertyAttribute("notifications")] + public virtual System.Collections.Generic.IList Notifications { get; set; } + + } + } + + public class CalendarNotification : Google.Apis.Requests.IDirectResponseSchema + { + /// The method used to deliver the notification. Possible values are: - "email" - Reminders are sent + /// via email. - "sms" - Reminders are sent via SMS. This value is read-only and is ignored on inserts and + /// updates. SMS reminders are only available for G Suite customers. + [Newtonsoft.Json.JsonPropertyAttribute("method")] + public virtual string Method { get; set; } + + /// The type of notification. Possible values are: - "eventCreation" - Notification sent when a new + /// event is put on the calendar. - "eventChange" - Notification sent when an event is changed. - + /// "eventCancellation" - Notification sent when an event is cancelled. - "eventResponse" - Notification sent + /// when an event is changed. - "agenda" - An agenda with the events of the day (sent out in the + /// morning). + [Newtonsoft.Json.JsonPropertyAttribute("type")] + public virtual string Type { get; set; } + + /// The ETag of the item. + public virtual string ETag { get; set; } + } + + public class Channel : Google.Apis.Requests.IDirectResponseSchema + { + /// The address where notifications are delivered for this channel. + [Newtonsoft.Json.JsonPropertyAttribute("address")] + public virtual string Address { get; set; } + + /// Date and time of notification channel expiration, expressed as a Unix timestamp, in milliseconds. + /// Optional. + [Newtonsoft.Json.JsonPropertyAttribute("expiration")] + public virtual System.Nullable Expiration { get; set; } + + /// A UUID or similar unique string that identifies this channel. + [Newtonsoft.Json.JsonPropertyAttribute("id")] + public virtual string Id { get; set; } + + /// Identifies this as a notification channel used to watch for changes to a resource. Value: the fixed + /// string "api#channel". + [Newtonsoft.Json.JsonPropertyAttribute("kind")] + public virtual string Kind { get; set; } + + /// Additional parameters controlling delivery channel behavior. Optional. + [Newtonsoft.Json.JsonPropertyAttribute("params")] + public virtual System.Collections.Generic.IDictionary Params__ { get; set; } + + /// A Boolean value to indicate whether payload is wanted. Optional. + [Newtonsoft.Json.JsonPropertyAttribute("payload")] + public virtual System.Nullable Payload { get; set; } + + /// An opaque ID that identifies the resource being watched on this channel. Stable across different + /// API versions. + [Newtonsoft.Json.JsonPropertyAttribute("resourceId")] + public virtual string ResourceId { get; set; } + + /// A version-specific identifier for the watched resource. + [Newtonsoft.Json.JsonPropertyAttribute("resourceUri")] + public virtual string ResourceUri { get; set; } + + /// An arbitrary string delivered to the target address with each notification delivered over this + /// channel. Optional. + [Newtonsoft.Json.JsonPropertyAttribute("token")] + public virtual string Token { get; set; } + + /// The type of delivery mechanism used for this channel. + [Newtonsoft.Json.JsonPropertyAttribute("type")] + public virtual string Type { get; set; } + + /// The ETag of the item. + public virtual string ETag { get; set; } + } + + public class ColorDefinition : Google.Apis.Requests.IDirectResponseSchema + { + /// The background color associated with this color definition. + [Newtonsoft.Json.JsonPropertyAttribute("background")] + public virtual string Background { get; set; } + + /// The foreground color that can be used to write on top of a background with 'background' + /// color. + [Newtonsoft.Json.JsonPropertyAttribute("foreground")] + public virtual string Foreground { get; set; } + + /// The ETag of the item. + public virtual string ETag { get; set; } + } + + public class Colors : Google.Apis.Requests.IDirectResponseSchema + { + /// A global palette of calendar colors, mapping from the color ID to its definition. A + /// calendarListEntry resource refers to one of these color IDs in its color field. Read-only. + [Newtonsoft.Json.JsonPropertyAttribute("calendar")] + public virtual System.Collections.Generic.IDictionary Calendar { get; set; } + + /// A global palette of event colors, mapping from the color ID to its definition. An event resource + /// may refer to one of these color IDs in its color field. Read-only. + [Newtonsoft.Json.JsonPropertyAttribute("event")] + public virtual System.Collections.Generic.IDictionary Event__ { get; set; } + + /// Type of the resource ("calendar#colors"). + [Newtonsoft.Json.JsonPropertyAttribute("kind")] + public virtual string Kind { get; set; } + + /// Last modification time of the color palette (as a RFC3339 timestamp). Read-only. + [Newtonsoft.Json.JsonPropertyAttribute("updated")] + public virtual string UpdatedRaw { get; set; } + + /// representation of . + [Newtonsoft.Json.JsonIgnore] + public virtual System.Nullable Updated + { + get + { + return Google.Apis.Util.Utilities.GetDateTimeFromString(UpdatedRaw); + } + set + { + UpdatedRaw = Google.Apis.Util.Utilities.GetStringFromDateTime(value); + } + } + + /// The ETag of the item. + public virtual string ETag { get; set; } + } + + public class DeepLinkData : Google.Apis.Requests.IDirectResponseSchema + { + [Newtonsoft.Json.JsonPropertyAttribute("links")] + public virtual System.Collections.Generic.IList Links { get; set; } + + [Newtonsoft.Json.JsonPropertyAttribute("url")] + public virtual string Url { get; set; } + + /// The ETag of the item. + public virtual string ETag { get; set; } + } + + public class DisplayInfo : Google.Apis.Requests.IDirectResponseSchema + { + [Newtonsoft.Json.JsonPropertyAttribute("appIconUrl")] + public virtual string AppIconUrl { get; set; } + + [Newtonsoft.Json.JsonPropertyAttribute("appShortTitle")] + public virtual string AppShortTitle { get; set; } + + [Newtonsoft.Json.JsonPropertyAttribute("appTitle")] + public virtual string AppTitle { get; set; } + + [Newtonsoft.Json.JsonPropertyAttribute("linkShortTitle")] + public virtual string LinkShortTitle { get; set; } + + [Newtonsoft.Json.JsonPropertyAttribute("linkTitle")] + public virtual string LinkTitle { get; set; } + + /// The ETag of the item. + public virtual string ETag { get; set; } + } + + public class Error : Google.Apis.Requests.IDirectResponseSchema + { + /// Domain, or broad category, of the error. + [Newtonsoft.Json.JsonPropertyAttribute("domain")] + public virtual string Domain { get; set; } + + /// Specific reason for the error. Some of the possible values are: - "groupTooBig" - The group of + /// users requested is too large for a single query. - "tooManyCalendarsRequested" - The number of calendars + /// requested is too large for a single query. - "notFound" - The requested resource was not found. - + /// "internalError" - The API service has encountered an internal error. Additional error types may be added in + /// the future, so clients should gracefully handle additional error statuses not included in this + /// list. + [Newtonsoft.Json.JsonPropertyAttribute("reason")] + public virtual string Reason { get; set; } + + /// The ETag of the item. + public virtual string ETag { get; set; } + } + + public class Event : Google.Apis.Requests.IDirectResponseSchema + { + /// Whether anyone can invite themselves to the event (currently works for Google+ events only). + /// Optional. The default is False. + [Newtonsoft.Json.JsonPropertyAttribute("anyoneCanAddSelf")] + public virtual System.Nullable AnyoneCanAddSelf { get; set; } + + /// File attachments for the event. Currently only Google Drive attachments are supported. In order to + /// modify attachments the supportsAttachments request parameter should be set to true. There can be at most 25 + /// attachments per event, + [Newtonsoft.Json.JsonPropertyAttribute("attachments")] + public virtual System.Collections.Generic.IList Attachments { get; set; } + + /// The attendees of the event. See the Events with attendees guide for more information on scheduling + /// events with other calendar users. + [Newtonsoft.Json.JsonPropertyAttribute("attendees")] + public virtual System.Collections.Generic.IList Attendees { get; set; } + + /// Whether attendees may have been omitted from the event's representation. When retrieving an event, + /// this may be due to a restriction specified by the maxAttendee query parameter. When updating an event, this + /// can be used to only update the participant's response. Optional. The default is False. + [Newtonsoft.Json.JsonPropertyAttribute("attendeesOmitted")] + public virtual System.Nullable AttendeesOmitted { get; set; } + + /// The color of the event. This is an ID referring to an entry in the event section of the colors + /// definition (see the colors endpoint). Optional. + [Newtonsoft.Json.JsonPropertyAttribute("colorId")] + public virtual string ColorId { get; set; } + + /// Creation time of the event (as a RFC3339 timestamp). Read-only. + [Newtonsoft.Json.JsonPropertyAttribute("created")] + public virtual string CreatedRaw { get; set; } + + /// representation of . + [Newtonsoft.Json.JsonIgnore] + public virtual System.Nullable Created + { + get + { + return Google.Apis.Util.Utilities.GetDateTimeFromString(CreatedRaw); + } + set + { + CreatedRaw = Google.Apis.Util.Utilities.GetStringFromDateTime(value); + } + } + + /// The creator of the event. Read-only. + [Newtonsoft.Json.JsonPropertyAttribute("creator")] + public virtual Event.CreatorData Creator { get; set; } + + /// Description of the event. Optional. + [Newtonsoft.Json.JsonPropertyAttribute("description")] + public virtual string Description { get; set; } + + /// The (exclusive) end time of the event. For a recurring event, this is the end time of the first + /// instance. + [Newtonsoft.Json.JsonPropertyAttribute("end")] + public virtual EventDateTime End { get; set; } + + /// Whether the end time is actually unspecified. An end time is still provided for compatibility + /// reasons, even if this attribute is set to True. The default is False. + [Newtonsoft.Json.JsonPropertyAttribute("endTimeUnspecified")] + public virtual System.Nullable EndTimeUnspecified { get; set; } + + /// ETag of the resource. + [Newtonsoft.Json.JsonPropertyAttribute("etag")] + public virtual string ETag { get; set; } + + /// Extended properties of the event. + [Newtonsoft.Json.JsonPropertyAttribute("extendedProperties")] + public virtual Event.ExtendedPropertiesData ExtendedProperties { get; set; } + + /// A gadget that extends this event. + [Newtonsoft.Json.JsonPropertyAttribute("gadget")] + public virtual Event.GadgetData Gadget { get; set; } + + /// Whether attendees other than the organizer can invite others to the event. Optional. The default is + /// True. + [Newtonsoft.Json.JsonPropertyAttribute("guestsCanInviteOthers")] + public virtual System.Nullable GuestsCanInviteOthers { get; set; } + + /// Whether attendees other than the organizer can modify the event. Optional. The default is + /// False. + [Newtonsoft.Json.JsonPropertyAttribute("guestsCanModify")] + public virtual System.Nullable GuestsCanModify { get; set; } + + /// Whether attendees other than the organizer can see who the event's attendees are. Optional. The + /// default is True. + [Newtonsoft.Json.JsonPropertyAttribute("guestsCanSeeOtherGuests")] + public virtual System.Nullable GuestsCanSeeOtherGuests { get; set; } + + /// An absolute link to the Google+ hangout associated with this event. Read-only. + [Newtonsoft.Json.JsonPropertyAttribute("hangoutLink")] + public virtual string HangoutLink { get; set; } + + /// An absolute link to this event in the Google Calendar Web UI. Read-only. + [Newtonsoft.Json.JsonPropertyAttribute("htmlLink")] + public virtual string HtmlLink { get; set; } + + /// Event unique identifier as defined in RFC5545. It is used to uniquely identify events accross + /// calendaring systems and must be supplied when importing events via the import method. Note that the icalUID + /// and the id are not identical and only one of them should be supplied at event creation time. One difference + /// in their semantics is that in recurring events, all occurrences of one event have different ids while they + /// all share the same icalUIDs. + [Newtonsoft.Json.JsonPropertyAttribute("iCalUID")] + public virtual string ICalUID { get; set; } + + /// Opaque identifier of the event. When creating new single or recurring events, you can specify their + /// IDs. Provided IDs must follow these rules: - characters allowed in the ID are those used in base32hex + /// encoding, i.e. lowercase letters a-v and digits 0-9, see section 3.1.2 in RFC2938 - the length of the ID + /// must be between 5 and 1024 characters - the ID must be unique per calendar Due to the globally distributed + /// nature of the system, we cannot guarantee that ID collisions will be detected at event creation time. To + /// minimize the risk of collisions we recommend using an established UUID algorithm such as one described in + /// RFC4122. If you do not specify an ID, it will be automatically generated by the server. Note that the + /// icalUID and the id are not identical and only one of them should be supplied at event creation time. One + /// difference in their semantics is that in recurring events, all occurrences of one event have different ids + /// while they all share the same icalUIDs. + [Newtonsoft.Json.JsonPropertyAttribute("id")] + public virtual string Id { get; set; } + + /// Type of the resource ("calendar#event"). + [Newtonsoft.Json.JsonPropertyAttribute("kind")] + public virtual string Kind { get; set; } + + /// Geographic location of the event as free-form text. Optional. + [Newtonsoft.Json.JsonPropertyAttribute("location")] + public virtual string Location { get; set; } + + /// Whether this is a locked event copy where no changes can be made to the main event fields + /// "summary", "description", "location", "start", "end" or "recurrence". The default is False. Read- + /// Only. + [Newtonsoft.Json.JsonPropertyAttribute("locked")] + public virtual System.Nullable Locked { get; set; } + + /// The organizer of the event. If the organizer is also an attendee, this is indicated with a separate + /// entry in attendees with the organizer field set to True. To change the organizer, use the move operation. + /// Read-only, except when importing an event. + [Newtonsoft.Json.JsonPropertyAttribute("organizer")] + public virtual Event.OrganizerData Organizer { get; set; } + + /// For an instance of a recurring event, this is the time at which this event would start according to + /// the recurrence data in the recurring event identified by recurringEventId. Immutable. + [Newtonsoft.Json.JsonPropertyAttribute("originalStartTime")] + public virtual EventDateTime OriginalStartTime { get; set; } + + /// Whether this is a private event copy where changes are not shared with other copies on other + /// calendars. Optional. Immutable. The default is False. + [Newtonsoft.Json.JsonPropertyAttribute("privateCopy")] + public virtual System.Nullable PrivateCopy { get; set; } + + /// List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event, as specified in RFC5545. Note + /// that DTSTART and DTEND lines are not allowed in this field; event start and end times are specified in the + /// start and end fields. This field is omitted for single events or instances of recurring events. + [Newtonsoft.Json.JsonPropertyAttribute("recurrence")] + public virtual System.Collections.Generic.IList Recurrence { get; set; } + + /// For an instance of a recurring event, this is the id of the recurring event to which this instance + /// belongs. Immutable. + [Newtonsoft.Json.JsonPropertyAttribute("recurringEventId")] + public virtual string RecurringEventId { get; set; } + + /// Information about the event's reminders for the authenticated user. + [Newtonsoft.Json.JsonPropertyAttribute("reminders")] + public virtual Event.RemindersData Reminders { get; set; } + + /// Sequence number as per iCalendar. + [Newtonsoft.Json.JsonPropertyAttribute("sequence")] + public virtual System.Nullable Sequence { get; set; } + + /// Source from which the event was created. For example, a web page, an email message or any document + /// identifiable by an URL with HTTP or HTTPS scheme. Can only be seen or modified by the creator of the + /// event. + [Newtonsoft.Json.JsonPropertyAttribute("source")] + public virtual Event.SourceData Source { get; set; } + + /// The (inclusive) start time of the event. For a recurring event, this is the start time of the first + /// instance. + [Newtonsoft.Json.JsonPropertyAttribute("start")] + public virtual EventDateTime Start { get; set; } + + /// Status of the event. Optional. Possible values are: - "confirmed" - The event is confirmed. This is + /// the default status. - "tentative" - The event is tentatively confirmed. - "cancelled" - The event is + /// cancelled. + [Newtonsoft.Json.JsonPropertyAttribute("status")] + public virtual string Status { get; set; } + + /// Title of the event. + [Newtonsoft.Json.JsonPropertyAttribute("summary")] + public virtual string Summary { get; set; } + + /// Whether the event blocks time on the calendar. Optional. Possible values are: - "opaque" - The + /// event blocks time on the calendar. This is the default value. - "transparent" - The event does not block + /// time on the calendar. + [Newtonsoft.Json.JsonPropertyAttribute("transparency")] + public virtual string Transparency { get; set; } + + /// Last modification time of the event (as a RFC3339 timestamp). Read-only. + [Newtonsoft.Json.JsonPropertyAttribute("updated")] + public virtual string UpdatedRaw { get; set; } + + /// representation of . + [Newtonsoft.Json.JsonIgnore] + public virtual System.Nullable Updated + { + get + { + return Google.Apis.Util.Utilities.GetDateTimeFromString(UpdatedRaw); + } + set + { + UpdatedRaw = Google.Apis.Util.Utilities.GetStringFromDateTime(value); + } + } + + /// Visibility of the event. Optional. Possible values are: - "default" - Uses the default visibility + /// for events on the calendar. This is the default value. - "public" - The event is public and event details + /// are visible to all readers of the calendar. - "private" - The event is private and only event attendees may + /// view event details. - "confidential" - The event is private. This value is provided for compatibility + /// reasons. + [Newtonsoft.Json.JsonPropertyAttribute("visibility")] + public virtual string Visibility { get; set; } + + + + /// The creator of the event. Read-only. + public class CreatorData + { + /// The creator's name, if available. + [Newtonsoft.Json.JsonPropertyAttribute("displayName")] + public virtual string DisplayName { get; set; } + + /// The creator's email address, if available. + [Newtonsoft.Json.JsonPropertyAttribute("email")] + public virtual string Email { get; set; } + + /// The creator's Profile ID, if available. It corresponds to theid field in the People collection + /// of the Google+ API + [Newtonsoft.Json.JsonPropertyAttribute("id")] + public virtual string Id { get; set; } + + /// Whether the creator corresponds to the calendar on which this copy of the event appears. Read- + /// only. The default is False. + [Newtonsoft.Json.JsonPropertyAttribute("self")] + public virtual System.Nullable Self { get; set; } + + } + + /// Extended properties of the event. + public class ExtendedPropertiesData + { + /// Properties that are private to the copy of the event that appears on this calendar. + [Newtonsoft.Json.JsonPropertyAttribute("private")] + public virtual System.Collections.Generic.IDictionary Private__ { get; set; } + + /// Properties that are shared between copies of the event on other attendees' calendars. + [Newtonsoft.Json.JsonPropertyAttribute("shared")] + public virtual System.Collections.Generic.IDictionary Shared { get; set; } + + } + + /// A gadget that extends this event. + public class GadgetData + { + /// The gadget's display mode. Optional. Possible values are: - "icon" - The gadget displays next + /// to the event's title in the calendar view. - "chip" - The gadget displays when the event is + /// clicked. + [Newtonsoft.Json.JsonPropertyAttribute("display")] + public virtual string Display { get; set; } + + /// The gadget's height in pixels. The height must be an integer greater than 0. + /// Optional. + [Newtonsoft.Json.JsonPropertyAttribute("height")] + public virtual System.Nullable Height { get; set; } + + /// The gadget's icon URL. The URL scheme must be HTTPS. + [Newtonsoft.Json.JsonPropertyAttribute("iconLink")] + public virtual string IconLink { get; set; } + + /// The gadget's URL. The URL scheme must be HTTPS. + [Newtonsoft.Json.JsonPropertyAttribute("link")] + public virtual string Link { get; set; } + + /// Preferences. + [Newtonsoft.Json.JsonPropertyAttribute("preferences")] + public virtual System.Collections.Generic.IDictionary Preferences { get; set; } + + /// The gadget's title. + [Newtonsoft.Json.JsonPropertyAttribute("title")] + public virtual string Title { get; set; } + + /// The gadget's type. + [Newtonsoft.Json.JsonPropertyAttribute("type")] + public virtual string Type { get; set; } + + /// The gadget's width in pixels. The width must be an integer greater than 0. Optional. + [Newtonsoft.Json.JsonPropertyAttribute("width")] + public virtual System.Nullable Width { get; set; } + + } + + /// The organizer of the event. If the organizer is also an attendee, this is indicated with a separate + /// entry in attendees with the organizer field set to True. To change the organizer, use the move operation. + /// Read-only, except when importing an event. + public class OrganizerData + { + /// The organizer's name, if available. + [Newtonsoft.Json.JsonPropertyAttribute("displayName")] + public virtual string DisplayName { get; set; } + + /// The organizer's email address, if available. It must be a valid email address as per + /// RFC5322. + [Newtonsoft.Json.JsonPropertyAttribute("email")] + public virtual string Email { get; set; } + + /// The organizer's Profile ID, if available. It corresponds to theid field in the People + /// collection of the Google+ API + [Newtonsoft.Json.JsonPropertyAttribute("id")] + public virtual string Id { get; set; } + + /// Whether the organizer corresponds to the calendar on which this copy of the event appears. + /// Read-only. The default is False. + [Newtonsoft.Json.JsonPropertyAttribute("self")] + public virtual System.Nullable Self { get; set; } + + } + + /// Information about the event's reminders for the authenticated user. + public class RemindersData + { + /// If the event doesn't use the default reminders, this lists the reminders specific to the event, + /// or, if not set, indicates that no reminders are set for this event. The maximum number of override + /// reminders is 5. + [Newtonsoft.Json.JsonPropertyAttribute("overrides")] + public virtual System.Collections.Generic.IList Overrides { get; set; } + + /// Whether the default reminders of the calendar apply to the event. + [Newtonsoft.Json.JsonPropertyAttribute("useDefault")] + public virtual System.Nullable UseDefault { get; set; } + + } + + /// Source from which the event was created. For example, a web page, an email message or any document + /// identifiable by an URL with HTTP or HTTPS scheme. Can only be seen or modified by the creator of the + /// event. + public class SourceData + { + /// Title of the source; for example a title of a web page or an email subject. + [Newtonsoft.Json.JsonPropertyAttribute("title")] + public virtual string Title { get; set; } + + /// URL of the source pointing to a resource. The URL scheme must be HTTP or HTTPS. + [Newtonsoft.Json.JsonPropertyAttribute("url")] + public virtual string Url { get; set; } + + } + } + + public class EventAttachment : Google.Apis.Requests.IDirectResponseSchema + { + /// ID of the attached file. Read-only. For Google Drive files, this is the ID of the corresponding + /// Files resource entry in the Drive API. + [Newtonsoft.Json.JsonPropertyAttribute("fileId")] + public virtual string FileId { get; set; } + + /// URL link to the attachment. For adding Google Drive file attachments use the same format as in + /// alternateLink property of the Files resource in the Drive API. + [Newtonsoft.Json.JsonPropertyAttribute("fileUrl")] + public virtual string FileUrl { get; set; } + + /// URL link to the attachment's icon. Read-only. + [Newtonsoft.Json.JsonPropertyAttribute("iconLink")] + public virtual string IconLink { get; set; } + + /// Internet media type (MIME type) of the attachment. + [Newtonsoft.Json.JsonPropertyAttribute("mimeType")] + public virtual string MimeType { get; set; } + + /// Attachment title. + [Newtonsoft.Json.JsonPropertyAttribute("title")] + public virtual string Title { get; set; } + + /// The ETag of the item. + public virtual string ETag { get; set; } + } + + public class EventAttendee : Google.Apis.Requests.IDirectResponseSchema + { + /// Number of additional guests. Optional. The default is 0. + [Newtonsoft.Json.JsonPropertyAttribute("additionalGuests")] + public virtual System.Nullable AdditionalGuests { get; set; } + + /// The attendee's response comment. Optional. + [Newtonsoft.Json.JsonPropertyAttribute("comment")] + public virtual string Comment { get; set; } + + /// The attendee's name, if available. Optional. + [Newtonsoft.Json.JsonPropertyAttribute("displayName")] + public virtual string DisplayName { get; set; } + + /// The attendee's email address, if available. This field must be present when adding an attendee. It + /// must be a valid email address as per RFC5322. + [Newtonsoft.Json.JsonPropertyAttribute("email")] + public virtual string Email { get; set; } + + /// The attendee's Profile ID, if available. It corresponds to theid field in the People collection of + /// the Google+ API + [Newtonsoft.Json.JsonPropertyAttribute("id")] + public virtual string Id { get; set; } + + /// Whether this is an optional attendee. Optional. The default is False. + [Newtonsoft.Json.JsonPropertyAttribute("optional")] + public virtual System.Nullable Optional { get; set; } + + /// Whether the attendee is the organizer of the event. Read-only. The default is False. + [Newtonsoft.Json.JsonPropertyAttribute("organizer")] + public virtual System.Nullable Organizer { get; set; } + + /// Whether the attendee is a resource. Read-only. The default is False. + [Newtonsoft.Json.JsonPropertyAttribute("resource")] + public virtual System.Nullable Resource { get; set; } + + /// The attendee's response status. Possible values are: - "needsAction" - The attendee has not + /// responded to the invitation. - "declined" - The attendee has declined the invitation. - "tentative" - The + /// attendee has tentatively accepted the invitation. - "accepted" - The attendee has accepted the + /// invitation. + [Newtonsoft.Json.JsonPropertyAttribute("responseStatus")] + public virtual string ResponseStatus { get; set; } + + /// Whether this entry represents the calendar on which this copy of the event appears. Read-only. The + /// default is False. + [Newtonsoft.Json.JsonPropertyAttribute("self")] + public virtual System.Nullable Self { get; set; } + + /// The ETag of the item. + public virtual string ETag { get; set; } + } + + public class EventDateTime : Google.Apis.Requests.IDirectResponseSchema + { + /// The date, in the format "yyyy-mm-dd", if this is an all-day event. + [Newtonsoft.Json.JsonPropertyAttribute("date")] + public virtual string Date { get; set; } + + /// The time, as a combined date-time value (formatted according to RFC3339). A time zone offset is + /// required unless a time zone is explicitly specified in timeZone. + [Newtonsoft.Json.JsonPropertyAttribute("dateTime")] + public virtual string DateTimeRaw { get; set; } + + /// representation of . + [Newtonsoft.Json.JsonIgnore] + public virtual System.Nullable DateTime + { + get + { + return Google.Apis.Util.Utilities.GetDateTimeFromString(DateTimeRaw); + } + set + { + DateTimeRaw = Google.Apis.Util.Utilities.GetStringFromDateTime(value); + } + } + + /// The time zone in which the time is specified. (Formatted as an IANA Time Zone Database name, e.g. + /// "Europe/Zurich".) For recurring events this field is required and specifies the time zone in which the + /// recurrence is expanded. For single events this field is optional and indicates a custom time zone for the + /// event start/end. + [Newtonsoft.Json.JsonPropertyAttribute("timeZone")] + public virtual string TimeZone { get; set; } + + /// The ETag of the item. + public virtual string ETag { get; set; } + } + + public class EventHabitInstance : Google.Apis.Requests.IDirectResponseSchema + { + /// Metadata specific to this instance. + [Newtonsoft.Json.JsonPropertyAttribute("data")] + public virtual HabitInstanceData Data { get; set; } + + /// Id of the habit this instance belongs to. + [Newtonsoft.Json.JsonPropertyAttribute("parentId")] + public virtual string ParentId { get; set; } + + /// The ETag of the item. + public virtual string ETag { get; set; } + } + + public class EventReminder : Google.Apis.Requests.IDirectResponseSchema + { + /// The method used by this reminder. Possible values are: - "email" - Reminders are sent via email. - + /// "sms" - Reminders are sent via SMS. These are only available for G Suite customers. Requests to set SMS + /// reminders for other account types are ignored. - "popup" - Reminders are sent via a UI popup. + [Newtonsoft.Json.JsonPropertyAttribute("method")] + public virtual string Method { get; set; } + + /// Number of minutes before the start of the event when the reminder should trigger. Valid values are + /// between 0 and 40320 (4 weeks in minutes). + [Newtonsoft.Json.JsonPropertyAttribute("minutes")] + public virtual System.Nullable Minutes { get; set; } + + /// The ETag of the item. + public virtual string ETag { get; set; } + } + + public class Events : Google.Apis.Requests.IDirectResponseSchema + { + /// The user's access role for this calendar. Read-only. Possible values are: - "none" - The user has + /// no access. - "freeBusyReader" - The user has read access to free/busy information. - "reader" - The user has + /// read access to the calendar. Private events will appear to users with reader access, but event details will + /// be hidden. - "writer" - The user has read and write access to the calendar. Private events will appear to + /// users with writer access, and event details will be visible. - "owner" - The user has ownership of the + /// calendar. This role has all of the permissions of the writer role with the additional ability to see and + /// manipulate ACLs. + [Newtonsoft.Json.JsonPropertyAttribute("accessRole")] + public virtual string AccessRole { get; set; } + + /// The default reminders on the calendar for the authenticated user. These reminders apply to all + /// events on this calendar that do not explicitly override them (i.e. do not have reminders.useDefault set to + /// True). + [Newtonsoft.Json.JsonPropertyAttribute("defaultReminders")] + public virtual System.Collections.Generic.IList DefaultReminders { get; set; } + + /// Description of the calendar. Read-only. + [Newtonsoft.Json.JsonPropertyAttribute("description")] + public virtual string Description { get; set; } + + /// ETag of the collection. + [Newtonsoft.Json.JsonPropertyAttribute("etag")] + public virtual string ETag { get; set; } + + /// List of events on the calendar. + [Newtonsoft.Json.JsonPropertyAttribute("items")] + public virtual System.Collections.Generic.IList Items { get; set; } + + /// Type of the collection ("calendar#events"). + [Newtonsoft.Json.JsonPropertyAttribute("kind")] + public virtual string Kind { get; set; } + + /// Token used to access the next page of this result. Omitted if no further results are available, in + /// which case nextSyncToken is provided. + [Newtonsoft.Json.JsonPropertyAttribute("nextPageToken")] + public virtual string NextPageToken { get; set; } + + /// Token used at a later point in time to retrieve only the entries that have changed since this + /// result was returned. Omitted if further results are available, in which case nextPageToken is + /// provided. + [Newtonsoft.Json.JsonPropertyAttribute("nextSyncToken")] + public virtual string NextSyncToken { get; set; } + + /// Title of the calendar. Read-only. + [Newtonsoft.Json.JsonPropertyAttribute("summary")] + public virtual string Summary { get; set; } + + /// The time zone of the calendar. Read-only. + [Newtonsoft.Json.JsonPropertyAttribute("timeZone")] + public virtual string TimeZone { get; set; } + + /// Last modification time of the calendar (as a RFC3339 timestamp). Read-only. + [Newtonsoft.Json.JsonPropertyAttribute("updated")] + public virtual string UpdatedRaw { get; set; } + + /// representation of . + [Newtonsoft.Json.JsonIgnore] + public virtual System.Nullable Updated + { + get + { + return Google.Apis.Util.Utilities.GetDateTimeFromString(UpdatedRaw); + } + set + { + UpdatedRaw = Google.Apis.Util.Utilities.GetStringFromDateTime(value); + } + } + + } + + public class FreeBusyCalendar : Google.Apis.Requests.IDirectResponseSchema + { + /// List of time ranges during which this calendar should be regarded as busy. + [Newtonsoft.Json.JsonPropertyAttribute("busy")] + public virtual System.Collections.Generic.IList Busy { get; set; } + + /// Optional error(s) (if computation for the calendar failed). + [Newtonsoft.Json.JsonPropertyAttribute("errors")] + public virtual System.Collections.Generic.IList Errors { get; set; } + + /// The ETag of the item. + public virtual string ETag { get; set; } + } + + public class FreeBusyGroup : Google.Apis.Requests.IDirectResponseSchema + { + /// List of calendars' identifiers within a group. + [Newtonsoft.Json.JsonPropertyAttribute("calendars")] + public virtual System.Collections.Generic.IList Calendars { get; set; } + + /// Optional error(s) (if computation for the group failed). + [Newtonsoft.Json.JsonPropertyAttribute("errors")] + public virtual System.Collections.Generic.IList Errors { get; set; } + + /// The ETag of the item. + public virtual string ETag { get; set; } + } + + public class FreeBusyRequest : Google.Apis.Requests.IDirectResponseSchema + { + /// Maximal number of calendars for which FreeBusy information is to be provided. Optional. + [Newtonsoft.Json.JsonPropertyAttribute("calendarExpansionMax")] + public virtual System.Nullable CalendarExpansionMax { get; set; } + + /// Maximal number of calendar identifiers to be provided for a single group. Optional. An error will + /// be returned for a group with more members than this value. + [Newtonsoft.Json.JsonPropertyAttribute("groupExpansionMax")] + public virtual System.Nullable GroupExpansionMax { get; set; } + + /// List of calendars and/or groups to query. + [Newtonsoft.Json.JsonPropertyAttribute("items")] + public virtual System.Collections.Generic.IList Items { get; set; } + + /// The end of the interval for the query. + [Newtonsoft.Json.JsonPropertyAttribute("timeMax")] + public virtual string TimeMaxRaw { get; set; } + + /// representation of . + [Newtonsoft.Json.JsonIgnore] + public virtual System.Nullable TimeMax + { + get + { + return Google.Apis.Util.Utilities.GetDateTimeFromString(TimeMaxRaw); + } + set + { + TimeMaxRaw = Google.Apis.Util.Utilities.GetStringFromDateTime(value); + } + } + + /// The start of the interval for the query. + [Newtonsoft.Json.JsonPropertyAttribute("timeMin")] + public virtual string TimeMinRaw { get; set; } + + /// representation of . + [Newtonsoft.Json.JsonIgnore] + public virtual System.Nullable TimeMin + { + get + { + return Google.Apis.Util.Utilities.GetDateTimeFromString(TimeMinRaw); + } + set + { + TimeMinRaw = Google.Apis.Util.Utilities.GetStringFromDateTime(value); + } + } + + /// Time zone used in the response. Optional. The default is UTC. + [Newtonsoft.Json.JsonPropertyAttribute("timeZone")] + public virtual string TimeZone { get; set; } + + /// The ETag of the item. + public virtual string ETag { get; set; } + } + + public class FreeBusyRequestItem : Google.Apis.Requests.IDirectResponseSchema + { + /// The identifier of a calendar or a group. + [Newtonsoft.Json.JsonPropertyAttribute("id")] + public virtual string Id { get; set; } + + /// The ETag of the item. + public virtual string ETag { get; set; } + } + + public class FreeBusyResponse : Google.Apis.Requests.IDirectResponseSchema + { + /// List of free/busy information for calendars. + [Newtonsoft.Json.JsonPropertyAttribute("calendars")] + public virtual System.Collections.Generic.IDictionary Calendars { get; set; } + + /// Expansion of groups. + [Newtonsoft.Json.JsonPropertyAttribute("groups")] + public virtual System.Collections.Generic.IDictionary Groups { get; set; } + + /// Type of the resource ("calendar#freeBusy"). + [Newtonsoft.Json.JsonPropertyAttribute("kind")] + public virtual string Kind { get; set; } + + /// The end of the interval. + [Newtonsoft.Json.JsonPropertyAttribute("timeMax")] + public virtual string TimeMaxRaw { get; set; } + + /// representation of . + [Newtonsoft.Json.JsonIgnore] + public virtual System.Nullable TimeMax + { + get + { + return Google.Apis.Util.Utilities.GetDateTimeFromString(TimeMaxRaw); + } + set + { + TimeMaxRaw = Google.Apis.Util.Utilities.GetStringFromDateTime(value); + } + } + + /// The start of the interval. + [Newtonsoft.Json.JsonPropertyAttribute("timeMin")] + public virtual string TimeMinRaw { get; set; } + + /// representation of . + [Newtonsoft.Json.JsonIgnore] + public virtual System.Nullable TimeMin + { + get + { + return Google.Apis.Util.Utilities.GetDateTimeFromString(TimeMinRaw); + } + set + { + TimeMinRaw = Google.Apis.Util.Utilities.GetStringFromDateTime(value); + } + } + + /// The ETag of the item. + public virtual string ETag { get; set; } + } + + public class HabitInstanceData : Google.Apis.Requests.IDirectResponseSchema + { + [Newtonsoft.Json.JsonPropertyAttribute("status")] + public virtual string Status { get; set; } + + [Newtonsoft.Json.JsonPropertyAttribute("statusInferred")] + public virtual System.Nullable StatusInferred { get; set; } + + [Newtonsoft.Json.JsonPropertyAttribute("type")] + public virtual string Type { get; set; } + + /// The ETag of the item. + public virtual string ETag { get; set; } + } + + public class LaunchInfo : Google.Apis.Requests.IDirectResponseSchema + { + [Newtonsoft.Json.JsonPropertyAttribute("appId")] + public virtual string AppId { get; set; } + + [Newtonsoft.Json.JsonPropertyAttribute("installUrl")] + public virtual string InstallUrl { get; set; } + + [Newtonsoft.Json.JsonPropertyAttribute("intentAction")] + public virtual string IntentAction { get; set; } + + [Newtonsoft.Json.JsonPropertyAttribute("uri")] + public virtual string Uri { get; set; } + + /// The ETag of the item. + public virtual string ETag { get; set; } + } + + public class Link : Google.Apis.Requests.IDirectResponseSchema + { + [Newtonsoft.Json.JsonPropertyAttribute("applinkingSource")] + public virtual string ApplinkingSource { get; set; } + + [Newtonsoft.Json.JsonPropertyAttribute("displayInfo")] + public virtual DisplayInfo DisplayInfo { get; set; } + + [Newtonsoft.Json.JsonPropertyAttribute("launchInfo")] + public virtual LaunchInfo LaunchInfo { get; set; } + + [Newtonsoft.Json.JsonPropertyAttribute("platform")] + public virtual string Platform { get; set; } + + [Newtonsoft.Json.JsonPropertyAttribute("url")] + public virtual string Url { get; set; } + + /// The ETag of the item. + public virtual string ETag { get; set; } + } + + public class Setting : Google.Apis.Requests.IDirectResponseSchema + { + /// ETag of the resource. + [Newtonsoft.Json.JsonPropertyAttribute("etag")] + public virtual string ETag { get; set; } + + /// The id of the user setting. + [Newtonsoft.Json.JsonPropertyAttribute("id")] + public virtual string Id { get; set; } + + /// Type of the resource ("calendar#setting"). + [Newtonsoft.Json.JsonPropertyAttribute("kind")] + public virtual string Kind { get; set; } + + /// Value of the user setting. The format of the value depends on the ID of the setting. It must always + /// be a UTF-8 string of length up to 1024 characters. + [Newtonsoft.Json.JsonPropertyAttribute("value")] + public virtual string Value { get; set; } + + } + + public class Settings : Google.Apis.Requests.IDirectResponseSchema + { + /// Etag of the collection. + [Newtonsoft.Json.JsonPropertyAttribute("etag")] + public virtual string ETag { get; set; } + + /// List of user settings. + [Newtonsoft.Json.JsonPropertyAttribute("items")] + public virtual System.Collections.Generic.IList Items { get; set; } + + /// Type of the collection ("calendar#settings"). + [Newtonsoft.Json.JsonPropertyAttribute("kind")] + public virtual string Kind { get; set; } + + /// Token used to access the next page of this result. Omitted if no further results are available, in + /// which case nextSyncToken is provided. + [Newtonsoft.Json.JsonPropertyAttribute("nextPageToken")] + public virtual string NextPageToken { get; set; } + + /// Token used at a later point in time to retrieve only the entries that have changed since this + /// result was returned. Omitted if further results are available, in which case nextPageToken is + /// provided. + [Newtonsoft.Json.JsonPropertyAttribute("nextSyncToken")] + public virtual string NextSyncToken { get; set; } + + } + + public class TimePeriod : Google.Apis.Requests.IDirectResponseSchema + { + /// The (exclusive) end of the time period. + [Newtonsoft.Json.JsonPropertyAttribute("end")] + public virtual string EndRaw { get; set; } + + /// representation of . + [Newtonsoft.Json.JsonIgnore] + public virtual System.Nullable End + { + get + { + return Google.Apis.Util.Utilities.GetDateTimeFromString(EndRaw); + } + set + { + EndRaw = Google.Apis.Util.Utilities.GetStringFromDateTime(value); + } + } + + /// The (inclusive) start of the time period. + [Newtonsoft.Json.JsonPropertyAttribute("start")] + public virtual string StartRaw { get; set; } + + /// representation of . + [Newtonsoft.Json.JsonIgnore] + public virtual System.Nullable Start + { + get + { + return Google.Apis.Util.Utilities.GetDateTimeFromString(StartRaw); + } + set + { + StartRaw = Google.Apis.Util.Utilities.GetStringFromDateTime(value); + } + } + + /// The ETag of the item. + public virtual string ETag { get; set; } + } +} diff --git a/Yavsc/Services/ICalendarManager.cs b/Yavsc/Services/ICalendarManager.cs index 5f025437..0bee2597 100644 --- a/Yavsc/Services/ICalendarManager.cs +++ b/Yavsc/Services/ICalendarManager.cs @@ -20,25 +20,23 @@ // along with this program. If not, see . using System; +using Google.Apis.Calendar.v3.Data; -namespace Yavsc.Models.Calendar +namespace Yavsc.Services { using System.Threading.Tasks; - using Yavsc.Models.Google.Calendar; - using Yavsc.Models.Google; using Yavsc.ViewModels.Calendar; - /// /// I calendar manager. /// public interface ICalendarManager { Task GetCalendarsAsync (string userId); - Task GetCalendarAsync (string calid, DateTime mindate, DateTime maxdate); + Task GetCalendarAsync (string calid, DateTime mindate, DateTime maxdate); Task CreateViewModelAsync( string inputId, string calid, DateTime mindate, DateTime maxdate); - Task CreateResourceAsync(string calid, + Task CreateEventAsync(string calid, DateTime startDate, int lengthInSeconds, string summary, string description, string location, bool available); } diff --git a/Yavsc/Startup/Startup.cs b/Yavsc/Startup/Startup.cs index a31772de..10028b0f 100755 --- a/Yavsc/Startup/Startup.cs +++ b/Yavsc/Startup/Startup.cs @@ -32,8 +32,6 @@ namespace Yavsc using PayPal.Manager; using Services; using ViewModels.Auth.Handlers; - using Yavsc.Models.Calendar; - using Yavsc.Models.Google.Calendar; using static System.Environment; public partial class Startup diff --git a/Yavsc/ViewComponents/CalendarViewComponent.cs b/Yavsc/ViewComponents/CalendarViewComponent.cs index 6f1e71af..74385fe9 100644 --- a/Yavsc/ViewComponents/CalendarViewComponent.cs +++ b/Yavsc/ViewComponents/CalendarViewComponent.cs @@ -2,7 +2,7 @@ using System; using System.Threading.Tasks; using Microsoft.AspNet.Mvc; using Yavsc.Models; -using Yavsc.Models.Calendar; +using Yavsc.Services; namespace Yavsc.ViewComponents { diff --git a/Yavsc/Views/Manage/SetGoogleCalendar.cshtml b/Yavsc/Views/Manage/SetGoogleCalendar.cshtml index bc93a6ca..0c2256cc 100644 --- a/Yavsc/Views/Manage/SetGoogleCalendar.cshtml +++ b/Yavsc/Views/Manage/SetGoogleCalendar.cshtml @@ -9,8 +9,9 @@ { entryNum++; @if (calendar.accessRole=="owner") { +