{
  "paths" : {
    "/v1/calendars/freeBusy" : {
      "post" : {
        "operationId" : "freeBusy",
        "tags" : [ "FreeBusySchedule" ],
        "summary" : "Get the free/busy availability information for a collection of users, or resources",
        "description" : "Account primary calendar is always in count, only primary calendar of an emails are in count",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/FreeBusyRequest"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/FreeBusySchedulePage"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -H 'Authorization: Bearer <access token>' \\\n    -X POST https://api.aurinko.io/v1/calendars/freeBusy \\\n    -d '{\n        \"timeMin\": \"2020-02-03T10:00:00-07:00\",\n        \"timeMax\": \"2020-06-03T10:00:00-07:00\",\n        \"emails\": [\"user1@corp.com\",\"user2@corp.com\"]\n       }'"
        } ]
      }
    },
    "/v1/calendars/suggestMeetingTimes" : {
      "post" : {
        "operationId" : "suggestMeetingTimes",
        "tags" : [ "FreeBusySchedule" ],
        "summary" : "Suggest meeting times for a collection of users, or resources",
        "description" : "Account primary calendar is always in count, only primary calendar of an attendees are in count\n",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/SuggestMeetingTimesRequest"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SuggestMeetingTimesResponse"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -H 'Authorization: Bearer <access token>' \\\n    -X POST https://api.aurinko.io/v1/calendars/suggestMeetingTimes \\\n    -d '{\n        \"timeMin\": \"2020-02-03T10:00:00-07:00\",\n        \"timeMax\": \"2020-06-03T10:00:00-07:00\",\n        \"durationMinutes\": 45,\n        \"attendees\": [\n            {\"email\": \"user1@corp.com\"},\n            {\"email\": \"user2@corp.com\"}\n        ],\n        \"defaultTimezone\": \"America/New_York\"\n       }'"
        } ]
      }
    },
    "/v1/calendars" : {
      "get" : {
        "operationId" : "calendars",
        "tags" : [ "Calendars" ],
        "summary" : "Request list of calendars",
        "parameters" : [ {
          "in" : "query",
          "name" : "pageToken",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "A token received as nextPageToken from a previous page request (for the first page it must be empty)"
        }, {
          "in" : "query",
          "name" : "withShared",
          "required" : false,
          "schema" : {
            "type" : "boolean",
            "nullable" : true,
            "default" : false
          },
          "description" : "Shows shared calendars if any available"
        }, {
          "in" : "query",
          "name" : "mode",
          "required" : false,
          "schema" : {
            "type" : "calendarmode.calendarmode",
            "nullable" : true,
            "$ref" : "#/components/schemas/CalendarMode"
          },
          "description" : "Calendar type to request (make sense only for Office365)"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CalendarsPage"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -H 'Authorization: Bearer <access token>' \\\n    -X GET https://api.aurinko.io/v1/calendars"
        } ]
      },
      "post" : {
        "operationId" : "createCalendar",
        "tags" : [ "Calendars" ],
        "summary" : "Create new calendar",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CalendarCreate"
              }
            }
          }
        },
        "responses" : {
          "201" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Calendar"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -H 'Authorization: Bearer <access token>' \\\n    -X POST https://api.aurinko.io/v1/calendars \\\n    -d '{ \"name\": \"New calendar\" }'"
        } ]
      }
    },
    "/v1/calendars/{id}" : {
      "get" : {
        "operationId" : "calendarById",
        "tags" : [ "Calendars" ],
        "summary" : "Get a calendar",
        "parameters" : [ {
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "Calendar id"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Calendar"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -H 'Authorization: Bearer <access token>' \\\n    -X GET https://api.aurinko.io/v1/calendars/primary"
        } ]
      },
      "patch" : {
        "operationId" : "updateCalendar",
        "tags" : [ "Calendars" ],
        "summary" : "Update a calendar",
        "parameters" : [ {
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "Calendar id"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CalendarUpdate"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Calendar"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -H 'Authorization: Bearer <access token>' \\\n    -X PATCH https://api.aurinko.io/v1/calendars/{calendarId} \\\n    -d '{ \"name\": \"Updated calendar\" }'"
        } ]
      }
    },
    "/v1/calendars/{calendarId}/sync" : {
      "post" : {
        "operationId" : "calSyncStart",
        "tags" : [ "CalSync" ],
        "summary" : "Start a new calendar sync",
        "parameters" : [ {
          "in" : "path",
          "name" : "calendarId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "Calendar id"
        }, {
          "in" : "query",
          "name" : "timeMin",
          "schema" : {
            "type" : "string",
            "format" : "date-time"
          },
          "required" : true,
          "description" : "Lower bound (exclusive) for an event's end time to filter by. Must be an RFC3339 timestamp with mandatory time zone offset, for example, 2011-06-03T10:00:00-07:00, 2011-06-03T10:00:00Z. If timeMax is set, timeMin must be smaller than timeMax.\n"
        }, {
          "in" : "query",
          "name" : "timeMax",
          "schema" : {
            "type" : "string",
            "format" : "date-time"
          },
          "required" : true,
          "description" : "Upper bound (exclusive) for an event's start time to filter by. Must be an RFC3339 timestamp with mandatory time zone offset, for example, 2011-06-03T10:00:00-07:00, 2011-06-03T10:00:00Z. Milliseconds may be provided but are ignored. If timeMin is set, timeMax must be greater than timeMin.\n"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SyncStatus"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X POST -H 'Authorization: Bearer <access token>' \\\n    -G https://api.aurinko.io/v1/calendars/primary/sync \\\n    -d timeMin=2019-06-03T10:00:00-07:00 \\\n    -d timeMax=2020-06-03T10:00:00-07:00"
        } ]
      }
    },
    "/v1/calendars/{calendarId}/sync/updated" : {
      "get" : {
        "operationId" : "calSyncUpdated",
        "tags" : [ "CalSync" ],
        "summary" : "Request changed events (deltas)",
        "parameters" : [ {
          "in" : "path",
          "name" : "calendarId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "Calendar id"
        }, {
          "in" : "query",
          "name" : "deltaToken",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "A token received as nextDeltaToken from a previous sync request or a start sync request"
        }, {
          "in" : "query",
          "name" : "pageToken",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "A token received as nextPageToken from a previous page request"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EventsPage"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "410" : {
            "$ref" : "#/components/responses/ResourceExpiredError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X GET -H 'Authorization: Bearer <access token>' \\\n    -G https://api.aurinko.io/v1/calendars/primary/sync/updated \\\n    -d deltaToken='a8b7c6d5e4f3g2h1'"
        } ]
      }
    },
    "/v1/calendars/{calendarId}/sync/deleted" : {
      "get" : {
        "operationId" : "calSyncDeleted",
        "tags" : [ "CalSync" ],
        "summary" : "Request deleted events (deltas)",
        "parameters" : [ {
          "in" : "path",
          "name" : "calendarId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "Calendar id"
        }, {
          "in" : "query",
          "name" : "deltaToken",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "A token received as nextDeltaToken from a previous sync request or a start sync request"
        }, {
          "in" : "query",
          "name" : "pageToken",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "A token received as nextPageToken from a previous page request"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DeletedPage"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "410" : {
            "$ref" : "#/components/responses/ResourceExpiredError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X GET -H 'Authorization: Bearer <access token>' \\\n    -G https://api.aurinko.io/v1/calendars/primary/sync/deleted \\\n    -d deltaToken='a8b7c6d5e4f3g2h1'"
        } ]
      }
    },
    "/v1/calendars/{calendarId}/freeBusy" : {
      "post" : {
        "operationId" : "calendarFreeBusy",
        "tags" : [ "FreeBusySchedule" ],
        "summary" : "Get the free/busy availability information for a calendar",
        "parameters" : [ {
          "in" : "path",
          "name" : "calendarId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "Calendar id"
        }, {
          "in" : "query",
          "name" : "pageToken",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "A token received as nextPageToken from a previous page request"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CalendarFreeBusyRequest"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CalendarFreeBusyItemPage"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -H 'Authorization: Bearer <access token>' \\\n    -X POST https://api.aurinko.io/v1/calendars/{calendarId}/freeBusy \\\n    -d '{\n        \"timeMin\": \"2020-02-03T10:00:00-07:00\",\n        \"timeMax\": \"2020-06-03T10:00:00-07:00\"\n       }'"
        } ]
      }
    },
    "/v1/calendars/{calendarId}/availableTimes" : {
      "post" : {
        "operationId" : "calendarAvailableTimes",
        "tags" : [ "FreeBusySchedule" ],
        "summary" : "Get available times for a calendar",
        "parameters" : [ {
          "in" : "path",
          "name" : "calendarId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "Calendar id"
        }, {
          "in" : "query",
          "name" : "pageToken",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "A token received as nextPageToken from a previous page request"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CalendarAvailableTimesRequest"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CalendarAvailableTimesResponse"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -H 'Authorization: Bearer <access token>' \\\n    -X POST https://api.aurinko.io/v1/calendars/{calendarId}/suggestMeetingTimes \\\n    -d '{\n        \"timeMin\": \"2020-02-03T10:00:00-07:00\",\n        \"timeMax\": \"2020-06-03T10:00:00-07:00\",\n        \"durationMinutes\": 45,\n        \"defaultTimezone\": \"America/New_York\"\n       }'"
        } ]
      }
    },
    "/v1/calendars/{calendarId}/events/range" : {
      "get" : {
        "operationId" : "range",
        "tags" : [ "Events" ],
        "summary" : "Request events in a range",
        "parameters" : [ {
          "in" : "path",
          "name" : "calendarId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "Calendar id"
        }, {
          "in" : "query",
          "name" : "timeMin",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "date-time"
          },
          "description" : "Lower bound (exclusive) for an event's end time to filter by. Must be an RFC3339 timestamp with mandatory time zone offset, for example, 2011-06-03T10:00:00-07:00, 2011-06-03T10:00:00Z. If timeMax is set, timeMin must be smaller than timeMax.\n"
        }, {
          "in" : "query",
          "name" : "timeMax",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "date-time"
          },
          "description" : "Upper bound (exclusive) for an event's start time to filter by. Must be an RFC3339 timestamp with mandatory time zone offset, for example, 2011-06-03T10:00:00-07:00, 2011-06-03T10:00:00Z. Milliseconds may be provided but are ignored. If timeMin is set, timeMax must be greater than timeMin.\n"
        }, {
          "in" : "query",
          "name" : "pageToken",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EventsPageNext"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X GET -H 'Authorization: Bearer <access token>' \\\n    -G https://api.aurinko.io/v1/calendars/primary/events/range \\\n    -d timeMin=2019-06-03T10:00:00-07:00 \\\n    -d timeMax=2020-06-03T10:00:00-07:00"
        } ]
      }
    },
    "/v1/calendars/{calendarId}/events/find" : {
      "get" : {
        "operationId" : "eventsByICalUIds",
        "tags" : [ "Events" ],
        "summary" : "Request events by ICalUid's",
        "parameters" : [ {
          "in" : "path",
          "name" : "calendarId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "Calendar id"
        }, {
          "in" : "query",
          "name" : "iCalUId",
          "required" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "description" : "Find all events that match specified ICalUid's\n"
        }, {
          "in" : "query",
          "name" : "pageToken",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EventsPageNext"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X GET -H 'Authorization: Bearer <access token>' \\\n    -G https://api.aurinko.io/v1/calendars/primary/events/find \\\n    -d ICalUid=ABCID1 \\\n    -d ICalUid=XYZID2"
        } ]
      }
    },
    "/v1/calendars/{calendarId}/events/{eventId}" : {
      "get" : {
        "operationId" : "event",
        "tags" : [ "Events" ],
        "summary" : "Get an event",
        "parameters" : [ {
          "in" : "path",
          "name" : "calendarId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "Calendar id"
        }, {
          "in" : "path",
          "name" : "eventId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "Event id"
        }, {
          "in" : "query",
          "name" : "nativeProperties",
          "required" : false,
          "schema" : {
            "type" : "array",
            "nullable" : true,
            "items" : {
              "type" : "nativeproperty",
              "$ref" : "#/components/schemas/NativeProperty"
            }
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Event"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X GET -H 'Authorization: Bearer <access token>' \\\n    https://api.aurinko.io/v1/calendars/primary/events/{id}"
        } ]
      },
      "patch" : {
        "operationId" : "updateEvent",
        "tags" : [ "Events" ],
        "summary" : "Update an event",
        "parameters" : [ {
          "in" : "path",
          "name" : "calendarId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "Calendar id"
        }, {
          "in" : "path",
          "name" : "eventId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "Event id"
        }, {
          "in" : "query",
          "name" : "notifyAttendees",
          "required" : false,
          "schema" : {
            "type" : "boolean",
            "nullable" : true,
            "default" : true
          }
        }, {
          "in" : "query",
          "name" : "returnRecord",
          "required" : false,
          "schema" : {
            "type" : "boolean",
            "nullable" : true,
            "default" : true
          },
          "description" : "Whether response must contain a record that has been updated. This can result in an additional request to provider API."
        }, {
          "in" : "header",
          "name" : "If-Match",
          "schema" : {
            "type" : "string"
          },
          "required" : true,
          "description" : "The HTTP entity tag of the resource (ETag). Used for web cache validation."
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/Event"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EventOrId"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -H 'Authorization: Bearer <access token>' \\\n    -X PATCH https://api.aurinko.io/v1/calendars/primary/events/{eventId}?notifyAttendees=true \\\n    -d '{\n        \"subject\": \"Business lunch\",\n        \"location\": \"Another cool place\",\n        \"start\": {\n            \"dateTime\": \"2020-02-05T10:00:00Z\",\n            \"timezone\": \"America/Los_Angeles\"\n        },\n        \"end\": {\n            \"dateTime\": \"2020-02-05T11:00:00Z\",\n            \"timezone\": \"America/Los_Angeles\"\n        },\n        \"meetingInfo\": {\n            \"attendees\": [\n                {\n                    \"emailAddress\": {\"address\": \"partner@example.com\"},\n                    \"type\": \"required\"\n                }\n            ]\n        }\n       }'"
        } ]
      },
      "delete" : {
        "operationId" : "deleteEvent",
        "tags" : [ "Events" ],
        "summary" : "Delete an event",
        "parameters" : [ {
          "in" : "path",
          "name" : "calendarId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "Calendar id"
        }, {
          "in" : "path",
          "name" : "eventId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "Event id"
        }, {
          "in" : "query",
          "name" : "notifyAttendees",
          "required" : false,
          "schema" : {
            "type" : "boolean",
            "nullable" : true,
            "default" : true
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X DELETE -H 'Authorization: Bearer <access token>' \\\n    https://api.aurinko.io/v1/calendars/primary/events/<eventId>"
        } ]
      }
    },
    "/v1/calendars/{calendarId}/events/{masterId}/series" : {
      "get" : {
        "operationId" : "seriesInfo",
        "tags" : [ "Events" ],
        "summary" : "Request a series description",
        "parameters" : [ {
          "in" : "path",
          "name" : "calendarId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "Calendar id"
        }, {
          "in" : "path",
          "name" : "masterId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "Master event id"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SeriesInfo"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X GET -H 'Authorization: Bearer <access token>' \\\n    https://api.aurinko.io/v1/calendars/primary/events/{masterId}/series"
        } ]
      }
    },
    "/v1/calendars/{calendarId}/events/{masterId}/occurrences/{ost}" : {
      "get" : {
        "operationId" : "occurrenceByOrigStart",
        "tags" : [ "Events" ],
        "summary" : "Request an occurrence by original start time",
        "parameters" : [ {
          "in" : "path",
          "name" : "calendarId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "Calendar id"
        }, {
          "in" : "path",
          "name" : "masterId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "Master event id"
        }, {
          "in" : "path",
          "name" : "ost",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "datetime"
          },
          "description" : "Original start time"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Event"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X GET -H 'Authorization: Bearer <access token>' \\\n    https://api.aurinko.io/v1/calendars/primary/events/{masterId}/occurrences/2020-04-01"
        } ]
      }
    },
    "/v1/calendars/{calendarId}/events" : {
      "post" : {
        "operationId" : "createEvent",
        "tags" : [ "Events" ],
        "summary" : "Create a new event",
        "parameters" : [ {
          "in" : "path",
          "name" : "calendarId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "Calendar id"
        }, {
          "in" : "query",
          "name" : "notifyAttendees",
          "required" : false,
          "schema" : {
            "type" : "boolean",
            "nullable" : true,
            "default" : true
          }
        }, {
          "in" : "query",
          "name" : "bodyType",
          "required" : false,
          "schema" : {
            "type" : "bodytype",
            "nullable" : true,
            "$ref" : "#/components/schemas/BodyType"
          }
        }, {
          "in" : "query",
          "name" : "returnRecord",
          "required" : false,
          "schema" : {
            "type" : "boolean",
            "nullable" : true,
            "default" : true
          },
          "description" : "Whether response must contain a record that has been created. This can result in an additional request to provider API."
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/Event"
              }
            }
          }
        },
        "responses" : {
          "201" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EventOrId"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -H 'Authorization: Bearer <access token>' \\\n    -X POST https://api.aurinko.io/v1/calendars/primary/events \\\n    -d '{\n        \"subject\": \"Business lunch\",\n        \"location\": \"Our favorite cafe\",\n        \"start\": {\n            \"dateTime\": \"2020-02-04T10:00:00Z\",\n            \"timezone\": \"America/Los_Angeles\"\n        },\n        \"end\": {\n            \"dateTime\": \"2020-02-04T11:00:00Z\",\n            \"timezone\": \"America/Los_Angeles\"\n        },\n        \"meetingInfo\": {\n            \"attendees\": [\n                {\n                    \"emailAddress\": {\"address\": \"partner@example.com\"},\n                    \"type\": \"required\"\n                }\n            ]\n        }\n       }'"
        } ]
      }
    },
    "/v1/calendars/{calendarId}/events/{eventId}/response" : {
      "put" : {
        "operationId" : "updateMeetingResponse",
        "tags" : [ "Events" ],
        "summary" : "Update meeting response",
        "parameters" : [ {
          "in" : "path",
          "name" : "calendarId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "Calendar id"
        }, {
          "in" : "path",
          "name" : "eventId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "Event id"
        }, {
          "in" : "query",
          "name" : "notifyAttendees",
          "required" : false,
          "schema" : {
            "type" : "boolean",
            "nullable" : true,
            "default" : true
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/MeetingResponse"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/OkResponse"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -H 'Authorization: Bearer <access token>' \\\n    -X PUT https://api.aurinko.io/v1/calendars/primary/events/{eventId}/response?notifyAttendees=true \\\n    -d '{\n          \"response\": \"accepted\",\n          \"comment\": \"Welcome\"\n       }'"
        } ]
      }
    },
    "/v1/calendars/{calendarId}/events/{eventId}/attachments/{attachmentId}" : {
      "get" : {
        "operationId" : "attachment",
        "tags" : [ "Events" ],
        "summary" : "Get an event attachment",
        "parameters" : [ {
          "in" : "path",
          "name" : "calendarId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "Calendar id"
        }, {
          "in" : "path",
          "name" : "eventId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "Event id"
        }, {
          "in" : "path",
          "name" : "attachmentId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "attachment identifier"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EmailAttachmentContent"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X GET -H 'Authorization: Bearer <access token>' \\\n    https://api.aurinko.io/v1/email/messages/{msgId}/attachments/{attId}"
        } ]
      }
    },
    "/v1/email/sync" : {
      "post" : {
        "operationId" : "emailSyncStart",
        "tags" : [ "EmailSync" ],
        "summary" : "Start a new email sync",
        "parameters" : [ {
          "in" : "query",
          "name" : "daysWithin",
          "schema" : {
            "type" : "integer"
          },
          "required" : false,
          "description" : "Scan emails received within last 'daysWithin' days.\n"
        }, {
          "in" : "query",
          "name" : "bodyType",
          "schema" : {
            "$ref" : "#/components/schemas/BodyType"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SyncStatus"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X POST -H 'Authorization: Bearer <access token>' \\\n    -G https://api.aurinko.io/v1/email/sync \\\n    -d daysWithin=7"
        } ]
      }
    },
    "/v1/email/sync/updated" : {
      "get" : {
        "operationId" : "emailSyncUpdated",
        "tags" : [ "EmailSync" ],
        "summary" : "Request changed emails (deltas)",
        "parameters" : [ {
          "in" : "query",
          "name" : "deltaToken",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "A token received as nextDeltaToken from a previous sync request or a start sync request"
        }, {
          "in" : "query",
          "name" : "pageToken",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "A token received as nextPageToken from a previous page request"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EmailMessagesPage"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "410" : {
            "$ref" : "#/components/responses/ResourceExpiredError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X GET -H 'Authorization: Bearer <access token>' \\\n    -G https://api.aurinko.io/v1/email/sync/updated \\\n    -d deltaToken='a8b7c6d5e4f3g2h1'"
        } ]
      }
    },
    "/v1/email/sync/deleted" : {
      "get" : {
        "operationId" : "emailSyncDeleted",
        "tags" : [ "EmailSync" ],
        "summary" : "Request deleted emails (deltas)",
        "parameters" : [ {
          "in" : "query",
          "name" : "deltaToken",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "A token received as nextDeltaToken from a previous sync request or a start sync request"
        }, {
          "in" : "query",
          "name" : "pageToken",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "A token received as nextPageToken from a previous page request"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EmailDeletedPage"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "410" : {
            "$ref" : "#/components/responses/ResourceExpiredError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X GET -H 'Authorization: Bearer <access token>' \\\n    -G https://api.aurinko.io/v1/email/sync/deleted \\\n    -d deltaToken='a8b7c6d5e4f3g2h1'"
        } ]
      }
    },
    "/v1/email/messages" : {
      "get" : {
        "operationId" : "messages",
        "tags" : [ "Messages" ],
        "summary" : "List email messages",
        "parameters" : [ {
          "in" : "query",
          "name" : "pageToken",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          }
        }, {
          "in" : "query",
          "name" : "q",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "Only return messages matching the specified query. For example, \"from:someuser@example.com after:01/01/2020\"\n"
        }, {
          "in" : "query",
          "name" : "bodyType",
          "required" : false,
          "schema" : {
            "type" : "bodytype",
            "nullable" : true,
            "$ref" : "#/components/schemas/BodyType"
          },
          "description" : "Supported by Google and Office365 accounts only. Body preview (snippet) is returned for other providers. Always, check the omitted[] array to determine if the response contains full body."
        }, {
          "in" : "query",
          "name" : "includeTrashAndJunk",
          "required" : false,
          "schema" : {
            "type" : "boolean",
            "nullable" : true
          }
        }, {
          "in" : "query",
          "name" : "nativeProperties",
          "required" : false,
          "schema" : {
            "type" : "array",
            "nullable" : true,
            "items" : {
              "type" : "nativeproperty",
              "$ref" : "#/components/schemas/NativeProperty"
            }
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EmailMessagesPageNext"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X GET -H 'Authorization: Bearer <access token>' \\\n    -G https://api.aurinko.io/v1/email/messages\n    -d q='text to:{address_or_name}'"
        } ]
      },
      "post" : {
        "operationId" : "send",
        "tags" : [ "Messages" ],
        "summary" : "Send a new message",
        "parameters" : [ {
          "in" : "query",
          "name" : "bodyType",
          "required" : false,
          "schema" : {
            "type" : "bodytype",
            "nullable" : true,
            "$ref" : "#/components/schemas/BodyType"
          }
        }, {
          "in" : "query",
          "name" : "returnIds",
          "required" : false,
          "schema" : {
            "type" : "boolean",
            "nullable" : true
          },
          "description" : "return message id and thread id if possible"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/OutgoingEmail"
              }
            }
          }
        },
        "responses" : {
          "201" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EmailSendResponse"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -H 'Authorization: Bearer <access token>' \\\n    -X POST https://api.aurinko.io/v1/email/messages?bodyType=text \\\n    -d '{\n        \"subject\": \"Business lunch\",\n        \"body\": \"How about a lunch meeting?\",\n        \"to\": [{\"address\": \"partner@example.com\"}]\n        \"cc\": [{\"address\": \"guest@example.com\"}]\n       }'"
        } ]
      }
    },
    "/v1/email/messages/{messageId}" : {
      "get" : {
        "operationId" : "message",
        "tags" : [ "Messages" ],
        "summary" : "Get a message",
        "parameters" : [ {
          "in" : "path",
          "name" : "messageId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "email message identifier"
        }, {
          "in" : "query",
          "name" : "bodyType",
          "required" : false,
          "schema" : {
            "type" : "bodytype",
            "nullable" : true,
            "$ref" : "#/components/schemas/BodyType"
          },
          "description" : "Default html"
        }, {
          "in" : "query",
          "name" : "nativeProperties",
          "required" : false,
          "schema" : {
            "type" : "array",
            "nullable" : true,
            "items" : {
              "type" : "nativeproperty",
              "$ref" : "#/components/schemas/NativeProperty"
            }
          }
        }, {
          "in" : "query",
          "name" : "loadInlines",
          "required" : false,
          "schema" : {
            "type" : "boolean",
            "nullable" : true,
            "default" : false
          },
          "description" : "automatically pre-load relevant inline attachments"
        }, {
          "in" : "query",
          "name" : "stripQuoted",
          "required" : false,
          "schema" : {
            "type" : "boolean",
            "nullable" : true,
            "default" : false
          },
          "description" : "strip quoted elements from message body"
        }, {
          "in" : "query",
          "name" : "requireThreadId",
          "required" : false,
          "schema" : {
            "type" : "boolean",
            "nullable" : true,
            "default" : false
          },
          "description" : "For IMAP accounts not supporting threads, wait for Aurinko to discover threads and provide its threadId"
        }, {
          "in" : "query",
          "name" : "resolveDraftId",
          "required" : false,
          "schema" : {
            "type" : "boolean",
            "nullable" : true,
            "default" : false
          },
          "description" : "Resolve and include the draftId in the response when the message is a draft"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EmailMessage"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "408" : {
            "description" : "threadId may be yet unavailable for some IMAP providers",
            "headers" : {
              "Retry-After" : {
                "schema" : {
                  "type" : "integer"
                }
              }
            }
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X GET -H 'Authorization: Bearer <access token>' \\\n    https://api.aurinko.io/v1/email/messages/{id}"
        } ]
      },
      "delete" : {
        "operationId" : "deleteMessage",
        "tags" : [ "Messages" ],
        "summary" : "Delete a message",
        "description" : "Moves a message to Trash",
        "parameters" : [ {
          "in" : "path",
          "name" : "messageId",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/OkResponse"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -H 'Authorization: Bearer <access token>' \\\n    -X DELETE https://api.aurinko.io/v1/email/messages/{messageId}'"
        } ]
      }
    },
    "/v1/email/messages/{messageId}/raw" : {
      "get" : {
        "operationId" : "messageRaw",
        "tags" : [ "Messages" ],
        "summary" : "Get a raw message",
        "parameters" : [ {
          "in" : "path",
          "name" : "messageId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "email message identifier"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "text/plain" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X GET -H 'Authorization: Bearer <access token>' \\\n    https://api.aurinko.io/v1/email/messages/{id}/raw"
        } ]
      }
    },
    "/v1/email/messages/{messageId}/status" : {
      "post" : {
        "operationId" : "updateMessageStatus",
        "tags" : [ "Messages" ],
        "summary" : "Update a message's status",
        "parameters" : [ {
          "in" : "path",
          "name" : "messageId",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/UpdateMessageStatusData"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/OkResponse"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -H 'Authorization: Bearer <access token>' \\\n    -X POST https://api.aurinko.io/v1/email/messages/{messageId}/status \\\n    -d '{\n        \"unread\": true\n       }'"
        } ]
      }
    },
    "/v1/email/conversations/{threadId}" : {
      "get" : {
        "operationId" : "conversation",
        "tags" : [ "Messages" ],
        "summary" : "Get messages in a conversation",
        "parameters" : [ {
          "in" : "path",
          "name" : "threadId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "conversation/thread identifier"
        }, {
          "in" : "query",
          "name" : "bodyType",
          "required" : false,
          "schema" : {
            "type" : "bodytype",
            "nullable" : true,
            "$ref" : "#/components/schemas/BodyType"
          },
          "description" : "Supported by Google and Office365 accounts only. Body preview (snippet) is returned for other providers. Always, check the omitted[] array to determine if the response contains full body."
        }, {
          "in" : "query",
          "name" : "pageToken",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EmailMessagesPageNext"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X GET -H 'Authorization: Bearer <access token>' \\\n    https://api.aurinko.io/v1/email/conversations/{threadId}"
        } ]
      }
    },
    "/v1/email/conversations/{threadId}/followup" : {
      "get" : {
        "operationId" : "conversationFollowup",
        "tags" : [ "Messages" ],
        "summary" : "Get a conversation's followup info",
        "parameters" : [ {
          "in" : "path",
          "name" : "threadId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "conversation/thread identifier"
        }, {
          "in" : "query",
          "name" : "bodyType",
          "required" : false,
          "schema" : {
            "type" : "bodytype",
            "nullable" : true,
            "$ref" : "#/components/schemas/BodyType"
          },
          "description" : "Supported by Google and Office365 accounts only. Body preview (snippet) is returned for other providers. Always, check the omitted[] array to determine if the response contains full body."
        }, {
          "in" : "query",
          "name" : "skipMailboxCheck",
          "required" : false,
          "schema" : {
            "type" : "boolean",
            "nullable" : true,
            "default" : false
          },
          "description" : "When true, the system bypasses all mailbox validation and interaction."
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EmailConversationFollouwpStatus"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X GET -H 'Authorization: Bearer <access token>' \\\n    https://api.aurinko.io/v1/email/conversations/{threadId}/followup"
        } ]
      }
    },
    "/v1/email/messages/{messageId}/reply" : {
      "post" : {
        "operationId" : "reply",
        "tags" : [ "Messages" ],
        "summary" : "Reply to a message",
        "parameters" : [ {
          "in" : "path",
          "name" : "messageId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "an identifier of a message the response is for"
        }, {
          "in" : "query",
          "name" : "bodyType",
          "required" : false,
          "schema" : {
            "type" : "bodytype",
            "nullable" : true,
            "$ref" : "#/components/schemas/BodyType"
          }
        }, {
          "in" : "query",
          "name" : "returnIds",
          "required" : false,
          "schema" : {
            "type" : "boolean",
            "nullable" : true
          },
          "description" : "return message id and thread id if possible"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/OutgoingEmailReply"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EmailSendResponse"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -H 'Authorization: Bearer <access token>' \\\n    -X POST https://api.aurinko.io/v1/email/messages/{msgId}/reply?bodyType=text \\\n    -d '{\n        \"subject\": \"RE: Business lunch\",\n        \"body\": \"Sure, lets meet.\",\n        \"to\": [{\"address\": \"partner@example.com\"}]\n        \"cc\": [{\"address\": \"guest@example.com\"}]\n       }'"
        } ]
      }
    },
    "/v1/email/messages/{messageId}/attachments/{attachmentId}" : {
      "get" : {
        "operationId" : "emailAttachment",
        "tags" : [ "Messages" ],
        "summary" : "Get a message attachment",
        "parameters" : [ {
          "in" : "path",
          "name" : "messageId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "email message identifier"
        }, {
          "in" : "path",
          "name" : "attachmentId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "attachment identifier"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EmailAttachmentContent"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X GET -H 'Authorization: Bearer <access token>' \\\n    https://api.aurinko.io/v1/email/messages/{msgId}/attachments/{attId}"
        } ]
      }
    },
    "/v1/email/folders" : {
      "get" : {
        "operationId" : "folders",
        "tags" : [ "EmailFolders" ],
        "summary" : "List email folders",
        "parameters" : [ {
          "in" : "query",
          "name" : "pageToken",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EmailFolderInfoPage"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X GET -H 'Authorization: Bearer <access token>' \\\n    -G https://api.aurinko.io/v1/email/folders"
        } ]
      },
      "post" : {
        "operationId" : "createFolder",
        "tags" : [ "EmailFolders" ],
        "summary" : "Create a new email folder",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/EmailFolderCreate"
              }
            }
          }
        },
        "responses" : {
          "201" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EmailFolderInfo"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -H 'Authorization: Bearer <access token>' \\\n    -X POST https://api.aurinko.io/v1/email/folders \\\n    -d '{\n        \"name\": \"Folder name\"\n       }'"
        } ]
      }
    },
    "/v1/email/folders/wellKnown" : {
      "get" : {
        "operationId" : "wellKnownFolders",
        "tags" : [ "EmailFolders" ],
        "summary" : "List wellKnown email folders",
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/WellKnownFoldersOut"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X GET -H 'Authorization: Bearer <access token>' \\\n    -G https://api.aurinko.io/v1/email/folders/wellKnown"
        } ]
      },
      "patch" : {
        "operationId" : "updateWellKnownFolders",
        "tags" : [ "EmailFolders" ],
        "summary" : "Update wellKnown email folders",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/WellKnownFoldersIn"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/WellKnownFoldersOut"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X PATCH -H 'Authorization: Bearer <access token>' \\\n    -G https://api.aurinko.io/v1/email/folders/wellKnown \\\n    -d '{\n        \"archive\": \"folderXid\"\n       }'"
        } ]
      }
    },
    "/v1/email/folders/{folderId}" : {
      "get" : {
        "operationId" : "folder",
        "tags" : [ "EmailFolders" ],
        "summary" : "Get an email folder",
        "parameters" : [ {
          "in" : "path",
          "name" : "folderId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "email folder identifier"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EmailFolderInfo"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X GET -H 'Authorization: Bearer <access token>' \\\n    https://api.aurinko.io/v1/email/folders/{id}"
        } ]
      }
    },
    "/v1/email/folders/{folderId}/messages" : {
      "get" : {
        "operationId" : "folderEmails",
        "tags" : [ "EmailFolders" ],
        "summary" : "List email messages in a specified folder",
        "parameters" : [ {
          "in" : "path",
          "name" : "folderId",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "in" : "query",
          "name" : "pageToken",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          }
        }, {
          "in" : "query",
          "name" : "q",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "Only return messages matching the specified query. For example, \"from:someuser@example.com after:01/01/2020\"\n"
        }, {
          "in" : "query",
          "name" : "bodyType",
          "required" : false,
          "schema" : {
            "type" : "bodytype",
            "nullable" : true,
            "$ref" : "#/components/schemas/BodyType"
          }
        }, {
          "in" : "query",
          "name" : "nativeProperties",
          "required" : false,
          "schema" : {
            "type" : "array",
            "nullable" : true,
            "items" : {
              "type" : "nativeproperty",
              "$ref" : "#/components/schemas/NativeProperty"
            }
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EmailMessagesPageNext"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X GET -H 'Authorization: Bearer <access token>' \\\n    -G https://api.aurinko.io/v1/email/messages\n    -d q='text to:{address_or_name}'"
        } ]
      }
    },
    "/v1/email/drafts" : {
      "post" : {
        "operationId" : "createDraft",
        "tags" : [ "Drafts" ],
        "summary" : "Create a new draft message",
        "parameters" : [ {
          "in" : "query",
          "name" : "bodyType",
          "required" : false,
          "schema" : {
            "type" : "bodytype",
            "nullable" : true,
            "$ref" : "#/components/schemas/BodyType"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/OutgoingEmail"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EmailDraftResponse"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -H 'Authorization: Bearer <access token>' \\\n    -X POST https://api.aurinko.io/v1/email/drafts?bodyType=text \\\n    -d '{\n        \"subject\": \"Business lunch\",\n        \"body\": \"How about a lunch meeting?\",\n        \"to\": [{\"address\": \"partner@example.com\"}]\n        \"cc\": [{\"address\": \"guest@example.com\"}]\n       }'"
        } ]
      }
    },
    "/v1/email/drafts/{draftId}" : {
      "put" : {
        "operationId" : "updateDraft",
        "tags" : [ "Drafts" ],
        "summary" : "Update a draft message",
        "description" : "Works for Google and Office365 only",
        "parameters" : [ {
          "in" : "path",
          "name" : "draftId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "draft message identifier"
        }, {
          "in" : "query",
          "name" : "bodyType",
          "required" : false,
          "schema" : {
            "type" : "bodytype",
            "nullable" : true,
            "$ref" : "#/components/schemas/BodyType"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/OutgoingEmail"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EmailDraftResponse"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -H 'Authorization: Bearer <access token>' \\\n    -X PUT https://api.aurinko.io/v1/email/drafts/:draftId?bodyType=text \\\n    -d '{\n        \"subject\": \"Business lunch\",\n        \"body\": \"How about a lunch meeting?\",\n        \"to\": [{\"address\": \"partner@example.com\"}]\n        \"cc\": [{\"address\": \"guest@example.com\"}]\n       }'"
        } ]
      },
      "get" : {
        "operationId" : "getDraft",
        "tags" : [ "Drafts" ],
        "summary" : "Get a draft message",
        "parameters" : [ {
          "in" : "path",
          "name" : "draftId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "draft message identifier"
        }, {
          "in" : "query",
          "name" : "bodyType",
          "required" : false,
          "schema" : {
            "type" : "bodytype",
            "nullable" : true,
            "$ref" : "#/components/schemas/BodyType"
          }
        }, {
          "in" : "query",
          "name" : "nativeProperties",
          "required" : false,
          "schema" : {
            "type" : "array",
            "nullable" : true,
            "items" : {
              "type" : "nativeproperty",
              "$ref" : "#/components/schemas/NativeProperty"
            }
          }
        }, {
          "in" : "query",
          "name" : "loadInlines",
          "required" : false,
          "schema" : {
            "type" : "boolean",
            "nullable" : true,
            "default" : false
          },
          "description" : "automatically pre-load relevant inline attachments"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EmailDraft"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X GET -H 'Authorization: Bearer <access token>' \\\n    https://api.aurinko.io/v1/email/drafts/{id}"
        } ]
      },
      "delete" : {
        "operationId" : "deleteDraft",
        "tags" : [ "Drafts" ],
        "summary" : "Delete a draft message",
        "parameters" : [ {
          "in" : "path",
          "name" : "draftId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "an identifier of a draft message"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/OkResponse"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -H 'Authorization: Bearer <access token>' \\\n    -X DELETE https://api.aurinko.io/v1/email/drafts/{draftId} \\"
        } ]
      }
    },
    "/v1/email/drafts/{draftId}/send" : {
      "post" : {
        "operationId" : "sendDraft",
        "tags" : [ "Drafts" ],
        "summary" : "Send a draft message",
        "parameters" : [ {
          "in" : "path",
          "name" : "draftId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "an identifier of a draft message"
        }, {
          "in" : "query",
          "name" : "sendTime",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true,
            "format" : "date-time"
          }
        }, {
          "in" : "query",
          "name" : "returnIds",
          "required" : false,
          "schema" : {
            "type" : "boolean",
            "nullable" : true
          },
          "description" : "return message id and thread id if possible"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/DraftSendDetails"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EmailDraftSendResponse"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -H 'Authorization: Bearer <access token>' \\\n    -X POST https://api.aurinko.io/v1/email/drafts/{draftId}/send?sendTime=2021-04-28T15:40:00Z \\"
        } ]
      }
    },
    "/v1/email/draftTracking/create" : {
      "post" : {
        "operationId" : "createDraftTracking",
        "tags" : [ "EmailTracking" ],
        "summary" : "Create tracking for a draft message",
        "parameters" : [ {
          "in" : "query",
          "name" : "draftId",
          "required" : true,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "an identifier of a draft message for start tracking"
        }, {
          "in" : "query",
          "name" : "ignoreNotFound",
          "required" : false,
          "schema" : {
            "type" : "boolean",
            "nullable" : true
          },
          "description" : "if draft was not found, store tracking data anyway"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/RewriteHtml"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EmailDraftCreateTrackingResponse"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -H 'Authorization: Bearer <access token>' \\\n    -X POST https://api.aurinko.io/v1/email/draftTracking/create?draftId=<draftId>  \\\n    -d '{\n        \"htmlText\": \"<p></p>\",\n        \"tracking\": {\n           \"threadReplies\": true\n        }\n       }'"
        } ]
      }
    },
    "/v1/email/draftTracking/{draftId}/convert" : {
      "patch" : {
        "operationId" : "convertDraftTracking",
        "tags" : [ "EmailTracking" ],
        "summary" : "Mark draft's tracking as sent",
        "parameters" : [ {
          "in" : "path",
          "name" : "draftId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "an identifier of a draft message"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ConvertDraft"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "$ref" : "#/components/responses/CommonOk"
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -H 'Authorization: Bearer <access token>' \\\n    -X PATCH https://api.aurinko.io/v1/email/draftTracking/<draftId>/convert  \\\n    -d '{\n        \"threadId\": \"<threadId>\",\n        \"internetMessageId\": \"<internetMessageId>\"\n       }'"
        } ]
      }
    },
    "/v1/email/draftTracking/{draftId}" : {
      "patch" : {
        "operationId" : "updateDraftTracking",
        "tags" : [ "EmailTracking" ],
        "summary" : "Modify draft's tracking",
        "parameters" : [ {
          "in" : "path",
          "name" : "draftId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "an identifier of a draft message"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/UpdateDraftTrackingIn"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "$ref" : "#/components/responses/CommonOk"
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -H 'Authorization: Bearer <access token>' \\\n    -X PATCH https://api.aurinko.io/v1/email/draftTracking/<draftId>  \\\n    -d '{\n        \"context\": \"<context>\"\n       }'"
        } ]
      }
    },
    "/v1/email/tracking" : {
      "get" : {
        "operationId" : "getTracking",
        "tags" : [ "EmailTracking" ],
        "summary" : "List tracking data",
        "parameters" : [ {
          "in" : "query",
          "name" : "withActivityOnly",
          "required" : false,
          "schema" : {
            "type" : "boolean",
            "nullable" : true,
            "default" : false
          },
          "description" : "return only those where an open or click happened"
        }, {
          "in" : "query",
          "name" : "limit",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "nullable" : true,
            "default" : 50
          },
          "description" : "page size"
        }, {
          "in" : "query",
          "name" : "offset",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "nullable" : true,
            "default" : 0
          },
          "description" : "return records offset by the given number"
        }, {
          "in" : "query",
          "name" : "contextContains",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          }
        }, {
          "in" : "query",
          "name" : "threadId",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "identifier of thread"
        }, {
          "in" : "query",
          "name" : "showSentOnly",
          "required" : false,
          "schema" : {
            "type" : "boolean",
            "nullable" : true,
            "default" : true
          },
          "description" : "return tracking which started message was sent"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EmailTrackingPageNext"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X GET -H 'Authorization: Bearer <access token>' \\\n    -G https://api.aurinko.io/v1/email/tracking"
        } ]
      }
    },
    "/v1/email/tracking/purgeMyTracking" : {
      "post" : {
        "operationId" : "purgeMyTracking",
        "tags" : [ "EmailTracking" ],
        "summary" : "Purge recent activity for a user",
        "parameters" : [ {
          "in" : "query",
          "name" : "threadId",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          }
        }, {
          "in" : "header",
          "name" : "User-Agent",
          "description" : "User-Agent",
          "schema" : {
            "type" : "string"
          },
          "required" : true
        } ],
        "responses" : {
          "200" : {
            "$ref" : "#/components/responses/CommonOk"
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -H 'Authorization: Bearer <access token>' \\\n     -H 'User-Agent: <User-Agent>' \\\n    -X POST https://api.aurinko.io/v1/email/tracking/purgeMyTracking"
        } ]
      }
    },
    "/v1/email/tracking/ignoreOpenClicks" : {
      "post" : {
        "operationId" : "switchOpenClicks",
        "tags" : [ "EmailTracking" ],
        "summary" : "Set ignore open/click tracking for а message",
        "parameters" : [ {
          "in" : "query",
          "name" : "messageId",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "message identifier"
        }, {
          "in" : "query",
          "name" : "inetMessageId",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "internet message identifier"
        }, {
          "in" : "query",
          "name" : "isIgnored",
          "required" : true,
          "schema" : {
            "type" : "boolean"
          },
          "description" : "should be ignored or not"
        } ],
        "responses" : {
          "200" : {
            "$ref" : "#/components/responses/CommonOk"
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -H 'Authorization: Bearer <access token>' \\\n    -X POST https://api.aurinko.io/v1/email/tracking/ignoreOpenClicks"
        } ]
      }
    },
    "/v1/email/tracking/events" : {
      "get" : {
        "operationId" : "getTrackingEvents",
        "tags" : [ "EmailTracking" ],
        "summary" : "List all tracking events",
        "parameters" : [ {
          "in" : "query",
          "name" : "threadId",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "conversation id"
        }, {
          "in" : "query",
          "name" : "from",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true,
            "format" : "datetime"
          },
          "description" : "event start dateTime (strictly greater)"
        }, {
          "in" : "query",
          "name" : "to",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true,
            "format" : "datetime"
          },
          "description" : "event end dateTime (smaller or equal)"
        }, {
          "in" : "query",
          "name" : "limit",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "nullable" : true,
            "default" : 50
          },
          "description" : "page size"
        }, {
          "in" : "query",
          "name" : "offset",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "nullable" : true,
            "default" : 0
          },
          "description" : "return records offset by the given number"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EmailTrackingEventPageNext"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X GET -H 'Authorization: Bearer <access token>' \\\n    -G https://api.aurinko.io/v1/email/tracking/events"
        } ]
      }
    },
    "/v1/email/tracking/{id}" : {
      "get" : {
        "operationId" : "trackingById",
        "tags" : [ "EmailTracking" ],
        "summary" : "Get tracking data by Id",
        "parameters" : [ {
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "description" : "Tracking data id"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/TrackingData"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X GET -H 'Authorization: Bearer <access token>' \\\n    -G https://api.aurinko.io/v1/email/tracking/{id}'"
        } ]
      }
    },
    "/v1/email/tracking/{id}/events" : {
      "get" : {
        "operationId" : "trackingEvents",
        "tags" : [ "EmailTracking" ],
        "summary" : "List tracking events",
        "parameters" : [ {
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "description" : "Tracking id"
        }, {
          "in" : "query",
          "name" : "limit",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "nullable" : true,
            "default" : 50
          },
          "description" : "page size"
        }, {
          "in" : "query",
          "name" : "offset",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "nullable" : true,
            "default" : 0
          },
          "description" : "return records offset by the given number"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EmailTrackingEventPageNext"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X GET -H 'Authorization: Bearer <access token>' \\\n    -G https://api.aurinko.io/v1/email/tracking/{id}/events"
        } ]
      }
    },
    "/v1/email/tracking/{trackingId}/events/{id}" : {
      "get" : {
        "operationId" : "trackingEventById",
        "tags" : [ "EmailTracking" ],
        "summary" : "Get tracking event by Id",
        "parameters" : [ {
          "in" : "path",
          "name" : "trackingId",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "description" : "Tracking data id"
        }, {
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "description" : "Tracking event id"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EmailTrackingEvent"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X GET -H 'Authorization: Bearer <access token>' \\\n    -G https://api.aurinko.io/v1/email/tracking/{trackingId}/events/{id}'"
        } ]
      }
    },
    "/v1/followup/config" : {
      "get" : {
        "operationId" : "getConfig",
        "tags" : [ "FollowUpRobot" ],
        "summary" : "Get a follow up configuration",
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/FollowupConfig"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        }
      },
      "put" : {
        "operationId" : "updateConfig",
        "tags" : [ "FollowUpRobot" ],
        "summary" : "Update a follow up configuration",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/FollowupConfig"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "A result of changed configuration",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/FollowupConfig"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        }
      }
    },
    "/v1/followup/rules" : {
      "get" : {
        "operationId" : "getRules",
        "tags" : [ "FollowUpRobot" ],
        "summary" : "Get follow up rules",
        "responses" : {
          "200" : {
            "description" : "A list of rules",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/FollowupRuleAggregateOutPage"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        }
      },
      "post" : {
        "operationId" : "createRule",
        "tags" : [ "FollowUpRobot" ],
        "summary" : "Add a follow up rule",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/FollowupRuleAggregateIn"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "A result of add rule",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/FollowupRuleAggregateOut"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        }
      }
    },
    "/v1/followup/rules/{id}" : {
      "put" : {
        "operationId" : "updateRule",
        "tags" : [ "FollowUpRobot" ],
        "summary" : "Update a follow up rule",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/FollowupRuleAggregateIn"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "A result of changed rule",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/FollowupRuleAggregateOut"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "parameters" : [ {
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        } ]
      },
      "delete" : {
        "operationId" : "deleteRule",
        "tags" : [ "FollowUpRobot" ],
        "summary" : "Delete a follow up rule",
        "responses" : {
          "200" : {
            "$ref" : "#/components/responses/CommonOk"
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "parameters" : [ {
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        } ]
      }
    },
    "/v1/followup/conversations" : {
      "get" : {
        "operationId" : "getConversationsDripStatus",
        "tags" : [ "FollowUpRobot" ],
        "summary" : "Get a list of conversations touched by followup",
        "parameters" : [ {
          "in" : "query",
          "name" : "active",
          "required" : false,
          "schema" : {
            "type" : "boolean",
            "nullable" : true
          },
          "description" : "active or inactive threads, by default all threads returned"
        }, {
          "in" : "query",
          "name" : "limit",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "nullable" : true,
            "default" : 50
          },
          "description" : "page size"
        }, {
          "in" : "query",
          "name" : "offset",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "nullable" : true,
            "default" : 0
          },
          "description" : "page offset"
        } ],
        "responses" : {
          "200" : {
            "description" : "A result of conversations with followup",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ConversationDripStatusPage"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        }
      }
    },
    "/v1/followup/conversations/{convoId}" : {
      "get" : {
        "operationId" : "getConversationDripStatus",
        "tags" : [ "FollowUpRobot" ],
        "summary" : "Check a conversation status",
        "parameters" : [ {
          "in" : "path",
          "name" : "convoId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "thread identifier"
        } ],
        "responses" : {
          "200" : {
            "description" : "A conversation status response",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ConversationDripStatus"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        }
      },
      "put" : {
        "operationId" : "updateConversationDripStatus",
        "tags" : [ "FollowUpRobot" ],
        "summary" : "Update a conversation status",
        "parameters" : [ {
          "in" : "path",
          "name" : "convoId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "thread identifier"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/DripRequestDTO"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "A result of applying drip",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ConversationDripStatus"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        }
      }
    },
    "/v1/contacts/sync" : {
      "post" : {
        "operationId" : "contSyncStart",
        "tags" : [ "ContSync" ],
        "summary" : "Start a new contacts sync",
        "description" : "For Office 365, Outlook.com, and MS Exchange accounts this method works with the default Contacts folder only. For Gmail accounts it processes all user contacts except 'Other contacts'.\n",
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SyncStatus"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X POST -H 'Authorization: Bearer <access token>' \\\n    -G https://api.aurinko.io/v1/contacts/sync"
        } ]
      }
    },
    "/v1/contacts/sync/updated" : {
      "get" : {
        "operationId" : "contSyncUpdated",
        "tags" : [ "ContSync" ],
        "summary" : "Request changed contacts (deltas)",
        "parameters" : [ {
          "in" : "query",
          "name" : "deltaToken",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "A token received as nextDeltaToken from a previous sync request or a start sync request"
        }, {
          "in" : "query",
          "name" : "pageToken",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "A token received as nextPageToken from a previous page request"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ContactsPage"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "410" : {
            "$ref" : "#/components/responses/ResourceExpiredError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X GET -H 'Authorization: Bearer <access token>' \\\n    -G https://api.aurinko.io/v1/contacts/sync/updated \\\n    -d deltaToken='a8b7c6d5e4f3g2h1'"
        } ]
      }
    },
    "/v1/contacts/sync/deleted" : {
      "get" : {
        "operationId" : "contSyncDeleted",
        "tags" : [ "ContSync" ],
        "summary" : "Request deleted contacts (deltas)",
        "parameters" : [ {
          "in" : "query",
          "name" : "deltaToken",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "A token received as nextDeltaToken from a previous sync request or a start sync request"
        }, {
          "in" : "query",
          "name" : "pageToken",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "A token received as nextPageToken from a previous page request"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DeletedPage"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "410" : {
            "$ref" : "#/components/responses/ResourceExpiredError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X GET -H 'Authorization: Bearer <access token>' \\\n    -G https://api.aurinko.io/v1/contacts/sync/deleted \\\n    -d deltaToken='a8b7c6d5e4f3g2h1'"
        } ]
      }
    },
    "/v1/contacts/{contId}" : {
      "get" : {
        "operationId" : "contact",
        "tags" : [ "Contacts" ],
        "summary" : "Get a contact",
        "parameters" : [ {
          "in" : "path",
          "name" : "contId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "Contact id"
        }, {
          "in" : "query",
          "name" : "bodyType",
          "required" : false,
          "schema" : {
            "type" : "bodytype",
            "nullable" : true,
            "$ref" : "#/components/schemas/BodyType"
          },
          "description" : "Default text"
        }, {
          "in" : "query",
          "name" : "nativeProperties",
          "required" : false,
          "schema" : {
            "type" : "array",
            "nullable" : true,
            "items" : {
              "type" : "nativeproperty",
              "$ref" : "#/components/schemas/NativeProperty"
            }
          }
        }, {
          "in" : "query",
          "name" : "withPhoto",
          "required" : false,
          "schema" : {
            "type" : "boolean",
            "nullable" : true
          }
        }, {
          "in" : "query",
          "name" : "includeUpdateToken",
          "required" : false,
          "schema" : {
            "type" : "boolean",
            "nullable" : true
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Contact"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X GET -H 'Authorization: Bearer <access token>' \\\n    https://api.aurinko.io/v1/contacts/{id}"
        } ]
      },
      "patch" : {
        "operationId" : "updateContact",
        "tags" : [ "Contacts" ],
        "summary" : "Update a contact",
        "parameters" : [ {
          "in" : "path",
          "name" : "contId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "Contact id"
        }, {
          "in" : "header",
          "name" : "If-Match",
          "schema" : {
            "type" : "string"
          },
          "required" : true,
          "description" : "The HTTP entity tag of the resource (ETag). Used for web cache validation."
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/Contact"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ContactOrId"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -H 'Authorization: Bearer <access token>' \\\n    -X PATCH https://api.aurinko.io/v1/contacts/{contId} \\\n    -d '{\n             \"name\": {\"givenName\": \"Sam\", \"familyName\": \"Black\"},\n             \"company\": {\"name\":\"Aurinko, Inc\", \"jobTitle\": \"QA engineer\"},\n             \"emailAddresses\": [\n                    {\"address\": \"sam@aurinko.io\", \"type\": \"work\"}\n                 ],\n             \"phoneNumbers\": [\n                    {\"number\": \"415 8399949\", \"type\": \"work\"}\n                    {\"value\": \"415 9499938\",\"type\": \"Home\"},\n                 ]\n        }'"
        } ]
      },
      "delete" : {
        "operationId" : "deleteContact",
        "tags" : [ "Contacts" ],
        "summary" : "Delete a contact",
        "parameters" : [ {
          "in" : "path",
          "name" : "contId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "Contact id"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "404" : {
            "description" : "Contact not found"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -H 'Authorization: Bearer <access token>' \\\n    -X DELETE https://api.aurinko.io/v1/contacts/{contId}"
        } ]
      }
    },
    "/v1/contacts" : {
      "post" : {
        "operationId" : "createContact",
        "tags" : [ "Contacts" ],
        "summary" : "Create a new contact",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/Contact"
              }
            }
          }
        },
        "responses" : {
          "201" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ContactOrId"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -H 'Authorization: Bearer <access token>' \\\n    -X POST https://api.aurinko.io/v1/contacts \\\n    -d '{\n             \"name\": {\"givenName\": \"Sam\", \"familyName\": \"Black\"},\n             \"company\": {\"name\":\"Aurinko\", \"jobTitle\": \"Support engineer\"},\n             \"emailAddresses\": [\n                     {\"address\": \"sam@aurinko.io\", \"type\": \"work\"}\n                 ],\n             \"phoneNumbers\": [\n                     {\"number\": \"415 8399949\", \"type\": \"work\"}\n                 ]\n                }'"
        } ]
      }
    },
    "/v1/book/account/workHours" : {
      "get" : {
        "operationId" : "workHours",
        "tags" : [ "Booking" ],
        "summary" : "Get user work hours",
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/WeekWorkSchedule"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError2"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        }
      }
    },
    "/v1/book/account/profiles" : {
      "post" : {
        "operationId" : "create",
        "tags" : [ "Booking" ],
        "summary" : "Create a booking profile",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BookingInDto"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BookingOutDto"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError2"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        }
      },
      "get" : {
        "operationId" : "getAccBookings",
        "tags" : [ "Booking" ],
        "summary" : "Get booking profiles",
        "parameters" : [ {
          "in" : "query",
          "name" : "limit",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "nullable" : true,
            "default" : 50
          },
          "description" : "page size"
        }, {
          "in" : "query",
          "name" : "offset",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "nullable" : true,
            "default" : 0
          },
          "description" : "return records offset by the given number"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BookingPage"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError2"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        }
      }
    },
    "/v1/book/account/profiles/{id}" : {
      "get" : {
        "operationId" : "getBooking",
        "tags" : [ "Booking" ],
        "summary" : "Get a booking profile by id",
        "parameters" : [ {
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "description" : "A booking id"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BookingOutDto"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError2"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        }
      },
      "patch" : {
        "operationId" : "updateBooking",
        "tags" : [ "Booking" ],
        "summary" : "Update a booking profile",
        "parameters" : [ {
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "description" : "A booking id"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BookingUpdateDto"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BookingSuccessOutDto"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError2"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        }
      },
      "delete" : {
        "operationId" : "deleteBooking",
        "tags" : [ "Booking" ],
        "summary" : "Delete a booking profile by id",
        "parameters" : [ {
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "description" : "A booking id"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BookingSuccessOutDto"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError2"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        }
      }
    },
    "/v1/book/account/profiles/{id}/meeting" : {
      "get" : {
        "operationId" : "bookingAccountMeetingTimes",
        "tags" : [ "Booking", "Availability" ],
        "summary" : "Get available meeting times",
        "parameters" : [ {
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "description" : "A booking id"
        }, {
          "in" : "query",
          "name" : "required",
          "required" : false,
          "schema" : {
            "type" : "core.client.booking.bookingrequiredmode.bookingrequiredmode",
            "nullable" : true,
            "$ref" : "#/components/schemas/BookingRequiredMode",
            "default" : "one"
          },
          "description" : "a way to select times"
        }, {
          "in" : "query",
          "name" : "fromDate",
          "required" : false,
          "schema" : {
            "type" : "string",
            "format" : "date",
            "nullable" : true
          },
          "description" : "date to iterate a big time intervals"
        }, {
          "in" : "query",
          "name" : "intervalLength",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "Time period (in ISO-8601 format) to iterate a big time intervals"
        }, {
          "in" : "query",
          "name" : "pageToken",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "token to request all pages, if booking has many accounts"
        }, {
          "in" : "query",
          "name" : "limit",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "nullable" : true
          }
        }, {
          "in" : "query",
          "name" : "offset",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "nullable" : true
          }
        }, {
          "in" : "query",
          "name" : "rescheduleToken",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "token used when rescheduling an existing meeting"
        }, {
          "in" : "query",
          "name" : "attendeeEmail",
          "required" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "description" : "The attendee's emails to consider when searching for available meeting times.\nOnly primary calendar of an attendees are in count.\nSome providers do not support attendees.\n"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BookingTimesOutDto"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError2"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        }
      },
      "post" : {
        "operationId" : "bookingAccountCreateMeeting",
        "tags" : [ "Booking", "Availability" ],
        "summary" : "Create a meeting",
        "parameters" : [ {
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "description" : "A booking id"
        }, {
          "in" : "query",
          "name" : "required",
          "required" : false,
          "schema" : {
            "type" : "core.client.booking.bookingrequiredmode.bookingrequiredmode",
            "nullable" : true,
            "$ref" : "#/components/schemas/BookingRequiredMode",
            "default" : "one"
          },
          "description" : "a way to select times"
        }, {
          "in" : "query",
          "name" : "reserveForMinutes",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int64",
            "nullable" : true
          },
          "description" : "Time in minutes, blocks the interval for a time (creates an unconfirmed reservation), the meeting is not created"
        }, {
          "in" : "query",
          "name" : "rescheduleToken",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "token used when rescheduling an existing meeting"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CreateMeetingDto"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CreateMeetingResponse"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError2"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        }
      }
    },
    "/v1/book/account/reservations/{id}/confirm" : {
      "post" : {
        "operationId" : "bookingAccountReservationConfirm",
        "tags" : [ "Booking" ],
        "summary" : "Convert an unconfirmed booking reservation to a calendar event",
        "parameters" : [ {
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "description" : "An unconfirmed reservation id"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ConfirmReservationOutDto"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError2"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        }
      }
    },
    "/v1/book/account/reservations/{id}" : {
      "delete" : {
        "operationId" : "bookingAccountReservationDelete",
        "tags" : [ "Booking" ],
        "summary" : "Cancel an unconfirmed booking reservation",
        "parameters" : [ {
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "description" : "An unconfirmed reservation id"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ConfirmSlotDeleteOutDto"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError2"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        }
      }
    },
    "/v1/book/group/profiles/dynamic/availability" : {
      "post" : {
        "operationId" : "bookingGroupAvailability",
        "tags" : [ "GroupBooking", "Availability" ],
        "summary" : "Get available bookings for а time range",
        "security" : [ {
          "AppAuth" : [ ]
        } ],
        "parameters" : [ {
          "in" : "query",
          "name" : "attendeeEmail",
          "required" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "description" : "The attendee's emails to consider when searching for available meeting times.\nOnly primary calendar of an attendees are in count.\nSome providers do not support attendees.\n"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BookingAvailableProfilesInDto"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BookingAvailableProfilesOutDto"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError2"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        }
      }
    },
    "/v1/book/group/profiles/{id}/meeting" : {
      "get" : {
        "operationId" : "bookingGroupMeetingTimes",
        "tags" : [ "GroupBooking", "Availability" ],
        "summary" : "Get available meeting times",
        "security" : [ {
          "AppAuth" : [ ]
        } ],
        "parameters" : [ {
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "description" : "A booking id"
        }, {
          "in" : "query",
          "name" : "required",
          "required" : false,
          "schema" : {
            "type" : "core.client.booking.bookingrequiredmode.bookingrequiredmode",
            "nullable" : true,
            "$ref" : "#/components/schemas/BookingRequiredMode",
            "default" : "one"
          },
          "description" : "a way to select times"
        }, {
          "in" : "query",
          "name" : "fromDate",
          "required" : false,
          "schema" : {
            "type" : "string",
            "format" : "date",
            "nullable" : true
          },
          "description" : "date to iterate a big time intervals"
        }, {
          "in" : "query",
          "name" : "intervalLength",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "Time period (in ISO-8601 format) to iterate a big time intervals"
        }, {
          "in" : "query",
          "name" : "pageToken",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "token to request all pages, if booking has many accounts"
        }, {
          "in" : "query",
          "name" : "limit",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "nullable" : true
          }
        }, {
          "in" : "query",
          "name" : "offset",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "nullable" : true
          }
        }, {
          "in" : "query",
          "name" : "rescheduleToken",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "token used when rescheduling an existing meeting"
        }, {
          "in" : "query",
          "name" : "attendeeEmail",
          "required" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "description" : "The attendee's emails to consider when searching for available meeting times.\nOnly primary calendar of an attendees are in count.\nSome providers do not support attendees.\n"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BookingTimesOutDto"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError2"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        }
      },
      "post" : {
        "operationId" : "bookingGroupCreateMeeting",
        "tags" : [ "GroupBooking", "Availability" ],
        "summary" : "Create a meeting",
        "security" : [ {
          "AppAuth" : [ ]
        } ],
        "parameters" : [ {
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "description" : "A booking id"
        }, {
          "in" : "query",
          "name" : "required",
          "required" : false,
          "schema" : {
            "type" : "core.client.booking.bookingrequiredmode.bookingrequiredmode",
            "nullable" : true,
            "$ref" : "#/components/schemas/BookingRequiredMode",
            "default" : "one"
          },
          "description" : "a way to select times"
        }, {
          "in" : "query",
          "name" : "reserveForMinutes",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int64",
            "nullable" : true
          },
          "description" : "Time in minutes, blocks the interval for a time (creates an unconfirmed reservation), the meeting is not created"
        }, {
          "in" : "query",
          "name" : "rescheduleToken",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "token used when rescheduling an existing meeting"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CreateMeetingDto"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CreateMeetingResponse"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError2"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        }
      }
    },
    "/v1/book/group/profiles" : {
      "get" : {
        "operationId" : "getGroupBookings",
        "tags" : [ "GroupBooking" ],
        "summary" : "Get group booking profiles",
        "security" : [ {
          "AppAuth" : [ ]
        } ],
        "parameters" : [ {
          "in" : "query",
          "name" : "limit",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "nullable" : true,
            "default" : 50
          },
          "description" : "page size"
        }, {
          "in" : "query",
          "name" : "offset",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "nullable" : true,
            "default" : 0
          },
          "description" : "return records offset by the given number"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/GroupBookingPage"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError2"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        }
      },
      "post" : {
        "operationId" : "createGroupBooking",
        "tags" : [ "GroupBooking" ],
        "summary" : "Create a group booking profile",
        "security" : [ {
          "AppAuth" : [ ]
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/GroupBookingInDto"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/GroupBookingOutDto"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError2"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        }
      }
    },
    "/v1/book/group/profiles/{id}" : {
      "get" : {
        "operationId" : "getGroupBooking",
        "tags" : [ "GroupBooking" ],
        "summary" : "Get a group booking profile by id",
        "security" : [ {
          "AppAuth" : [ ]
        } ],
        "parameters" : [ {
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "description" : "A booking id"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/GroupBookingOutDto"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError2"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        }
      },
      "patch" : {
        "operationId" : "updateGroupBooking",
        "tags" : [ "GroupBooking" ],
        "summary" : "Update a group booking profile",
        "security" : [ {
          "AppAuth" : [ ]
        } ],
        "parameters" : [ {
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "description" : "A booking id"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/GroupBookingUpdateDto"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BookingSuccessOutDto"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError2"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        }
      },
      "delete" : {
        "operationId" : "deleteGroupBooking",
        "tags" : [ "GroupBooking" ],
        "summary" : "Delete a group booking profile by id",
        "security" : [ {
          "AppAuth" : [ ]
        } ],
        "parameters" : [ {
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "description" : "A booking id"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BookingSuccessOutDto"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError2"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        }
      }
    },
    "/v1/book/group/profiles/{id}/attachGroups" : {
      "post" : {
        "operationId" : "attachGroupsBooking",
        "tags" : [ "GroupBooking" ],
        "summary" : "Assign groups to group booking",
        "security" : [ {
          "AppAuth" : [ ]
        } ],
        "parameters" : [ {
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "description" : "A booking id"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BookingAttachGroupsDto"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BookingSuccessOutDto"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError2"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        }
      },
      "get" : {
        "operationId" : "attachedGroupsBooking",
        "tags" : [ "GroupBooking" ],
        "summary" : "List groups of a group booking profile",
        "security" : [ {
          "AppAuth" : [ ]
        } ],
        "parameters" : [ {
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "description" : "A booking id"
        }, {
          "in" : "query",
          "name" : "limit",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "nullable" : true,
            "default" : 50
          },
          "description" : "page size"
        }, {
          "in" : "query",
          "name" : "offset",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "nullable" : true,
            "default" : 0
          },
          "description" : "return records offset by the given number"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BookingAttachedGroupsPage"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError2"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        }
      }
    },
    "/v1/book/group/profiles/{id}/detachGroups" : {
      "post" : {
        "operationId" : "detachGroupsBooking",
        "tags" : [ "GroupBooking" ],
        "summary" : "Remove groups from group booking",
        "security" : [ {
          "AppAuth" : [ ]
        } ],
        "parameters" : [ {
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "description" : "A booking id"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BookingDetachGroupsDto"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BookingSuccessOutDto"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError2"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        }
      }
    },
    "/v1/book/group/profiles/{id}/attachAccounts" : {
      "post" : {
        "operationId" : "attachAccountsGroupBooking",
        "tags" : [ "GroupBooking" ],
        "summary" : "Assign accounts to group booking",
        "security" : [ {
          "AppAuth" : [ ]
        } ],
        "parameters" : [ {
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "description" : "A booking id"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BookingAttachAccountsDto"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BookingSuccessOutDto"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError2"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        }
      },
      "get" : {
        "operationId" : "attachedAccountsGroupBooking",
        "tags" : [ "GroupBooking" ],
        "summary" : "List accounts of a group booking profile",
        "security" : [ {
          "AppAuth" : [ ]
        } ],
        "parameters" : [ {
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "description" : "A booking id"
        }, {
          "in" : "query",
          "name" : "limit",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "nullable" : true,
            "default" : 50
          },
          "description" : "page size"
        }, {
          "in" : "query",
          "name" : "offset",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "nullable" : true,
            "default" : 0
          },
          "description" : "return records offset by the given number"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BookingAttachedAccountsPage"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError2"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        }
      }
    },
    "/v1/book/group/profiles/{id}/detachAccounts" : {
      "post" : {
        "operationId" : "detachAccountsGroupBooking",
        "tags" : [ "GroupBooking" ],
        "summary" : "Remove accounts from group booking",
        "security" : [ {
          "AppAuth" : [ ]
        } ],
        "parameters" : [ {
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "description" : "A booking id"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BookingDetachGroupAccountsDto"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BookingSuccessOutDto"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError2"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        }
      }
    },
    "/v1/book/group/reservations/{id}/confirm" : {
      "post" : {
        "operationId" : "bookingGroupReservationConfirm",
        "tags" : [ "GroupBooking" ],
        "summary" : "Convert an unconfirmed booking reservation to a calendar event",
        "security" : [ {
          "AppAuth" : [ ]
        } ],
        "parameters" : [ {
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "description" : "An unconfirmed reservation id"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ConfirmReservationOutDto"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError2"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        }
      }
    },
    "/v1/book/group/reservations/{id}" : {
      "delete" : {
        "operationId" : "bookingGroupReservationDelete",
        "tags" : [ "GroupBooking" ],
        "summary" : "Cancel an unconfirmed booking reservation",
        "security" : [ {
          "AppAuth" : [ ]
        } ],
        "parameters" : [ {
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "description" : "An unconfirmed reservation id"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ConfirmSlotDeleteOutDto"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError2"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        }
      }
    },
    "/v1/book/{aurinkoClientId}/{name}/meeting" : {
      "get" : {
        "operationId" : "getMeetingTimes",
        "tags" : [ "Availability" ],
        "summary" : "Get available meeting times",
        "security" : [ ],
        "parameters" : [ {
          "in" : "path",
          "name" : "aurinkoClientId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "Application client Id"
        }, {
          "in" : "path",
          "name" : "name",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "Booking profile name"
        }, {
          "in" : "query",
          "name" : "required",
          "required" : false,
          "schema" : {
            "type" : "core.client.booking.bookingrequiredmode.bookingrequiredmode",
            "nullable" : true,
            "$ref" : "#/components/schemas/BookingRequiredMode",
            "default" : "one"
          },
          "description" : "a way to select times"
        }, {
          "in" : "query",
          "name" : "fromDate",
          "required" : false,
          "schema" : {
            "type" : "string",
            "format" : "date",
            "nullable" : true
          },
          "description" : "date to iterate a big time intervals"
        }, {
          "in" : "query",
          "name" : "intervalLength",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "Time period (in ISO-8601 format) to iterate a big time intervals"
        }, {
          "in" : "query",
          "name" : "pageToken",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "token to request all pages, if booking has many accounts"
        }, {
          "in" : "query",
          "name" : "limit",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "nullable" : true
          }
        }, {
          "in" : "query",
          "name" : "offset",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "nullable" : true
          }
        }, {
          "in" : "query",
          "name" : "rescheduleToken",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "token used when rescheduling an existing meeting"
        }, {
          "in" : "query",
          "name" : "attendeeEmail",
          "required" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "description" : "The attendee's emails to consider when searching for available meeting times.\nOnly primary calendar of an attendees are in count.\nSome providers do not support attendees.\n"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "headers" : {
              "Set-Cookie" : {
                "description" : "Booking token to use for scheduling a meeting. Expires after 30 minutes.",
                "schema" : {
                  "type" : "string",
                  "example" : "AURINKO_BOOKING=eyJhbGciOiJIUzI1NiJ9.eyJkYXRhIjp7InJtY; Path=/v1/book; Secure; SameSite=Strict"
                }
              }
            },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BookingTimesOutDto"
                }
              }
            }
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        }
      },
      "post" : {
        "operationId" : "createMeeting",
        "tags" : [ "Availability" ],
        "summary" : "Create a meeting",
        "security" : [ ],
        "parameters" : [ {
          "in" : "path",
          "name" : "aurinkoClientId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "Application client Id"
        }, {
          "in" : "path",
          "name" : "name",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "Booking profile name"
        }, {
          "in" : "query",
          "name" : "required",
          "required" : false,
          "schema" : {
            "type" : "core.client.booking.bookingrequiredmode.bookingrequiredmode",
            "nullable" : true,
            "$ref" : "#/components/schemas/BookingRequiredMode",
            "default" : "one"
          },
          "description" : "a way to select times"
        }, {
          "in" : "query",
          "name" : "reserveForMinutes",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int64",
            "nullable" : true
          },
          "description" : "Time in minutes, blocks the interval for a time (creates an unconfirmed reservation), the meeting is not created"
        }, {
          "in" : "query",
          "name" : "rescheduleToken",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "token used when rescheduling an existing meeting"
        }, {
          "in" : "header",
          "name" : "X-Aurinko-Booking-Session",
          "description" : "Booking cookie value received from `Get available meeting times` endpoint. For API developers, browser will use cookie.",
          "schema" : {
            "type" : "string"
          }
        }, {
          "in" : "cookie",
          "name" : "AURINKO_BOOKING",
          "description" : "Booking cookie received from `Get available meeting times` endpoint.",
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CreateMeetingDto"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CreateMeetingResponse"
                }
              }
            }
          },
          "403" : {
            "description" : "Booking Cookie invalid",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ApiRequestFailed"
                },
                "examples" : {
                  "bookingCookieInvalid" : {
                    "value" : {
                      "code" : "access.denied",
                      "message" : "Cookie is unacceptable for this booking",
                      "requestId" : "82414de3-3815-47ef-aca1-6745e42a60d6"
                    }
                  }
                }
              }
            }
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        }
      }
    },
    "/v1/user" : {
      "get" : {
        "operationId" : "getUserInfo",
        "tags" : [ "User" ],
        "summary" : "Get user info",
        "security" : [ {
          "UserSessionCookie" : [ ],
          "ClientIdHeader" : [ ]
        }, {
          "UserSessionHeader" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EndUserDto"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X GET --cookie \"<END_USER_COOKIE>\" \\\n    -H 'X-Aurinko-ClientId: <CLIENT_ID>' \\\n    https://api.aurinko.io/v1/user"
        } ]
      }
    },
    "/v1/user/settings" : {
      "patch" : {
        "operationId" : "updateSettings",
        "tags" : [ "User" ],
        "summary" : "Change user settings",
        "security" : [ {
          "UserSessionCookie" : [ ],
          "ClientIdHeader" : [ ]
        }, {
          "UserSessionHeader" : [ ]
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/EndUserSettingsDto"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EndUserDto"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X POST --cookie \"<END_USER_COOKIE>\" \\\n    -H 'X-Aurinko-ClientId: <CLIENT_ID>' \\\n    https://api.aurinko.io/v1/user/settings"
        } ]
      }
    },
    "/v1/user/accounts" : {
      "get" : {
        "operationId" : "getEndUserAccounts",
        "tags" : [ "User" ],
        "summary" : "Get user accounts",
        "security" : [ {
          "UserSessionCookie" : [ ],
          "ClientIdHeader" : [ ]
        }, {
          "UserSessionHeader" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EndUserAccountsPage"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X GET --cookie \"<END_USER_COOKIE>\" \\\n    -H 'X-Aurinko-ClientId: <CLIENT_ID>' \\\n    https://api.aurinko.io/v1/user/accounts"
        } ]
      }
    },
    "/v1/user/accounts/{id}" : {
      "get" : {
        "operationId" : "getEndUserAccount",
        "tags" : [ "User" ],
        "summary" : "Get user account by id",
        "security" : [ {
          "UserSessionCookie" : [ ],
          "ClientIdHeader" : [ ]
        }, {
          "UserSessionHeader" : [ ]
        } ],
        "parameters" : [ {
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "description" : "user's account Id"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EndUserAccountDto"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X GET --cookie \"<END_USER_COOKIE>\" \\\n    -H 'X-Aurinko-ClientId: <CLIENT_ID>' \\\n    https://api.aurinko.io/v1/user/accounts/<id>"
        } ]
      },
      "delete" : {
        "operationId" : "logoutAccount",
        "tags" : [ "User" ],
        "summary" : "Delete a user account",
        "description" : "Deleting a primary account, also invalidates the user's session cookie (logout).",
        "security" : [ {
          "UserSessionCookie" : [ ],
          "ClientIdHeader" : [ ]
        }, {
          "UserSessionHeader" : [ ]
        } ],
        "parameters" : [ {
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "description" : "user's account Id"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/OkResponse"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X DELETE --cookie \"<END_USER_COOKIE>\" \\\n    -H 'X-Aurinko-ClientId: <CLIENT_ID>' \\\n    https://api.aurinko.io/v1/user/accounts/<id>"
        } ]
      }
    },
    "/v1/user/accounts/{id}/managed" : {
      "post" : {
        "operationId" : "copyAsManaged",
        "tags" : [ "User" ],
        "summary" : "Make a user account 'managed'",
        "security" : [ {
          "UserSessionCookie" : [ ],
          "ClientIdHeader" : [ ]
        }, {
          "UserSessionHeader" : [ ]
        } ],
        "parameters" : [ {
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "description" : "user's account Id"
        }, {
          "in" : "query",
          "name" : "clientOrgId",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EndUserAccountDto"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X POST --cookie \"<END_USER_COOKIE>\" \\\n    -H 'X-Aurinko-ClientId: <CLIENT_ID>' \\\n    https://api.aurinko.io/v1/user/accounts/<id>/managed"
        } ]
      }
    },
    "/v1/user/logout" : {
      "post" : {
        "operationId" : "logout",
        "tags" : [ "User" ],
        "summary" : "Log out a user",
        "description" : "Invalidates the user's session cookie",
        "security" : [ {
          "UserSessionCookie" : [ ],
          "ClientIdHeader" : [ ]
        }, {
          "UserSessionHeader" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/OkResponse"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X POST --cookie \"<END_USER_COOKIE>\" \\\n    -H 'X-Aurinko-ClientId: <CLIENT_ID>' \\\n    https://api.aurinko.io/v1/user/logout"
        } ]
      }
    },
    "/v1/account" : {
      "get" : {
        "operationId" : "getMyAccount",
        "tags" : [ "Account" ],
        "summary" : "Get account status",
        "parameters" : [ {
          "in" : "query",
          "name" : "pingProvider",
          "required" : false,
          "schema" : {
            "type" : "boolean",
            "nullable" : true
          },
          "description" : "If true, the provider will be pinged to check if the token is still valid. Currently supported only for Google, Office365, Salesforce, NetSuite, IMAP."
        }, {
          "in" : "query",
          "name" : "includeProviderAuth",
          "required" : false,
          "schema" : {
            "type" : "boolean",
            "nullable" : true
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ApiAccountOutDto"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X GET -H 'Authorization: Bearer <access token>' \\\n    https://api.aurinko.io/v1/account"
        } ]
      },
      "delete" : {
        "operationId" : "deleteAccount",
        "tags" : [ "Account" ],
        "summary" : "Delete the account",
        "responses" : {
          "200" : {
            "description" : "Success"
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X DELETE -H 'Authorization: Bearer <access token>' \\\n    https://api.aurinko.io/v1/account"
        } ]
      }
    },
    "/v1/account/token" : {
      "delete" : {
        "operationId" : "deleteToken",
        "tags" : [ "Account" ],
        "summary" : "Delete the token and revoke all provider authentication data associated with it",
        "responses" : {
          "200" : {
            "description" : "Success"
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X DELETE -H 'Authorization: Bearer <access token>' \\\n    https://api.aurinko.io/v1/account/token"
        } ]
      }
    },
    "/v1/am/accounts" : {
      "get" : {
        "operationId" : "getAccounts",
        "tags" : [ "Accounts" ],
        "summary" : "Get accounts",
        "security" : [ {
          "AppAuth" : [ ]
        } ],
        "parameters" : [ {
          "in" : "query",
          "name" : "limit",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "nullable" : true,
            "default" : 50
          },
          "description" : "page size"
        }, {
          "in" : "query",
          "name" : "offset",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "nullable" : true,
            "default" : 0
          },
          "description" : "return records offset by the given number"
        }, {
          "in" : "query",
          "name" : "authOrgId",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "An authenticated OrgId"
        }, {
          "in" : "query",
          "name" : "serviceType",
          "required" : false,
          "schema" : {
            "type" : "core.client.servicetype",
            "nullable" : true,
            "$ref" : "#/components/schemas/ServiceTypeNonDaemon"
          }
        }, {
          "in" : "query",
          "name" : "subscriptionId",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int64",
            "nullable" : true
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/AccountsPage"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError2"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -u ClientId:Secret -X GET https://api.aurinko.io/v1/am/accounts \\\n    -G -d clientOrgId='12345'"
        } ]
      },
      "post" : {
        "operationId" : "upsertPersonal",
        "tags" : [ "Accounts" ],
        "summary" : "Upsert an account",
        "description" : "Creates an account automatically without requiring manual authorization. See [Accounts](#tag/Accounts) for details.\n",
        "security" : [ {
          "AppAuth" : [ ]
        } ],
        "parameters" : [ {
          "in" : "query",
          "name" : "userAccount",
          "required" : false,
          "schema" : {
            "type" : "core.client.user.useraccounttype.useraccounttype",
            "nullable" : true,
            "$ref" : "#/components/schemas/UserAccountType"
          }
        }, {
          "in" : "query",
          "name" : "userId",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "ID of a user this account should be attached to."
        }, {
          "in" : "query",
          "name" : "recycleKeys",
          "required" : false,
          "schema" : {
            "type" : "array",
            "nullable" : true,
            "items" : {
              "type" : "servicekey",
              "$ref" : "#/components/schemas/ServiceKey"
            }
          }
        }, {
          "in" : "query",
          "name" : "ensureAccess",
          "required" : false,
          "schema" : {
            "type" : "boolean",
            "nullable" : true
          },
          "description" : "When set to true, Aurinko will check if a user has access to the requested resources. Supported only for Google, Office365, IMAP and only for Email, Calendar, Contacts and Tasks APIs."
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ApiAccountInDto"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/AccountSaveResult"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError2"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        }
      }
    },
    "/v1/am/accounts/{id}" : {
      "get" : {
        "operationId" : "getAccount",
        "tags" : [ "Accounts" ],
        "summary" : "Get account by id",
        "security" : [ {
          "AppAuth" : [ ]
        } ],
        "parameters" : [ {
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "description" : "account id"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ApiAccountOutDto"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError2"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -u ClientId:Secret -X GET https://api.aurinko.io/v1/am/accounts/{id}"
        } ]
      },
      "delete" : {
        "operationId" : "amAccountDelete",
        "tags" : [ "Accounts" ],
        "summary" : "Delete account by ID",
        "security" : [ {
          "AppAuth" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError2"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -u ClientId:Secret -X DELETE https://api.aurinko.io/v1/am/accounts/12345"
        } ],
        "parameters" : [ {
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          }
        } ]
      }
    },
    "/v1/am/accounts/connect" : {
      "post" : {
        "operationId" : "checkConnection",
        "tags" : [ "Accounts" ],
        "summary" : "Check a connection, supported Office365, Google, IMAP",
        "security" : [ {
          "AppAuth" : [ ]
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ApiAccountInDto"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/OkResponse"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError2"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        }
      }
    },
    "/v1/am/svc_accounts" : {
      "get" : {
        "operationId" : "getSvcAccounts",
        "tags" : [ "Services" ],
        "summary" : "Get service accounts",
        "description" : "Retrieve details for existing service accounts. See [Service accounts](#tag/Services) for details.\n",
        "security" : [ {
          "AppAuth" : [ ]
        } ],
        "parameters" : [ {
          "in" : "query",
          "name" : "limit",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "nullable" : true,
            "default" : 50
          },
          "description" : "page size"
        }, {
          "in" : "query",
          "name" : "offset",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "nullable" : true,
            "default" : 0
          },
          "description" : "return records offset by the given number"
        }, {
          "in" : "query",
          "name" : "clientOrgId",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "A client OrgId"
        }, {
          "in" : "query",
          "name" : "authOrgId",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "An authenticated OrgId"
        }, {
          "in" : "query",
          "name" : "serviceType",
          "required" : false,
          "schema" : {
            "type" : "core.client.servicetype",
            "nullable" : true,
            "$ref" : "#/components/schemas/ServiceTypeDaemon"
          }
        }, {
          "in" : "query",
          "name" : "subscriptionId",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int64",
            "nullable" : true
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/AccountsPage"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError2"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -u ClientId:Secret -X GET https://api.aurinko.io/v1/am/svc_accounts \\\n    -G -d clientOrgId='12345'"
        } ]
      },
      "post" : {
        "operationId" : "upsertServiceAccount",
        "tags" : [ "Services" ],
        "summary" : "Upsert a service account",
        "description" : "Creates a service account automatically without requiring manual authorization. See [Service accounts](#tag/Services) for details.\n",
        "security" : [ {
          "AppAuth" : [ ]
        } ],
        "parameters" : [ {
          "in" : "query",
          "name" : "recycleKeys",
          "required" : false,
          "schema" : {
            "type" : "array",
            "nullable" : true,
            "items" : {
              "type" : "servicekey",
              "$ref" : "#/components/schemas/ServiceKey"
            }
          },
          "description" : "Recycle Keys"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ApiAccountInDto"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/AccountSaveResult"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError2"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        }
      }
    },
    "/v1/am/svc_accounts/{accId}/accounts" : {
      "post" : {
        "operationId" : "upsertManagedAccount",
        "tags" : [ "Managed accounts" ],
        "summary" : "Upsert a managed account",
        "description" : "Creates a managed account automatically without requiring manual authorization. See [Managed accounts](#tag/Managed-accounts) for details.\n",
        "security" : [ {
          "AppAuth" : [ ]
        } ],
        "parameters" : [ {
          "in" : "path",
          "name" : "accId",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "description" : "A service account id"
        }, {
          "in" : "query",
          "name" : "userAccount",
          "required" : false,
          "schema" : {
            "type" : "core.client.user.useraccounttype.useraccounttype",
            "nullable" : true,
            "$ref" : "#/components/schemas/UserAccountType"
          }
        }, {
          "in" : "query",
          "name" : "userId",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          }
        }, {
          "in" : "query",
          "name" : "recycleKeys",
          "required" : false,
          "schema" : {
            "type" : "array",
            "nullable" : true,
            "items" : {
              "type" : "servicekey",
              "$ref" : "#/components/schemas/ServiceKey"
            }
          }
        }, {
          "in" : "query",
          "name" : "ensureAccess",
          "required" : false,
          "schema" : {
            "type" : "boolean",
            "nullable" : true
          },
          "description" : "When set to true, Aurinko will check if a user has access to the requested resources. Supported only for Google and Office365, and only for Email, Calendar, Contacts and Tasks APIs."
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ApiAccountInDto"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/AccountSaveResult"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError2"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        }
      }
    },
    "/v1/users" : {
      "get" : {
        "operationId" : "getUsers",
        "tags" : [ "Users" ],
        "summary" : "Get users",
        "security" : [ {
          "AppAuth" : [ ]
        } ],
        "parameters" : [ {
          "in" : "query",
          "name" : "serviceType",
          "required" : false,
          "schema" : {
            "type" : "core.client.servicetype",
            "nullable" : true,
            "$ref" : "#/components/schemas/ServiceTypeNonDaemon"
          }
        }, {
          "in" : "query",
          "name" : "limit",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "nullable" : true,
            "default" : 50
          },
          "description" : "page size"
        }, {
          "in" : "query",
          "name" : "offset",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "nullable" : true,
            "default" : 0
          },
          "description" : "return records offset by the given number"
        }, {
          "in" : "query",
          "name" : "email",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "An email for any user's account"
        }, {
          "in" : "query",
          "name" : "authUserId",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "An authenticated userId for any user's account"
        }, {
          "in" : "query",
          "name" : "authOrgId",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "An authenticated OrgId for any user's account"
        }, {
          "in" : "query",
          "name" : "serverUrl",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "An serverUrl for any user's account"
        }, {
          "in" : "query",
          "name" : "userName",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "An loginString for any user's account"
        }, {
          "in" : "query",
          "name" : "clientOrgId",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "An clientOrgId for any user's account"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EndUserDtoPage"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError2"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -u ClientId:Secret -X GET https://api.aurinko.io/v1/users \\\n    -G -d clientOrgId='12345'"
        } ]
      }
    },
    "/v1/users/{id}/accounts" : {
      "get" : {
        "operationId" : "getUserAccounts",
        "tags" : [ "Users" ],
        "summary" : "Get user's accounts",
        "security" : [ {
          "AppAuth" : [ ]
        } ],
        "parameters" : [ {
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "An user id"
        }, {
          "in" : "query",
          "name" : "serviceType",
          "required" : false,
          "schema" : {
            "type" : "core.client.servicetype",
            "nullable" : true,
            "$ref" : "#/components/schemas/ServiceTypeNonDaemon"
          }
        }, {
          "in" : "query",
          "name" : "limit",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "nullable" : true,
            "default" : 50
          },
          "description" : "page size"
        }, {
          "in" : "query",
          "name" : "offset",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "nullable" : true,
            "default" : 0
          },
          "description" : "return records offset by the given number"
        }, {
          "in" : "query",
          "name" : "email",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "An email for any user's account"
        }, {
          "in" : "query",
          "name" : "authUserId",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "An authenticated userId for any user's account"
        }, {
          "in" : "query",
          "name" : "authOrgId",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "An authenticated OrgId for any user's account"
        }, {
          "in" : "query",
          "name" : "serverUrl",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "An serverUrl for any user's account"
        }, {
          "in" : "query",
          "name" : "userName",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "An loginString for any user's account"
        }, {
          "in" : "query",
          "name" : "clientOrgId",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "An clientOrgId for any user's account"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/AccountsPage"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError2"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -u ClientId:Secret -X GET https://api.aurinko.io/v1/users/{id}/accounts \\\n    -G -d clientOrgId='12345'"
        } ]
      }
    },
    "/v1/users/{userId}/accounts/{accountId}" : {
      "delete" : {
        "operationId" : "deleteSecondaryAccount",
        "tags" : [ "Users" ],
        "summary" : "Delete user's secondary account",
        "security" : [ {
          "AppAuth" : [ ]
        } ],
        "parameters" : [ {
          "in" : "path",
          "name" : "userId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "An user id"
        }, {
          "in" : "path",
          "name" : "accountId",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "description" : "An account id"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/OkResponse"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError2"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -u ClientId:Secret -X DELETE https://api.aurinko.io/v1/users/{userId}/accounts/{accountId}"
        } ]
      }
    },
    "/v1/users/{id}" : {
      "patch" : {
        "operationId" : "updateUser",
        "tags" : [ "Users" ],
        "summary" : "Update user's data",
        "security" : [ {
          "AppAuth" : [ ]
        } ],
        "parameters" : [ {
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "An user id"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ApiEndUserUpdateDto"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/OkResponse"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError2"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -u ClientId:Secret -X PATCH https://api.aurinko.io/v1/users/{userId} \\\n    -d name='new name'"
        } ]
      },
      "delete" : {
        "operationId" : "deleteUser",
        "tags" : [ "Users" ],
        "summary" : "Delete user",
        "security" : [ {
          "AppAuth" : [ ]
        } ],
        "parameters" : [ {
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "An user id"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/OkResponse"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError2"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -u ClientId:Secret -X DELETE https://api.aurinko.io/v1/users/{userId}"
        } ]
      }
    },
    "/v1/auth/prepare" : {
      "post" : {
        "operationId" : "prepareAuth",
        "tags" : [ "Auth" ],
        "summary" : "Validate an external identity token",
        "description" : "This method is for Office365 web add-ins that want to implement external authentication based on\n[Exchange Identity Token](https://learn.microsoft.com/en-us/office/dev/add-ins/outlook/inside-the-identity-token).\n\nHere are the steps involved in establishing an Aurinko User session:\n\n1. Your Office 365 web add-in gets the Exchange identity token (see the link above for how it is done).\n\n2. Makes a POST call to the `/auth/prepare` endpoint with the following HTTP headers:\n  - `X-Aurinko-Auth-Type`: `exchangeIdToken`\n  - `Authorization`: `Bearer <your_exchange_id_token>`\n\n     Auriko validates the identity token and provides a temporary token if the ID is valid:\n     `{ \"token\": \"your-temporary-token\" }`\n\n3. The addin then calls the `/authorizeUser` endpoint with the temporary token, using the query parameter\n   `?token=your-temporary-token`.\n\nUpon successful completion of the steps a new Aurinko User is created or an existing User is re-authorized.\nAnd from now on this identity token is recognized by Aurinko and is associated with the User session.\n\nFrom here on the add-in can access Aurinko API with its Exchange identity token, this way:\n\n- `X-Aurinko-Auth-Type`: `exchangeIdToken`\n- `Authorization`: `Bearer <your_exchange_id_token>`\n",
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreparedAuthToken"
                }
              }
            }
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        }
      }
    },
    "/v1/auth/authorize" : {
      "get" : {
        "operationId" : "authorize",
        "tags" : [ "Auth" ],
        "summary" : "Start an account authorization flow",
        "security" : [ ],
        "parameters" : [ {
          "in" : "query",
          "name" : "clientId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "Application Client Id from the Aurinko portal dashboard."
        }, {
          "in" : "query",
          "name" : "serviceType",
          "required" : true,
          "schema" : {
            "type" : "core.client.servicetype",
            "$ref" : "#/components/schemas/ServiceTypeNonDaemon"
          }
        }, {
          "in" : "query",
          "name" : "scopes",
          "required" : false,
          "schema" : {
            "type" : "array",
            "nullable" : true,
            "items" : {
              "type" : "core.client.oauth.scope",
              "$ref" : "#/components/schemas/Scope"
            }
          },
          "description" : "Space separated list of Aurinko defined scopes."
        }, {
          "in" : "query",
          "name" : "nativeScopes",
          "required" : false,
          "schema" : {
            "type" : "array",
            "nullable" : true,
            "items" : {
              "type" : "core.client.oauth.nativescope",
              "$ref" : "#/components/schemas/NativeScope"
            }
          },
          "description" : "Space separated list of provider defined scopes"
        }, {
          "in" : "query",
          "name" : "responseType",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true,
            "enum" : [ "code", "token" ],
            "default" : "code"
          },
          "description" : "The type of response expected from the authorization flow. Choose `token` to directly receive the authentication token, or `code` to obtain a temporary code that can be exchanged for the token using the /auth/token endpoint."
        }, {
          "in" : "query",
          "name" : "accountId",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int64",
            "nullable" : true
          },
          "description" : "For re-authorizing an existing account."
        }, {
          "in" : "query",
          "name" : "loginHint",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "Is passed as \"login_hint\" in OAuth flows, suggesting user identity for a smoother login process."
        }, {
          "in" : "query",
          "name" : "returnUrl",
          "required" : true,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "Return/Callback url for receiving the authorization code or token. It must be registered on the settings page in Aurinko portal."
        }, {
          "in" : "query",
          "name" : "state",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "Custom state string that will be returned in the callback."
        }, {
          "in" : "query",
          "name" : "clientOrgId",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "Allows clients to group accounts based on their internal organization data."
        }, {
          "in" : "query",
          "name" : "serverUrl",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "Can be used in the form-based authentication to specify the URL of the server to which the user intends to authenticate. When included, it automatically populates the corresponding input field on the authentication form."
        }, {
          "in" : "query",
          "name" : "ensureScopes",
          "required" : false,
          "schema" : {
            "type" : "boolean",
            "nullable" : true
          },
          "description" : "When set to true, Aurinko will check if a user granted all requested permissions."
        }, {
          "in" : "query",
          "name" : "ensureAccess",
          "required" : false,
          "schema" : {
            "type" : "boolean",
            "nullable" : true
          },
          "description" : "When set to true, Aurinko will check if a user has access to the requested resources. Supported only for Google and Office365, and only for Email, Calendar, Contacts and Tasks APIs."
        }, {
          "in" : "query",
          "name" : "recycle",
          "required" : false,
          "schema" : {
            "type" : "boolean",
            "nullable" : true
          },
          "description" : "Indicates whether to reuse an existing account instead of creating a new one during authentication."
        }, {
          "in" : "query",
          "name" : "authEmail",
          "description" : "Email address that must be used for authentication. Aurinko will fail the authentication flow if the email address does not match the one provided.",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "303" : {
            "description" : "Redirect"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X GET -G https://api.aurinko.io/v1/auth/authorize \\\n    -d clientId='a8b7c6d5e4f3g2h1' \\\n    -d serviceType='Google' \\\n    -d scopes='Calendar.ReadWrite Mail.Read Mail.Send' \\\n    -d responseType='code' \\\n    -d returnUrl='https://yourapp.com/aurinko-redirect' \\\n    -d state='CustomStateString'"
        } ]
      }
    },
    "/v1/auth/authorizeDaemon" : {
      "get" : {
        "operationId" : "authorizeDaemon",
        "tags" : [ "Auth" ],
        "summary" : "Start a service/daemon account authorization flow",
        "security" : [ ],
        "parameters" : [ {
          "in" : "query",
          "name" : "clientId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "Application Client Id from the Aurinko portal dashboard."
        }, {
          "in" : "query",
          "name" : "serviceType",
          "required" : true,
          "schema" : {
            "type" : "core.client.servicetype",
            "$ref" : "#/components/schemas/ServiceTypeDaemon"
          }
        }, {
          "in" : "query",
          "name" : "scopes",
          "required" : false,
          "schema" : {
            "type" : "array",
            "nullable" : true,
            "items" : {
              "type" : "core.client.oauth.scope",
              "$ref" : "#/components/schemas/Scope"
            }
          },
          "description" : "Space separated list of Aurinko defined scopes."
        }, {
          "in" : "query",
          "name" : "nativeScopes",
          "required" : false,
          "schema" : {
            "type" : "array",
            "nullable" : true,
            "items" : {
              "type" : "core.client.oauth.nativescope",
              "$ref" : "#/components/schemas/NativeScope"
            }
          },
          "description" : "Space separated list of provider defined scopes."
        }, {
          "in" : "query",
          "name" : "responseType",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true,
            "enum" : [ "code", "token" ],
            "default" : "code"
          },
          "description" : "The type of response expected from the authorization flow. Choose `token` to directly receive the authentication token, or `code` to obtain a temporary code that can be exchanged for the token using the /auth/token endpoint."
        }, {
          "in" : "query",
          "name" : "accountId",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int64",
            "nullable" : true
          },
          "description" : "For re-authorizing an existing account."
        }, {
          "in" : "query",
          "name" : "returnUrl",
          "required" : true,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "Return/Callback url for receiving the authorization code or token. It must be registered on the settings page in Aurinko portal."
        }, {
          "in" : "query",
          "name" : "state",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "Custom state string"
        }, {
          "in" : "query",
          "name" : "clientOrgId",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "Allows clients to group accounts based on their internal organization data."
        }, {
          "in" : "query",
          "name" : "ensureScopes",
          "required" : false,
          "schema" : {
            "type" : "boolean",
            "nullable" : true
          },
          "description" : "When set to true, Aurinko will check if a user granted all requested permissions."
        } ],
        "responses" : {
          "303" : {
            "description" : "Redirect"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X GET -G https://api.aurinko.io/v1/auth/authorizeDaemon \\\n    -d clientId='a8b7c6d5e4f3g2h1' \\\n    -d serviceType='Google' \\\n    -d scopes='Calendar.ReadWrite Mail.Read Mail.Send' \\\n    -d returnUrl='https://yourapp.com/aurinko-redirect' \\\n    -d state='CustomStateString'"
        } ]
      }
    },
    "/v1/auth/authorizeUser" : {
      "get" : {
        "operationId" : "authorizeUser",
        "tags" : [ "Auth" ],
        "summary" : "Start a user session authorization flow",
        "description" : "This endpoint is used to authorize accounts that are linked to `Users`. The `accountRole` parameter must be set to either `primary` or `secondary`. A `primary` role creates a new User entity and assigns the account as its key/primary account, with subsequent authorizations simply re-authorizing the existing primary account with its User. The `secondary` role requires an existing `User` cookie or `userId`+`userSignature` parameters and links the new account to the `User` specified by the cookie or `userId`.",
        "security" : [ ],
        "parameters" : [ {
          "in" : "query",
          "name" : "clientId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "Application Client Id from the Aurinko portal dashboard."
        }, {
          "in" : "query",
          "name" : "mailboxInfo",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "Relevant only for cookie-based authentication in multi-client setups. When different client apps are connected to a single Aurinko application, this string (commonly the user's email, but can be any unique identifier) is combined with \"clientId\" to create a distinct authentication cookie name and prevent cookie conflicts. Clients using cookie-based auth must send \"clientId\" and \"mailboxInfo\" via \"X-Aurinko-Client-Id\" and \"X-Aurinko-Mailbox-Info\" HTTP headers for accurate cookie identification."
        }, {
          "in" : "query",
          "name" : "serviceType",
          "required" : true,
          "schema" : {
            "type" : "core.client.servicetype",
            "$ref" : "#/components/schemas/ServiceTypeNonDaemon"
          }
        }, {
          "in" : "query",
          "name" : "scopes",
          "required" : false,
          "schema" : {
            "type" : "array",
            "nullable" : true,
            "items" : {
              "type" : "core.client.oauth.scope",
              "$ref" : "#/components/schemas/Scope"
            }
          },
          "description" : "Space separated list of Aurinko defined scopes."
        }, {
          "in" : "query",
          "name" : "nativeScopes",
          "required" : false,
          "schema" : {
            "type" : "array",
            "nullable" : true,
            "items" : {
              "type" : "core.client.oauth.nativescope",
              "$ref" : "#/components/schemas/NativeScope"
            }
          },
          "description" : "Space separated list of provider defined scopes"
        }, {
          "in" : "query",
          "name" : "responseType",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true,
            "enum" : [ "cookie", "code", "none" ],
            "default" : "cookie"
          },
          "description" : "The type of response expected from the user authorization flow. For `primary` accounts, choose `cookie` or `code`, for `secondary` accounts, choose `none`. `cookie` will set a cookie in the user's browser in the callback, `code` will return a temporary code that can be exchanged for a user session token using the /auth/token endpoint. `none` will return only the status of the operation and information about an occurred error. Because `secondary` accounts are linked to an existing and authorized User, they don't need to receive a token or cookie in the callback."
        }, {
          "in" : "query",
          "name" : "accountId",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int64",
            "nullable" : true
          },
          "description" : "For re-authorizing an existing `secondary` account."
        }, {
          "in" : "query",
          "name" : "loginHint",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "Is passed as \"login_hint\" in OAuth flows, suggesting user identity for a smoother login process."
        }, {
          "in" : "query",
          "name" : "returnUrl",
          "required" : true,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "Return/Callback url for receiving the authorization code or token. It must be registered on the settings page in Aurinko portal."
        }, {
          "in" : "query",
          "name" : "state",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "Custom state string"
        }, {
          "in" : "query",
          "name" : "accountRole",
          "required" : true,
          "schema" : {
            "type" : "string",
            "enum" : [ "primary", "secondary" ]
          },
          "description" : "The account's role in relation to a User. Use `primary` for the account to act as a key account; this will create a new User if the primary account doesn't exist already. If the primary account exists, it's simply re-authorized without creating a new user. Choose `secondary` to associate the account with an already existing User, which requires either existing User cookie or `userId` + `userSignature` for identification."
        }, {
          "in" : "query",
          "name" : "userId",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "Identifies a user for whom a secondary account is being added. Should be used only when `userAccount=secondary` and user cookie is not present in the request. Works in conjunction with `timestamp` and `userSignature` to authorize the addition of secondary account."
        }, {
          "in" : "query",
          "name" : "timestamp",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int64",
            "nullable" : true
          },
          "description" : "Request timestamp in seconds. Should be used only when `userAccount=secondary` and user cookie is not present in the request. Works in conjunction with `userId` and `userSignature` to authorize the addition of secondary account."
        }, {
          "in" : "query",
          "name" : "userSignature",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "A string that is generated by concatenating `userId` and `timestamp`, then hashing with HmacSHA256 using the application's `clientSecret`, then encoding in Hex, base64, or base64 web format. Should be used only when `userAccount=secondary` and user cookie is not present in the request Works in conjunction with `userId` and `timestamp` to authorize the addition of secondary account."
        }, {
          "in" : "query",
          "name" : "serverUrl",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "Can be used in the form-based authentication to specify the URL of the server to which the user intends to authenticate. When included, it automatically populates the corresponding input field on the authentication form."
        }, {
          "in" : "query",
          "name" : "ensureScopes",
          "required" : false,
          "schema" : {
            "type" : "boolean",
            "nullable" : true
          },
          "description" : "When set to true, Aurinko will check if a user granted all requested permissions."
        }, {
          "in" : "query",
          "name" : "ensureAccess",
          "required" : false,
          "schema" : {
            "type" : "boolean",
            "nullable" : true
          },
          "description" : "When set to true, Aurinko will check if a user has access to the requested resources. Supported only for Google and Office365, and only for Email, Calendar, Contacts and Tasks APIs."
        }, {
          "in" : "query",
          "name" : "token",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "Token from the /auth/prepare endpoint."
        } ],
        "responses" : {
          "303" : {
            "description" : "Redirect"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X GET -G https://api.aurinko.io/v1/auth/authorizeUser \\\n    -d clientId='a8b7c6d5e4f3g2h1' \\\n    -d serviceType='Google' \\\n    -d accountRole='primary' \\\n    -d scopes='Calendar.ReadWrite Mail.Read Mail.Send' \\\n    -d responseType='cookie' \\\n    -d returnUrl='https://yourapp.com/aurinko-redirect' \\\n    -d state='CustomStateString'"
        } ]
      }
    },
    "/v1/auth/token/{code}" : {
      "get" : {
        "operationId" : "getAccessTokenByCode",
        "tags" : [ "Auth" ],
        "summary" : "Get access token, Deprecated use POST instead",
        "security" : [ {
          "AppAuth" : [ ]
        } ],
        "parameters" : [ {
          "in" : "path",
          "name" : "code",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "A code returned by /authorize"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/AccountSaveResult"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError2"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -u ClientId:Secret -X GET https://api.aurinko.io/v1/auth/token/<code>"
        } ]
      },
      "post" : {
        "operationId" : "authCodeExchange",
        "tags" : [ "Auth" ],
        "summary" : "Request an access token",
        "security" : [ {
          "AppAuth" : [ ]
        } ],
        "parameters" : [ {
          "in" : "path",
          "name" : "code",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "A code returned by /authorize"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/AccountSaveResult"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError2"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -u ClientId:Secret -X POST https://api.aurinko.io/v1/auth/token/<code>"
        } ]
      }
    },
    "/v1/subscriptions" : {
      "get" : {
        "operationId" : "getSubscriptions",
        "tags" : [ "Webhooks" ],
        "summary" : "Get a list of push event subscriptions",
        "description" : "See [Webhooks](#tag/Webhooks) for details.\n",
        "parameters" : [ {
          "in" : "query",
          "name" : "limit",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "nullable" : true,
            "default" : 50
          },
          "description" : "page size"
        }, {
          "in" : "query",
          "name" : "offset",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "nullable" : true,
            "default" : 0
          },
          "description" : "return records offset by the given number"
        }, {
          "in" : "query",
          "name" : "includeInactive",
          "required" : false,
          "schema" : {
            "type" : "boolean",
            "nullable" : true,
            "default" : false
          },
          "description" : "include inactive subscriptions"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SubscriptionsPage"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -H 'Authorization: Bearer <access token>' \\\n    -X POST https://api.aurinko.io/v1/subscriptions"
        } ]
      },
      "post" : {
        "operationId" : "subscribe",
        "tags" : [ "Webhooks" ],
        "summary" : "Create a push event subscription",
        "description" : "See [Webhooks](#tag/Webhooks) for details.\n",
        "requestBody" : {
          "description" : "Resource, i.e '/email/messages', '/calendars/primary/events', '/calendars/{id}/events'",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/SubscriptionRequest"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SubscriptionResponse"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -H 'Authorization: Bearer <access token>' \\\n    -X POST https://api.aurinko.io/v1/subscriptions \\\n    -d '{\n        \"resource\": \"/calendars/primary/events\",\n        \"notificationUrl\": \"https://myapp.com/push\"\n       }'"
        } ]
      }
    },
    "/v1/subscriptions/{id}" : {
      "get" : {
        "operationId" : "getSubscription",
        "tags" : [ "Webhooks" ],
        "summary" : "Check a subscription status",
        "description" : "See [Webhooks](#tag/Webhooks) for details.\n",
        "parameters" : [ {
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "description" : "A subscription identifier"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SubscriptionResponse"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        }
      },
      "delete" : {
        "operationId" : "unsubscribe",
        "tags" : [ "Webhooks" ],
        "summary" : "Remove a subscription",
        "description" : "See [Webhooks](#tag/Webhooks) for details.\n",
        "parameters" : [ {
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "description" : "A subscription identifier"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        }
      }
    },
    "/v1/tasklists" : {
      "get" : {
        "operationId" : "taskListsList",
        "tags" : [ "TaskLists" ],
        "summary" : "Request list of task lists",
        "parameters" : [ {
          "in" : "query",
          "name" : "pageToken",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "A token received as nextPageToken from a previous page request (for the first page it must be empty)"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/TaskListPage"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -H 'Authorization: Bearer <access token>' \\\n    -X GET https://api.aurinko.io/v1/tasklists"
        } ]
      },
      "post" : {
        "operationId" : "createTaskList",
        "tags" : [ "TaskLists" ],
        "summary" : "Create a task list",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/TaskListCreate"
              }
            }
          }
        },
        "responses" : {
          "201" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/TaskList"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -H 'Authorization: Bearer <access token>' \\\n    -X POST https://api.aurinko.io/v1/tasklists \\\n    -d '{ \"title\": \"New task list\" }'"
        } ]
      }
    },
    "/v1/tasklists/{taskListId}" : {
      "get" : {
        "operationId" : "taskList",
        "tags" : [ "TaskLists" ],
        "summary" : "Request a task list by id",
        "parameters" : [ {
          "in" : "path",
          "name" : "taskListId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "Task list id"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/TaskList"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -H 'Authorization: Bearer <access token>' \\\n    -X GET https://api.aurinko.io/v1/tasklists/{taskListId}"
        } ]
      },
      "patch" : {
        "operationId" : "updateTaskList",
        "tags" : [ "TaskLists" ],
        "summary" : "Update a task list",
        "parameters" : [ {
          "in" : "path",
          "name" : "taskListId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "TaskList id"
        }, {
          "in" : "header",
          "name" : "If-Match",
          "description" : "The HTTP entity tag of the resource (ETag). Used for web cache validation.",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/TaskListUpdate"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/TaskList"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -H 'Authorization: Bearer <access token>' \\\n    -X PATCH https://api.aurinko.io/v1/tasklists \\\n    -d '{ \"title\": \"New task list\" }'"
        } ]
      },
      "delete" : {
        "operationId" : "deleteTaskList",
        "tags" : [ "TaskLists" ],
        "summary" : "Delete a task list by id",
        "parameters" : [ {
          "in" : "path",
          "name" : "taskListId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "Task list id"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/OkResponse"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -H 'Authorization: Bearer <access token>' \\\n    -X DELETE https://api.aurinko.io/v1/tasklists/{taskListId}"
        } ]
      }
    },
    "/v1/tasklists/{taskListId}/sync" : {
      "post" : {
        "operationId" : "taskSyncStart",
        "tags" : [ "TaskSync" ],
        "summary" : "Start a new task sync",
        "parameters" : [ {
          "in" : "path",
          "name" : "taskListId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "Task list id"
        }, {
          "in" : "query",
          "name" : "skipCompletedBeforeDate",
          "description" : "Skip completed tasks before date.\n",
          "required" : false,
          "schema" : {
            "type" : "string",
            "format" : "date-time"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SyncStatus"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X POST -H 'Authorization: Bearer <access token>' \\\n    -G https://api.aurinko.io/v1/tasklists/{taskListId}/sync \\\n    -d skipCompletedBeforeDate='2023-05-29T10:58:27Z'"
        } ]
      }
    },
    "/v1/tasklists/{taskListId}/sync/updated" : {
      "get" : {
        "operationId" : "taskSyncUpdated",
        "tags" : [ "TaskSync" ],
        "summary" : "Request changed tasks (deltas)",
        "parameters" : [ {
          "in" : "path",
          "name" : "taskListId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "Task list id"
        }, {
          "in" : "query",
          "name" : "deltaToken",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "A token received as nextDeltaToken from a previous sync request or a start sync request"
        }, {
          "in" : "query",
          "name" : "pageToken",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "A token received as nextPageToken from a previous page request"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SyncTasksPage"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "410" : {
            "$ref" : "#/components/responses/ResourceExpiredError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X GET -H 'Authorization: Bearer <access token>' \\\n    -G https://api.aurinko.io/v1/tasklists/{taskListId}/sync/updated \\\n    -d deltaToken='a8b7c6d5e4f3g2h1'"
        } ]
      }
    },
    "/v1/tasklists/{taskListId}/sync/deleted" : {
      "get" : {
        "operationId" : "taskSyncDeleted",
        "tags" : [ "TaskSync" ],
        "summary" : "Request deleted tasks (deltas)",
        "parameters" : [ {
          "in" : "path",
          "name" : "taskListId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "Task list id"
        }, {
          "in" : "query",
          "name" : "deltaToken",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "A token received as nextDeltaToken from a previous sync request or a start sync request"
        }, {
          "in" : "query",
          "name" : "pageToken",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "A token received as nextPageToken from a previous page request"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DeletedPage"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "410" : {
            "$ref" : "#/components/responses/ResourceExpiredError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X GET -H 'Authorization: Bearer <access token>' \\\n    -G https://api.aurinko.io/v1/tasklists/{taskListId}/sync/deleted \\\n    -d deltaToken='a8b7c6d5e4f3g2h1'"
        } ]
      }
    },
    "/v1/tasklists/{taskListId}/tasks" : {
      "get" : {
        "operationId" : "tasksList",
        "tags" : [ "Tasks" ],
        "summary" : "Request list of tasks",
        "parameters" : [ {
          "in" : "path",
          "name" : "taskListId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "Task list id"
        }, {
          "in" : "query",
          "name" : "pageToken",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "A token received as nextPageToken from a previous page request (for the first page it must be empty)"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/TasksPage"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -H 'Authorization: Bearer <access token>' \\\n    -X GET https://api.aurinko.io/v1/tasklists/{taskListId}/tasks"
        } ]
      },
      "post" : {
        "operationId" : "createTask",
        "tags" : [ "Tasks" ],
        "summary" : "Create a task",
        "parameters" : [ {
          "in" : "path",
          "name" : "taskListId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "Task list id"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/TaskCreate"
              }
            }
          }
        },
        "responses" : {
          "201" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/TaskCreateResponse"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -H 'Authorization: Bearer <access token>' \\\n    -X POST https://api.aurinko.io/v1/tasklists/{taskListId}/tasks \\\n    -d '{ \"title\": \"New task list\" }'"
        } ]
      }
    },
    "/v1/tasklists/{taskListId}/tasks/{id}" : {
      "get" : {
        "operationId" : "task",
        "tags" : [ "Tasks" ],
        "summary" : "Request a task by id",
        "parameters" : [ {
          "in" : "path",
          "name" : "taskListId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "Task list id"
        }, {
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "Task id"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Task"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -H 'Authorization: Bearer <access token>' \\\n    -X GET https://api.aurinko.io/v1/tasklists/{taskListId}/tasks/{id}"
        } ]
      },
      "patch" : {
        "operationId" : "updateTask",
        "tags" : [ "Tasks" ],
        "summary" : "Update a task",
        "parameters" : [ {
          "in" : "path",
          "name" : "taskListId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "Task list id"
        }, {
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "Task id"
        }, {
          "in" : "header",
          "name" : "If-Match",
          "description" : "The HTTP entity tag of the resource (ETag). Used for web cache validation.",
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/TaskUpdate"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/TaskUpdateResponse"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -H 'Authorization: Bearer <access token>' \\\n    -X PATCH https://api.aurinko.io/v1/tasklists \\\n    -d '{ \"title\": \"New task list\" }'"
        } ]
      },
      "delete" : {
        "operationId" : "deleteTask",
        "tags" : [ "Tasks" ],
        "summary" : "Delete a task by id",
        "parameters" : [ {
          "in" : "path",
          "name" : "taskListId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "Task list id"
        }, {
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "Task id"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/OkResponse"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -H 'Authorization: Bearer <access token>' \\\n    -X DELETE https://api.aurinko.io/v1/tasklists/{taskListId}/tasks/{id}"
        } ]
      }
    },
    "/v1/drives" : {
      "get" : {
        "operationId" : "drives",
        "tags" : [ "Drives" ],
        "summary" : "List drives",
        "parameters" : [ {
          "in" : "query",
          "name" : "pageToken",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DrivePage"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X GET -H 'Authorization: Bearer <access token>' \\\n    -G https://api.aurinko.io/v1/drives"
        } ]
      }
    },
    "/v1/drives/{id}" : {
      "get" : {
        "operationId" : "driveById",
        "tags" : [ "Drives" ],
        "summary" : "Get a drive by id",
        "parameters" : [ {
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "drive identifier"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Drive"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X GET -H 'Authorization: Bearer <access token>' \\\n    https://api.aurinko.io/v1/drives/{id}"
        } ]
      }
    },
    "/v1/drives/{driveId}/items/{itemId}" : {
      "get" : {
        "operationId" : "itemInfo",
        "tags" : [ "Drives" ],
        "summary" : "Get a drive item by id",
        "parameters" : [ {
          "in" : "path",
          "name" : "driveId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "drive identifier"
        }, {
          "in" : "path",
          "name" : "itemId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "drive item identifier"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DriveItem"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X GET -H 'Authorization: Bearer <access token>' \\\n    https://api.aurinko.io/v1/drives/{driveId}/items/{itemId}"
        } ]
      }
    },
    "/v1/drives/{driveId}/items/{itemId}/children" : {
      "get" : {
        "operationId" : "itemChildren",
        "tags" : [ "Drives" ],
        "summary" : "Get a drive item's children",
        "parameters" : [ {
          "in" : "path",
          "name" : "driveId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "drive identifier"
        }, {
          "in" : "path",
          "name" : "itemId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "drive item identifier"
        }, {
          "in" : "query",
          "name" : "pageToken",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DriveItemPage"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X GET -H 'Authorization: Bearer <access token>' \\\n    https://api.aurinko.io/v1/drives/{driveId}/items/{itemId}/children"
        } ]
      }
    },
    "/v1/drives/{driveId}/sync" : {
      "post" : {
        "operationId" : "driveSyncStart",
        "tags" : [ "DrivesSync" ],
        "summary" : "Start a new drive item sync",
        "parameters" : [ {
          "in" : "path",
          "name" : "driveId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "drive identifier"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SyncStatus"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X POST -H 'Authorization: Bearer <access token>' \\\n    -G https://api.aurinko.io/v1/drives/{driveId}/sync"
        } ]
      }
    },
    "/v1/drives/{driveId}/sync/updated" : {
      "get" : {
        "operationId" : "driveSyncUpdated",
        "tags" : [ "DrivesSync" ],
        "summary" : "Request changed drive items (deltas)",
        "parameters" : [ {
          "in" : "path",
          "name" : "driveId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "drive identifier"
        }, {
          "in" : "query",
          "name" : "deltaToken",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "A token received as nextDeltaToken from a previous sync request or a start sync request"
        }, {
          "in" : "query",
          "name" : "pageToken",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "A token received as nextPageToken from a previous page request"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DriveItemPage"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "410" : {
            "$ref" : "#/components/responses/ResourceExpiredError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X GET -H 'Authorization: Bearer <access token>' \\\n    -G https://api.aurinko.io/v1/drives/{driveId}/sync/updated \\\n    -d deltaToken='a8b7c6d5e4f3g2h1'"
        } ]
      }
    },
    "/v1/drives/{driveId}/sync/deleted" : {
      "get" : {
        "operationId" : "driveSyncDeleted",
        "tags" : [ "DrivesSync" ],
        "summary" : "Request deleted drive items (deltas)",
        "parameters" : [ {
          "in" : "path",
          "name" : "driveId",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "description" : "drive identifier"
        }, {
          "in" : "query",
          "name" : "deltaToken",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "A token received as nextDeltaToken from a previous sync request or a start sync request"
        }, {
          "in" : "query",
          "name" : "pageToken",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "A token received as nextPageToken from a previous page request"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DeletedPage"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError"
          },
          "410" : {
            "$ref" : "#/components/responses/ResourceExpiredError"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -X GET -H 'Authorization: Bearer <access token>' \\\n    -G https://api.aurinko.io/v1/drives/{driveId}/sync/deleted \\\n    -d deltaToken='a8b7c6d5e4f3g2h1'"
        } ]
      }
    },
    "/v1/organizations" : {
      "get" : {
        "operationId" : "getOrganizations",
        "tags" : [ "Organizations" ],
        "summary" : "Get organizations",
        "security" : [ {
          "AppAuth" : [ ]
        } ],
        "parameters" : [ {
          "in" : "query",
          "name" : "provider",
          "required" : false,
          "schema" : {
            "type" : "core.client.serviceprovider",
            "nullable" : true,
            "$ref" : "#/components/schemas/ServiceProvider"
          }
        }, {
          "in" : "query",
          "name" : "search",
          "required" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : "external id, name or domain"
        }, {
          "in" : "query",
          "name" : "limit",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "nullable" : true,
            "default" : 50
          },
          "description" : "page size"
        }, {
          "in" : "query",
          "name" : "offset",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "nullable" : true,
            "default" : 0
          },
          "description" : "return records offset by the given number"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/OrganizationDtoPage"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError2"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -u ClientId:Secret -X GET https://api.aurinko.io/v1/organizations \\\n    -G -d search='12345'"
        } ]
      }
    },
    "/v1/organizations/{id}" : {
      "delete" : {
        "operationId" : "deleteOrganization",
        "tags" : [ "Organizations" ],
        "summary" : "Delete organization",
        "security" : [ {
          "AppAuth" : [ ]
        } ],
        "parameters" : [ {
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "description" : "An organization id"
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/OkResponse"
                }
              }
            }
          },
          "401" : {
            "$ref" : "#/components/responses/UnauthorizedError2"
          },
          "default" : {
            "$ref" : "#/components/responses/UnexpectedError"
          }
        },
        "x-codeSamples" : [ {
          "lang" : "cURL",
          "source" : "curl -u ClientId:Secret -X DELETE https://api.aurinko.io/v1/organizations/{id}"
        } ]
      }
    }
  },
  "components" : {
    "schemas" : {
      "CalendarMode" : {
        "type" : "string",
        "enum" : [ "user", "group" ]
      },
      "DataConsumerFilter" : {
        "type" : "string",
        "enum" : [ "withoutDrafts" ]
      },
      "DataConsumerDetailLevel" : {
        "type" : "string",
        "enum" : [ "signal", "status" ],
        "description" : "Level `signal` supported by Google subscriptions on `/email/messages` (if Pub/Sub activated) and `/calendar/:id/events`.\nMinimalist notification. Dispatches a webhook without a data payload.\nUse this to trigger internal sync logic while keeping network overhead and data exposure to a minimum.\n"
      },
      "ServiceType" : {
        "type" : "string",
        "enum" : [ "Google", "GoogleBot", "Office365", "EWS", "IMAP", "Salesforce", "Salesflare", "Repfabric", "MsTeamsBot", "Slack", "SlackBot", "SugarCRM", "HighLevel", "Hubspot", "Zoom", "ZoomBot", "Webex", "WebexBot", "Pipedrive", "EclipseERP", "AutoQuotes", "NetSuite", "MCTrade", "SpecPath", "Zoho", "Clientify", "QuickBooks", "ActiveCampaign", "Creatio", "ConstantContact", "Fishbowl", "iCloud" ]
      },
      "ServiceTypeDaemon" : {
        "type" : "string",
        "enum" : [ "Google", "GoogleBot", "Office365", "EWS", "MsTeamsBot", "Slack", "SlackBot", "ZoomBot", "MCTrade", "Zoho" ]
      },
      "ServiceTypeNonDaemon" : {
        "type" : "string",
        "enum" : [ "Google", "Office365", "EWS", "IMAP", "Salesforce", "Salesflare", "Repfabric", "Slack", "SugarCRM", "HighLevel", "Hubspot", "Zoom", "Webex", "WebexBot", "Pipedrive", "EclipseERP", "AutoQuotes", "NetSuite", "SpecPath", "Zoho", "Clientify", "QuickBooks", "ActiveCampaign", "Creatio", "ConstantContact", "Fishbowl", "iCloud" ]
      },
      "ServiceProvider" : {
        "type" : "string",
        "enum" : [ "Office365", "Google", "Zoho", "IMAP", "EWS", "Yahoo", "AOL", "iCloud", "BigPond", "Fastmail", "Repfabric", "Salesforce", "Salesflare", "SugarCRM", "HighLevel", "Hubspot", "Pipedrive", "AutoQuotes", "SpecPath", "Clientify", "EclipseERP", "NetSuite", "Fishbowl", "Slack", "Zoom", "Webex", "MCTrade", "Creatio", "QuickBooks", "ActiveCampaign", "ConstantContact", "Yoxel" ]
      },
      "ServiceKey" : {
        "type" : "string",
        "enum" : [ "email", "orgId", "userId", "serverUrl", "username", "clientOrgId" ],
        "description" : "Keys that control account re-cycling."
      },
      "Scope" : {
        "type" : "string",
        "enum" : [ "Calendar.Read", "Calendar.ReadWrite", "Mail.Read", "Mail.ReadWrite", "Mail.Send", "Mail.Drafts", "Mail.All", "Contacts.Read", "Contacts.ReadWrite", "Tasks.Read", "Tasks.ReadWrite" ],
        "description" : "Space separated list of scopes"
      },
      "NativeScope" : {
        "type" : "string",
        "description" : "Native scope from provider's API."
      },
      "NativeProperty" : {
        "type" : "string"
      },
      "UserAccountType" : {
        "type" : "string",
        "enum" : [ "primary", "secondary" ],
        "description" : "Type of user account. Required if `userId` is provided."
      },
      "BodyType" : {
        "type" : "string",
        "enum" : [ "html", "text" ]
      },
      "Sensitivity" : {
        "type" : "string",
        "enum" : [ "normal", "private", "personal", "confidential" ]
      },
      "ShowAs" : {
        "type" : "string",
        "enum" : [ "free", "busy", "tentative", "outOfOffice", "unknown" ]
      },
      "EndUserExtIdType" : {
        "type" : "string",
        "enum" : [ "exchangeIdentity" ]
      },
      "AccountType" : {
        "type" : "string",
        "enum" : [ "daemon", "personal", "managed" ]
      },
      "TokenStatus" : {
        "type" : "string",
        "enum" : [ "active", "invalid", "dead" ],
        "description" : "* active - means the token is active and ready for use\n* invalid - means that Aurinko failed to access provider API with authentication data.\n   Basically it indicates that Aurinko has received a 401 http status from provider and marked this token as non-active.\n* dead - this is a special variant of \"invalid\" status that can occur only with OAuth 2.0 accounts.\n   It means that Aurinko failed to refresh OAuth access token and received \"invalid_grant\" error which indicates\n   that the access/refresh tokens pair cannot be used anymore and is basically dead.\n   The difference between invalid and dead is that with invalid tokens Aurinko will still try to\n   access provider API and with dead Aurinko won't even attempt:\n   trying to use dead token, Aurinko will just return 401 without making calls to the provider.\n"
      },
      "SysLabel" : {
        "type" : "string",
        "enum" : [ "junk", "trash", "sent", "inbox", "unread", "flagged", "important", "draft" ]
      },
      "OkResponse" : {
        "type" : "object",
        "properties" : {
          "status" : {
            "type" : "string",
            "enum" : [ "Ok" ]
          }
        }
      },
      "AccountsPage" : {
        "type" : "object",
        "properties" : {
          "offset" : {
            "type" : "integer"
          },
          "totalSize" : {
            "type" : "integer"
          },
          "done" : {
            "type" : "boolean"
          },
          "records" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ApiAccountOutDto"
            }
          }
        }
      },
      "ApiAccountInDto" : {
        "type" : "object",
        "required" : [ "serviceType", "active" ],
        "properties" : {
          "serviceType" : {
            "$ref" : "#/components/schemas/ServiceType"
          },
          "serviceProvider" : {
            "$ref" : "#/components/schemas/ServiceProvider"
          },
          "authScopes" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Scope"
            }
          },
          "authOrgId" : {
            "type" : "string"
          },
          "authUserId" : {
            "type" : "string"
          },
          "clientOrgId" : {
            "type" : "string"
          },
          "serverUrl" : {
            "type" : "string"
          },
          "loginString" : {
            "type" : "string",
            "description" : "This or email field must be specified"
          },
          "oauthClientId" : {
            "type" : "string"
          },
          "active" : {
            "type" : "boolean",
            "description" : "The account is always active in the current API version"
          },
          "authString1" : {
            "type" : "string"
          },
          "authString2" : {
            "type" : "string"
          },
          "password" : {
            "type" : "string",
            "description" : "Password for IMAP accounts"
          },
          "authObtainedAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "authExpiresAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "email" : {
            "type" : "string",
            "description" : "This or loginString field must be specified"
          },
          "email2" : {
            "type" : "string"
          },
          "name" : {
            "type" : "string"
          },
          "serverInfo" : {
            "type" : "string"
          },
          "timezone" : {
            "type" : "string"
          },
          "copyToSent" : {
            "type" : "boolean",
            "description" : "Copy sent emails to “Sent Messages” folder"
          },
          "trustServer" : {
            "type" : "boolean",
            "default" : false
          }
        }
      },
      "ApiAccountOutDto" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "integer",
            "format" : "int64"
          },
          "parentId" : {
            "type" : "integer",
            "format" : "int64"
          },
          "serviceType" : {
            "$ref" : "#/components/schemas/ServiceType"
          },
          "serviceProvider" : {
            "$ref" : "#/components/schemas/ServiceProvider"
          },
          "active" : {
            "type" : "boolean",
            "description" : "The account is always active in the current API version"
          },
          "tokenStatus" : {
            "$ref" : "#/components/schemas/TokenStatus"
          },
          "tokenError" : {
            "type" : "string"
          },
          "type" : {
            "$ref" : "#/components/schemas/AccountType"
          },
          "daemon" : {
            "type" : "boolean"
          },
          "loginString" : {
            "type" : "string"
          },
          "email" : {
            "type" : "string"
          },
          "email2" : {
            "type" : "string"
          },
          "mailboxAddress" : {
            "type" : "string"
          },
          "name" : {
            "type" : "string"
          },
          "name2" : {
            "type" : "string"
          },
          "serverUrl" : {
            "type" : "string"
          },
          "serverUrl2" : {
            "type" : "string"
          },
          "clientOrgId" : {
            "type" : "string"
          },
          "authUserId" : {
            "type" : "string"
          },
          "authOrgId" : {
            "type" : "string"
          },
          "timezone" : {
            "type" : "string"
          },
          "tokenIssuedAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "tokenLastActivity" : {
            "type" : "string",
            "format" : "date-time"
          },
          "authScopes" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Scope"
            }
          },
          "authNativeScopes" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/NativeScope"
            }
          },
          "authObtainedAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "authExpiresAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "userId" : {
            "type" : "string"
          },
          "copyToSent" : {
            "type" : "boolean",
            "description" : "Copy sent emails to “Sent Messages” folder"
          },
          "trustServer" : {
            "type" : "boolean"
          },
          "createdAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "updatedAt" : {
            "type" : "string",
            "format" : "date-time"
          }
        }
      },
      "AccountSaveResult" : {
        "type" : "object",
        "properties" : {
          "accountId" : {
            "type" : "integer",
            "format" : "int64"
          },
          "accessToken" : {
            "type" : "string"
          },
          "userId" : {
            "type" : "string"
          },
          "userSession" : {
            "type" : "string"
          }
        }
      },
      "ApiRequestFailed" : {
        "type" : "object",
        "properties" : {
          "code" : {
            "type" : "string"
          },
          "message" : {
            "type" : "string",
            "description" : "A message describing the error."
          },
          "requestId" : {
            "type" : "string",
            "description" : "A unique identifier for the request.",
            "format" : "uuid"
          },
          "originalError" : {
            "type" : "object",
            "description" : "Optional. The original error or additional context as a JSON value.\n"
          }
        }
      },
      "PreparedAuthToken" : {
        "type" : "object",
        "properties" : {
          "token" : {
            "type" : "string"
          }
        }
      },
      "EndUserDtoPage" : {
        "type" : "object",
        "properties" : {
          "offset" : {
            "type" : "integer"
          },
          "totalSize" : {
            "type" : "integer",
            "format" : "int64"
          },
          "done" : {
            "type" : "boolean"
          },
          "records" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/EndUserDto"
            }
          }
        }
      },
      "EndUserDto" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string"
          },
          "appId" : {
            "type" : "integer",
            "format" : "int64"
          },
          "email" : {
            "type" : "string"
          },
          "name" : {
            "type" : "string"
          },
          "authOrgId" : {
            "type" : "string"
          },
          "createdAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "lastActivity" : {
            "type" : "string",
            "format" : "date-time"
          },
          "trustedIdentity" : {
            "type" : "boolean"
          },
          "externalIdType" : {
            "$ref" : "#/components/schemas/EndUserExtIdType"
          },
          "accounts" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/EndUserAccountDto"
            }
          }
        }
      },
      "ApiEndUserUpdateDto" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string"
          },
          "email" : {
            "type" : "string"
          }
        }
      },
      "EndUserSettingsDto" : {
        "type" : "object",
        "properties" : {
          "workHours" : {
            "$ref" : "#/components/schemas/WeekWorkSchedule"
          }
        }
      },
      "OrganizationDtoPage" : {
        "type" : "object",
        "properties" : {
          "offset" : {
            "type" : "integer"
          },
          "totalSize" : {
            "type" : "integer",
            "format" : "int64"
          },
          "done" : {
            "type" : "boolean"
          },
          "records" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/OrganizationDto"
            }
          }
        }
      },
      "OrganizationDto" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "integer",
            "format" : "int64"
          },
          "serviceProvider" : {
            "$ref" : "#/components/schemas/ServiceProvider"
          },
          "xid" : {
            "type" : "string"
          },
          "domain" : {
            "type" : "string"
          },
          "name" : {
            "type" : "string"
          },
          "createdAt" : {
            "type" : "string",
            "format" : "date-time"
          }
        }
      },
      "EndUserAccountDto" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "integer",
            "format" : "int64"
          },
          "parentId" : {
            "type" : "integer",
            "format" : "int64"
          },
          "serviceType" : {
            "$ref" : "#/components/schemas/ServiceType"
          },
          "userAccountType" : {
            "$ref" : "#/components/schemas/UserAccountType"
          },
          "type" : {
            "$ref" : "#/components/schemas/AccountType"
          },
          "active" : {
            "type" : "boolean",
            "description" : "The account is always active in the current API version"
          },
          "loginString" : {
            "type" : "string"
          },
          "email" : {
            "type" : "string"
          },
          "name" : {
            "type" : "string"
          },
          "serverUrl" : {
            "type" : "string"
          },
          "serverUrl2" : {
            "type" : "string"
          },
          "clientOrgId" : {
            "type" : "string"
          },
          "authUserId" : {
            "type" : "string"
          },
          "authOrgId" : {
            "type" : "string"
          },
          "timezone" : {
            "type" : "string"
          },
          "authObtainedAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "organization" : {
            "$ref" : "#/components/schemas/OrganizationDto"
          },
          "tokenStatus" : {
            "$ref" : "#/components/schemas/TokenStatus"
          },
          "scopes" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Scope"
            }
          },
          "authScopes" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Scope"
            }
          },
          "nativeScopes" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/NativeScope"
            }
          },
          "authNativeScopes" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/NativeScope"
            }
          },
          "hasApiErrors" : {
            "type" : "boolean"
          },
          "bookingCount" : {
            "type" : "integer"
          },
          "trackingActive" : {
            "type" : "boolean"
          },
          "templatesCount" : {
            "type" : "integer"
          },
          "createdAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "updatedAt" : {
            "type" : "string",
            "format" : "date-time"
          }
        }
      },
      "EndUserAccountsPage" : {
        "type" : "object",
        "properties" : {
          "nextPageToken" : {
            "type" : "string"
          },
          "length" : {
            "type" : "integer"
          },
          "records" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/EndUserAccountDto"
            }
          }
        }
      },
      "BookingRequiredMode" : {
        "type" : "string",
        "enum" : [ "one", "all" ]
      },
      "BookingPage" : {
        "type" : "object",
        "properties" : {
          "offset" : {
            "type" : "integer"
          },
          "totalSize" : {
            "type" : "integer",
            "format" : "int64"
          },
          "done" : {
            "type" : "boolean"
          },
          "records" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/BookingOutDto"
            }
          }
        }
      },
      "BookingInDto" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string",
            "description" : "Profile name used in calendar links to identify a profile.",
            "example" : "aurDemo - https://calendar.aurinko.io/aurDemo"
          },
          "durationMinutes" : {
            "type" : "integer",
            "description" : "Duration of the meeting in minutes.",
            "example" : 30
          },
          "bufferBetweenMinutes" : {
            "type" : "integer",
            "description" : "A Duration specifying the minimum number of minutes that must be free after the meeting in minutes.",
            "example" : 15
          },
          "availabilityStep" : {
            "type" : "integer",
            "description" : "Determines the interval at which new meeting slots are made available throughout the working hours. Allowed values are 5, 10, 15, 20, 30, 60."
          },
          "startAfterMinutes" : {
            "type" : "integer",
            "description" : "The available meeting times can only start this minutes after the current time. Default is 1 hour."
          },
          "startTime" : {
            "type" : "string",
            "format" : "date-time",
            "description" : "The beginning of the formation of intervals. Must be in the future, otherwise the current time will be used."
          },
          "endTime" : {
            "type" : "string",
            "format" : "date-time",
            "description" : "The ending of the formation of intervals. If the time specified here is in the past, the intervals will be empty, regardless of the Start time parameter."
          },
          "timeAvailableFor" : {
            "type" : "string",
            "description" : "Time period (in ISO-8601 format) the profile is covering. For example, P3M (3 months), P4W (4 weeks), P5D (5 days).",
            "example" : "P4W"
          },
          "subject" : {
            "type" : "string",
            "description" : "Subject for events booked using this profile."
          },
          "description" : {
            "type" : "string",
            "description" : "Description for events booked using this profile."
          },
          "location" : {
            "type" : "string",
            "description" : "Location for events booked using this profile."
          },
          "workHours" : {
            "$ref" : "#/components/schemas/WeekWorkSchedule"
          },
          "availabilityIntervals" : {
            "description" : "the hours of availability for a date range, it have priority over workHours.",
            "$ref" : "#/components/schemas/AvailabilityIntervals"
          },
          "context" : {
            "type" : "string",
            "description" : "Custom client data stored for the profile."
          },
          "startConference" : {
            "type" : "boolean",
            "description" : "Whether to create an online conference (hangoutsMeet, teamsForBusiness, etc.) for the event. Note, not all providers support creating conferences."
          },
          "openMeetingUrl" : {
            "type" : "string",
            "description" : "The value of the {{openMeetingUrl}} variable that can be used in the event description or subject."
          }
        }
      },
      "BookingOutDto" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "integer",
            "format" : "int64"
          },
          "name" : {
            "type" : "string",
            "description" : "Profile name used in calendar links to identify a profile.",
            "example" : "aurDemo - https://calendar.aurinko.io/aurDemo"
          },
          "durationMinutes" : {
            "type" : "integer",
            "description" : "Duration of the meeting in minutes.",
            "example" : 30
          },
          "bufferBetweenMinutes" : {
            "type" : "integer",
            "description" : "A Duration specifying the minimum number of minutes that must be free after the meeting in minutes.",
            "example" : 15
          },
          "availabilityStep" : {
            "type" : "integer",
            "description" : "Determines the interval at which new meeting slots are made available throughout the working hours. Allowed values are 5, 10, 15, 20, 30, 60."
          },
          "startAfterMinutes" : {
            "type" : "integer",
            "description" : "The available meeting times can only start this minutes after the current time. Default is 1 hour."
          },
          "startTime" : {
            "type" : "string",
            "format" : "date-time",
            "description" : "The beginning of the formation of intervals. Must be in the future, otherwise the current time will be used."
          },
          "endTime" : {
            "type" : "string",
            "format" : "date-time",
            "description" : "The ending of the formation of intervals. If the time specified here is in the past, the intervals will be empty, regardless of the Start time parameter."
          },
          "timeAvailableFor" : {
            "type" : "string",
            "description" : "Time period (in ISO-8601 format) the profile is covering. For example, P3M (3 months), P4W (4 weeks), P5D (5 days).",
            "example" : "P4W"
          },
          "subject" : {
            "type" : "string",
            "description" : "Subject for events booked using this profile."
          },
          "description" : {
            "type" : "string",
            "description" : "Description for events booked using this profile."
          },
          "location" : {
            "type" : "string",
            "description" : "Location for events booked using this profile."
          },
          "workHours" : {
            "$ref" : "#/components/schemas/WeekWorkSchedule"
          },
          "availabilityIntervals" : {
            "description" : "the hours of availability for a date range, it have priority over workHours.",
            "$ref" : "#/components/schemas/AvailabilityIntervals"
          },
          "context" : {
            "type" : "string",
            "description" : "Custom client data stored for the profile."
          },
          "startConference" : {
            "type" : "boolean",
            "description" : "Whether to create an online conference (hangoutsMeet, teamsForBusiness, etc.) for the event. Note, not all providers support creating conferences."
          },
          "openMeetingUrl" : {
            "type" : "string",
            "description" : "The value of the {{}openMeetingUrl}} variable that can be used in the event description or subject."
          }
        }
      },
      "BookingUpdateDto" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string",
            "description" : "Profile name used in calendar links to identify a profile.",
            "example" : "aurDemo - https://calendar.aurinko.io/aurDemo"
          },
          "durationMinutes" : {
            "type" : "integer",
            "description" : "Duration of the meeting in minutes.",
            "example" : 30
          },
          "bufferBetweenMinutes" : {
            "type" : "integer",
            "description" : "A Duration specifying the minimum number of minutes that must be free after the meeting in minutes.",
            "example" : 15
          },
          "availabilityStep" : {
            "type" : "integer",
            "description" : "Determines the interval at which new meeting slots are made available throughout the working hours. Allowed values are 5, 10, 15, 20, 30, 60."
          },
          "startAfterMinutes" : {
            "type" : "integer",
            "description" : "The available meeting times can only start this minutes after the current time. Default is 1 hour."
          },
          "startTime" : {
            "type" : "string",
            "format" : "date-time",
            "description" : "The beginning of the formation of intervals. Must be in the future, otherwise the current time will be used."
          },
          "endTime" : {
            "type" : "string",
            "format" : "date-time",
            "description" : "The ending of the formation of intervals. If the time specified here is in the past, the intervals will be empty, regardless of the Start time parameter."
          },
          "timeAvailableFor" : {
            "type" : "string",
            "description" : "Time period (in ISO-8601 format) the profile is covering. For example, P3M (3 months), P4W (4 weeks), P5D (5 days).",
            "example" : "P4W"
          },
          "subject" : {
            "type" : "string",
            "description" : "Subject for events booked using this profile."
          },
          "description" : {
            "type" : "string",
            "description" : "Description for events booked using this profile."
          },
          "location" : {
            "type" : "string",
            "description" : "Location for events booked using this profile."
          },
          "workHours" : {
            "$ref" : "#/components/schemas/WeekWorkSchedule"
          },
          "availabilityIntervals" : {
            "description" : "the hours of availability for a date range, it have priority over workHours.",
            "$ref" : "#/components/schemas/AvailabilityIntervals"
          },
          "context" : {
            "type" : "string",
            "description" : "Custom client data stored for the profile."
          },
          "startConference" : {
            "type" : "boolean",
            "description" : "Whether to create an online conference (hangoutsMeet, teamsForBusiness, etc.) for the event. Note, not all providers support creating conferences."
          },
          "openMeetingUrl" : {
            "type" : "string",
            "description" : "The value of the {{openMeetingUrl}} variable that can be used in the event description or subject."
          }
        }
      },
      "GroupBookingPage" : {
        "type" : "object",
        "properties" : {
          "offset" : {
            "type" : "integer"
          },
          "totalSize" : {
            "type" : "integer",
            "format" : "int64"
          },
          "done" : {
            "type" : "boolean"
          },
          "records" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/GroupBookingOutDto"
            }
          }
        }
      },
      "GroupBookingInDto" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string",
            "description" : "Profile name used in calendar links to identify a profile.",
            "example" : "aurDemo - https://calendar.aurinko.io/aurDemo"
          },
          "durationMinutes" : {
            "type" : "integer",
            "description" : "Duration of the meeting in minutes.",
            "example" : 30
          },
          "bufferBetweenMinutes" : {
            "type" : "integer",
            "description" : "A Duration specifying the minimum number of minutes that must be free after the meeting in minutes.",
            "example" : 15
          },
          "availabilityStep" : {
            "type" : "integer",
            "description" : "Determines the interval at which new meeting slots are made available throughout the working hours. Allowed values are 5, 10, 15, 20, 30, 60."
          },
          "startAfterMinutes" : {
            "type" : "integer",
            "description" : "The available meeting times can only start this minutes after the current time. Default is 1 hour."
          },
          "startTime" : {
            "type" : "string",
            "format" : "date-time",
            "description" : "The beginning of the formation of intervals. Must be in the future, otherwise the current time will be used."
          },
          "endTime" : {
            "type" : "string",
            "format" : "date-time",
            "description" : "The ending of the formation of intervals. If the time specified here is in the past, the intervals will be empty, regardless of the Start time parameter."
          },
          "timeAvailableFor" : {
            "type" : "string",
            "description" : "Time period (in ISO-8601 format) the profile is covering. For example, P3M (3 months), P4W (4 weeks), P5D (5 days).",
            "example" : "P4W"
          },
          "subject" : {
            "type" : "string",
            "description" : "Subject for events booked using this profile."
          },
          "description" : {
            "type" : "string",
            "description" : "Description for events booked using this profile."
          },
          "location" : {
            "type" : "string",
            "description" : "Location for events booked using this profile."
          },
          "workHours" : {
            "$ref" : "#/components/schemas/WeekWorkSchedule"
          },
          "availabilityIntervals" : {
            "description" : "the hours of availability for a date range, it have priority over workHours.",
            "$ref" : "#/components/schemas/AvailabilityIntervals"
          },
          "context" : {
            "type" : "string",
            "description" : "Custom client data stored for the profile."
          },
          "startConference" : {
            "type" : "boolean",
            "description" : "Whether to create an online conference (hangoutsMeet, teamsForBusiness, etc.) for the event. Note, not all providers support creating conferences."
          },
          "openMeetingUrl" : {
            "type" : "string",
            "description" : "The value of the {{openMeetingUrl}} variable that can be used in the event description or subject."
          },
          "clientOrgId" : {
            "type" : "string"
          }
        }
      },
      "GroupBookingOutDto" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "integer",
            "format" : "int64"
          },
          "name" : {
            "type" : "string",
            "description" : "Profile name used in calendar links to identify a profile.",
            "example" : "aurDemo - https://calendar.aurinko.io/aurDemo"
          },
          "durationMinutes" : {
            "type" : "integer",
            "description" : "Duration of the meeting in minutes.",
            "example" : 30
          },
          "bufferBetweenMinutes" : {
            "type" : "integer",
            "description" : "A Duration specifying the minimum number of minutes that must be free after the meeting in minutes.",
            "example" : 15
          },
          "availabilityStep" : {
            "type" : "integer",
            "description" : "Determines the interval at which new meeting slots are made available throughout the working hours. Allowed values are 5, 10, 15, 20, 30, 60."
          },
          "startAfterMinutes" : {
            "type" : "integer",
            "description" : "The available meeting times can only start this minutes after the current time. Default is 1 hour."
          },
          "startTime" : {
            "type" : "string",
            "format" : "date-time",
            "description" : "The beginning of the formation of intervals. Must be in the future, otherwise the current time will be used."
          },
          "endTime" : {
            "type" : "string",
            "format" : "date-time",
            "description" : "The ending of the formation of intervals. If the time specified here is in the past, the intervals will be empty, regardless of the Start time parameter."
          },
          "timeAvailableFor" : {
            "type" : "string",
            "description" : "Time period (in ISO-8601 format) the profile is covering. For example, P3M (3 months), P4W (4 weeks), P5D (5 days).",
            "example" : "P4W"
          },
          "subject" : {
            "type" : "string",
            "description" : "Subject for events booked using this profile."
          },
          "description" : {
            "type" : "string",
            "description" : "Description for events booked using this profile."
          },
          "location" : {
            "type" : "string",
            "description" : "Location for events booked using this profile."
          },
          "workHours" : {
            "$ref" : "#/components/schemas/WeekWorkSchedule"
          },
          "availabilityIntervals" : {
            "description" : "the hours of availability for a date range, it have priority over workHours.",
            "$ref" : "#/components/schemas/AvailabilityIntervals"
          },
          "context" : {
            "type" : "string",
            "description" : "Custom client data stored for the profile."
          },
          "startConference" : {
            "type" : "boolean",
            "description" : "Whether to create an online conference (hangoutsMeet, teamsForBusiness, etc.) for the event. Note, not all providers support creating conferences."
          },
          "openMeetingUrl" : {
            "type" : "string",
            "description" : "The value of the {{}openMeetingUrl}} variable that can be used in the event description or subject."
          },
          "clientOrgId" : {
            "type" : "string"
          }
        }
      },
      "GroupBookingUpdateDto" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string",
            "description" : "Profile name used in calendar links to identify a profile.",
            "example" : "aurDemo - https://calendar.aurinko.io/aurDemo"
          },
          "durationMinutes" : {
            "type" : "integer",
            "description" : "Duration of the meeting in minutes.",
            "example" : 30
          },
          "bufferBetweenMinutes" : {
            "type" : "integer",
            "description" : "A Duration specifying the minimum number of minutes that must be free after the meeting in minutes.",
            "example" : 15
          },
          "availabilityStep" : {
            "type" : "integer",
            "description" : "Determines the interval at which new meeting slots are made available throughout the working hours. Allowed values are 5, 10, 15, 20, 30, 60."
          },
          "startAfterMinutes" : {
            "type" : "integer",
            "description" : "The available meeting times can only start this minutes after the current time. Default is 1 hour."
          },
          "startTime" : {
            "type" : "string",
            "format" : "date-time",
            "description" : "The beginning of the formation of intervals. Must be in the future, otherwise the current time will be used."
          },
          "endTime" : {
            "type" : "string",
            "format" : "date-time",
            "description" : "The ending of the formation of intervals. If the time specified here is in the past, the intervals will be empty, regardless of the Start time parameter."
          },
          "timeAvailableFor" : {
            "type" : "string",
            "description" : "Time period (in ISO-8601 format) the profile is covering. For example, P3M (3 months), P4W (4 weeks), P5D (5 days).",
            "example" : "P4W"
          },
          "subject" : {
            "type" : "string",
            "description" : "Subject for events booked using this profile."
          },
          "description" : {
            "type" : "string",
            "description" : "Description for events booked using this profile."
          },
          "location" : {
            "type" : "string",
            "description" : "Location for events booked using this profile."
          },
          "workHours" : {
            "$ref" : "#/components/schemas/WeekWorkSchedule"
          },
          "availabilityIntervals" : {
            "description" : "the hours of availability for a date range, it have priority over workHours.",
            "$ref" : "#/components/schemas/AvailabilityIntervals"
          },
          "context" : {
            "type" : "string",
            "description" : "Custom client data stored for the profile."
          },
          "startConference" : {
            "type" : "boolean",
            "description" : "Whether to create an online conference (hangoutsMeet, teamsForBusiness, etc.) for the event. Note, not all providers support creating conferences."
          },
          "openMeetingUrl" : {
            "type" : "string",
            "description" : "The value of the {{openMeetingUrl}} variable that can be used in the event description or subject."
          },
          "clientOrgId" : {
            "type" : "string"
          }
        }
      },
      "BookingSuccessOutDto" : {
        "type" : "object",
        "properties" : {
          "status" : {
            "type" : "string",
            "enum" : [ "Ok" ]
          }
        }
      },
      "BookingAvailableProfilesInDto" : {
        "type" : "object",
        "properties" : {
          "timeMin" : {
            "type" : "string",
            "format" : "date-time"
          },
          "timeMax" : {
            "type" : "string",
            "format" : "date-time"
          },
          "profileNames" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "profileIds" : {
            "type" : "array",
            "items" : {
              "type" : "integer",
              "format" : "int64"
            }
          },
          "required" : {
            "$ref" : "#/components/schemas/BookingRequiredMode"
          }
        }
      },
      "BookingAvailableProfilesOutDto" : {
        "type" : "object",
        "properties" : {
          "profileIds" : {
            "type" : "array",
            "description" : "List of available profile ids.",
            "items" : {
              "type" : "integer",
              "format" : "int64"
            }
          }
        }
      },
      "BookingTimesOutDto" : {
        "type" : "object",
        "properties" : {
          "items" : {
            "type" : "array",
            "description" : "List of available meeting slots.",
            "items" : {
              "$ref" : "#/components/schemas/BookingMeetingInterval"
            }
          },
          "startTime" : {
            "type" : "string",
            "format" : "date-time",
            "description" : "Start time of available meeting slots."
          },
          "endTime" : {
            "type" : "string",
            "format" : "date-time",
            "description" : "End time of available meeting slots."
          },
          "timeAvailableFor" : {
            "type" : "string",
            "description" : "Time period (in ISO-8601 format) the profile is covering. For example, P3M (3 months), P4W (4 weeks), P5D (5 days).",
            "example" : "P4W"
          },
          "durationMinutes" : {
            "type" : "integer",
            "description" : "Length of meeting in minutes"
          },
          "availabilityStep" : {
            "type" : "integer",
            "description" : "Determines the interval at which new meeting slots are made available throughout the working hours. Allowed values are 5, 10, 15, 20, 30, 60."
          },
          "subject" : {
            "type" : "string",
            "description" : "Subject for events booked using this profile."
          },
          "primaryColor" : {
            "type" : "string",
            "description" : "Primary Color, taken from the application settings."
          },
          "secondaryColor" : {
            "type" : "string",
            "description" : "The second Color, taken from the application settings."
          },
          "additionalFields" : {
            "type" : "array",
            "description" : "List of substitution variables like {{name}}, {{openMeetingUrl}},...",
            "items" : {
              "$ref" : "#/components/schemas/AdditionalField"
            }
          },
          "nextPageToken" : {
            "type" : "string",
            "description" : "Next page token"
          },
          "nextFromDate" : {
            "type" : "string",
            "format" : "date",
            "description" : "Next fromDate to iterate a big time intervals"
          }
        }
      },
      "BookingAttachGroupsDto" : {
        "type" : "object",
        "properties" : {
          "groups" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/BookingAttachGroupDto"
            }
          }
        }
      },
      "BookingAttachGroupDto" : {
        "type" : "object",
        "properties" : {
          "extId" : {
            "type" : "string",
            "description" : "External identifier"
          },
          "accountIds" : {
            "type" : "array",
            "items" : {
              "type" : "integer",
              "format" : "int64",
              "description" : "Account id"
            }
          },
          "required" : {
            "$ref" : "#/components/schemas/BookingRequiredMode"
          }
        }
      },
      "BookingAttachedGroupsPage" : {
        "type" : "object",
        "properties" : {
          "offset" : {
            "type" : "integer"
          },
          "totalSize" : {
            "type" : "integer",
            "format" : "int64"
          },
          "done" : {
            "type" : "boolean"
          },
          "records" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/BookingAttachedDto"
            }
          }
        }
      },
      "BookingAttachedDto" : {
        "type" : "object",
        "properties" : {
          "extId" : {
            "type" : "string",
            "description" : "External identifier"
          },
          "accountIds" : {
            "type" : "array",
            "items" : {
              "type" : "integer",
              "format" : "int64",
              "description" : "Account id"
            }
          },
          "required" : {
            "$ref" : "#/components/schemas/BookingRequiredMode"
          }
        }
      },
      "BookingDetachGroupsDto" : {
        "type" : "object",
        "properties" : {
          "groups" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/BookingDetachGroupDto"
            }
          }
        }
      },
      "BookingDetachGroupDto" : {
        "type" : "object",
        "properties" : {
          "extId" : {
            "type" : "string",
            "description" : "External identifier"
          },
          "accountIds" : {
            "type" : "array",
            "items" : {
              "type" : "integer",
              "format" : "int64",
              "description" : "Account id"
            }
          }
        }
      },
      "BookingAttachAccountsDto" : {
        "type" : "object",
        "properties" : {
          "accountIds" : {
            "type" : "array",
            "items" : {
              "type" : "integer",
              "format" : "int64",
              "description" : "Account id"
            }
          }
        }
      },
      "BookingAttachedAccountsPage" : {
        "type" : "object",
        "properties" : {
          "offset" : {
            "type" : "integer"
          },
          "totalSize" : {
            "type" : "integer",
            "format" : "int64"
          },
          "done" : {
            "type" : "boolean"
          },
          "records" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/BookingAttachedAccountsDto"
            }
          }
        }
      },
      "BookingAttachedAccountsDto" : {
        "type" : "object",
        "properties" : {
          "accountIds" : {
            "type" : "array",
            "items" : {
              "type" : "integer",
              "format" : "int64",
              "description" : "User's account id"
            }
          }
        }
      },
      "BookingDetachGroupAccountsDto" : {
        "type" : "object",
        "properties" : {
          "accountIds" : {
            "type" : "array",
            "items" : {
              "type" : "integer",
              "format" : "int64",
              "description" : "Account id"
            }
          }
        }
      },
      "BookingMeetingInterval" : {
        "type" : "object",
        "properties" : {
          "start" : {
            "type" : "string",
            "format" : "date-time"
          },
          "end" : {
            "type" : "string",
            "format" : "date-time"
          },
          "groupXids" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "accountIds" : {
            "type" : "array",
            "items" : {
              "type" : "integer",
              "format" : "int64"
            }
          }
        }
      },
      "AdditionalField" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string",
            "description" : "Substitution variable name"
          },
          "type" : {
            "type" : "string",
            "description" : "Value type"
          },
          "default" : {
            "type" : "string",
            "description" : "Default value"
          }
        }
      },
      "CreateMeetingDto" : {
        "type" : "object",
        "properties" : {
          "time" : {
            "$ref" : "#/components/schemas/SelectedMeetingTime"
          },
          "groupXids" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "description" : "Group external id from available meeting times request"
            }
          },
          "accountIds" : {
            "type" : "array",
            "items" : {
              "type" : "integer",
              "format" : "int64",
              "description" : "Account id from available meeting times request"
            }
          },
          "name" : {
            "type" : "string",
            "description" : "Username of the person requesting the meeting (please, use schedulerInfo.name instead)",
            "deprecated" : true
          },
          "email" : {
            "type" : "string",
            "description" : "Email of the person requesting the meeting (please, use schedulerInfo.email instead)",
            "deprecated" : true
          },
          "substitutionData" : {
            "type" : "object",
            "description" : "Data for substitution instead of templates, key - value",
            "additionalProperties" : {
              "type" : "string"
            }
          },
          "schedulerInfo" : {
            "$ref" : "#/components/schemas/AttendeeInfo"
          },
          "invitees" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/AttendeeInfo"
            }
          }
        }
      },
      "SelectedMeetingTime" : {
        "type" : "object",
        "properties" : {
          "start" : {
            "type" : "string",
            "format" : "date-time"
          },
          "end" : {
            "type" : "string",
            "format" : "date-time"
          }
        }
      },
      "AttendeeInfo" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "readOnly" : true
          },
          "email" : {
            "type" : "string",
            "description" : "Email of the person requesting the meeting, if not specified, an event will be created without an attendee"
          },
          "name" : {
            "type" : "string",
            "description" : "Username of the person requesting the meeting"
          }
        }
      },
      "CreateMeetingResponse" : {
        "type" : "object",
        "properties" : {
          "created" : {
            "type" : "boolean"
          },
          "id" : {
            "type" : "string",
            "description" : "The created calendar event ID, if event was created"
          },
          "ReservationId" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "The unconfirmed reservation ID"
          },
          "groupXid" : {
            "type" : "string",
            "description" : "Group external id for group booking"
          },
          "rescheduleToken" : {
            "type" : "string",
            "description" : "Token for rescheduling this meeting"
          }
        }
      },
      "ConfirmReservationOutDto" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "description" : "The created calendar event ID, if event was created."
          }
        }
      },
      "ConfirmSlotDeleteOutDto" : {
        "type" : "object",
        "properties" : {
          "status" : {
            "type" : "string",
            "enum" : [ "Ok" ]
          }
        }
      },
      "Calendar" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "readOnly" : true
          },
          "name" : {
            "type" : "string"
          },
          "color" : {
            "type" : "string",
            "readOnly" : true
          },
          "description" : {
            "type" : "string",
            "readOnly" : true
          },
          "accessRole" : {
            "type" : "string",
            "readOnly" : true,
            "enum" : [ "owner", "writer", "reader" ]
          },
          "primary" : {
            "type" : "boolean",
            "readOnly" : true
          },
          "multipleRemindersSupported" : {
            "type" : "boolean",
            "readOnly" : true
          },
          "defaultReminders" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ReminderOverride"
            }
          }
        }
      },
      "CalendarsPage" : {
        "type" : "object",
        "properties" : {
          "nextPageToken" : {
            "type" : "string"
          },
          "length" : {
            "type" : "integer"
          },
          "records" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Calendar"
            }
          }
        }
      },
      "CalendarCreate" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string"
          },
          "color" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "CalendarUpdate" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "DeletedRecord" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "readOnly" : true
          },
          "timestamp" : {
            "type" : "string",
            "format" : "date-time"
          }
        }
      },
      "DeletedPage" : {
        "type" : "object",
        "properties" : {
          "nextPageToken" : {
            "type" : "string",
            "description" : "A token received as nextPageToken from a previous page request"
          },
          "nextDeltaToken" : {
            "type" : "string",
            "description" : "A token received as nextDeltaToken from a previous sync request or a start sync request"
          },
          "length" : {
            "type" : "integer"
          },
          "records" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/DeletedRecord"
            }
          }
        }
      },
      "DeletedEmailMessage" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "readOnly" : true
          },
          "folderId" : {
            "type" : "string",
            "readOnly" : true
          },
          "internetMessageId" : {
            "type" : "string",
            "readOnly" : true
          },
          "timestamp" : {
            "type" : "string",
            "format" : "date-time"
          }
        }
      },
      "EmailDeletedPage" : {
        "type" : "object",
        "properties" : {
          "nextPageToken" : {
            "type" : "string",
            "description" : "A token received as nextPageToken from a previous page request"
          },
          "nextDeltaToken" : {
            "type" : "string",
            "description" : "A token received as nextDeltaToken from a previous sync request or a start sync request"
          },
          "length" : {
            "type" : "integer"
          },
          "records" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/DeletedEmailMessage"
            }
          }
        }
      },
      "EventDateTime" : {
        "type" : "object",
        "properties" : {
          "dateOnly" : {
            "type" : "string",
            "format" : "date"
          },
          "dateTime" : {
            "type" : "string",
            "format" : "date-time"
          },
          "timezone" : {
            "type" : "string"
          }
        }
      },
      "EmailAddress" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string"
          },
          "address" : {
            "type" : "string",
            "format" : "email"
          },
          "raw" : {
            "type" : "string",
            "readOnly" : true
          }
        }
      },
      "Organizer" : {
        "type" : "object",
        "readOnly" : true,
        "properties" : {
          "id" : {
            "type" : "string",
            "readOnly" : true
          },
          "emailAddress" : {
            "$ref" : "#/components/schemas/EmailAddress"
          }
        }
      },
      "Attendee" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "readOnly" : true
          },
          "emailAddress" : {
            "$ref" : "#/components/schemas/EmailAddress"
          },
          "type" : {
            "type" : "string",
            "enum" : [ "required", "optional", "resource" ]
          },
          "response" : {
            "type" : "string",
            "enum" : [ "accepted", "tentitive", "declined" ],
            "readOnly" : true
          },
          "comment" : {
            "type" : "string",
            "readOnly" : true
          }
        }
      },
      "MeetingInfo" : {
        "type" : "object",
        "properties" : {
          "canceled" : {
            "type" : "boolean",
            "readOnly" : true
          },
          "attendees" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Attendee"
            }
          },
          "response" : {
            "$ref" : "#/components/schemas/MeetingResponseType",
            "readOnly" : true
          },
          "attendeePermissions" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "enum" : [ "inviteOthers", "modify", "seeOthers" ]
            }
          },
          "onlineMeeting" : {
            "type" : "boolean",
            "description" : "Assumes default onlineMeetingProvider ('hangoutsMeet' or 'teamsForBusiness')",
            "writeOnly" : true
          },
          "onlineMeetingProvider" : {
            "type" : "string",
            "description" : "Value of provider, for example hangoutsMeet, teamsForBusiness, skypeForBusiness, skypeForConsumer"
          },
          "onlineMeetingDetails" : {
            "readOnly" : true,
            "$ref" : "#/components/schemas/OnlineMeetingDetails"
          }
        }
      },
      "DayOfWeek" : {
        "type" : "string",
        "enum" : [ "monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday" ]
      },
      "Recurrence" : {
        "type" : "object",
        "properties" : {
          "original" : {
            "type" : "string",
            "enum" : [ "simple", "ical" ],
            "readOnly" : true
          },
          "ical" : {
            "type" : "object",
            "properties" : {
              "rules" : {
                "type" : "array",
                "items" : {
                  "type" : "string"
                }
              },
              "recurrenceStart" : {
                "$ref" : "#/components/schemas/EventDateTime"
              }
            }
          },
          "simple" : {
            "type" : "object",
            "properties" : {
              "pattern" : {
                "type" : "object",
                "properties" : {
                  "frequency" : {
                    "type" : "string",
                    "enum" : [ "daily", "weekly", "monthly", "monthlyRelative", "yearly", "yearlyRelative" ]
                  },
                  "interval" : {
                    "type" : "integer",
                    "default" : 1
                  },
                  "daysOfWeek" : {
                    "type" : "array",
                    "items" : {
                      "$ref" : "#/components/schemas/DayOfWeek"
                    }
                  },
                  "weekStart" : {
                    "type" : "string",
                    "enum" : [ "monday", "sunday" ]
                  },
                  "dayOfMonth" : {
                    "type" : "integer",
                    "minimum" : 1,
                    "maximum" : 31
                  },
                  "monthOfYear" : {
                    "type" : "integer",
                    "minimum" : 1,
                    "maximum" : 12
                  },
                  "instance" : {
                    "type" : "string",
                    "enum" : [ "first", "second", "third", "fourth", "last" ]
                  }
                }
              },
              "range" : {
                "type" : "object",
                "properties" : {
                  "type" : {
                    "type" : "string",
                    "enum" : [ "byDate", "byCount", "unbounded" ]
                  },
                  "recurrenceStart" : {
                    "$ref" : "#/components/schemas/EventDateTime"
                  },
                  "recurrenceEnd" : {
                    "type" : "string",
                    "format" : "date"
                  },
                  "count" : {
                    "type" : "integer",
                    "minimum" : 1
                  },
                  "patternExclusions" : {
                    "type" : "array",
                    "items" : {
                      "$ref" : "#/components/schemas/EventDateTime"
                    },
                    "readOnly" : true
                  }
                }
              }
            }
          }
        }
      },
      "OccurrenceInfo" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string",
            "enum" : [ "regular", "modified", "deleted" ]
          },
          "originalStart" : {
            "$ref" : "#/components/schemas/EventDateTime"
          },
          "start" : {
            "$ref" : "#/components/schemas/EventDateTime"
          },
          "masterId" : {
            "type" : "string"
          }
        }
      },
      "SeriesInfo" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "readOnly" : true
          },
          "globalId" : {
            "type" : "string",
            "readOnly" : true
          },
          "recurrence" : {
            "$ref" : "#/components/schemas/Recurrence",
            "readOnly" : true
          },
          "modifiedOccurrences" : {
            "type" : "array",
            "readOnly" : true,
            "items" : {
              "$ref" : "#/components/schemas/OccurrenceInfo"
            }
          },
          "deletedOccurrences" : {
            "type" : "array",
            "readOnly" : true,
            "items" : {
              "$ref" : "#/components/schemas/OccurrenceInfo"
            }
          }
        }
      },
      "Reminder" : {
        "type" : "object",
        "properties" : {
          "useDefault" : {
            "type" : "boolean",
            "description" : "Supported only for Google"
          },
          "overrides" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ReminderOverride"
            }
          }
        }
      },
      "ReminderOverride" : {
        "type" : "object",
        "properties" : {
          "minutes" : {
            "type" : "integer"
          }
        }
      },
      "Event" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "readOnly" : true
          },
          "etag" : {
            "type" : "string",
            "readOnly" : true
          },
          "calendarId" : {
            "type" : "string",
            "readOnly" : true
          },
          "createdTime" : {
            "type" : "string",
            "format" : "date-time",
            "readOnly" : true
          },
          "lastModifiedTime" : {
            "type" : "string",
            "format" : "date-time",
            "readOnly" : true
          },
          "subject" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          },
          "location" : {
            "type" : "string"
          },
          "start" : {
            "$ref" : "#/components/schemas/EventDateTime"
          },
          "end" : {
            "$ref" : "#/components/schemas/EventDateTime"
          },
          "organizer" : {
            "$ref" : "#/components/schemas/Organizer",
            "readOnly" : true
          },
          "meetingInfo" : {
            "$ref" : "#/components/schemas/MeetingInfo"
          },
          "recurrenceType" : {
            "type" : "string",
            "enum" : [ "single", "master", "occurrence" ],
            "readOnly" : true
          },
          "recurrence" : {
            "$ref" : "#/components/schemas/Recurrence"
          },
          "reminder" : {
            "$ref" : "#/components/schemas/Reminder"
          },
          "occurrenceInfo" : {
            "$ref" : "#/components/schemas/OccurrenceInfo",
            "readOnly" : true
          },
          "iCalUid" : {
            "type" : "string",
            "readOnly" : true
          },
          "globalId" : {
            "type" : "string",
            "readOnly" : true
          },
          "showAs" : {
            "$ref" : "#/components/schemas/ShowAs"
          },
          "sensitivity" : {
            "$ref" : "#/components/schemas/Sensitivity"
          },
          "categories" : {
            "type" : "array",
            "readOnly" : true,
            "items" : {
              "type" : "string"
            }
          },
          "htmlLink" : {
            "type" : "string",
            "readOnly" : true
          },
          "hasAttachments" : {
            "type" : "boolean",
            "readOnly" : true
          },
          "attachments" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/EmailAttachment"
            }
          },
          "omitted" : {
            "type" : "array",
            "readOnly" : true,
            "items" : {
              "type" : "string",
              "enum" : [ "description", "attendees", "attachments" ]
            }
          }
        }
      },
      "MeetingResponseType" : {
        "type" : "string",
        "enum" : [ "noResponse", "declined", "tentative", "accepted" ]
      },
      "EventOrId" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "readOnly" : true
          },
          "etag" : {
            "type" : "string",
            "readOnly" : true
          },
          "iCalUId" : {
            "type" : "string",
            "readOnly" : true
          },
          "globalId" : {
            "type" : "string",
            "readOnly" : true
          },
          "record" : {
            "$ref" : "#/components/schemas/Event"
          },
          "onlineMeetingProvider" : {
            "type" : "string",
            "description" : "Value of provider, for example hangoutsMeet, teamsForBusiness, skypeForBusiness, skypeForConsumer"
          },
          "onlineMeetingDetails" : {
            "$ref" : "#/components/schemas/OnlineMeetingDetails"
          }
        }
      },
      "OnlineMeetingDetails" : {
        "type" : "object",
        "readOnly" : true,
        "properties" : {
          "id" : {
            "type" : "string",
            "readOnly" : true
          },
          "url" : {
            "type" : "string",
            "readOnly" : true
          },
          "phone" : {
            "type" : "string",
            "readOnly" : true
          },
          "pin" : {
            "type" : "string",
            "readOnly" : true
          },
          "regionCode" : {
            "type" : "string",
            "readOnly" : true
          },
          "sip" : {
            "type" : "string",
            "readOnly" : true
          },
          "infoUrl" : {
            "type" : "string",
            "readOnly" : true
          }
        }
      },
      "EventsPageNext" : {
        "type" : "object",
        "properties" : {
          "nextPageToken" : {
            "type" : "string"
          },
          "length" : {
            "type" : "integer"
          },
          "records" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Event"
            }
          }
        }
      },
      "EventsPage" : {
        "type" : "object",
        "properties" : {
          "nextPageToken" : {
            "type" : "string",
            "description" : "A token received as nextPageToken from a previous page request"
          },
          "nextDeltaToken" : {
            "type" : "string",
            "description" : "A token received as nextDeltaToken from a previous sync request or a start sync request"
          },
          "length" : {
            "type" : "integer"
          },
          "records" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Event"
            }
          }
        }
      },
      "MeetingResponse" : {
        "type" : "object",
        "required" : [ "response" ],
        "properties" : {
          "response" : {
            "$ref" : "#/components/schemas/MeetingResponseType"
          },
          "comment" : {
            "type" : "string"
          }
        }
      },
      "WorkHoursRequest" : {
        "type" : "object",
        "properties" : {
          "emails" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "format" : "email"
            }
          }
        }
      },
      "WorkHoursResponseItem" : {
        "type" : "object",
        "properties" : {
          "email" : {
            "type" : "string"
          },
          "workHours" : {
            "$ref" : "#/components/schemas/WeekWorkSchedule"
          }
        }
      },
      "WorkHoursResponse" : {
        "type" : "object",
        "properties" : {
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/WorkHoursResponseItem"
            }
          }
        }
      },
      "CalendarFreeBusyRequest" : {
        "type" : "object",
        "properties" : {
          "timeMin" : {
            "type" : "string",
            "format" : "date-time"
          },
          "timeMax" : {
            "type" : "string",
            "format" : "date-time"
          }
        }
      },
      "CalendarFreeBusyItemPage" : {
        "type" : "object",
        "properties" : {
          "records" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/FreeBusyItem"
            }
          },
          "nextPageToken" : {
            "type" : "string",
            "description" : "A token to request nextPage"
          }
        }
      },
      "FreeBusyRequest" : {
        "type" : "object",
        "properties" : {
          "timeMin" : {
            "type" : "string",
            "format" : "date-time"
          },
          "timeMax" : {
            "type" : "string",
            "format" : "date-time"
          },
          "emails" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "format" : "email"
            }
          }
        }
      },
      "FreeBusyItem" : {
        "type" : "object",
        "properties" : {
          "start" : {
            "type" : "string",
            "format" : "date-time"
          },
          "end" : {
            "type" : "string",
            "format" : "date-time"
          },
          "status" : {
            "$ref" : "#/components/schemas/ShowAs"
          }
        }
      },
      "WeekWorkSchedule" : {
        "type" : "object",
        "properties" : {
          "daySchedules" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/DayWorkSchedule"
            }
          },
          "timezone" : {
            "type" : "string"
          }
        }
      },
      "DayWorkSchedule" : {
        "type" : "object",
        "properties" : {
          "dayOfWeek" : {
            "$ref" : "#/components/schemas/DayOfWeek"
          },
          "workingIntervals" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/WorkingInterval"
            }
          }
        }
      },
      "WorkingInterval" : {
        "type" : "object",
        "properties" : {
          "start" : {
            "type" : "string",
            "pattern" : "^\\d{2}:\\d{2}:\\d{2}$",
            "example" : "09:00:00"
          },
          "end" : {
            "type" : "string",
            "pattern" : "^\\d{2}:\\d{2}:\\d{2}$",
            "example" : "17:00:00"
          }
        }
      },
      "AvailabilityIntervals" : {
        "type" : "object",
        "properties" : {
          "intervals" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/AvailabilityInterval"
            }
          }
        }
      },
      "AvailabilityInterval" : {
        "type" : "object",
        "properties" : {
          "dateStartInclusive" : {
            "type" : "string",
            "format" : "date"
          },
          "dateEndInclusive" : {
            "type" : "string",
            "format" : "date"
          },
          "hours" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/WorkingInterval"
            }
          }
        }
      },
      "FreeBusySchedule" : {
        "type" : "object",
        "properties" : {
          "email" : {
            "type" : "string",
            "format" : "email"
          },
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/FreeBusyItem"
            }
          },
          "error" : {
            "type" : "string"
          },
          "workHours" : {
            "$ref" : "#/components/schemas/WeekWorkSchedule"
          }
        }
      },
      "FreeBusySchedulePage" : {
        "type" : "object",
        "properties" : {
          "records" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/FreeBusySchedule"
            }
          }
        }
      },
      "TimeInterval" : {
        "type" : "object",
        "properties" : {
          "start" : {
            "type" : "string",
            "format" : "date-time"
          },
          "end" : {
            "type" : "string",
            "format" : "date-time"
          }
        }
      },
      "MeetingAttendee" : {
        "type" : "object",
        "properties" : {
          "email" : {
            "type" : "string"
          },
          "timezone" : {
            "type" : "string"
          },
          "workHours" : {
            "$ref" : "#/components/schemas/WeekWorkSchedule"
          },
          "error" : {
            "type" : "string",
            "readOnly" : true
          },
          "busyIntervals" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/TimeInterval"
            },
            "writeOnly" : true,
            "description" : "Busy intervals for the attendee. If set, these intervals will be excluded when searching for available meeting times. Can be combined with `freeIntervals`."
          },
          "freeIntervals" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/TimeInterval"
            },
            "writeOnly" : true,
            "description" : "Free time intervals for the attendee. If set, this parameter will limit the search for available meeting times. Can be combined with `busyIntervals`."
          }
        }
      },
      "SuggestMeetingTimesRequest" : {
        "type" : "object",
        "properties" : {
          "timeMin" : {
            "type" : "string",
            "format" : "date-time",
            "description" : "The lower bound of the time interval to search for available meeting times."
          },
          "timeMax" : {
            "type" : "string",
            "format" : "date-time",
            "description" : "The upper bound of the time interval to search for available meeting times."
          },
          "durationMinutes" : {
            "type" : "integer",
            "description" : "The duration of the meeting to search time for."
          },
          "bufferBetweenMinutes" : {
            "type" : "integer",
            "description" : "A Duration specifying the minimum number of minutes that must be free after the meeting in minutes.",
            "example" : 15
          },
          "availabilityStep" : {
            "type" : "integer",
            "default" : 30,
            "description" : "Determines the interval at which new meeting slots are made available throughout the working hours. Allowed values are 5, 10, 15, 20, 30, 60."
          },
          "attendees" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/MeetingAttendee"
            },
            "description" : "The attendees to consider when searching for available meeting times.\nOnly primary calendar of an attendees are in count.\nSome providers do not support attendees.\n"
          },
          "defaultTimezone" : {
            "type" : "string",
            "description" : "Timezone (IANA) to use when no timezone information is available for the attendees."
          },
          "defaultWorkHours" : {
            "$ref" : "#/components/schemas/WeekWorkSchedule",
            "description" : "Work hours to use when no information is available for the attendees."
          },
          "availabilityIntervals" : {
            "description" : "the hours of availability for a date range, it have priority over defaultWorkHours.",
            "$ref" : "#/components/schemas/AvailabilityIntervals"
          },
          "freeStatuses" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ShowAs"
            },
            "default" : [ "free" ],
            "description" : "The statuses from /freeBusy request to consider as free time for the attendees."
          }
        }
      },
      "SuggestMeetingTimesResponse" : {
        "type" : "object",
        "properties" : {
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/TimeInterval"
            }
          },
          "attendees" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/MeetingAttendee"
            }
          }
        }
      },
      "CalendarAvailableTimesRequest" : {
        "type" : "object",
        "properties" : {
          "timeMin" : {
            "type" : "string",
            "format" : "date-time",
            "description" : "The lower bound of the time interval to search for available meeting times."
          },
          "timeMax" : {
            "type" : "string",
            "format" : "date-time",
            "description" : "The upper bound of the time interval to search for available meeting times."
          },
          "durationMinutes" : {
            "type" : "integer",
            "description" : "The duration of the meeting to search time for."
          },
          "bufferBetweenMinutes" : {
            "type" : "integer",
            "description" : "A Duration specifying the minimum number of minutes that must be free after the meeting in minutes.",
            "example" : 15
          },
          "availabilityStep" : {
            "type" : "integer",
            "default" : 30,
            "description" : "Determines the interval at which new meeting slots are made available throughout the working hours. Allowed values are 5, 10, 15, 20, 30, 60."
          },
          "defaultTimezone" : {
            "type" : "string",
            "description" : "Timezone (IANA) to use when no timezone information is available."
          },
          "defaultWorkHours" : {
            "$ref" : "#/components/schemas/WeekWorkSchedule",
            "description" : "Work hours to use when no information is available."
          },
          "availabilityIntervals" : {
            "description" : "the hours of availability for a date range, it have priority over defaultWorkHours.",
            "$ref" : "#/components/schemas/AvailabilityIntervals"
          },
          "freeStatuses" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ShowAs"
            },
            "default" : [ "free" ],
            "description" : "The statuses from /freeBusy request to consider as free time."
          }
        }
      },
      "CalendarAvailableTimesResponse" : {
        "type" : "object",
        "properties" : {
          "nextPageToken" : {
            "type" : "string"
          },
          "length" : {
            "type" : "integer"
          },
          "records" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/TimeInterval"
            }
          }
        }
      },
      "ContactName" : {
        "type" : "object",
        "properties" : {
          "displayName" : {
            "type" : "string"
          },
          "prefix" : {
            "type" : "string"
          },
          "givenName" : {
            "type" : "string"
          },
          "middleName" : {
            "type" : "string"
          },
          "familyName" : {
            "type" : "string"
          },
          "suffix" : {
            "type" : "string"
          },
          "yomiGivenName" : {
            "type" : "string"
          },
          "yomiFamilyName" : {
            "type" : "string"
          }
        }
      },
      "ContactRelation" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string",
            "enum" : [ "manager", "assistant", "spouse" ]
          }
        }
      },
      "ContactCompany" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string"
          },
          "officeLocation" : {
            "type" : "string"
          },
          "department" : {
            "type" : "string"
          },
          "jobTitle" : {
            "type" : "string"
          },
          "yomiCompanyName" : {
            "type" : "string"
          }
        }
      },
      "ContactEmailAddress" : {
        "type" : "object",
        "properties" : {
          "address" : {
            "type" : "string"
          },
          "name" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "ContactPhoneNumber" : {
        "type" : "object",
        "properties" : {
          "number" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string",
            "enum" : [ "work", "home", "other", "mobile", "workMobile", "main", "companyMain", "assistant", "workFax", "homeFax", "otherFax", "callback", "pager", "workPager", "radio", "telex", "tty" ]
          },
          "canonicalForm" : {
            "type" : "string",
            "readOnly" : true
          }
        }
      },
      "ContactPostalAddress" : {
        "type" : "object",
        "properties" : {
          "street" : {
            "type" : "string"
          },
          "streetLine2" : {
            "type" : "string"
          },
          "poBox" : {
            "type" : "string"
          },
          "city" : {
            "type" : "string"
          },
          "state" : {
            "type" : "string"
          },
          "postalCode" : {
            "type" : "string"
          },
          "country" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string",
            "enum" : [ "work", "home", "other" ]
          }
        }
      },
      "ContactUrl" : {
        "type" : "object",
        "properties" : {
          "href" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string",
            "enum" : [ "work", "home", "other", "blog", "profile", "homePage", "ftp", "reservations" ]
          }
        }
      },
      "Contact" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "readOnly" : true
          },
          "etag" : {
            "type" : "string",
            "readOnly" : true
          },
          "createdTime" : {
            "type" : "string",
            "format" : "date-time",
            "readOnly" : true
          },
          "lastModifiedTime" : {
            "type" : "string",
            "format" : "date-time",
            "readOnly" : true
          },
          "name" : {
            "$ref" : "#/components/schemas/ContactName"
          },
          "nickName" : {
            "type" : "string"
          },
          "fileAs" : {
            "type" : "string"
          },
          "company" : {
            "$ref" : "#/components/schemas/ContactCompany"
          },
          "relations" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ContactRelation"
            }
          },
          "birthday" : {
            "type" : "string"
          },
          "keywords" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "notes" : {
            "type" : "string"
          },
          "emailAddresses" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ContactEmailAddress"
            }
          },
          "phoneNumbers" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ContactPhoneNumber"
            }
          },
          "addresses" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ContactPostalAddress"
            }
          },
          "urls" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ContactUrl"
            }
          },
          "nativeProperties" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "string"
            }
          },
          "hasPhoto" : {
            "type" : "boolean",
            "readOnly" : true
          },
          "photo" : {
            "$ref" : "#/components/schemas/ContactPhoto",
            "readOnly" : true
          }
        }
      },
      "ContactPhoto" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string"
          },
          "name" : {
            "type" : "string"
          },
          "mimeType" : {
            "type" : "string"
          },
          "content" : {
            "type" : "string"
          }
        }
      },
      "ContactOrId" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "readOnly" : true
          },
          "etag" : {
            "type" : "string",
            "readOnly" : true
          },
          "record" : {
            "$ref" : "#/components/schemas/Contact"
          }
        }
      },
      "ContactsPage" : {
        "type" : "object",
        "properties" : {
          "nextPageToken" : {
            "type" : "string",
            "description" : "A token received as nextPageToken from a previous page request"
          },
          "nextDeltaToken" : {
            "type" : "string",
            "description" : "A token received as nextDeltaToken from a previous sync request or a start sync request"
          },
          "length" : {
            "type" : "integer"
          },
          "records" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Contact"
            }
          }
        }
      },
      "EmailHeader" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string"
          },
          "value" : {
            "type" : "string"
          }
        }
      },
      "EmailAttachment" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "readOnly" : true
          },
          "name" : {
            "type" : "string",
            "readOnly" : true
          },
          "mimeType" : {
            "type" : "string",
            "readOnly" : true
          },
          "size" : {
            "type" : "integer",
            "readOnly" : true
          },
          "inline" : {
            "type" : "boolean",
            "readOnly" : true
          },
          "contentId" : {
            "type" : "string",
            "readOnly" : true
          },
          "content" : {
            "type" : "string",
            "readOnly" : true
          },
          "contentLocation" : {
            "type" : "string",
            "readOnly" : true
          }
        }
      },
      "EmailAttachmentContent" : {
        "type" : "object",
        "properties" : {
          "content" : {
            "type" : "string",
            "format" : "base64"
          }
        }
      },
      "OutgoingEmailAttachment" : {
        "type" : "object",
        "properties" : {
          "inline" : {
            "type" : "boolean"
          },
          "name" : {
            "type" : "string"
          },
          "mimeType" : {
            "type" : "string"
          },
          "contentId" : {
            "type" : "string"
          },
          "content" : {
            "type" : "string",
            "format" : "base64"
          }
        }
      },
      "UpdateMessageStatusData" : {
        "type" : "object",
        "properties" : {
          "unread" : {
            "type" : "boolean"
          },
          "archived" : {
            "type" : "boolean"
          },
          "keywords" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }
      },
      "OutgoingEmail" : {
        "type" : "object",
        "properties" : {
          "from" : {
            "$ref" : "#/components/schemas/EmailAddress"
          },
          "subject" : {
            "type" : "string"
          },
          "body" : {
            "type" : "string"
          },
          "inReplyTo" : {
            "type" : "string"
          },
          "references" : {
            "type" : "string"
          },
          "to" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/EmailAddress"
            }
          },
          "cc" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/EmailAddress"
            }
          },
          "bcc" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/EmailAddress"
            }
          },
          "replyTo" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/EmailAddress"
            }
          },
          "xHeaders" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/EmailHeader"
            }
          },
          "listHeaders" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/EmailHeader"
            },
            "description" : "`List` family of email headers to be set. Behavior depends on the provider:\n* Google, IMAP: All provided headers are applied to the email as-is.\n* Office 365, EWS: Only the `List-Unsubscribe` header is supported.\n* Other providers: Headers are currently not supported.\n"
          },
          "attachments" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/OutgoingEmailAttachment"
            }
          },
          "tracking" : {
            "$ref" : "#/components/schemas/OutEmailTrack"
          },
          "followUp" : {
            "$ref" : "#/components/schemas/FollowUpOutgoing"
          },
          "keywords" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }
      },
      "OutgoingEmailReply" : {
        "type" : "object",
        "properties" : {
          "from" : {
            "$ref" : "#/components/schemas/EmailAddress"
          },
          "subject" : {
            "type" : "string"
          },
          "body" : {
            "type" : "string"
          },
          "to" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/EmailAddress"
            }
          },
          "cc" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/EmailAddress"
            }
          },
          "bcc" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/EmailAddress"
            }
          },
          "replyTo" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/EmailAddress"
            }
          },
          "xHeaders" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/EmailHeader"
            }
          },
          "listHeaders" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/EmailHeader"
            },
            "description" : "`List` family of email headers to be set. Behavior depends on the provider:\n* Google, IMAP: All provided headers are applied to the email as-is.\n* Office 365, EWS: Only the `List-Unsubscribe` header is supported.\n* Other providers: Headers are currently not supported.\n"
          },
          "attachments" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/OutgoingEmailAttachment"
            }
          },
          "tracking" : {
            "$ref" : "#/components/schemas/OutEmailTrack"
          },
          "followUp" : {
            "$ref" : "#/components/schemas/FollowUpOutgoing"
          }
        }
      },
      "EmailMessage" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "readOnly" : true
          },
          "draftId" : {
            "type" : "string",
            "readOnly" : true
          },
          "threadId" : {
            "type" : "string",
            "readOnly" : true
          },
          "createdTime" : {
            "type" : "string",
            "format" : "date-time",
            "readOnly" : true
          },
          "lastModifiedTime" : {
            "type" : "string",
            "format" : "date-time",
            "readOnly" : true
          },
          "sentAt" : {
            "type" : "string",
            "format" : "date-time",
            "readOnly" : true
          },
          "receivedAt" : {
            "type" : "string",
            "format" : "date-time",
            "readOnly" : true
          },
          "internetMessageId" : {
            "type" : "string",
            "readOnly" : true
          },
          "subject" : {
            "type" : "string",
            "readOnly" : true
          },
          "sysLabels" : {
            "type" : "array",
            "readOnly" : true,
            "items" : {
              "$ref" : "#/components/schemas/SysLabel"
            }
          },
          "keywords" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "sysClassifications" : {
            "type" : "array",
            "readOnly" : true,
            "items" : {
              "type" : "string",
              "enum" : [ "personal", "social", "promotions", "updates", "forums" ]
            }
          },
          "sensitivity" : {
            "$ref" : "#/components/schemas/Sensitivity"
          },
          "meetingMessageMethod" : {
            "type" : "string",
            "enum" : [ "request", "reply", "cancel", "counter", "other" ]
          },
          "from" : {
            "$ref" : "#/components/schemas/EmailAddress"
          },
          "to" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/EmailAddress"
            }
          },
          "cc" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/EmailAddress"
            }
          },
          "bcc" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/EmailAddress"
            }
          },
          "replyTo" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/EmailAddress"
            }
          },
          "hasAttachments" : {
            "type" : "boolean",
            "readOnly" : true
          },
          "body" : {
            "type" : "string",
            "readOnly" : true
          },
          "bodySnippet" : {
            "type" : "string",
            "readOnly" : true
          },
          "attachments" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/EmailAttachment"
            }
          },
          "inReplyTo" : {
            "type" : "string",
            "readOnly" : true
          },
          "references" : {
            "type" : "string",
            "readOnly" : true
          },
          "threadIndex" : {
            "type" : "string",
            "readOnly" : true
          },
          "internetHeaders" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/EmailHeader"
            }
          },
          "nativeProperties" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "string"
            }
          },
          "folderId" : {
            "type" : "string",
            "readOnly" : true
          },
          "webLink" : {
            "type" : "string",
            "readOnly" : true
          },
          "omitted" : {
            "type" : "array",
            "readOnly" : true,
            "items" : {
              "type" : "string",
              "enum" : [ "threadId", "body", "attachments", "recipients", "internetHeaders" ]
            }
          }
        }
      },
      "EmailSendResponse" : {
        "type" : "object",
        "properties" : {
          "status" : {
            "type" : "string",
            "enum" : [ "Ok" ]
          },
          "id" : {
            "type" : "string"
          },
          "submittedMessageId" : {
            "type" : "string",
            "description" : "Message-Id header generated by Aurinko when SMTP sending. Note that some SMTP servers will override it."
          },
          "threadId" : {
            "type" : "string"
          },
          "trackingId" : {
            "type" : "string",
            "description" : "A tracking identifier for the sent message"
          },
          "processingStatus" : {
            "type" : "string",
            "enum" : [ "Ok", "Incomplete" ]
          },
          "processingError" : {
            "$ref" : "#/components/schemas/EmailSendError"
          }
        }
      },
      "EmailSendError" : {
        "type" : "object",
        "properties" : {
          "failedSteps" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "enum" : [ "tracking", "followUp", "keywords", "returnIds" ],
              "description" : "Action that should have been performed, but were not performed due to an error"
            }
          },
          "errorMessage" : {
            "type" : "string",
            "description" : "An error occurred after a successful submission while processing the result"
          }
        }
      },
      "EmailMessagesPageNext" : {
        "type" : "object",
        "properties" : {
          "nextPageToken" : {
            "type" : "string"
          },
          "length" : {
            "type" : "integer"
          },
          "records" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/EmailMessage"
            }
          }
        }
      },
      "EmailMessagesPage" : {
        "type" : "object",
        "properties" : {
          "nextPageToken" : {
            "type" : "string",
            "description" : "A token received as nextPageToken from a previous page request"
          },
          "nextDeltaToken" : {
            "type" : "string",
            "description" : "A token received as nextDeltaToken from a previous sync request or a start sync request"
          },
          "length" : {
            "type" : "integer"
          },
          "records" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/EmailMessage"
            }
          }
        }
      },
      "EmailConversationFollouwpStatus" : {
        "type" : "object",
        "properties" : {
          "lastSentEmail" : {
            "$ref" : "#/components/schemas/EmailMessage"
          },
          "followup" : {
            "$ref" : "#/components/schemas/ConversationDripStatus"
          },
          "mailboxError" : {
            "type" : "string",
            "description" : "Error message if lastSentEmail retrieval failed"
          },
          "followupError" : {
            "type" : "string",
            "description" : "Error message if followup retrieval failed"
          }
        }
      },
      "EmailFolderInfoPage" : {
        "type" : "object",
        "properties" : {
          "length" : {
            "type" : "integer"
          },
          "records" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/EmailFolderInfo"
            }
          }
        }
      },
      "EmailFolderInfo" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "readOnly" : true
          },
          "name" : {
            "type" : "string",
            "readOnly" : true
          },
          "fullName" : {
            "type" : "string",
            "readOnly" : true
          },
          "isFolder" : {
            "type" : "boolean",
            "readOnly" : true
          },
          "isLabel" : {
            "type" : "boolean",
            "readOnly" : true
          },
          "parentId" : {
            "type" : "string",
            "readOnly" : true
          },
          "sysLabel" : {
            "$ref" : "#/components/schemas/SysLabel"
          }
        }
      },
      "EmailFolderCreate" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string"
          },
          "parentId" : {
            "type" : "string",
            "description" : "parent folder identifier"
          }
        }
      },
      "WellKnownFoldersIn" : {
        "type" : "object",
        "properties" : {
          "archive" : {
            "type" : "string",
            "description" : "an xid of folder - to mark it as Archive, set to null to clear Archive folder"
          },
          "sent" : {
            "type" : "string",
            "description" : "an xid of folder marked as an Sent, set to null to clear"
          }
        }
      },
      "WellKnownFoldersOut" : {
        "type" : "object",
        "properties" : {
          "archive" : {
            "type" : "string",
            "description" : "an xid of folder marked as an Archive"
          },
          "sent" : {
            "type" : "string",
            "description" : "an xid of folder marked as an Sent"
          }
        }
      },
      "ScheduledDraft" : {
        "type" : "object",
        "properties" : {
          "jobId" : {
            "type" : "integer",
            "format" : "int64",
            "readOnly" : true
          },
          "sendTime" : {
            "type" : "string",
            "format" : "date-time",
            "readOnly" : true
          },
          "status" : {
            "type" : "string",
            "enum" : [ "scheduled", "sent", "failed" ]
          },
          "errorMessage" : {
            "type" : "string",
            "readOnly" : true
          }
        }
      },
      "EmailDraftResponse" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "readOnly" : true
          },
          "webLink" : {
            "type" : "string",
            "readOnly" : true
          }
        }
      },
      "EmailDraft" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "readOnly" : true
          },
          "message" : {
            "$ref" : "#/components/schemas/EmailMessage"
          },
          "scheduled" : {
            "$ref" : "#/components/schemas/ScheduledDraft"
          }
        }
      },
      "EmailDraftSendResponse" : {
        "type" : "object",
        "properties" : {
          "status" : {
            "type" : "string",
            "enum" : [ "Ok", "Scheduled" ]
          },
          "id" : {
            "type" : "string"
          },
          "threadId" : {
            "type" : "string"
          },
          "trackingId" : {
            "type" : "string",
            "description" : "A tracking identifier for the sent message"
          },
          "processingStatus" : {
            "type" : "string",
            "enum" : [ "Ok", "Incomplete" ]
          },
          "processingError" : {
            "$ref" : "#/components/schemas/EmailSendError"
          }
        }
      },
      "DraftSendDetails" : {
        "type" : "object",
        "properties" : {
          "tracking" : {
            "$ref" : "#/components/schemas/OutEmailTrack"
          }
        }
      },
      "OutEmailTrack" : {
        "type" : "object",
        "properties" : {
          "threadReplies" : {
            "type" : "boolean"
          },
          "opens" : {
            "type" : "boolean"
          },
          "links" : {
            "type" : "boolean"
          },
          "trackOpensAfterSendDelay" : {
            "type" : "integer",
            "description" : "number of seconds to wait after a send before enabling tracking",
            "default" : 5
          },
          "context" : {
            "type" : "string",
            "description" : "User-defined tracking data that will be associated with this email."
          },
          "customDomainAlias" : {
            "type" : "string",
            "description" : "A custom domain for the tracking pixel url. Aurinko’s default is used if not present. Example `tracking.company.com`"
          }
        }
      },
      "EmailTrackingPageNext" : {
        "type" : "object",
        "properties" : {
          "offset" : {
            "type" : "integer"
          },
          "totalSize" : {
            "type" : "integer",
            "format" : "int64"
          },
          "done" : {
            "type" : "boolean"
          },
          "records" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/TrackingData"
            }
          }
        }
      },
      "TrackingData" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "integer",
            "format" : "int64"
          },
          "messageId" : {
            "type" : "string"
          },
          "inetMessageId" : {
            "type" : "string"
          },
          "threadId" : {
            "type" : "string"
          },
          "sendDate" : {
            "type" : "string",
            "format" : "date-time"
          },
          "lastActivityTime" : {
            "type" : "string",
            "format" : "date-time"
          },
          "lastRespondedTime" : {
            "type" : "string",
            "format" : "date-time"
          },
          "trackReplies" : {
            "type" : "boolean"
          },
          "trackOpens" : {
            "type" : "boolean"
          },
          "trackingCode" : {
            "type" : "string"
          },
          "context" : {
            "type" : "string"
          },
          "location" : {
            "type" : "string"
          },
          "userAgent" : {
            "type" : "string"
          },
          "remoteAddr" : {
            "type" : "string"
          },
          "openCount" : {
            "type" : "integer"
          },
          "ignoreOpenClicks" : {
            "type" : "boolean"
          },
          "hasBounced" : {
            "type" : "boolean"
          }
        }
      },
      "EmailTrackingEventPageNext" : {
        "type" : "object",
        "properties" : {
          "offset" : {
            "type" : "integer"
          },
          "totalSize" : {
            "type" : "integer",
            "format" : "int64"
          },
          "done" : {
            "type" : "boolean"
          },
          "records" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/EmailTrackingEvent"
            }
          }
        }
      },
      "EmailTrackingEvent" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "integer",
            "format" : "int64"
          },
          "createdAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "eventType" : {
            "type" : "string",
            "enum" : [ "open", "click", "initial", "reply", "replyBounce" ]
          },
          "location" : {
            "type" : "string"
          },
          "userAgent" : {
            "type" : "string"
          },
          "referrer" : {
            "type" : "string"
          },
          "remoteAddr" : {
            "type" : "string"
          },
          "targetUrl" : {
            "type" : "string",
            "description" : "The URL target of the user's click"
          },
          "openNumber" : {
            "type" : "integer"
          },
          "threadId" : {
            "type" : "string"
          },
          "messageId" : {
            "type" : "string"
          },
          "internetMessageId" : {
            "type" : "string"
          },
          "trackingId" : {
            "type" : "integer",
            "format" : "int64"
          },
          "trackingThreadId" : {
            "type" : "string",
            "description" : "Thread id where tracking begins"
          },
          "trackingMessageId" : {
            "type" : "string",
            "description" : "Message id where tracking begins"
          },
          "trackingInternetMessageId" : {
            "type" : "string",
            "description" : "Rfc822 message id where tracking begins"
          },
          "context" : {
            "type" : "string"
          },
          "trackingCode" : {
            "type" : "string"
          }
        }
      },
      "RewriteHtml" : {
        "type" : "object",
        "properties" : {
          "htmlText" : {
            "type" : "string"
          },
          "tracking" : {
            "$ref" : "#/components/schemas/OutEmailTrack"
          }
        }
      },
      "EmailDraftCreateTrackingResponse" : {
        "type" : "object",
        "properties" : {
          "trackReplies" : {
            "type" : "boolean"
          },
          "htmlBody" : {
            "type" : "string"
          },
          "trackingCode" : {
            "type" : "string"
          },
          "trackOpensAfterSendDelay" : {
            "type" : "integer"
          },
          "context" : {
            "type" : "string"
          },
          "trackingId" : {
            "type" : "string",
            "description" : "A tracking identifier for the sent message"
          }
        }
      },
      "ConvertDraft" : {
        "type" : "object",
        "properties" : {
          "threadId" : {
            "type" : "string"
          },
          "messageId" : {
            "type" : "string"
          },
          "internetMessageId" : {
            "type" : "string"
          }
        }
      },
      "UpdateDraftTrackingIn" : {
        "type" : "object",
        "properties" : {
          "context" : {
            "type" : "string"
          }
        }
      },
      "FollowupConfig" : {
        "type" : "object",
        "properties" : {
          "timezone" : {
            "type" : "string"
          },
          "emailAliases" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "format" : "email"
            }
          }
        }
      },
      "FollowupRuleAggregateIn" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string"
          },
          "expectThreadResponse" : {
            "type" : "boolean"
          },
          "templateBody" : {
            "type" : "string"
          },
          "templateSubject" : {
            "type" : "string"
          },
          "actions" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/FollowupRuleAction"
            }
          }
        }
      },
      "FollowupRuleAggregateOut" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "integer"
          },
          "name" : {
            "type" : "string"
          },
          "expectThreadResponse" : {
            "type" : "boolean"
          },
          "templateBody" : {
            "type" : "string"
          },
          "templateSubject" : {
            "type" : "string"
          },
          "actions" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/FollowupRuleAction"
            }
          }
        }
      },
      "FollowupRuleAggregateOutPage" : {
        "type" : "object",
        "properties" : {
          "offset" : {
            "type" : "integer"
          },
          "totalSize" : {
            "type" : "integer",
            "format" : "int64"
          },
          "done" : {
            "type" : "boolean"
          },
          "records" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/FollowupRuleAggregateOut"
            }
          }
        }
      },
      "FollowupRuleAction" : {
        "type" : "object",
        "properties" : {
          "intervalDays" : {
            "type" : "integer"
          },
          "message" : {
            "type" : "string"
          }
        }
      },
      "ConversationDripStatusPage" : {
        "type" : "object",
        "properties" : {
          "offset" : {
            "type" : "integer"
          },
          "totalSize" : {
            "type" : "integer",
            "format" : "int64"
          },
          "done" : {
            "type" : "boolean"
          },
          "records" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ConversationDripStatus"
            }
          }
        }
      },
      "ConversationDripStatus" : {
        "type" : "object",
        "properties" : {
          "convoId" : {
            "type" : "string"
          },
          "subject" : {
            "type" : "string"
          },
          "status" : {
            "type" : "string",
            "enum" : [ "disabled", "active", "failed", "finished", "ruleIncomplete" ]
          },
          "rule" : {
            "$ref" : "#/components/schemas/FollowupRuleAggregateOut"
          },
          "actionOverrides" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/FollowupRuleAction"
            },
            "description" : "These actions override the ones defined in the specified ruleId. If this field is omitted, the actions from the ruleId will be applied by default.\n"
          },
          "dripStartedAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "dripLastNum" : {
            "type" : "integer"
          },
          "dripError" : {
            "type" : "string"
          },
          "dripEndedAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "actionVars" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "string"
            }
          },
          "targets" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "dripResponder" : {
            "type" : "string"
          }
        }
      },
      "DripRequestDTO" : {
        "type" : "object",
        "properties" : {
          "status" : {
            "type" : "string",
            "enum" : [ "disabled", "active" ]
          },
          "ruleId" : {
            "type" : "integer",
            "format" : "int64"
          },
          "actionOverrides" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/FollowupRuleAction"
            },
            "description" : "These actions override the ones defined in the specified ruleId. If this field is null or empty, the actions from the ruleId will be applied by default.\n"
          },
          "dripAfter" : {
            "type" : "string",
            "format" : "date-time"
          },
          "targets" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "actionVars" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "string"
            }
          }
        }
      },
      "FollowUpOutgoing" : {
        "type" : "object",
        "properties" : {
          "ruleId" : {
            "type" : "integer"
          },
          "actionVars" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "string"
            }
          }
        }
      },
      "SubscriptionRequest" : {
        "type" : "object",
        "properties" : {
          "resource" : {
            "type" : "string"
          },
          "notificationUrl" : {
            "type" : "string"
          },
          "filters" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/DataConsumerFilter"
            }
          },
          "detailLevel" : {
            "$ref" : "#/components/schemas/DataConsumerDetailLevel"
          }
        }
      },
      "SubscriptionResponse" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "integer",
            "format" : "int64"
          },
          "resource" : {
            "type" : "string"
          },
          "notificationUrl" : {
            "type" : "string"
          },
          "active" : {
            "type" : "boolean"
          },
          "failSince" : {
            "type" : "string",
            "format" : "date-time"
          },
          "failDescription" : {
            "type" : "string"
          },
          "disabledByBilling" : {
            "type" : "boolean"
          },
          "filters" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/DataConsumerFilter"
            }
          },
          "detailLevel" : {
            "$ref" : "#/components/schemas/DataConsumerDetailLevel"
          }
        }
      },
      "SubscriptionsPage" : {
        "type" : "object",
        "properties" : {
          "offset" : {
            "type" : "integer"
          },
          "totalSize" : {
            "type" : "integer",
            "format" : "int64"
          },
          "done" : {
            "type" : "boolean"
          },
          "records" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/SubscriptionResponse"
            }
          }
        }
      },
      "SyncStatus" : {
        "type" : "object",
        "properties" : {
          "syncUpdatedToken" : {
            "type" : "string"
          },
          "syncDeletedToken" : {
            "type" : "string"
          },
          "ready" : {
            "type" : "boolean"
          }
        }
      },
      "TaskStatus" : {
        "type" : "string",
        "enum" : [ "notStarted", "inProgress", "completed", "waitingOnOthers", "deferred" ]
      },
      "TaskImportance" : {
        "type" : "string",
        "enum" : [ "low", "normal", "high" ]
      },
      "TaskListPage" : {
        "type" : "object",
        "properties" : {
          "nextPageToken" : {
            "type" : "string"
          },
          "length" : {
            "type" : "integer"
          },
          "records" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/TaskList"
            }
          }
        }
      },
      "TaskList" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string"
          },
          "etag" : {
            "type" : "string"
          },
          "title" : {
            "type" : "string"
          },
          "owner" : {
            "type" : "boolean"
          },
          "shared" : {
            "type" : "boolean"
          },
          "defaultList" : {
            "type" : "boolean"
          },
          "emailsList" : {
            "type" : "boolean"
          },
          "lastModifiedTime" : {
            "type" : "string",
            "format" : "date-time"
          }
        }
      },
      "TaskListCreate" : {
        "type" : "object",
        "properties" : {
          "title" : {
            "type" : "string"
          }
        }
      },
      "TaskListUpdate" : {
        "type" : "object",
        "properties" : {
          "title" : {
            "type" : "string"
          }
        }
      },
      "TasksPage" : {
        "type" : "object",
        "properties" : {
          "nextPageToken" : {
            "type" : "string"
          },
          "length" : {
            "type" : "integer"
          },
          "records" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Task"
            }
          }
        }
      },
      "Task" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string"
          },
          "etag" : {
            "type" : "string"
          },
          "title" : {
            "type" : "string"
          },
          "lastModifiedTime" : {
            "type" : "string",
            "format" : "date-time"
          },
          "parentId" : {
            "type" : "string"
          },
          "position" : {
            "type" : "string"
          },
          "notes" : {
            "type" : "string"
          },
          "status" : {
            "$ref" : "#/components/schemas/TaskStatus"
          },
          "importance" : {
            "$ref" : "#/components/schemas/TaskImportance"
          },
          "due" : {
            "type" : "string",
            "format" : "date-time"
          },
          "completed" : {
            "type" : "string",
            "format" : "date-time"
          },
          "links" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/TaskLink"
            }
          },
          "startDateTime" : {
            "type" : "string",
            "format" : "date-time"
          },
          "categories" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "owner" : {
            "type" : "string"
          },
          "omitted" : {
            "type" : "array",
            "readOnly" : true,
            "items" : {
              "type" : "string",
              "enum" : [ "notes" ]
            }
          }
        }
      },
      "TaskLink" : {
        "type" : "object",
        "properties" : {
          "source" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          },
          "link" : {
            "type" : "string"
          }
        }
      },
      "TaskCreate" : {
        "type" : "object",
        "properties" : {
          "title" : {
            "type" : "string"
          },
          "parentId" : {
            "type" : "string"
          },
          "previousId" : {
            "type" : "string"
          },
          "notes" : {
            "type" : "string"
          },
          "status" : {
            "$ref" : "#/components/schemas/TaskStatus"
          },
          "importance" : {
            "$ref" : "#/components/schemas/TaskImportance"
          },
          "due" : {
            "type" : "string",
            "format" : "date-time"
          },
          "startDateTime" : {
            "type" : "string",
            "format" : "date-time"
          },
          "categories" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }
      },
      "TaskCreateResponse" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "readOnly" : true
          },
          "etag" : {
            "type" : "string",
            "readOnly" : true
          },
          "record" : {
            "$ref" : "#/components/schemas/Task"
          }
        }
      },
      "TaskUpdate" : {
        "type" : "object",
        "properties" : {
          "title" : {
            "type" : "string"
          },
          "parentId" : {
            "type" : "string"
          },
          "previousId" : {
            "type" : "string"
          },
          "notes" : {
            "type" : "string"
          },
          "status" : {
            "$ref" : "#/components/schemas/TaskStatus"
          },
          "importance" : {
            "$ref" : "#/components/schemas/TaskImportance"
          },
          "due" : {
            "type" : "string",
            "format" : "date-time"
          },
          "startDateTime" : {
            "type" : "string",
            "format" : "date-time"
          },
          "categories" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }
      },
      "TaskUpdateResponse" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "readOnly" : true
          },
          "etag" : {
            "type" : "string",
            "readOnly" : true
          },
          "record" : {
            "$ref" : "#/components/schemas/Task"
          }
        }
      },
      "SyncTasksPage" : {
        "type" : "object",
        "properties" : {
          "nextPageToken" : {
            "type" : "string",
            "description" : "A token received as nextPageToken from a previous page request"
          },
          "nextDeltaToken" : {
            "type" : "string",
            "description" : "A token received as nextDeltaToken from a previous sync request or a start sync request"
          },
          "length" : {
            "type" : "integer"
          },
          "records" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Task"
            }
          }
        }
      },
      "DrivePage" : {
        "type" : "object",
        "properties" : {
          "nextPageToken" : {
            "type" : "string",
            "description" : "A token received as nextPageToken from a previous page request"
          },
          "length" : {
            "type" : "integer"
          },
          "records" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Drive"
            }
          }
        }
      },
      "Drive" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string"
          },
          "name" : {
            "type" : "string"
          },
          "driveType" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          },
          "createdTime" : {
            "type" : "string",
            "format" : "date-time"
          },
          "lastModifiedTime" : {
            "type" : "string",
            "format" : "date-time"
          },
          "webUrl" : {
            "type" : "string"
          },
          "quota" : {
            "$ref" : "#/components/schemas/DriveQuota"
          },
          "owner" : {
            "$ref" : "#/components/schemas/DriveOwner"
          }
        }
      },
      "DriveQuota" : {
        "type" : "object",
        "properties" : {
          "deleted" : {
            "type" : "integer",
            "format" : "int64"
          },
          "state" : {
            "type" : "string"
          },
          "remaining" : {
            "type" : "integer",
            "format" : "int64"
          },
          "total" : {
            "type" : "integer",
            "format" : "int64"
          },
          "used" : {
            "type" : "integer",
            "format" : "int64"
          }
        }
      },
      "DriveOwner" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string"
          },
          "displayName" : {
            "type" : "string"
          },
          "email" : {
            "type" : "string"
          }
        }
      },
      "DriveItemPage" : {
        "type" : "object",
        "properties" : {
          "nextPageToken" : {
            "type" : "string",
            "description" : "A token received as nextPageToken from a previous page request"
          },
          "length" : {
            "type" : "integer"
          },
          "records" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/DriveItem"
            }
          }
        }
      },
      "DriveItem" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string"
          },
          "eTag" : {
            "type" : "string"
          },
          "cTag" : {
            "type" : "string"
          },
          "name" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          },
          "createdTime" : {
            "type" : "string",
            "format" : "date-time"
          },
          "lastModifiedTime" : {
            "type" : "string",
            "format" : "date-time"
          },
          "size" : {
            "type" : "integer",
            "format" : "int64"
          },
          "parentReference" : {
            "$ref" : "#/components/schemas/DriveParentReference"
          },
          "folder" : {
            "$ref" : "#/components/schemas/DriveFolder"
          },
          "file" : {
            "$ref" : "#/components/schemas/DriveFile"
          },
          "webUrl" : {
            "type" : "string"
          }
        }
      },
      "DriveParentReference" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string"
          },
          "name" : {
            "type" : "string"
          },
          "path" : {
            "type" : "string"
          }
        }
      },
      "DriveFolder" : {
        "type" : "object",
        "properties" : {
          "childCount" : {
            "type" : "integer"
          }
        }
      },
      "DriveFile" : {
        "type" : "object",
        "properties" : {
          "mimeType" : {
            "type" : "string"
          }
        }
      }
    },
    "securitySchemes" : {
      "AppAuth" : {
        "type" : "http",
        "scheme" : "basic",
        "description" : "App-level basic authentication using Client ID and Client Secret that can be obtained at Aurinko Dashboard page."
      },
      "AccountToken" : {
        "type" : "http",
        "scheme" : "bearer",
        "description" : "Account-level authentication with account token obtained using `/auth/authorize` endpoint."
      },
      "UserSessionCookie" : {
        "type" : "apiKey",
        "in" : "cookie",
        "name" : "AUR{APPID}",
        "description" : "Cookie-based user-level authentication"
      },
      "UserSessionHeader" : {
        "type" : "apiKey",
        "in" : "header",
        "name" : "X-Aurinko-Session",
        "description" : "Token-based user-level authentication"
      },
      "ClientIdHeader" : {
        "type" : "apiKey",
        "in" : "header",
        "name" : "X-Aurinko-Client-Id",
        "description" : "Client ID that can be obtained at Aurinko Dashboard page"
      },
      "AccountIdHeader" : {
        "type" : "apiKey",
        "in" : "header",
        "name" : "X-Aurinko-Account-Id",
        "description" : "User account id"
      },
      "AuthTypeHeader" : {
        "type" : "apiKey",
        "in" : "header",
        "name" : "X-Aurinko-Auth-Type",
        "description" : "Authentication type. Possible values: default, exchangeIdToken"
      },
      "ExchangeIdToken" : {
        "type" : "http",
        "scheme" : "bearer",
        "bearerFormat" : "Exchange Identity Token (only with `X-Aurinko-Auth-Type: exchangeIdToken` header.)",
        "description" : "Authentication using Exchange Identity Token. To use this method `X-Aurinko-Auth-Type: exchangeIdToken` header should be used."
      }
    },
    "responses" : {
      "UnauthorizedError" : {
        "description" : "Access token is missing or invalid",
        "content" : {
          "application/json" : {
            "schema" : {
              "$ref" : "#/components/schemas/ApiRequestFailed"
            },
            "examples" : {
              "missingToken" : {
                "value" : {
                  "code" : "unauthorized",
                  "message" : "unauthorized",
                  "requestId" : "82414de3-3815-47ef-aca1-6745e42a60d6"
                }
              },
              "deadToken" : {
                "value" : {
                  "code" : "token.dead",
                  "message" : "Not authorized",
                  "requestId" : "82414de3-3835-47ef-aca1-6745e42a60d6"
                }
              },
              "invalidToken" : {
                "value" : {
                  "code" : "token.refresh.failed",
                  "message" : "Invalid data: refreshToken missing",
                  "requestId" : "e0587d2f-d612-4c06-902d-5f3d807e5ca7"
                }
              }
            }
          }
        }
      },
      "UnauthorizedError2" : {
        "description" : "Authentication information is missing or invalid",
        "headers" : {
          "WWW_Authenticate" : {
            "schema" : {
              "type" : "string"
            }
          }
        }
      },
      "UnauthorizedError3" : {
        "description" : "API key is missing or invalid",
        "headers" : {
          "WWW_Authenticate" : {
            "schema" : {
              "type" : "string"
            }
          }
        }
      },
      "CommonOk" : {
        "description" : "Success",
        "content" : {
          "application/json" : {
            "schema" : {
              "$ref" : "#/components/schemas/OkResponse"
            }
          }
        }
      },
      "UnexpectedError" : {
        "description" : "See \"Handling errors\" section for details"
      },
      "ResourceExpiredError" : {
        "description" : "SyncToken expired, retrieve a new syncToken and try again",
        "content" : {
          "application/json" : {
            "schema" : {
              "$ref" : "#/components/schemas/ApiRequestFailed"
            },
            "examples" : {
              "expiredSyncToken" : {
                "value" : {
                  "code" : "syncToken.expired",
                  "message" : "syncToken expired.",
                  "requestId" : "82414de3-3815-47ef-aca1-6745e42a60d6"
                }
              }
            }
          }
        }
      }
    }
  },
  "tags" : [ {
    "name" : "Auth",
    "x-displayName" : "Authorization",
    "description" : "Aurinko's Unified OAuth Flows are backed by providers’ OAuth2 flows (i.e. Google, Office 365, Salesforce, HubSpot,...)\nor by secure password-based authentications (i.e. MS Exchange, IMAP accounts). The following three flows are supported:\n\n1. Account OAuth - User delegated authorization that produces an Aurinko account and an access token.\n2. Service Account OAuth - Admin/Org-level authorization that produces an Auirnko service account and an access token.\n3. User OAuth - User delegated authorization that produces an Aurinko User, its primary account, and a user session token or cookie.\n\nSee [this user guide](https://docs.aurinko.io/authentication/authentication-flow) for more information.\n"
  }, {
    "name" : "Errors",
    "x-displayName" : "Handling errors",
    "x-traitTag" : true,
    "description" : "## Failing requests\nAPI clients must expect and gracefully handle transient errors, such as rate limiting or server errors.\nWe recommend baking 5xx and 429 response handling into your low-level HTTP client so your integration\ncan handle most errors automatically.\n\nIf a request fails, the error information is returned with the HTTP status code and error details are\nusually sent as JSON content. For instance, if a requested record could not be found, the HTTP response\nmight look something like:\n```\nHTTP/1.1 404 The record could not be found\nDate: Thu, 16 Mar 2020 17:41:40 GMT\nContent-Type:\tapplication/json\n...\n\n{\n  \"code\": \"badRequest\",\n  \"message\": \"Bad Request\",\n  \"requestId\": \"3cd38fee-714b-4fe2-8e41-0f358246526a\",\n  \"originalError\": {\n    \"error\": {\n      \"code\": \"ErrorInvalidIdMalformed\",\n      \"message\": \"Id is malformed.\",\n      \"innerError\": {\n        \"date\": \"2020-08-17T22:56:24\",\n        \"request-id\": \"be4b9a5c-9c29-4cd4-b815-90b5e5bf8f07\"\n      }\n    }\n  }\n}\n```\n\nNote that, in general, if a request causes a new record to be created (like a new event, or contact, etc.),\nthe response will use the \"201 Created\" status. Any other successful operation (like a successful query,\ndelete, or update) will use a 200 status code.\n\n## Rate limiting (429 Too Many Requests)\nIf you exceed rate limits imposed by a remote API like Google, Graph, MS Exchange, you will\nget a 429 Too Many Requests response. Your application should retry with exponential backoff.\n\n## 5xx server errors\nIf Aurinko is having trouble, you will get a response with a 5xx status code indicating a server error.\n500 (Internal Server Error), 502 (Bad Gateway), 503 (Service Unavailable), and 504 (Gateway Timeout)\nmay be retried with exponential backoff.\n\n## 404 Not Found\nAPI requests may get 404 due to a deleted item or insufficient permissions, etc. Do not automatically\nretry these requests.\n\n## 408 Request timeout\nAPI requests may timeout for some reasons. Do automatically\nretry these requests.\n\n## 412 Precondition Failed\nPATCH API requests may get 412 due to a mismatching ETag header (If-Match) which indicates\nthe contact has changed since its data was read.\n"
  }, {
    "name" : "Account",
    "description" : "An account corresponds to an email address, mailbox, and/or calendar. When connecting to the Aurinko API, a specific access token gives you access to a specific account’s data.\n"
  }, {
    "name" : "User",
    "x-displayName" : "User sessions",
    "description" : "`User` is an Aurinko managed entity that your app can leverage to implement user session management. Multiple regular Aurinko accounts can be linked to a `User` however there is always one primary account that acts as the user id-provider. The `User` sessions allow browser apps to store all their account access tokens securely on the Aurinko servers.\n"
  }, {
    "name" : "Accounts",
    "description" : "These endpoints allow for account management outside the developer console interface. You can list, cancel, update, and delete accounts associated with your application.\n"
  }, {
    "name" : "Services",
    "x-displayName" : "Service accounts",
    "description" : "Service accounts represent admin/service/organization level connections. List, cancel, update, and delete service accounts associated with your application.\n"
  }, {
    "name" : "Managed accounts",
    "x-displayName" : "Managed accounts",
    "description" : "Manage accounts rely on service accounts for their connections. List, cancel, update, and delete managed accounts associated with service accounts.\n"
  }, {
    "name" : "Users",
    "description" : "These endpoints enable user management outside the developer console. You can list users, list a user's accounts, and update or delete accounts associated with your application's users.\n"
  }, {
    "name" : "Organizations",
    "description" : "These endpoints enable organization management outside the developer console.\n"
  }, {
    "name" : "Calendars",
    "description" : "Each account connected to Aurino can have zero or more calendars, and each calendar has a collection of individual events.\n"
  }, {
    "name" : "CalSync",
    "x-displayName" : "Calendar sync",
    "description" : "Sync/delta methods.\n"
  }, {
    "name" : "Events",
    "x-displayName" : "Calendar events",
    "description" : "Events are objects within a calendar, generally supporting all features of modern scheduling apps. Using the calendar APIs, your application can schedule events, send meeting invitations, RSVP, and more.\n"
  }, {
    "name" : "FreeBusySchedule",
    "x-displayName" : "Free/Busy schedule",
    "description" : "Check free/busy status for a calendar or available time slots for a meeting in multiple calendars.\n"
  }, {
    "name" : "Booking",
    "x-displayName" : "Booking (Accounts)",
    "description" : "Booking profiles allow you to build calendar availability and meeting scheduling apps. List, create, update, and delete booking profiles associated with a calendar (Aurinko account). Gather availability information from a calendar and find time slots when the calendar owner is available. Schedule events for a calendar owner.\n"
  }, {
    "name" : "GroupBooking",
    "x-displayName" : "Group Booking",
    "description" : "Group Booking profiles allow you to build calendar availability and meeting scheduling for a group of accounts. List, create, update, and delete booking profiles associated with a group. Gather availability information from multiple account calendars and find time slots when at least one user is available. Schedule events for available accounts.\n"
  }, {
    "name" : "Availability",
    "x-displayName" : "Availability",
    "description" : "See meeting time availability according to the group booking profile configuration. Book a meeting for an account or one of users in a group.\n"
  }, {
    "name" : "DrivesSync",
    "x-displayName" : "Drive sync",
    "description" : "Sync/delta methods."
  }, {
    "name" : "Drives",
    "x-displayName" : "Drives",
    "description" : "Provides a unified REST interface for accessing and managing files and folders across cloud storage providers.\n"
  }, {
    "name" : "EmailSync",
    "x-displayName" : "Email sync",
    "description" : "Sync/delta methods."
  }, {
    "name" : "Messages",
    "x-displayName" : "Email messages",
    "description" : "Messages contain several pieces of information, such as when a message was sent, the sender's address, to whom it was sent, and the message body. They can also contain files (attachments), calendar event invitations, and more.\n"
  }, {
    "name" : "Drafts",
    "x-displayName" : "Draft messages",
    "description" : "A draft message is a message which has not been sent yet. The drafts endpoints let you create new drafts, read existing drafts, and send drafts.\n"
  }, {
    "name" : "EmailFolders",
    "x-displayName" : "Email folders",
    "description" : "List email folders, their attributes, and messages.\n"
  }, {
    "name" : "EmailTracking",
    "x-displayName" : "Email tracking",
    "description" : "Track email opens.\n"
  }, {
    "name" : "FollowUpRobot",
    "x-displayName" : "Follow-up and templates",
    "description" : "Follow-up rules allow you to define automatic email follow-up (drip) sequences and email templates. List, create, update, and delete follow-up rules associated with a mailbox account. Check status of a drip sequence for a given email thread, or activate a drip sequence.\n"
  }, {
    "name" : "Contacts",
    "description" : "Contacts are objects within an address book, containing several pieces of information, such as email addresses, phone numbers,  postal addresses, work place details.\n"
  }, {
    "name" : "ContSync",
    "x-displayName" : "Contacts sync",
    "description" : "Sync/delta methods.\n"
  }, {
    "name" : "TaskLists",
    "x-displayName" : "Task Lists",
    "description" : "TaskLists a container objects for tasks.\n"
  }, {
    "name" : "Tasks",
    "x-displayName" : "Tasks",
    "description" : "Tasks a work to be done.\n"
  }, {
    "name" : "TaskSync",
    "x-displayName" : "Task sync",
    "description" : "Sync/delta methods."
  }, {
    "name" : "Webhooks",
    "description" : "Webhooks allow your application to receive simple notifications when certain events occur.\nFor implementation details, refer to the [Aurinko Webhooks API documentation](https://docs.aurinko.io/unified-apis/webhooks-api).\n"
  }, {
    "name" : "RateLimiting",
    "x-displayName" : "Rate Limiting",
    "description" : "API calls are limited to 250 requests per second.\nWebhooks from providers (such as webhooks from the Office, Google, and others) are limited to 3,000 requests per second.\n"
  } ],
  "info" : {
    "version" : "1.0.0",
    "title" : "Aurinko.io API",
    "description" : "## Introduction\nThe Aurinko API is a unified API platform allowing developers to quickly build integrations with\nmany mailbox providers and services like Google, Office 365, Outlook.com, MS Exchange, IMAP.\nThe unified API abstracts away differences between many email, calendar, contact, task APIs\nto make it easy to connect and sync the mailbox data.\n\nThe Aurinko API's focus is convenient and reliable data synchronization for all supported\ndata categories (email, calendar, contacts, tasks) so the API provides methods to receive changes/deltas\nand be notified of the changes (through webhooks) in a unified manner. The API's sync/deltas model\nshould allow developers to build reliable event based solutions easily.\n\nThe Aurinko API is built on HTTP. Our API is RESTful. It has predictable resource URLs.\nIt returns HTTP response codes to indicate errors. It also accepts and returns JSON in the HTTP body.\n\n## API Authentication\nWhen you [sign up for an account](https://app.aurinko.io/#/signUp), you are given a Client Id and Secret\nfor every application that you create. You use those to go through OAuth flows that allow you\nto start syncing remote account data through Aurinko. An account OAuth flow can be started with\njust the Client Id and the Client Secret will be required to obtain an account access token in the\n\"authorization code\" flow (\"implicit grant\" flow does is secured by the \"trusted domains\" setting).\n\nAurinko supports four methods of authentication depending on your authorization mode:\n\n- **Basic Authentication** (`Client Id`, `Client Secret`): Used primarily for authentication flows and administrative requests initiated from the server side.\n- **Bearer Token** `Account Access Token`: Used to authorize requests when accessing or manipulating specific user account data.\n- **API Key in Cookie**: Designed for in-browser web applications that utilize Aurinko as a backend API and manage user sessions.\n- **API Key in Header** (`X-Aurinko-Session`): Designed for server-side applications that need to maintain and manage user sessions.\n\nNever share your client secret or access token. Keep them guarded and secure.\n\n## Getting Started Guide\nIf you have a use case you would like to implement, please consult us for feedback on the best API operations for the task.\n\n[Click here to visit our API Guides](https://docs.aurinko.io/ctg-getting-started/getting-started).\n",
    "termsOfService" : "https://www.aurinko.io/terms-of-service/",
    "contact" : {
      "email" : "support@aurinko.io"
    }
  },
  "openapi" : "3.0.0",
  "servers" : [ {
    "url" : "https://api.aurinko.io",
    "description" : "Production server"
  } ],
  "x-tagGroups" : [ {
    "name" : "OAuth Flow",
    "tags" : [ "Auth", "Account", "User" ]
  }, {
    "name" : "Account management",
    "tags" : [ "Accounts", "Services", "Managed accounts" ]
  }, {
    "name" : "User management",
    "tags" : [ "Users", "Organizations" ]
  }, {
    "name" : "Drives",
    "tags" : [ "Drives", "DrivesSync" ]
  }, {
    "name" : "Email",
    "tags" : [ "Messages", "EmailSync", "Drafts", "EmailFolders", "EmailTracking", "FollowUpRobot" ]
  }, {
    "name" : "Calendars",
    "tags" : [ "Calendars", "Events", "CalSync", "FreeBusySchedule" ]
  }, {
    "name" : "Scheduling",
    "tags" : [ "Booking", "GroupBooking", "Availability" ]
  }, {
    "name" : "Contacts",
    "tags" : [ "Contacts", "ContSync" ]
  }, {
    "name" : "Tasks",
    "tags" : [ "TaskLists", "Tasks", "TaskSync" ]
  }, {
    "name" : "Webhooks",
    "tags" : [ "Webhooks" ]
  }, {
    "name" : "Other",
    "tags" : [ "Errors" ]
  }, {
    "name" : "Rate Limiting",
    "tags" : [ "RateLimiting" ]
  } ],
  "security" : [ {
    "AccountToken" : [ ]
  }, {
    "AppAuth" : [ ],
    "AccountIdHeader" : [ ]
  }, {
    "UserSessionHeader" : [ ],
    "AccountIdHeader" : [ ]
  }, {
    "UserSessionCookie" : [ ],
    "ClientIdHeader" : [ ],
    "AccountIdHeader" : [ ]
  }, {
    "AuthTypeHeader" : [ ],
    "ExchangeIdToken" : [ ],
    "ClientIdHeader" : [ ],
    "AccountIdHeader" : [ ]
  } ]
}