openapi: 3.0.1
servers:
  - url: https://sandbox-api.onsched.com/
info:
  description: "Build secure and scalable custom apps for onboarding and setup. Our flexible API provides many options for configuration.\r

    <br><br>\r

    Take the API for a test drive. Just click on the Authorize button below and authenticate. \r

    You can access our demo company profile if you are not a customer, or your own profile by using your assigned ClientId and Secret.\r

    <br><br>\r

    The API has two interfaces, consumer and setup. \r

    <ul>\r

    <li>\r

    The consumer interface provides all the endpoints required for implementing consumer booking flows.\r

    </li>\r

    <li>\r

    The setup interface provides endpoints for profile configuration and setup.\r

    </li>\r

    </ul>\r

    Toggle freely between the two interfaces using the swagger tool bar option labelled 'Select a definition'.\r\n"
  title: OnSched Setup API
  version: v1
  x-apisguru-categories:
    - collaboration
  x-logo:
    url: https://api.apis.guru/v2/cache/logo/https_onsched_com_img_apple-touch-icon-57x57-precomposed.svg
  x-origin:
    - format: openapi
      url: https://sandbox-api.onsched.com/swagger/setup/swagger.json
      version: "3.0"
  x-providerName: onsched.com
  x-serviceName: setup
security:
  - oauth2:
      - OnSchedApi
paths:
  /setup/v1/appointments:
    get:
      description: '<p>Use this endpoint to return a <b>List of Appointments</b>. Use the offset and limit parameters to control the page start and number of results. Default offset is 0, limit is 20, max is 100. Use the query parameters to filter the results further. For more information: <a href="https://onsched.readme.io/docs/appointments-overview">Appointments Overview</a></p>'
      parameters:
        - description: id of business location, defaults to primary business location
          in: query
          name: locationId
          schema:
            type: string
        - description: Filter appointments by email address
          in: query
          name: email
          schema:
            type: string
        - description: Filter appointments by lastname or part of
          in: query
          name: lastname
          schema:
            type: string
        - description: Filter appointments by service
          in: query
          name: serviceId
          schema:
            type: string
        - description: Filter appointments by calendar
          in: query
          name: calendarId
          schema:
            type: string
        - description: Filter appointments by resource
          in: query
          name: resourceId
          schema:
            type: string
        - description: Filter appointments by customer
          in: query
          name: customerId
          schema:
            type: string
        - description: Filter appointments by service allocation
          in: query
          name: serviceAllocationId
          schema:
            type: string
        - description: "Format YYYY-MM-DD: Filter appointments by on/after startDate"
          in: query
          name: startDate
          schema:
            format: date-time
            type: string
        - description: "Format YYYY-MM-DD: Filter appointments on/before endDate"
          in: query
          name: endDate
          schema:
            format: date-time
            type: string
        - description: "Filter appointments by status: IN, BK, CN, RE, RS"
          in: query
          name: status
          schema:
            type: string
        - description: Filter appointments by user email who booked
          in: query
          name: bookedBy
          schema:
            type: string
        - description: Starting row of page, default 0
          in: query
          name: offset
          schema:
            format: int32
            type: integer
        - description: Page limit default 20, max 100
          in: query
          name: limit
          schema:
            format: int32
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AppointmentListViewModel"
          description: Success
      summary: List Appointments
      tags:
        - Appointments
  "/setup/v1/appointments/{id}":
    get:
      description: <p>Use this endpoint to return an <b>Appointment</b> object. A valid <b>appointment id</b> is required. Find appointment id's by using the <i>GET​/setup​/v1​/appointments</i> endpoint.</p>
      parameters:
        - description: id of appointment object
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AppointmentViewModel"
          description: Success
      summary: Get Appointment
      tags:
        - Appointments
  "/setup/v1/appointments/{id}/reassign/resource/{resourceId}":
    put:
      description: <p>Use this endpoint to <b>Reassign</b> an appointment from one resource to another. The result returned is a single appointment that was reassigned to the target resource. A valid <b>appointment id</b> and <b>resource id</b> is required. Find appointment id's by using the <i>GET /setup/v1/appointments</i> endpoint, find resource id's by using the <i>GET ​/setup​/v1​/resources</i> endpoint.</p>
      parameters:
        - description: id of appointment object
          in: path
          name: id
          required: true
          schema:
            type: string
        - description: id of target resource
          in: path
          name: resourceId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AppointmentViewModel"
          description: Success
      summary: Reassign Appointment
      tags:
        - Appointments
  /setup/v1/businessusers:
    get:
      description: <p>Use this endpoint to return a <b>List of Business Users and their Roles</b>. The results are returned in pages. Use the offset and limit parameters to control the page start and number of results. Default offset is 0, limit is 20, max is 100. Use the query parameters to filter the results further.</p>
      parameters:
        - description: id of business location, defaults to primary business location
          in: query
          name: locationId
          schema:
            type: string
        - description: Filter by email address
          in: query
          name: email
          schema:
            type: string
        - description: Filter user role
          in: query
          name: role
          schema:
            type: string
        - description: Starting row of page, default 0
          in: query
          name: offset
          schema:
            format: int32
            type: integer
        - description: Page limit default 20, max 100
          in: query
          name: limit
          schema:
            format: int32
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BusinessUserListViewModel"
          description: Success
      summary: List Users
      tags:
        - BusinessUsers
    post:
      description: "<p>Use this endpoint to <b>Create</b> a Business User. If not specified, the business location defaults to the primary business location. </p>\r

        <p>Required fields: <b>Name</b>, <b>Email</b> and <b>Role</b><b>Note:</b> If the businessUser is a bookable resource (bizresource) then a resourceId is required.</p>\r

        <p>For role, use one of the values listed. <b>Business Roles Include: bizowner</b> (Business Owner), <b>bizadmin</b> (Business Administrator), <b>bizresource</b> (Business User - Bookable Resource).</p>\r

        <p>The <b>sendRegistrationInvite</b> parameter is available to API consumers for their own use. It provides no added functionality in OnSched.</p>"
      requestBody:
        content:
          application/*+json:
            schema:
              $ref: "#/components/schemas/BusinessUserInputModel"
          application/json:
            schema:
              $ref: "#/components/schemas/BusinessUserInputModel"
          application/json-patch+json:
            schema:
              $ref: "#/components/schemas/BusinessUserInputModel"
          text/json:
            schema:
              $ref: "#/components/schemas/BusinessUserInputModel"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BusinessUserViewModel"
          description: Success
      summary: Create User
      tags:
        - BusinessUsers
  /setup/v1/businessusers/permissions:
    get:
      description: <p>Use this endpoint to return a <b>List of Business User Permissions by Role</b>. Results are returned in pages. Use the offset and limit parameters to control the page start and number of results. Default offset is 0, limit is 20, max is 100. Use the query parameters to filter the results further.</p>
      parameters:
        - description: Filter permissions by role
          in: query
          name: role
          schema:
            type: string
        - description: Starting row of page, default 0
          in: query
          name: offset
          schema:
            format: int32
            type: integer
        - description: Page limit default 20, max 100
          in: query
          name: limit
          schema:
            format: int32
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BusinessPermissionListViewModel"
          description: Success
      summary: List User Permissions
      tags:
        - BusinessUsers
  "/setup/v1/businessusers/{email}/companies":
    get:
      description: <p>Use this endpoint to return a <b>List of Companies</b> associated with the business users email requested. A business user <b>email</b> address is required. Use the offset and limit parameters to control the page start and number of results. Default offset is 0, limit is 20, max is 100. Use the query parameters to filter the results further.</p>
      parameters:
        - description: Email of business user
          in: path
          name: email
          required: true
          schema:
            type: string
        - description: All or partial company name
          in: query
          name: searchText
          schema:
            type: string
        - description: Starting row of page, default 0
          in: query
          name: offset
          schema:
            format: int32
            type: integer
        - description: Page limit default 20, max 100
          in: query
          name: limit
          schema:
            format: int32
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AuthorizedCompanyListViewModel"
          description: Success
      summary: List User Companies
      tags:
        - BusinessUsers
  "/setup/v1/businessusers/{id}":
    delete:
      description: <p>Use this endpoint to permanently <b>Delete</b> a Business User. A valid <b>businessUser id</b> is required.</p>
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
      summary: Delete User
      tags:
        - BusinessUsers
    get:
      description: <p>Use this endpoint to return a <b>Business User</b> object. A valid <b>businessUser id</b> is required. Find businessUser id's using the <i>GET /setup/v1/businessusers</i> endpoint.</p>
      parameters:
        - description: id of businessUser object
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BusinessUserViewModel"
          description: Success
      summary: Get User
      tags:
        - BusinessUsers
    put:
      description: "<p>Use this endpoint to <b>Update</b> a Business User. A valid <b>businessUser id</b> is required.</p>\r

        <p>\r

        \  <b>Business Roles Include: bizowner</b> (Business Owner), <b>bizadmin</b> (Business Administrator), <b>bizresource</b> (Business User - Bookable Resource).</p>"
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/*+json:
            schema:
              $ref: "#/components/schemas/BusinessUserUpdateModel"
          application/json:
            schema:
              $ref: "#/components/schemas/BusinessUserUpdateModel"
          application/json-patch+json:
            schema:
              $ref: "#/components/schemas/BusinessUserUpdateModel"
          text/json:
            schema:
              $ref: "#/components/schemas/BusinessUserUpdateModel"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BusinessUserViewModel"
          description: Success
      summary: Update User
      tags:
        - BusinessUsers
  /setup/v1/calendars:
    get:
      description: <p>Use this endpoint to return a <b>List of Calendars</b> from the requested location. If not specified, the business location defaults to the primary business location. </p>
      parameters:
        - description: id of business location, defaults to primary business location
          in: query
          name: locationId
          schema:
            type: string
        - description: Filter by deleted status
          in: query
          name: deleted
          schema:
            type: boolean
        - description: Starting row of page, default 0
          in: query
          name: offset
          schema:
            format: int32
            type: integer
        - description: Page limit default 20, max 100
          in: query
          name: limit
          schema:
            format: int32
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ScheduleListViewModel"
          description: Success
      summary: List Calendars
      tags:
        - Calendars
    post:
      description: "<p>\r

        \  <b>DEPRECATING:</b> Create Calendar</p>\r

        <p>We are no longer supporting Multiple Calendar Functionality as it is part of our Legacy Application and has no relevance in the API.</p>"
      requestBody:
        content:
          application/*+json:
            schema:
              $ref: "#/components/schemas/ScheduleInputModel"
          application/json:
            schema:
              $ref: "#/components/schemas/ScheduleInputModel"
          application/json-patch+json:
            schema:
              $ref: "#/components/schemas/ScheduleInputModel"
          text/json:
            schema:
              $ref: "#/components/schemas/ScheduleInputModel"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ScheduleViewModel"
          description: Success
      summary: "DEPRECATING: Create"
      tags:
        - Calendars
  "/setup/v1/calendars/block/{id}":
    delete:
      description: <p>Use this endpoint to permanently <b>Delete</b> a calendar block. A valid <b>calendarBlock id</b> is required.</p>
      parameters:
        - description: id of a calendarBlock object
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CalendarBlockViewModel"
          description: Success
      summary: Delete Calendar Block
      tags:
        - Calendars
    put:
      description: <p>Use this endpoint to <b>Create</b> a Calendar Block. A valid <b>calendarBlock id</b> is required. Refer to the <i>POST ​/setup​/v1​/calendars​/{id}​/block</i> endpoint for fieldnames and details.</p>
      parameters:
        - description: id of calendarBlock object
          in: path
          name: id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/*+json:
            schema:
              $ref: "#/components/schemas/CalendarBlockUpdateModel"
          application/json:
            schema:
              $ref: "#/components/schemas/CalendarBlockUpdateModel"
          application/json-patch+json:
            schema:
              $ref: "#/components/schemas/CalendarBlockUpdateModel"
          text/json:
            schema:
              $ref: "#/components/schemas/CalendarBlockUpdateModel"
        description: Resource Block input model
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CalendarBlockViewModel"
          description: Success
      summary: Update Calendar Block
      tags:
        - Calendars
  "/setup/v1/calendars/blocks/{id}":
    get:
      description: <p>Use this endpoint to return a <b>Calendar Block</b>. A valid <b>calendarBlock id</b> is required. </p>
      parameters:
        - description: id of calendarBlock object
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CalendarBlockViewModel"
          description: Success
      summary: Get Calendar Block
      tags:
        - Calendars
  "/setup/v1/calendars/{id}":
    delete:
      description: <p>Use this endpoint to <b>Delete</b> a calendar object. A valid <b>calendar id</b> is required. The calendar is not permanently deleted and can be recovered by using the <i>PUT ​/setup​/v1​/calendars​/{id}​/recover </i>endpoint.</p>
      parameters:
        - description: id of calendar object
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ScheduleViewModel"
          description: Success
      summary: Delete Calendar
      tags:
        - Calendars
    get:
      description: <p>Use this endpoint to return a <b>Calendar</b> object. A valid <b>calendar id</b> is required.</p>
      parameters:
        - description: id of calendar object
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ScheduleViewModel"
          description: Success
      summary: Get Calendar
      tags:
        - Calendars
    put:
      description: <p>Use this endpoint to <b>Update</b> a calendar object. A valid <b>calendar id</b> is required. When your company was created a calendar object was automatically created with 24-hour weekly availability. Its <b>name = Main</b>, the <b>type = resource</b> and by default the <b>interval = 30 mins</b>. We are currently supporting resource calendar type. Other types were part of our Legacy Application and has no relevance in the API product.</p>
      parameters:
        - description: id of calendar object
          in: path
          name: id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/*+json:
            schema:
              $ref: "#/components/schemas/ScheduleUpdateModel"
          application/json:
            schema:
              $ref: "#/components/schemas/ScheduleUpdateModel"
          application/json-patch+json:
            schema:
              $ref: "#/components/schemas/ScheduleUpdateModel"
          text/json:
            schema:
              $ref: "#/components/schemas/ScheduleUpdateModel"
        description: Input model for the calendar object
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ScheduleViewModel"
          description: Success
      summary: Update Calendar
      tags:
        - Calendars
  "/setup/v1/calendars/{id}/block":
    post:
      description: "<p>Use this endpoint to <b>Create</b> a Calendar Block. A valid <b>calendar id</b> is required.</p>\r

        <p>Required fields: <b>startDate, endDate, startTime, endTime</b> and <b>reason</b>.</p>\r

        <p>Calendar blocks can be set to specific time ranges or for the whole day. Th block a whole day set the startTime to 0 and endTime to 2400.</p>\r

        <p>Calendar blocks can be for a specific date range instance or set to repeat at a specified frequency.</p>\r

        <p>\r

        \  <b>Repeat object: (repeats = true)</b>\r

        </p>\r

        <p>The <b>frequency</b> can be set to a value of <b>D, W or M</b> for <b>Day, Week</b> or <b>Month</b> respectively.</p>\r

        <p>Use the <b>interval</b> property to specify the interval that the block repeats. For example, an interval of 2 for a weekly block means that the block will repeat every 2nd week beginning at the day specified. A daily block with an interval of 10 means the block will repeat every 10 days. The interval property applies to all repeat frequencies. <b>If using the repeat functionality an interval value is required</b>.</p>\r

        <p>\r

        \  <b>DAILY BLOCKS</b>: Will repeat for each day of the week for the date range specified for the interval specified.  An interval value of “1” repeats every day, and an interval value of “3” is every 3rd day.</p>\r

        <p>\r

        \  <b>WEEKLY BLOCKS</b>: Will repeat only on the specified days of the week for the date range specified. For weekly the <b>frequency</b>  is required and should be set to <b>“W”</b>.  You must specify the <b>weekdays</b> parameter. Weekdays are expressed as a string of digits with each single digit in the string representing a day of the week. The possible values are <b>0,1,2,3,4,5,6</b> where <b>0=Sunday, 1=Monday, 2=Tuesday, 3=Wednesday, 4=Thursday, 5=Friday, 6=Saturday</b>. For example, a weekly frequency with an interval of “1”, and an entry of weekdays = “24”, will repeat each week on Tuesday and Thursday for the duration of the block date range.</p>\r

        <p>\r

        \  <b>MONTHLY BLOCKS</b>: Will repeat either on the day of the month specified in the <b>monthDay</b> property or on the day of the week and week of the month specified by the <b>monthType</b> property.  In both cases <b>frequency</b> is required and should be set to <b>“M”</b>, monthly, <b>monthDay</b> is the day of the month you want blocked.  If monthDay=’15’ this means to block the 15th of every month in the date range requested. Using monthDay in conjunction with monthType addresses “day of the week and week of the month” scenario.  There are two possible values for monthType: <b>D for Day of Month</b> or <b>W for Week of Month.</b> For <b>monthType D</b>, monthDay value must be between 1 and 31. It is the day of the month to repeat on. For <b>monthType M</b>, monthDay value contains 2 digits: day of week (0-6), (0,1,2,3,4,5,6 where 0=Sunday, 1=Monday, 2=Tuesday, 3=Wednesday, 4=Thursday, 5=Friday, 6=Saturday) and week of month (1-5). 1 being the first week, 2 being the second. The third Thursday of the month is depicted as a monthType=”M” and monthDay=”43”.</p>\r

        <p>\r

        \  <b>Repeats will end on the date specified by the end date.</b>\r

        </p>"
      parameters:
        - description: id of calendar object
          in: path
          name: id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/*+json:
            schema:
              $ref: "#/components/schemas/CalendarBlockInputModel"
          application/json:
            schema:
              $ref: "#/components/schemas/CalendarBlockInputModel"
          application/json-patch+json:
            schema:
              $ref: "#/components/schemas/CalendarBlockInputModel"
          text/json:
            schema:
              $ref: "#/components/schemas/CalendarBlockInputModel"
        description: ""
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceBlockViewModel"
          description: Success
      summary: Create Calendar Block
      tags:
        - Calendars
  "/setup/v1/calendars/{id}/blocks":
    get:
      description: <p>Use this endpoint to return a <b>List of Calendar Blocks</b> for the requested calendar. A valid <b>calendar id</b> is required. </p>
      parameters:
        - description: id of calendar to list blocks
          in: path
          name: id
          required: true
          schema:
            type: string
        - description: Starting row of page, default 0
          in: query
          name: offset
          schema:
            format: int32
            type: integer
        - description: Page limit default 20, max 100
          in: query
          name: limit
          schema:
            format: int32
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CalendarBlockListViewModel"
          description: Valid response
        "400":
          description: Missing or invalid values in the request
        "401":
          description: Authorization error.
        "404":
          description: Resource was not found
      summary: List Calendar Blocks
      tags:
        - Calendars
  "/setup/v1/calendars/{id}/recover":
    put:
      description: <p>Use this endpoint to <b>Recover</b> a previously deleted calendar object. A valid <b>calendar id</b> is required.</p>
      parameters:
        - description: id of calendar object
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ScheduleViewModel"
          description: Success
      summary: Recover Calendar
      tags:
        - Calendars
  "/setup/v1/calendars/{id}/services":
    get:
      description: <p>Use this endpoint to return a <b>List of Linked Services</b> of a calendar object. A valid <b>calendar id</b> is required. Find calendar id's by using the <i>GET /setup/v1/calendars</i> endpoint.</p>
      parameters:
        - description: id of calendar object
          in: path
          name: id
          required: true
          schema:
            type: string
        - description: Starting row of page, default 0
          in: query
          name: offset
          schema:
            format: int32
            type: integer
        - description: Page limit default 20, max 100
          in: query
          name: limit
          schema:
            format: int32
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceListViewModel"
          description: Success
      summary: List Calendar Services
      tags:
        - Calendars
  /setup/v1/companies:
    get:
      description: "<p>Use this endpoint to return the <b>Authorized Company</b> information. The company is the main entity that oversees all business locations defined below it, hierarchically. </p>\r

        <p>Access to the company credentials gives you access to all business locations defined in the authorized company. Client credentials resolve to a single company and are purposely hidden from this endpoint.</p>"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CompanyViewModel"
          description: Success
      summary: Get Company
      tags:
        - Companies
    post:
      description: "<p>Use this endpoint to <b>Create</b> a new authorized company.</p>\r

        <p>\r

        \  <b>Note: Special API Partner credentials are required to access this endpoint.</b>\r

        </p>\r

        <p>The <b>name, registrationEmail, phone, country</b> and <b>timezoneName</b> are required fields. For <b>country</b> use the standard ISO 3166 2-character country code.</p>\r

        <p>The <b>timezoneName</b> must be expressed as an IANA Timezone e.g., <i>America/New_York</i>.</p>\r

        <p>For more information: <a href=\"https://en.wikipedia.org/wiki/List_of_tz_database_time_zones\">Timezone IANA Wiki</a></p>"
      requestBody:
        content:
          application/*+json:
            schema:
              $ref: "#/components/schemas/CompanyInputModel"
          application/json:
            schema:
              $ref: "#/components/schemas/CompanyInputModel"
          application/json-patch+json:
            schema:
              $ref: "#/components/schemas/CompanyInputModel"
          text/json:
            schema:
              $ref: "#/components/schemas/CompanyInputModel"
        description: Company Input Model
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CompanyViewModel"
          description: Success
      summary: Create Company
      tags:
        - Companies
    put:
      description: "<p>Use this endpoint to <b>Update</b> the authorized company information. Your client credentials resolve to a single company. The timezoneName must be expressed as an IANA Timezone, e.g., <i>America/New_York</i>. </p>\r

        <p>For more information: <a href=\"https://en.wikipedia.org/wiki/List_of_tz_database_time_zones\">Timezone IANA Wiki</a></p>"
      requestBody:
        content:
          application/*+json:
            schema:
              $ref: "#/components/schemas/CompanyUpdateModel"
          application/json:
            schema:
              $ref: "#/components/schemas/CompanyUpdateModel"
          application/json-patch+json:
            schema:
              $ref: "#/components/schemas/CompanyUpdateModel"
          text/json:
            schema:
              $ref: "#/components/schemas/CompanyUpdateModel"
        description: Company Update Model
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CompanyViewModel"
          description: Success
      summary: Update Company
      tags:
        - Companies
  /setup/v1/companies/domains:
    get:
      description: <p>Use this endpoint to return a <b>List of Company Domains</b> for the authorized company. To share the OnSchedJS booking widget on your website or in your application your domain must be listed.</p>
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CompanyDomainListViewModel"
          description: Success
      summary: List Company Domains
      tags:
        - Companies
    post:
      description: <p>Use this endpoint to <b>Create</b> an OnSchedJs domain for your authorized company. To share the OnSchedJS booking widget on your website or in your application you must add the domain.</p>
      requestBody:
        content:
          application/*+json:
            schema:
              $ref: "#/components/schemas/CompanyDomainInputModel"
          application/json:
            schema:
              $ref: "#/components/schemas/CompanyDomainInputModel"
          application/json-patch+json:
            schema:
              $ref: "#/components/schemas/CompanyDomainInputModel"
          text/json:
            schema:
              $ref: "#/components/schemas/CompanyDomainInputModel"
        description: Company Domain Input Model
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CompanyDomainViewModel"
          description: Success
      summary: Create Company Domain
      tags:
        - Companies
  "/setup/v1/companies/domains/{id}":
    delete:
      description: <p>Use this endpoint to <b>Delete</b> an OnSchedJs domain from your authorized company. A valid <b>companyDomain id</b> is required.</p>
      parameters:
        - description: id of companyDomain object
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CompanyDomainViewModel"
          description: Success
      summary: Delete Company Domain
      tags:
        - Companies
    get:
      description: <p>Use this endpoint to return a <b>Company Domain</b> object. A valid <b>companyDomain id</b> is required. </p>
      parameters:
        - description: id of companyDomain object
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CompanyDomainViewModel"
          description: Success
      summary: Get Company Domain
      tags:
        - Companies
    put:
      description: <p>Use this endpoint to <b>Update</b> an OnSchedJs domain for your authorized company. A valid <b>companyDomain id</b> is required.</p>
      parameters:
        - description: id of companyDomain object
          in: path
          name: id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/*+json:
            schema:
              $ref: "#/components/schemas/CompanyDomainUpdateModel"
          application/json:
            schema:
              $ref: "#/components/schemas/CompanyDomainUpdateModel"
          application/json-patch+json:
            schema:
              $ref: "#/components/schemas/CompanyDomainUpdateModel"
          text/json:
            schema:
              $ref: "#/components/schemas/CompanyDomainUpdateModel"
        description: Company Domain Update Model
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CompanyDomainViewModel"
          description: Success
      summary: Update Company Domain
      tags:
        - Companies
  /setup/v1/companies/email/templates:
    get:
      description: <p>Use this endpoint to return a <b>List of Email Templates</b> that are provided and may be customized. If the template has been customized, the customized property is true. The scope parameter indicates if the email template has been customized at the Business Location level or Company level. This endpoint returns <b>only company level templates</b>, so the scope is always company.</p>
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EmailTemplateListViewModel"
          description: Success
      summary: List Email Templates
      tags:
        - Companies
  /setup/v1/companies/email/templates/master:
    delete:
      description: <p>Use this endpoint to <b>Delete Custom Master Email Template Settings</b>. Deleting a custom master email template setting will reactivate the original default OnSched template settings.</p>
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MasterEmailTemplateSettingsViewModel"
          description: Success
      summary: Delete Master Template Settings
      tags:
        - Companies
    get:
      description: <p>Use this endpoint to return the <b>Master Email Template Settings</b>. Settings exist for showing or hiding email panels and for changing color schemes. </p>
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MasterEmailTemplateSettingsViewModel"
          description: Success
      summary: Get Master Template Settings
      tags:
        - Companies
    post:
      description: "<p>Use this endpoint to <b>Create Custom Master Email Template Settings</b>. Settings exist for showing or hiding email panels and for changing color schemes. Use the <i>GET ​/setup​/v1​/companies​/email​/templates</i> endpoint to display the settings offered. Changes to the Master Template Settings will be reflected in all business locations associated with this company. </p>\r

        <p>The email template endpoints work a little differently than most. There are no endpoints to update the templates, we use the post endpoint to create a custom template instead. This endpoint creates a new custom Master Template Settings file that will be used instead. If you delete it you are deleting the custom template settings you created and the original default Master Template created by OnSched would be reactivated.</p>"
      requestBody:
        content:
          application/*+json:
            schema:
              $ref: "#/components/schemas/MasterTemplateSettingsInputModel"
          application/json:
            schema:
              $ref: "#/components/schemas/MasterTemplateSettingsInputModel"
          application/json-patch+json:
            schema:
              $ref: "#/components/schemas/MasterTemplateSettingsInputModel"
          text/json:
            schema:
              $ref: "#/components/schemas/MasterTemplateSettingsInputModel"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MasterEmailTemplateSettingsViewModel"
          description: Success
      summary: Create Master Template Settings
      tags:
        - Companies
  "/setup/v1/companies/email/templates/{templateName}":
    get:
      description: "<p>Use this endpoint to return the requested <b>Email Template</b>. If it wasn't customized the default template is returned. The response content is in html format. A valid emailTemplate <b>name</b> is required. Find template names by using the: <i>GET ​/setup​/v1​/companies​/email​/templates</i> endpoint. Note: The master template cannot be accessed here. </p>\r

        <p>To create custom company email templates, go to the <i>POST ​/setup​/v1​/locations​/{id}​/email​/templates</i> endpoint and create a template using the Primary Business Location Id.</p>"
      parameters:
        - description: Email template name
          in: path
          name: templateName
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ContentResult"
          description: Success
      summary: Get Email Template
      tags:
        - Companies
  /setup/v1/companies/regions:
    get:
      description: <p>Use this endpoint to return a list of <b>Regions</b> in the authorized company. The results are returned in pages. Use the offset and limit parameters to control the page start and number of results. Default offset is 0, limit is 20, max is 100. Use the query parameters to filter the results further. </p>
      parameters:
        - description: Starting row of page, default 0
          in: query
          name: offset
          schema:
            format: int32
            type: integer
        - description: Page limit default 20, max 100
          in: query
          name: limit
          schema:
            format: int32
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RegionListViewModel"
          description: region object's
        "400":
          description: Missing or invalid values in the request
        "401":
          description: Authorization error.
        "404":
          description: Resource was not found
      summary: List Regions
      tags:
        - Companies
    post:
      description: <p>Use this endpoint to <b>Create</b> a region object. Regions can be mapped to business locations. They can be used by the locations endpoints to filter locations by region id.</p>
      requestBody:
        content:
          application/*+json:
            schema:
              $ref: "#/components/schemas/RegionInputModel"
          application/json:
            schema:
              $ref: "#/components/schemas/RegionInputModel"
          application/json-patch+json:
            schema:
              $ref: "#/components/schemas/RegionInputModel"
          text/json:
            schema:
              $ref: "#/components/schemas/RegionInputModel"
        description: ""
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RegionViewModel"
          description: Success
      summary: Create Region
      tags:
        - Companies
  "/setup/v1/companies/regions/{id}":
    delete:
      description: <p>Use this endpoint to <b>Delete</b> a region object. A valid <b>region id</b> is required. If the region is related to any business locations it won't be deleted. You must first remove any references to region id from the business locations prior to deleting.</p>
      parameters:
        - description: id of Region
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RegionViewModel"
          description: Success
      summary: Delete Region
      tags:
        - Companies
    get:
      description: <p>Use this endpoint to return a <b>Region</b> object. A valid <b>region id</b> is required.</p>
      parameters:
        - description: id of a region object
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RegionViewModel"
          description: Success
      summary: Get Region
      tags:
        - Companies
    put:
      description: <p>Use this endpoint to <b>Update</b> a region object. A valid <b>region id</b> is required.</p>
      parameters:
        - description: id of Region
          in: path
          name: id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/*+json:
            schema:
              $ref: "#/components/schemas/RegionUpdateModel"
          application/json:
            schema:
              $ref: "#/components/schemas/RegionUpdateModel"
          application/json-patch+json:
            schema:
              $ref: "#/components/schemas/RegionUpdateModel"
          text/json:
            schema:
              $ref: "#/components/schemas/RegionUpdateModel"
        description: Region Update Model
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RegionViewModel"
          description: Success
      summary: Update Region
      tags:
        - Companies
  "/setup/v1/companies/timezones/{date}":
    get:
      description: <p>Use this endpoint to return a <b>List of timezone names, timezoneIana and tzOffset values</b> calculated for the date requested. Daylight Savings may or may not apply depending on the date specified.</p>
      parameters:
        - description: '"YYYY-MM-DD: Date for timezone info"'
          in: path
          name: date
          required: true
          schema:
            format: date-time
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TimezoneViewModel"
          description: Success
      summary: List Time Zones
      tags:
        - Companies
  /setup/v1/customers:
    get:
      description: <p>Use this endpoint to return a <b>List of Customers</b>. The results are returned in pages. Use the offset and limit parameters to control the page start and number of results. Default offset is 0, limit is 20, max is 100. Use the query parameters to filter the results further.</p>
      parameters:
        - description: id of business location, defaults to primary business location
          in: query
          name: locationId
          schema:
            type: string
        - description: Filter by groupId
          in: query
          name: groupId
          schema:
            type: string
        - description: Filter by email address.
          in: query
          name: email
          schema:
            type: string
        - description: Search by lastname.
          in: query
          name: lastname
          schema:
            type: string
        - description: Filter by deleted status.
          in: query
          name: deleted
          schema:
            type: boolean
        - description: Starting row of page, default 0
          in: query
          name: offset
          schema:
            format: int32
            type: integer
        - description: Page limit default 20, max 100
          in: query
          name: limit
          schema:
            format: int32
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CustomerListViewModel"
          description: Success
      summary: List Customers
      tags:
        - Customers
  "/setup/v1/customers/{id}":
    get:
      description: <p>Use this endpoint to return a <b>Customer</b> object. A valid <b>customer id</b> is required. Find customer id's by using the <i>GET /setup/v1/customers</i> endpoint.</p>
      parameters:
        - description: id of customer object
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CustomerViewModel"
          description: Success
      summary: Get Customer
      tags:
        - Customers
  "/setup/v1/customers/{id}/privacy":
    get:
      description: <p>Use this endpoint to return the <b>Customer</b> object. A valid <b>customer id</b> is required. Find customer id's using the <i>GET /setup/v1/customers</i> endpoint.</p>
      parameters:
        - description: id of customer object
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CustomerPrivacyViewModel"
          description: Success
      summary: Get Customer Data
      tags:
        - Customers
  /setup/v1/locations:
    get:
      description: "<p>Use this endpoint to <b>List Business Locations</b> associated with your company. The results are returned in pages. Use the offset and limit parameters to control the page start and number of results. Default offset is 0, limit is 20, max is 100. Use the query parameters to filter the results further.</p>\r

        <p>\r

        \  <b>IMPORTANT DEPRECATION NOTICE</b>: The following online settings parameters were intended for internal use in our Portal application only. They will be deprecated on <b>OCTOBER 15, 2022</b>. These fields are currently part of the <b>SETTINGS</b> object in all location endpoints: <b>businessId, enabled, familyMembersEnabled, serviceLabel, resourceLabel, resourceAnyLabel, resourceSelection, liveMode, formFlow, availabilityForm, showServiceGroups, showOnSchedLogo, showBusinessLogo, disableAuthorization, hideNavBar, hideLocationNav, hideServiceGroupsNav, hideServicesNav, hideContinueBooking, returnToService, returnToAvailability, hideBreadCrumbNav.</b> If you are using these fields, please adjust your code to handle the deprecation or let us know by submitting a ticket to: <b><i>support@onsched.com</i></b> as we do not want to interrupt your existing workflows.</p>"
      parameters:
        - description: Location name(full or partial) to filter on
          in: query
          name: name
          schema:
            type: string
        - description: Find locations that offer this service
          in: query
          name: serviceId
          schema:
            type: string
        - description: friendlyId of location
          in: query
          name: friendlyId
          schema:
            type: string
        - description: Filter locations on deleted status
          in: query
          name: deleted
          schema:
            type: boolean
        - description: Starting row of page, default 0
          in: query
          name: offset
          schema:
            format: int32
            type: integer
        - description: Page limit default 20, max 100
          in: query
          name: limit
          schema:
            format: int32
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LocationListViewModel"
          description: Success
      summary: List Locations
      tags:
        - Locations
    post:
      description: "<p>Use this endpoint to <b>Create</b> a new business location. The result is a business location object with a GUID assigned to the location.</p>\r

        <p>The <b>name</b> and <b>timezoneName</b> fields are required. The <b>timezoneName</b> must be expressed as an IANA Timezone e.g., <i>America/New_York</i>. Refer to: <a href=\"https://en.wikipedia.org/wiki/List_of_tz_database_time_zones\">Timezone Wiki</a> for a listing of IANA time zones.</p>\r

        <p>\r

        \  <b>Business hours</b> are set by defining the <b>startTime</b> and <b>endTime</b> values for each day available/open. All days of the week must be provided when setting availability. Days are defined as <b>sun, mon, tue, wed, thu, fri and sat</b>. Start and End Times are entered in <b>military format. e.g., 800 is 8:00am, 2230 is 10:30pm</b>. If there is no physical location and the business hours are irrelevant, set the hours to open 24 hours by setting startTime=0 and endTime=2400. To set a whole day as unavailable, set both the startTime and endTime to 0. </p>\r

        <p>\r

        \  <b>Settings</b> can be set here. Booking timer minutes, book ahead restrictions and customer bookings per day are all available here. Please read about the settings scope parameter before setting these values as it may simplify your process.</p>\r

        <p>\r

        \  <b>Settings Scope</b> can be set to the company or the business location level. You can have all locations use the same company level settings or individual business locations can define their own, business location scope. If you want to use the company settings throughout all locations, do not pass in <b>settings element</b>. To create business location scoped settings, pass in the <b>settings element</b> with the field values defined in the post body. </p>\r

        <p>\r

        \  <b>Appointment Reminders</b> Reminder values are used to define how many hours, days, or weeks (interval value) prior to the appointment to send the reminder. <b>Interval</b> values are used to define the reminder interval: <b>1 = Hours</b>, <b>2 = Days</b> and <b>3 = Weeks</b>. The reminder fields are numbers. If you are using the hours interval, use a number from 1 to 24.</p>\r

        <p>Example 1: <b>emailFirstReminder:  1, emailFirstReminderInterval:  2</b> - results in 1st reminder being sent <b>1 Day before</b> the appointment time.</p>\r

        <p>Example 2: <b>emailSecondReminder: 3, emailSecondReminderInterval: 1</b> - results in 2nd reminder being sent <b>3 Hours before</b> the appointment time.</p>\r

        <p>\r

        \  <b>IMPORTANT DEPRECATION NOTICE</b>: The following online settings parameters were intended for internal use in our Portal application only. They will be deprecated on <b>OCTOBER 15, 2022</b>. These fields are currently part of the <b>SETTINGS</b> object in all location endpoints: <b>businessId, enabled, familyMembersEnabled, serviceLabel, resourceLabel, resourceAnyLabel, resourceSelection, liveMode, formFlow, availabilityForm, showServiceGroups, showOnSchedLogo, showBusinessLogo, disableAuthorization, hideNavBar, hideLocationNav, hideServiceGroupsNav, hideServicesNav, hideContinueBooking, returnToService, returnToAvailability, hideBreadCrumbNav.</b> If you are using these fields, please adjust your code to handle the deprecation or let us know by submitting a ticket to: <b><i>support@onsched.com</i></b> as we do not want to interrupt your existing workflows.</p>"
      requestBody:
        content:
          application/*+json:
            schema:
              $ref: "#/components/schemas/LocationInputModel"
          application/json:
            schema:
              $ref: "#/components/schemas/LocationInputModel"
          application/json-patch+json:
            schema:
              $ref: "#/components/schemas/LocationInputModel"
          text/json:
            schema:
              $ref: "#/components/schemas/LocationInputModel"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LocationViewModel"
          description: Success
      summary: Create Location
      tags:
        - Locations
  /setup/v1/locations/bulk:
    post:
      description: "<p>Use this endpoint to <b>Create Bulk</b> business locations. The posted list of locations cannot exceed 100 location objects per transaction for performance purposes. The result is a list of new business location objects with a GUID assigned to each location.</p>\r

        <p>The <b>name</b> and <b>timezoneName</b> fields are required. The <b>timezoneName</b> must be expressed as an IANA Timezone e.g., <i>America/New_York</i>. Refer to: <a href=\"https://en.wikipedia.org/wiki/List_of_tz_database_time_zones\">Timezone Wiki</a> for a listing of IANA time zones.</p>\r

        <p>\r

        \  <b>Business hours</b> are set by defining the <b>startTime</b> and <b>endTime</b> values for each day available/open. All days of the week must be provided when setting availability. Days are defined as <b>sun, mon, tue, wed, thu, fri and sat</b>. Start and End Times are entered in <b>military format. e.g., 800 is 8:00am, 2230 is 10:30pm</b>. If there is no physical location and the business hours are irrelevant, set the hours to open 24 hours by setting startTime=0 and endTime=2400. To set a whole day as unavailable, set both the startTime and endTime to 0. </p>\r

        <p>\r

        \  <b>Settings</b> can be set here. Booking timer minutes, book ahead restrictions and customer bookings per day are all available here. Please read about the settings scope parameter before setting these values as it may simplify your process.</p>\r

        <p>\r

        \  <b>Settings Scope</b> can be set to the company or the business location level. You can have all locations use the same company level settings or individual business locations can define their own, business location scope. If you want to use the company settings throughout all locations, do not pass in <b>settings element</b>. To create business location scoped settings, pass in the <b>settings element</b> with the field values defined in the post body. </p>\r

        <p>\r

        \  <b>Appointment Reminders</b> Reminder values are used to define how many hours, days, or weeks (interval value) prior to the appointment to send the reminder. <b>Interval</b> values are used to define the reminder interval: <b>1 = Hours</b>, <b>2 = Days</b> and <b>3 = Weeks</b>. The reminder fields are numbers. If you are using the hours interval, use a number from 1 to 24.</p>\r

        <p>Example 1: <b>emailFirstReminder:  1, emailFirstReminderInterval:  2</b> - results in 1st reminder being sent <b>1 Day before</b> the appointment time.</p>\r

        <p>Example 2: <b>emailSecondReminder: 3, emailSecondReminderInterval: 1</b> - results in 2nd reminder being sent <b>3 Hours before</b> the appointment time.</p>\r

        <p>\r

        \  <b>IMPORTANT DEPRECATION NOTICE</b>: The following online settings parameters were intended for internal use in our Portal application only. They will be deprecated on <b>OCTOBER 15, 2022</b>. These fields are currently part of the <b>SETTINGS</b> object in all location endpoints: <b>businessId, enabled, familyMembersEnabled, serviceLabel, resourceLabel, resourceAnyLabel, resourceSelection, liveMode, formFlow, availabilityForm, showServiceGroups, showOnSchedLogo, showBusinessLogo, disableAuthorization, hideNavBar, hideLocationNav, hideServiceGroupsNav, hideServicesNav, hideContinueBooking, returnToService, returnToAvailability, hideBreadCrumbNav.</b> If you are using these fields, please adjust your code to handle the deprecation or let us know by submitting a ticket to: <b><i>support@onsched.com</i></b> as we do not want to interrupt your existing workflows.</p>"
      requestBody:
        content:
          application/*+json:
            schema:
              $ref: "#/components/schemas/LocationsInputModel"
          application/json:
            schema:
              $ref: "#/components/schemas/LocationsInputModel"
          application/json-patch+json:
            schema:
              $ref: "#/components/schemas/LocationsInputModel"
          text/json:
            schema:
              $ref: "#/components/schemas/LocationsInputModel"
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: "#/components/schemas/LocationViewModel"
                type: array
          description: Success
      summary: Create Locations Bulk
      tags:
        - Locations
  "/setup/v1/locations/services/{id}":
    delete:
      description: <p>Use this endpoint to <b>Unlink</b> a location service from a business location. A valid <b>locationService id</b> is required. Find location services by using the <i>GET ​/setup​/v1​/locations​/{id}​/services</i> endpoint. </p>
      parameters:
        - description: id of locationService object
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LocationViewModel"
          description: Success
      summary: Unlink Service
      tags:
        - Locations
    get:
      description: <p>Use this endpoint to <b>Get a Linked Service</b>. A valid <b>locationService id</b> is required.</p>
      parameters:
        - description: id of locationService object
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BusinessServiceViewModel"
          description: location service objects
        "400":
          description: Missing or invalid values in the request
        "401":
          description: Authorization error.
        "404":
          description: Location was not found
      summary: Get Linked Service
      tags:
        - Locations
  "/setup/v1/locations/{id}":
    delete:
      description: <p>Use this endpoint to <b>Delete</b> a business location. A valid business <b>location id</b> is required. The location is not permanently deleted and can be recovered by using the <i>PUT /setup​/v1​/locations​/{id}​/recover</i> endpoint.</p>
      parameters:
        - description: id of business location, defaults to primary business location
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LocationViewModel"
          description: Success
      summary: Delete Location
      tags:
        - Locations
    get:
      description: "<p>Use this endpoint to return a <b>Location</b> object. A valid <b>location id</b> is required. If not specified, the business location defaults to the primary business location. Find all business location id's, by using the <i>GET /consumer/v1/locations</i> endpoint.</p>\r

        <p>\r

        \  <b>IMPORTANT DEPRECATION NOTICE</b>: The following online settings parameters were intended for internal use in our Portal application only. They will be deprecated on <b>OCTOBER 15, 2022</b>. These fields are currently part of the <b>SETTINGS</b> object in all location endpoints: <b>businessId, enabled, familyMembersEnabled, serviceLabel, resourceLabel, resourceAnyLabel, resourceSelection, liveMode, formFlow, availabilityForm, showServiceGroups, showOnSchedLogo, showBusinessLogo, disableAuthorization, hideNavBar, hideLocationNav, hideServiceGroupsNav, hideServicesNav, hideContinueBooking, returnToService, returnToAvailability, hideBreadCrumbNav.</b> If you are using these fields, please adjust your code to handle the deprecation or let us know by submitting a ticket to: <b><i>support@onsched.com</i></b> as we do not want to interrupt your existing workflows.</p>"
      parameters:
        - description: id of business location, defaults to primary business location
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LocationViewModel"
          description: Success
      summary: Get Location
      tags:
        - Locations
    put:
      description: "<p>Use this endpoint to <b>Update</b> a business location object. A valid business <b>location id</b> is required. The optional removeRegion query parameter can be used to remove the region relationship from the location.</p>\r

        <p>If the settings element is populated the scope will be set to the business location with the settings supplied. If your settings are uniform across all locations, then do not supply the settings element and the location will use the settings defined on the primary business location (company scoped). Company scoped settings cascade down to the locations. You can override any location that needs different settings by providing settings in the update model. Use the <i>PUT /setup/v1/locations/{id}/settings/scope/{settingsScope}</i> endpoint to change the settings scope only. This is typically used when switching from business location scope back to company.</p>\r

        <p>Refer to: <i><b>POST ​/setup​/v1​/locations</b></i> endpoint for details.</p>"
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
        - in: query
          name: removeRegion
          schema:
            type: boolean
      requestBody:
        content:
          application/*+json:
            schema:
              $ref: "#/components/schemas/LocationUpdateModel"
          application/json:
            schema:
              $ref: "#/components/schemas/LocationUpdateModel"
          application/json-patch+json:
            schema:
              $ref: "#/components/schemas/LocationUpdateModel"
          text/json:
            schema:
              $ref: "#/components/schemas/LocationUpdateModel"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LocationViewModel"
          description: Success
      summary: Update Location
      tags:
        - Locations
  "/setup/v1/locations/{id}/appointmentreminders":
    get:
      description: <p>Use this endpoint to <b>Get Email and SMS appointment reminder settings</b> for the requested location. A valid business <b>location id</b> is required. </p>
      parameters:
        - description: id of business location, defaults to primary business location
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AppointmentReminderViewModel"
          description: Success
      summary: Get Reminders
      tags:
        - Locations
    put:
      description: "<p>Use this endpoint to <b>Update</b> Email and SMS appointment reminder settings for the requested location. A valid business <b>location id</b> is required. </p>\r

        <p>\r

        \  <b>Appointment Reminders</b> Reminder values are used to define how many hours, days, or weeks (interval value) prior to the appointment to send the reminder. <b>Interval</b> values are used to define the reminder interval: <b>1 = Hours</b>, <b>2 = Days</b> and <b>3 = Weeks</b>. The reminder fields are numbers. If you are using the hours interval, use a number from 1 to 24.</p>\r

        <p>Example 1: <b>emailFirstReminder:  1, emailFirstReminderInterval:  2</b> - results in 1st reminder being sent <b>1 Day before</b> the appointment time.</p>\r

        <p>Example 2: <b>emailSecondReminder: 3, emailSecondReminderInterval: 1</b> - results in 2nd reminder being sent <b>3 Hours before</b> the appointment time.</p>"
      parameters:
        - description: id of business location, defaults to primary business location
          in: path
          name: id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/*+json:
            schema:
              $ref: "#/components/schemas/AppointmentRemindersInputModel"
          application/json:
            schema:
              $ref: "#/components/schemas/AppointmentRemindersInputModel"
          application/json-patch+json:
            schema:
              $ref: "#/components/schemas/AppointmentRemindersInputModel"
          text/json:
            schema:
              $ref: "#/components/schemas/AppointmentRemindersInputModel"
        description: input model for reminders
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LocationViewModel"
          description: Success
      summary: Update Reminders
      tags:
        - Locations
  "/setup/v1/locations/{id}/deleteallimages":
    delete:
      description: <p>Use this endpoint to <b>Delete All</b> location images from the location blob storage container. An option exists to use upper case for matching the subdirectory name. Legacy apps stored pics using upper case while the API uses lower case names.</p>
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
        - in: query
          name: uppercase
          schema:
            type: boolean
      responses:
        "200":
          content:
            application/json:
              schema:
                type: boolean
          description: Success
      summary: Delete All Location Images
      tags:
        - Locations
  "/setup/v1/locations/{id}/deleteimage":
    delete:
      description: <p>Use this endpoint to <b>Delete</b> a previously uploaded location image. A valid business <b>location id</b> is required.</p>
      parameters:
        - description: id of business location, defaults to primary business location
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LocationViewModel"
          description: Success
      summary: Delete Location Image
      tags:
        - Locations
  "/setup/v1/locations/{id}/email/templates":
    get:
      description: <p>Use this endpoint to return a <b>List of Email Templates</b> that are provided and may be customized. If the template has been customized, the customized property is true. The scope parameter indicates if the email template has been customized. This endpoint returns <b>only company level templates</b>, so the scope is always company.</p>
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EmailTemplateListViewModel"
          description: Success
      summary: List Email Templates
      tags:
        - Locations
    post:
      description: "<p>Use this endpoint to a <b>Create</b> a Custom Email Template. You must convert the content to a base64 encoded string. Updates to the primary business location create company scoped custom templates. Updates to non-primary business locations create business location scoped custom templates. The master template cannot be updated with this endpoint.</p>\r

        <p>The email template endpoints work a little differently than most. There are no endpoints to update the templates, we use the post endpoint to create a custom template instead. This endpoint creates a new email template that will be used instead. If you delete it, you are deleting the custom template you created and the original default template created by OnSched will be reactivated.</p>"
      parameters:
        - description: id of business location, defaults to primary business location
          in: path
          name: id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/*+json:
            schema:
              $ref: "#/components/schemas/EmailTemplateInputModel"
          application/json:
            schema:
              $ref: "#/components/schemas/EmailTemplateInputModel"
          application/json-patch+json:
            schema:
              $ref: "#/components/schemas/EmailTemplateInputModel"
          text/json:
            schema:
              $ref: "#/components/schemas/EmailTemplateInputModel"
        description: Input model for email template
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ContentResult"
          description: Success
      summary: Create Custom Template
      tags:
        - Locations
  "/setup/v1/locations/{id}/email/templates/master":
    delete:
      description: <p>Use this endpoint to <b>Delete Custom Master Email Template Settings</b>. A valid business <b>location id</b> is required. Deleting a custom master email template will reactivate the original default OnSched template settings.</p>
      parameters:
        - description: id of business location, defaults to primary business location
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MasterEmailTemplateSettingsViewModel"
          description: Success
      summary: Delete Master Template Settings
      tags:
        - Locations
    get:
      description: <p>Use this endpoint to get <b>Master Email Template Settings</b>. A valid business <b>location id</b> is required. Settings exist for showing or hiding panels and for changing color schemes. </p>
      parameters:
        - description: id of business location, defaults to primary business location
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MasterEmailTemplateSettingsViewModel"
          description: Success
      summary: Get Master Template Settings
      tags:
        - Locations
    post:
      description: "<p>Use this endpoint to <b>Create Custom Master Email Template Settings</b>. A valid business <b>location id</b> is required. Settings exist for showing or hiding email panels and for changing color schemes. Use the <i>GET ​/setup​/v1​/locations​/{id}​/email​/templates​/masterSettings</i> endpoint to display the settings offered. Changes to the Master Template Settings will be reflected in all business locations associated with this company. </p>\r

        <p>The email template endpoints work a little differently than most. There are no endpoints to update the templates, we use the post endpoint to create a custom template instead. This endpoint creates a new custom Master Template Settings file that will be used instead. If you delete it, you are deleting the custom template settings you created and the original default Master Template created by OnSched would be reactivated.</p>"
      parameters:
        - description: id of business location, defaults to primary business location
          in: path
          name: id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/*+json:
            schema:
              $ref: "#/components/schemas/MasterTemplateSettingsInputModel"
          application/json:
            schema:
              $ref: "#/components/schemas/MasterTemplateSettingsInputModel"
          application/json-patch+json:
            schema:
              $ref: "#/components/schemas/MasterTemplateSettingsInputModel"
          text/json:
            schema:
              $ref: "#/components/schemas/MasterTemplateSettingsInputModel"
        description: Input model for master email template settings
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MasterEmailTemplateSettingsViewModel"
          description: Success
      summary: Create Master Template Settings
      tags:
        - Locations
  "/setup/v1/locations/{id}/email/templates/{templateName}":
    delete:
      description: "<p>Use this endpoint to <b>Delete</b> a Custom Email Template that was previously created. A valid business <b>location id</b> and email <b>templateName</b> are required. Deleting a custom email template will revert the template back to its default originally created by OnSched. Changes will be reflected in all business locations associated with this company.</p>\r

        <p>The email template endpoints work a little differently than most. When you delete you are deleting the custom template you created, and the original default Email Template created by OnSched will be reactivated.</p>"
      parameters:
        - description: id of business location, defaults to primary business location
          in: path
          name: id
          required: true
          schema:
            type: string
        - description: Name of the email template
          in: path
          name: templateName
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ContentResult"
          description: Success
      summary: Delete Custom Template
      tags:
        - Locations
    get:
      description: "<p>Use this endpoint to return the requested <b>Email Template</b>. The template is from the primary business location. If it wasn't customized the default template is returned. The response content is in html format. A valid <b>emailTemplate name</b> is required. Find template names by using the <i>GET ​/setup​/v1​/locations​/{id}​/email​/templates</i> endpoint. Note: The master template cannot be accessed here. </p>"
      parameters:
        - description: id of business location
          in: path
          name: id
          required: true
          schema:
            type: string
        - description: name of the email template
          in: path
          name: templateName
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ContentResult"
          description: Success
      summary: Get Email Template
      tags:
        - Locations
  "/setup/v1/locations/{id}/google/service/account":
    delete:
      description: <p>Use this endpoint to <b>Delete</b> authorized access to all google calendar users in your organization. Upon deletion Google Calendars will no longer be synced for resources.</p>
      parameters:
        - description: id of business location, defaults to primary business location
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
      summary: Delete Google Cal Access
      tags:
        - Locations
    post:
      description: <p>Use this endpoint to <b>Authorize Access</b> to google calendar users in your organization. You must create/have a Google Service account as an admin of your GSuite, then save the credentials as a Json Key file. This <b>Json Key</b> and a valid business <b>location id</b> are required. </p>
      parameters:
        - description: id of business location, defaults to primary business location
          in: path
          name: id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/*+json:
            schema:
              $ref: "#/components/schemas/GoogleServiceAccountCreds"
          application/json:
            schema:
              $ref: "#/components/schemas/GoogleServiceAccountCreds"
          application/json-patch+json:
            schema:
              $ref: "#/components/schemas/GoogleServiceAccountCreds"
          text/json:
            schema:
              $ref: "#/components/schemas/GoogleServiceAccountCreds"
        description: Generated Json Key file from Google
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GoogleServiceAccountCreds"
          description: Success
      summary: Create Google Cal Access
      tags:
        - Locations
  "/setup/v1/locations/{id}/holidays/{holidayId}/{closed}":
    put:
      description: "<p>Use this endpoint to <b>Update</b> Business Holidays as Opened or Closed. A valid business <b>location id</b> is required. If not specified, the business location defaults to the primary business location.</p>\r

        <p>Holidays are automatically defined with the initial Post Location endpoint and are based on country code. Find your location holiday codes by using the: <i>GET /setup​/v1​/locations​/{id}</i> endpoint. Change your holidays to open or closed by passing in the <b>holidayId</b> along with the <b>closed</b> boolean value to change the status of a specific holiday. Pass in an <b>asterisk *</b> for the holidayId then all business holidays will be set as defined.</p>"
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
        - in: path
          name: holidayId
          required: true
          schema:
            type: string
        - in: path
          name: closed
          required: true
          schema:
            type: boolean
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LocationViewModel"
          description: Success
      summary: Update Location Holidays
      tags:
        - Locations
  "/setup/v1/locations/{id}/recover":
    put:
      description: <p>Use this endpoint to <b>Recover</b> a deleted business location. A valid business <b>location id</b> is required.</p>
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LocationViewModel"
          description: Success
      summary: Recover Location
      tags:
        - Locations
  "/setup/v1/locations/{id}/services":
    delete:
      description: <p>Use this endpoint to <b>Delete All</b> location linked services from a business location. A valid business <b>location id</b> is required. </p>
      parameters:
        - description: id of business location, defaults to primary business location
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LocationViewModel"
          description: Success
      summary: Delete Linked Services
      tags:
        - Locations
    get:
      description: "<p>Use this endpoint to return a list of <b>Location Linked Services</b>. A valid business <b>location id</b> is required. By default, there are no location linked services attached to a location. Refer to the: <i>POST /setup​/v1​/locations​/{id}​/services</i> for details. The results are returned in pages. Use the offset and limit parameters to control the page start and number of results. Default offset is 0, limit is 20, max is 100. Use the query parameters to filter the results further.</p>"
      parameters:
        - description: id of business location, defaults to primary business location
          in: path
          name: id
          required: true
          schema:
            type: string
        - description: Starting row of page, default 0
          in: query
          name: offset
          schema:
            format: int32
            type: integer
        - description: Page limit default 20, max 100
          in: query
          name: limit
          schema:
            format: int32
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BusinessServiceListViewModel"
          description: location service objects
        "400":
          description: Missing or invalid values in the request
        "401":
          description: Authorization error
        "404":
          description: Location was not found
      summary: List Location Linked Services
      tags:
        - Locations
    post:
      description: "<p>Use this endpoint to <b>Link Services</b> to a location object. A valid business <b>location id</b> is required. By default, there are <i>no services linked</i> to a location. </p>\r

        <p>Services are definable globally at the Company level and associated with the Primary Business Location, or at a Secondary Business Location. When accessing the Services endpoints, by default, API consumers are provided with a <b>combined</b> list of Services defined from both the Primary and Secondary Business Location.</p>\r

        <p>If necessary, the list of Service(s) provided can be cherry-picked/linked to <b>only include specific Service(s)</b> by using this endpoint. This allows for a subset of defined Services to be provided for a location.</p>\r

        <p>Supplying the list of services ids to cherry-pick/link to the location in the request body will explicitly define which Primary Location Services are offered by the specified business location.</p>"
      parameters:
        - description: id of business location, defaults to primary business location
          in: path
          name: id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/*+json:
            schema:
              items:
                type: string
              type: array
          application/json:
            schema:
              items:
                type: string
              type: array
          application/json-patch+json:
            schema:
              items:
                type: string
              type: array
          text/json:
            schema:
              items:
                type: string
              type: array
        description: array of valid service object id's
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LocationViewModel"
          description: Success
      summary: Create Linked Service
      tags:
        - Locations
  "/setup/v1/locations/{id}/settings/scope/{settingsScope}":
    put:
      description: "<p>Use this endpoint to <b>Update</b> a business locations online booking settings scope. A valid business <b>location id</b> is required.</p>\r

        <p>\r

        \  <b>settingsScope</b> values are <b>0 = company scope, 1 = business location scope</b>. To inherit the online settings defined in the primary business location, then use value = 0 for company scope. Otherwise, to override the settings for a specific location then use value = 1 for business location scope. <b>Note</b>: You cannot change the settings scope of the Primary Business Location.</p>"
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
        - in: path
          name: settingsScope
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LocationViewModel"
          description: Success
      summary: Update Location Scope
      tags:
        - Locations
  "/setup/v1/locations/{id}/uploadimage":
    post:
      description: <p>Use this endpoint to <b>Upload</b> an image to a location object. A valid business <b>location id</b> is required. You must convert the image to a <b>base64 encoded string</b> and pass that string as input along with your <b>filename</b>.</p>
      parameters:
        - description: id of business location, defaults to primary business location
          in: path
          name: id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/*+json:
            schema:
              $ref: "#/components/schemas/ResourceImageInputModel"
          application/json:
            schema:
              $ref: "#/components/schemas/ResourceImageInputModel"
          application/json-patch+json:
            schema:
              $ref: "#/components/schemas/ResourceImageInputModel"
          text/json:
            schema:
              $ref: "#/components/schemas/ResourceImageInputModel"
        description: Input model for image upload
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LocationViewModel"
          description: Success
      summary: Upload Location Image
      tags:
        - Locations
  /setup/v1/resourcegroups:
    get:
      description: "<p>Use this endpoint to <b>List Resource Groups</b> for the specified location. If not specified, the business location defaults to the primary business location. <b>Name</b> is a required field.</p>\r

        <p>Use the offset and limit parameters to control the page start and size. Default offset is 0, limit is 20, maximum is 100. Use the query parameters to filter the results further.</p>"
      parameters:
        - description: id of business location, defaults to primary business location
          in: query
          name: locationId
          schema:
            type: string
        - description: Filter results by deleted status
          in: query
          name: deleted
          schema:
            type: boolean
        - description: Starting row of page, default 0
          in: query
          name: offset
          schema:
            format: int32
            type: integer
        - description: Page limit default 20, max 100
          in: query
          name: limit
          schema:
            format: int32
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceGroupListViewModel"
          description: Success
      summary: List Resource Groups
      tags:
        - ResourceGroups
    post:
      description: <p>Use this endpoint to <b>Create</b> a resourceGroup object. Resource groups are used to categorize your resources.</p>
      requestBody:
        content:
          application/*+json:
            schema:
              $ref: "#/components/schemas/ResourceGroupInputModel"
          application/json:
            schema:
              $ref: "#/components/schemas/ResourceGroupInputModel"
          application/json-patch+json:
            schema:
              $ref: "#/components/schemas/ResourceGroupInputModel"
          text/json:
            schema:
              $ref: "#/components/schemas/ResourceGroupInputModel"
        description: Resource input model
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceGroupViewModel"
          description: Success
      summary: Create Resource Group
      tags:
        - ResourceGroups
  "/setup/v1/resourcegroups/{id}":
    delete:
      description: <p>Use this endpoint to <b>Delete</b> a resourceGroup object. A valid <b>resourceGroup id</b> is required. The resource group is not permanently deleted and can be recovered by using the <i>PUT ​/setup​/v1​/resourcegroups​/{id}​/recover</i> endpoint.</p>
      parameters:
        - description: id of resourceGroup object
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceGroupViewModel"
          description: Success
      summary: Delete Resource Group
      tags:
        - ResourceGroups
    get:
      description: <p>Use this endpoint to return a <b>Resource Group</b> object. A valid <b>resourceGroup id</b> is required. Find resourceGroup id's by using the <i>GET setup/v1/resourceGroups</i> endpoint.</p>
      parameters:
        - description: id of resourceGroup object
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceGroupViewModel"
          description: Success
      summary: Get Resource Group
      tags:
        - ResourceGroups
    put:
      description: <p>Use this endpoint to <b>Update</b> a resourceGroup object. A valid <b>resourceGroup id</b> is required. </p>
      parameters:
        - description: id of resourcGroup object
          in: path
          name: id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/*+json:
            schema:
              $ref: "#/components/schemas/ResourceGroupUpdateModel"
          application/json:
            schema:
              $ref: "#/components/schemas/ResourceGroupUpdateModel"
          application/json-patch+json:
            schema:
              $ref: "#/components/schemas/ResourceGroupUpdateModel"
          text/json:
            schema:
              $ref: "#/components/schemas/ResourceGroupUpdateModel"
        description: Resource Group Update Model
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceGroupViewModel"
          description: Success
      summary: Update Resource Group
      tags:
        - ResourceGroups
  "/setup/v1/resourcegroups/{id}/recover":
    put:
      description: <p>Use this endpoint to <b>Recover</b> a deleted resourceGroup object. A valid <b>resourceGroup id</b> is required.</p>
      parameters:
        - description: id of resourceGroup object
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceViewModel"
          description: Success
      summary: Recover Resource Group
      tags:
        - ResourceGroups
  /setup/v1/resources:
    get:
      description: <p>Use this endpoint to return a <b>List of Resources</b>. The results are returned in pages. Use the offset and limit parameters to control the page start and number of results. Default offset is 0, limit is 20, max is 100. Use the query parameters to filter the results further.</p>
      parameters:
        - description: id of business location, defaults to primary business location
          in: query
          name: locationId
          schema:
            type: string
        - description: Filter by group Id
          in: query
          name: resourceGroupId
          schema:
            type: string
        - description: Filter by email address
          in: query
          name: email
          schema:
            type: string
        - description: Search by name
          in: query
          name: name
          schema:
            type: string
        - description: Show by deleted status, default is false
          in: query
          name: deleted
          schema:
            type: boolean
        - description: Google calendar authorization return url
          in: query
          name: googleAuthReturnUrl
          schema:
            type: string
        - description: Outlook calendar authorization return url
          in: query
          name: outlookAuthReturnUrl
          schema:
            type: string
        - description: Starting row of page, default 0
          in: query
          name: offset
          schema:
            format: int32
            type: integer
        - description: Page limit default 20, max is 100
          in: query
          name: limit
          schema:
            format: int32
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceListViewModel"
          description: resource object
        "400":
          description: Missing or invalid values in the request
        "404":
          description: Resource was not found
      summary: List Resources
      tags:
        - Resources
    post:
      description: "<p>Use this endpoint to <b>Create</b> a new resource.</p>\r

        <p>Required Fields: <b>Email Address</b> and <b>Name</b></p>\r

        <p>Providing a single or many serviceId(s) in the service array will result the resource explicitly being available to provide those services only. While passing in an empty array will result in all services being available to the resources. This includes all company and business scoped services. See the <i>POST ​/setup​/v1​/resources​/{id}​/services</i> endpoint for details about explicitly linking services.</p>\r

        <p>Set the resource availability type by using the <b>recurringAvailability</b> flag. Set recurringAvailability to <b>True</b> for <b>Weekly Availability</b> or <b>False</b> for <b>Resource Allocations</b>.</p>"
      parameters:
        - description: Google calendar authorization return url
          in: query
          name: googleAuthReturnUrl
          schema:
            type: string
        - description: Outlook calendar authorization return url
          in: query
          name: outlookAuthReturnUrl
          schema:
            type: string
      requestBody:
        content:
          application/*+json:
            schema:
              $ref: "#/components/schemas/ResourceInputModel"
          application/json:
            schema:
              $ref: "#/components/schemas/ResourceInputModel"
          application/json-patch+json:
            schema:
              $ref: "#/components/schemas/ResourceInputModel"
          text/json:
            schema:
              $ref: "#/components/schemas/ResourceInputModel"
        description: Resource input model
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceViewModel"
          description: Success
      summary: Create Resource
      tags:
        - Resources
  "/setup/v1/resources/allocations/{id}":
    delete:
      description: <p>Use this endpoint to <b>Delete</b> a Resource Allocation. A valid <b>resourceAllocation id</b> is required.</p>
      parameters:
        - description: id of resourceAllocation object
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceBlockViewModel"
          description: Success
      summary: Delete Allocation
      tags:
        - Resources
    get:
      description: <p>Use this endpoint to return a <b>Resource Allocation</b>. A valid <b>resourceAllocation id</b> is required. </p>
      parameters:
        - description: id of resourceAllocation object
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceAllocationViewModel"
          description: Success
      summary: Get Allocation
      tags:
        - Resources
    put:
      description: <p>Use this endpoint to <b>Update</b> a resource allocation. A valid <b>resourceAllocation id</b> is required. Refer to the <i>POST /setup/v1/resources/{id}/allocations</i> endpoint for details.</p>
      parameters:
        - description: id of resourceAllocation object
          in: path
          name: id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/*+json:
            schema:
              $ref: "#/components/schemas/ResourceAllocationUpdateModel"
          application/json:
            schema:
              $ref: "#/components/schemas/ResourceAllocationUpdateModel"
          application/json-patch+json:
            schema:
              $ref: "#/components/schemas/ResourceAllocationUpdateModel"
          text/json:
            schema:
              $ref: "#/components/schemas/ResourceAllocationUpdateModel"
        description: Resource allocation update model
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceBlockViewModel"
          description: Success
      summary: Update Allocation
      tags:
        - Resources
  "/setup/v1/resources/block/{id}":
    delete:
      description: <p>Use this endpoint to <b>Delete</b> a Resource Block. A valid <b>resourceBlock id</b> is required.</p>
      parameters:
        - description: id of resourceBlock object
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceBlockViewModel"
          description: Success
      summary: Delete Block
      tags:
        - Resources
    put:
      description: <p>Use this endpoint to <b>Update</b> a Resource Block. A valid <b>resourceBlock id</b> is required. Refer to the <i>POST ​/setup​/v1​/resources​/{id}​/block</i> endpoint for fieldnames and details.</p>
      parameters:
        - description: id of resourceBlock object
          in: path
          name: id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/*+json:
            schema:
              $ref: "#/components/schemas/ResourceBlockUpdateModel"
          application/json:
            schema:
              $ref: "#/components/schemas/ResourceBlockUpdateModel"
          application/json-patch+json:
            schema:
              $ref: "#/components/schemas/ResourceBlockUpdateModel"
          text/json:
            schema:
              $ref: "#/components/schemas/ResourceBlockUpdateModel"
        description: Resource Block update model
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceBlockViewModel"
          description: Success
      summary: Update Block
      tags:
        - Resources
  "/setup/v1/resources/blocks/{id}":
    get:
      description: <p>Use this endpoint to <b>Get</b> a Resource Block. A valid <b>resourceBlock id</b> is required.</p>
      parameters:
        - description: id of resourceBlock object
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceBlockViewModel"
          description: Success
      summary: Get Block
      tags:
        - Resources
  /setup/v1/resources/bulk:
    post:
      description: "<p>Use this endpoint to <b>Bulk Create</b> resources. Valid <b>resource ids</b> are required. The posted list of resources cannot exceed 100 resource objects per transaction for performance purposes.</p>\r

        <p>Required Fields: <b>Email Address</b> and <b>Name</b></p>\r

        <p>Providing a single or many serviceId(s) in the service array will result the resource explicitly being available to provide those services only. While passing in an empty array will result in all services being available to the resources. This includes all company and business scoped services. See the <i>POST ​/setup​/v1​/resources​/{id}​/services</i> endpoint for details about explicitly linking services.</p>\r

        <p>Set the resource availability type by using the <b>recurringAvailability</b> flag. Set recurringAvailability to <b>True</b> for <b>Weekly Availability</b> or <b>False</b> for <b>Resource Allocations</b>.</p>"
      parameters:
        - description: Google calendar authorization return url
          in: query
          name: googleAuthReturnUrl
          schema:
            type: string
        - description: Outlook calendar authorization return url
          in: query
          name: outlookAuthReturnUrl
          schema:
            type: string
      requestBody:
        content:
          application/*+json:
            schema:
              $ref: "#/components/schemas/ResourcesInputModel"
          application/json:
            schema:
              $ref: "#/components/schemas/ResourcesInputModel"
          application/json-patch+json:
            schema:
              $ref: "#/components/schemas/ResourcesInputModel"
          text/json:
            schema:
              $ref: "#/components/schemas/ResourcesInputModel"
        description: Resources input model
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: "#/components/schemas/ResourceViewModel"
                type: array
          description: Success
      summary: Create Resources Bulk
      tags:
        - Resources
    put:
      description: "<p>Use this endpoint to <b>Bulk Update</b> resources. Valid <b>resource id's</b> are required. The list of resources cannot exceed 100 resource objects per transaction for performance purposes.</p>\r

        <p>Required Fields: <b>Email Address</b> and <b>Name</b></p>\r

        <p>Providing a single or many serviceId(s) in the service array will result the resource explicitly being available to provide those services only. While passing in an empty array will result in all services being available to the resources. This includes all company and business scoped services. See the <i>POST ​/setup​/v1​/resources​/{id}​/services</i> endpoint for details about explicitly linking services.</p>\r

        <p>Set the resource availability type by using the <b>recurringAvailability</b> flag. Set recurringAvailability to <b>True</b> for <b>Weekly Availability</b> or <b>False</b> for <b>Resource Allocations</b>.</p>"
      parameters:
        - description: Google calendar authorization return url
          in: query
          name: googleAuthReturnUrl
          schema:
            type: string
        - description: Outlook calendar authorization return url
          in: query
          name: outlookAuthReturnUrl
          schema:
            type: string
      requestBody:
        content:
          application/*+json:
            schema:
              $ref: "#/components/schemas/ResourcesUpdateModel"
          application/json:
            schema:
              $ref: "#/components/schemas/ResourcesUpdateModel"
          application/json-patch+json:
            schema:
              $ref: "#/components/schemas/ResourcesUpdateModel"
          text/json:
            schema:
              $ref: "#/components/schemas/ResourcesUpdateModel"
        description: Resources update model
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: "#/components/schemas/ResourceViewModel"
                type: array
          description: Success
      summary: Update Resources Bulk
      tags:
        - Resources
  /setup/v1/resources/timezones:
    get:
      description: <p>Use this endpoint to return a <b>List of Time Zones</b>.</p>
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SystemTimezoneViewModel"
          description: Success
      summary: Get Time Zones
      tags:
        - Resources
  "/setup/v1/resources/{id}":
    delete:
      description: <p>Use this endpoint to <b>Delete</b> a resource. The resource is not permanently deleted and can be recovered. A valid <b>resource id</b> is required.</p>
      parameters:
        - description: id of resource object
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceViewModel"
          description: Success
      summary: Delete Resource
      tags:
        - Resources
    get:
      description: "<p>Use this endpoint to return a <b>Resource</b> object. A valid <b>resource id</b> is required. Find resource id's by using the: <i>GET /setup/v1/resources</i> endpoint.</p>"
      parameters:
        - description: id of resource object
          in: path
          name: id
          required: true
          schema:
            type: string
        - description: Google calendar authorization return url
          in: query
          name: googleAuthReturnUrl
          schema:
            type: string
        - description: Outlook calendar authorization return url
          in: query
          name: outlookAuthReturnUrl
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceViewModel"
          description: Success
      summary: Get Resource
      tags:
        - Resources
    put:
      description: "<p>Use this endpoint to <b>Update</b> a resource. A valid <b>resource id</b> is required.</p>\r

        <p>Required Fields: <b>Email Address</b> and <b>Name</b></p>\r

        <p>Providing a single or many serviceId(s) in the service array will result the resource explicitly being available to provide those services only. While passing in an empty array will result in all services being available to the resources. This includes all company and business scoped services. See the <i>POST ​/setup​/v1​/resources​/{id}​/services</i> endpoint for details about explicitly linking services.</p>\r

        <p>Set the resource availability type by using the <b>recurringAvailability</b> flag. Set recurringAvailability to <b>True</b> for <b>Weekly Availability</b> or <b>False</b> for <b>Resource Allocations</b>.</p>"
      parameters:
        - description: id of resource object
          in: path
          name: id
          required: true
          schema:
            type: string
        - description: Google calendar authorization return url
          in: query
          name: googleAuthReturnUrl
          schema:
            type: string
        - description: Outlook calendar authorization return url
          in: query
          name: outlookAuthReturnUrl
          schema:
            type: string
      requestBody:
        content:
          application/*+json:
            schema:
              $ref: "#/components/schemas/ResourceUpdateModel"
          application/json:
            schema:
              $ref: "#/components/schemas/ResourceUpdateModel"
          application/json-patch+json:
            schema:
              $ref: "#/components/schemas/ResourceUpdateModel"
          text/json:
            schema:
              $ref: "#/components/schemas/ResourceUpdateModel"
        description: Resource Update Model
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceViewModel"
          description: Success
      summary: Update Resource
      tags:
        - Resources
  "/setup/v1/resources/{id}/allocations":
    get:
      description: <p>Use this endpoint to return a list of <b>Resource Allocations</b> for a specified resource. We recommend using allocations if a resource's schedule changes frequently from day to day or week to week. The results are returned in pages. Use the offset and limit parameters to control the page start and number of results. Default offset is 0, limit is 20, max is 100. Use the query parameters to filter the results further.</p>
      parameters:
        - description: id of resource to list allocations for
          in: path
          name: id
          required: true
          schema:
            type: string
        - description: yyyy-mm-dd, filter allocations on/after startDate
          in: query
          name: startDate
          schema:
            format: date-time
            type: string
        - description: yyyy-mm-dd, filter on/before endDate
          in: query
          name: endDate
          schema:
            format: date-time
            type: string
        - description: Starting row of page, default 0
          in: query
          name: offset
          schema:
            format: int32
            type: integer
        - description: Page limit default 20, max 100
          in: query
          name: limit
          schema:
            format: int32
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceAllocationListViewModel"
          description: resource allocation objects
        "400":
          description: Missing or invalid values in the request
        "401":
          description: Authorization error.
        "404":
          description: Resource was not found
      summary: List Resource Allocations
      tags:
        - Resources
    post:
      description: "<p>Use this endpoint to <b>Create</b> a resource allocation for a resource. A valid <b>resource id</b> is required.</p>\r

        <p>Required fields: <b>startDate, endDate, startTime, endTime</b> and <b>reason</b>. Resource allocations can be set to specific time ranges or for the whole day by setting startTime=0 and endTime=2400. They can repeat for a specific date range instance or set to repeat at a specified frequency.</p>\r

        <p>\r

        \  <b>Repeat object: (repeats = true)</b>\r

        </p>\r

        <p>The <b>frequency</b> can be set to a value of <b>D, W or M </b>for <b>Day, Week</b> or <b>Month</b> respectively.</p>\r

        <p>Use the <b>interval</b> property to specify the interval that the allocation repeats. For example, an interval of 2 for a weekly allocation means that the allocation will repeat every 2nd week beginning at the day specified. A daily allocation with an interval of 10 means the allocation will repeat every 10 days. The interval property applies to all repeat frequencies.  <b>If using the repeat functionality an interval value is required</b>.</p>\r

        <p>\r

        \  <b>DAILY ALLOCATIONS</b>: Will repeat for each day of the week for the date range specified for the interval specified.  An interval value of “1” repeats every day, and an interval value of “3” is every 3rd day.</p>\r

        <p>\r

        \  <b>WEEKLY ALLOCATIONS</b>: Will repeat only on the specified days of the week for the date range specified. For weekly the <b>frequency</b> is required and should be set to <b>“W”</b>. You must specify the <b>“weekdays”</b> parameter. Weekdays are expressed as a string of digits with each single digit in the string representing a day of the week. The possible values are <b>0,1,2,3,4,5,6</b> where <b>0=Sunday, 1=Monday, 2=Tuesday, 3=Wednesday, 4=Thursday, 5=Friday, 6=Saturday</b>.  For example, a weekly frequency with an interval of “1”, and an entry of weekdays = “24”, will repeat each week on Tuesday and Thursday for the duration of the allocation date range.</p>\r

        <p>\r

        \  <b>MONTHLY ALLOCATIONS</b>: Will repeat either on the day of the month specified in the <b>monthDay</b> property or on the day of the week and week of the month specified by the <b>monthType</b> property.  In both cases <b>frequency</b> is required and should be set to <b>“M”</b>, monthly. <b>monthDay</b> is the day of the month you want allocated.  If monthDay=’15’ this means to allocate the 15th of every month in the date range requested. Using monthDay in conjunction with monthType addresses “day of the week and week of the month” scenario.  There are two possible values for monthType: <b>D for Day of Month</b> or <b>W for Week of Month.</b> For <b>monthType D</b>, monthDay value must be between 1 and 31. It is the day of the month to repeat on.  For <b>monthType M</b>, monthDay value contains 2 digits:  day of week (0-6), (0,1,2,3,4,5,6 where 0=Sunday, 1=Monday, 2=Tuesday, 3=Wednesday, 4=Thursday, 5=Friday, 6=Saturday) and week of month (1-5). 1 being the first week, 2 being the second. The third Thursday of the month is depicted as a monthType=”M” and monthDay=”43”.</p>\r

        <p>\r

        \  <b>Repeats will end on the date specified by the end date.</b>\r

        </p>"
      parameters:
        - description: id of resource object
          in: path
          name: id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/*+json:
            schema:
              $ref: "#/components/schemas/ResourceAllocationInputModel"
          application/json:
            schema:
              $ref: "#/components/schemas/ResourceAllocationInputModel"
          application/json-patch+json:
            schema:
              $ref: "#/components/schemas/ResourceAllocationInputModel"
          text/json:
            schema:
              $ref: "#/components/schemas/ResourceAllocationInputModel"
        description: ""
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceBlockViewModel"
          description: Success
      summary: Create Allocation
      tags:
        - Resources
  "/setup/v1/resources/{id}/availability":
    get:
      description: <p>Use this endpoint to view the <b>Weekly Availability</b> for a resource. The displayed available times are represented in the resource's timezone. The resource timezone can be set to any world timezone. If not provided, by default it is set to the Business timezone.</p>
      parameters:
        - description: id of resource object
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceAvailabilityViewModel"
          description: Success
      summary: List Weekly Availability
      tags:
        - Resources
    put:
      description: "<p>Use this endpoint to <b>Update</b> resource weekly availability. A valid <b>resource id</b> is required. The availability day entries are created when a resource object is created.</p>\r

        <p>To update weekly availability hours, all days of the week must be provided. Days are defined as <b>sun, mon, tue, wed, thu, fri</b> and <b>sat</b>. The <b>startTime</b> and <b>endTime</b> fields are entered in <b>military format. e.g., 800 is 8:00am, 2230 is 10:30pm</b>. We support 24-hour availability, set startTime=0 and endTime=2400. To set a whole day as unavailable, set both the startTime and endTime to 0.</p>\r

        <p>If you require times in between specified hours to be unavailable, use the resource blocks endpoints. Times entered represent the timezone of the resource. Resources can be set to any world timezone. </p>"
      parameters:
        - description: id of resource object
          in: path
          name: id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/*+json:
            schema:
              $ref: "#/components/schemas/AvailabilityInputModel"
          application/json:
            schema:
              $ref: "#/components/schemas/AvailabilityInputModel"
          application/json-patch+json:
            schema:
              $ref: "#/components/schemas/AvailabilityInputModel"
          text/json:
            schema:
              $ref: "#/components/schemas/AvailabilityInputModel"
        description: Resource Availability Input Model
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceAvailabilityViewModel"
          description: Success
      summary: Update Weekly Availability
      tags:
        - Resources
  "/setup/v1/resources/{id}/block":
    post:
      description: "<p>Use this endpoint to <b>Create</b> a Resource Block. A valid <b>resource id</b> is required.</p>\r

        <p>Required fields: <b>startDate, endDate, startTime, endTime</b> and <b>reason</b>.</p>\r

        <p>Resource blocks can be set to specific time ranges or for the whole day. Use the <b>AllDay</b> setting to create an all-day block. <b>AllDay</b> will automatically set startTime to 0 and endTime to 2400.</p>\r

        <p>Resource blocks can be for a specific date range instance or set to repeat at a specified frequency. </p>\r

        <p>\r

        \  <b>Repeat object: (repeats = true)</b>\r

        </p>\r

        <p>The <b>frequency</b> can be set to a value of <b>D, W or M</b> for <b>Day, Week</b> or <b>Month</b> respectively.</p>\r

        <p>Use the <b>interval</b> property to specify the interval that the block repeats. For example, an interval of 2 for a weekly block means that the block will repeat every 2nd week beginning at the day specified. A daily block with an interval of 10 means the block will repeat every 10 days. The interval property applies to all repeat frequencies. <b>If using the repeat functionality an interval value is required</b>.</p>\r

        <p>\r

        \  <b>DAILY BLOCKS</b>: Will repeat for each day of the week for the date range specified for the interval specified.  An interval value of “1” repeats every day, and an interval value of “3” is every 3rd day.</p>\r

        <p>\r

        \  <b>WEEKLY BLOCKS</b>: Will repeat only on the specified days of the week for the date range specified. For weekly the <b>frequency</b> is required and should be set to <b>“W”</b>.  You must specify the <b>weekdays</b> parameter. Weekdays are expressed as a string of digits with each single digit in the string representing a day of the week. The possible values are <b>0,1,2,3,4,5,6</b> where <b>0=Sunday, 1=Monday, 2=Tuesday, 3=Wednesday, 4=Thursday, 5=Friday, 6=Saturday</b>. For example, a weekly frequency with an interval of “1”, and an entry of weekdays = “24”, will repeat each week on Tuesday and Thursday for the duration of the block date range.</p>\r

        <p>\r

        \  <b>MONTHLY BLOCKS</b>: Will repeat either on the day of the month specified in the <b>monthDay</b> property or on the day of the week and week of the month specified by the <b>monthType</b> property.  In both cases <b>frequency</b> is required and should be set to <b>“M”</b>, monthly, <b>monthDay</b> is the day of the month you want blocked.  If monthDay=’15’ this means to block the 15th of every month in the date range requested. Using monthDay in conjunction with monthType addresses “day of the week and week of the month” scenario.  There are two possible values for monthType: <b>D for Day of Month</b> or <b>W for Week of Month.</b> For <b>monthType D</b>, monthDay value must be between 1 and 31. It is the day of the month to repeat on. For <b>monthType M</b>, monthDay value contains 2 digits: day of week (0-6), (0,1,2,3,4,5,6 where 0=Sunday, 1=Monday, 2=Tuesday, 3=Wednesday, 4=Thursday, 5=Friday, 6=Saturday) and week of month (1-5). 1 being the first week, 2 being the second. The third Thursday of the month is depicted as a monthType=”M” and monthDay=”43”. </p>\r

        <p>\r

        \  <b>Repeats will end on the date specified by the end date.</b>\r

        </p>"
      parameters:
        - description: id of resource object
          in: path
          name: id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/*+json:
            schema:
              $ref: "#/components/schemas/ResourceBlockInputModel"
          application/json:
            schema:
              $ref: "#/components/schemas/ResourceBlockInputModel"
          application/json-patch+json:
            schema:
              $ref: "#/components/schemas/ResourceBlockInputModel"
          text/json:
            schema:
              $ref: "#/components/schemas/ResourceBlockInputModel"
        description: ""
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceBlockViewModel"
          description: Success
      summary: Create Block
      tags:
        - Resources
  "/setup/v1/resources/{id}/blocks":
    get:
      description: <p>Use this endpoint to return a list of <b>Resource Blocks</b>. A valid <b>resource id</b> is required. The results are returned in pages. Use the offset and limit parameters to control the page start and number of results. Default offset is 0, limit is 20, max is 100. Use the query parameters to filter the results further.</p>
      parameters:
        - description: id of resource to list blocks for
          in: path
          name: id
          required: true
          schema:
            type: string
        - description: YYYY-MM-DD, filter blocks on/after startDate
          in: query
          name: startDate
          schema:
            format: date-time
            type: string
        - description: YYYY-MM-DD, filter on/before endDate
          in: query
          name: endDate
          schema:
            format: date-time
            type: string
        - description: Starting row of page, default 0
          in: query
          name: offset
          schema:
            format: int32
            type: integer
        - description: Page limit default 20, max 100
          in: query
          name: limit
          schema:
            format: int32
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceBlockListViewModel"
          description: resource block object's
        "400":
          description: Missing or invalid values in the request
        "401":
          description: Authorization error.
        "404":
          description: Resource was not found
      summary: List Resource Blocks
      tags:
        - Resources
  "/setup/v1/resources/{id}/calendar/auth/google/{googleEmailAddress}":
    get:
      description: <p>Use this endpoint to return the <b>Resources Google Calendar Authorization URL</b>. A valid <b>resource id</b> and <b>Google Email Address</b> are required.</p>
      parameters:
        - description: id of resource object
          in: path
          name: id
          required: true
          schema:
            type: string
        - description: Email address of Google Calendar
          in: path
          name: googleEmailAddress
          required: true
          schema:
            type: string
        - description: Google calendar authorization return url
          in: query
          name: googleAuthReturnUrl
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CalendarAuthViewModel"
          description: Success
      summary: Get Resource Google URL
      tags:
        - Resources
  "/setup/v1/resources/{id}/calendar/auth/outlook/{outlookEmailAddress}":
    get:
      description: <p>Use this endpoint to return the <b>Resources Outlook Calendar Authorization URL</b>. A valid <b>resource id</b> and <b>Outlook Email Address</b> are required.</p>
      parameters:
        - description: id of resource object
          in: path
          name: id
          required: true
          schema:
            type: string
        - description: Email address of Outlook Calendar
          in: path
          name: outlookEmailAddress
          required: true
          schema:
            type: string
        - description: Outlook calendar authorization return url
          in: query
          name: outlookAuthReturnUrl
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CalendarAuthViewModel"
          description: Success
      summary: Get Resource Outlook URL
      tags:
        - Resources
  "/setup/v1/resources/{id}/deleteimage":
    delete:
      description: <p>Use this endpoint to permanently <b>Delete</b> a previously uploaded resource image. A valid <b>resource id</b> is required.</p>
      parameters:
        - description: id of resource object
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceViewModel"
          description: Success
      summary: Delete Resource Image
      tags:
        - Resources
  "/setup/v1/resources/{id}/reassign/appointments/{resourceId}":
    put:
      description: <p>Use this endpoint to <b>Reassign</b> appointments from one resource to another. If the startDate is not supplied, the default is today's date + 1 day; If the endDate is not supplied, all future appointments from the start date will be reassigned. If the calendar id is not supplied the default is the primary calendar of the location.</p>
      parameters:
        - description: id of the original resource
          in: path
          name: id
          required: true
          schema:
            type: string
        - description: id of the target resource
          in: path
          name: resourceId
          required: true
          schema:
            type: string
        - description: YYYY-MM-DD, Appt range start date
          in: query
          name: startDate
          schema:
            format: date-time
            type: string
        - description: YYYY-MM-DD, Appt range end date
          in: query
          name: endDate
          schema:
            format: date-time
            type: string
        - description: CalendarId of calendar containing appointments
          in: query
          name: calendarId
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: "#/components/schemas/AppointmentViewModel"
                type: array
          description: Success
      summary: Reassign Resource
      tags:
        - Resources
  "/setup/v1/resources/{id}/recover":
    put:
      description: <p>Use this endpoint to <b>Recover</b> a deleted resource. A valid <b>resource id</b> is required.</p>
      parameters:
        - description: id of resource object
          in: path
          name: id
          required: true
          schema:
            type: string
        - description: Google calendar authorization return url
          in: query
          name: googleAuthReturnUrl
          schema:
            type: string
        - description: Outlook calendar authorization return url
          in: query
          name: outlookAuthReturnUrl
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceViewModel"
          description: Success
      summary: Recover Resource
      tags:
        - Resources
  "/setup/v1/resources/{id}/services":
    delete:
      description: <p>Use this endpoint to <b>Delete</b> linked services from a Resource, i.e. unlink the services. A valid <b>resource id</b> is required. Once deleted, all services become available to the resource.</p>
      parameters:
        - description: id of resource object
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceViewModel"
          description: Success
      summary: Delete Linked Services
      tags:
        - Resources
    post:
      description: "<p>Use this endpoint to explicitly <b>Link Services</b> to a Resource. A valid <b>resource id</b> is required.</p>\r

        <p>\r

        \  <b>Note:</b> By default, the services array is empty which signifies that all services are provided by the resource. Linking services here will add to the linked service(s) array available to this resource. This will limit the services available to the resource.</p>\r

        <p>You cannot post services that already exist in the array, you can only add new ones. Use the <i>PUT ​/setup​/v1​/resources​/{id}​/services</i> endpoint to update the entire list.</p>"
      parameters:
        - description: id of resource object
          in: path
          name: id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/*+json:
            schema:
              items:
                type: string
              type: array
          application/json:
            schema:
              items:
                type: string
              type: array
          application/json-patch+json:
            schema:
              items:
                type: string
              type: array
          text/json:
            schema:
              items:
                type: string
              type: array
        description: Array of valid service object id's
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceViewModel"
          description: Success
      summary: Create Linked Services
      tags:
        - Resources
    put:
      description: "<p>Use this endpoint to <b>Update</b> the linked services of a Resource. A valid <b>resource id</b> is required.</p>\r

        <p>Updating services with this endpoint will update the linked services available to the resource. Only those services will be available to the resource.</p>\r

        <p>\r

        \  <b>Note:</b> This is a destructive process, any existing linked services will be removed and replaced with the list of services supplied here. Provide the resources complete list of services when using this endpoint.</p>"
      parameters:
        - description: id of resource object
          in: path
          name: id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/*+json:
            schema:
              items:
                type: string
              type: array
          application/json:
            schema:
              items:
                type: string
              type: array
          application/json-patch+json:
            schema:
              items:
                type: string
              type: array
          text/json:
            schema:
              items:
                type: string
              type: array
        description: Array of valid service object id's
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceViewModel"
          description: Success
      summary: Update Linked Services
      tags:
        - Resources
  "/setup/v1/resources/{id}/uploadimage":
    post:
      description: <p>Use this endpoint to <b>Upload</b> a resource image to the resource. A valid <b>resource id</b> is required. You must convert the image to a <b>base64 encoded string</b> and pass that string as input along with your <b>filename</b>.</p>
      parameters:
        - description: id of resource object
          in: path
          name: id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/*+json:
            schema:
              $ref: "#/components/schemas/ResourceImageInputModel"
          application/json:
            schema:
              $ref: "#/components/schemas/ResourceImageInputModel"
          application/json-patch+json:
            schema:
              $ref: "#/components/schemas/ResourceImageInputModel"
          text/json:
            schema:
              $ref: "#/components/schemas/ResourceImageInputModel"
        description: Input model for image upload
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceViewModel"
          description: Success
      summary: Upload Resource Image
      tags:
        - Resources
  /setup/v1/servicegroups:
    get:
      description: <p>Use this endpoint to return a list of <b>Service Groups</b> for the requested location. If no business location is specified it will default to the Primary Business Location of the company. Use the offset and limit parameters to control the page start and size. Default offset is 0, limit is 20, maximum is 100. Use the other query parameters to filter the results further.</p>
      parameters:
        - description: id of business location, defaults to primary business location
          in: query
          name: locationId
          schema:
            type: string
        - description: Starting row of page, default 0
          in: query
          name: offset
          schema:
            format: int32
            type: integer
        - description: Page limit default 20, max 100
          in: query
          name: limit
          schema:
            format: int32
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceGroupListViewModel"
          description: Success
      summary: List Service Groups
      tags:
        - ServiceGroups
    post:
      description: <p>Use this endpoint to <b>Create</b> a Service Group. If no locationId is specified in the body, the business location will default to the primary business location. Service groups are used to categorize services. Service groups are optional and only make sense if you have multiple services that will be easier read if categorized. Only the service group Type of 0 is supported by the API. It defaults to 0 if not supplied.</p>
      requestBody:
        content:
          application/*+json:
            schema:
              $ref: "#/components/schemas/ServiceGroupInputModel"
          application/json:
            schema:
              $ref: "#/components/schemas/ServiceGroupInputModel"
          application/json-patch+json:
            schema:
              $ref: "#/components/schemas/ServiceGroupInputModel"
          text/json:
            schema:
              $ref: "#/components/schemas/ServiceGroupInputModel"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceGroupViewModel"
          description: Success
      summary: Create Service Group
      tags:
        - ServiceGroups
  "/setup/v1/servicegroups/{id}":
    delete:
      description: <p>Use this endpoint to <b>Delete</b> a Service Group object. A valid <b>serviceGroup id</b> is required. The service group is not permanently deleted and can be recovered by using the <i>PUT ​/setup​/v1​/servicegroups​/{id}​/recover</i> endpoint.</p>
      parameters:
        - description: id of serviceGroup object
          in: path
          name: id
          required: true
          schema:
            format: int32
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceGroupViewModel"
          description: Success
      summary: Delete Service Group
      tags:
        - ServiceGroups
    get:
      description: <p>Use this endpoint to return a <b>Service Group</b> object. A valid <b>serviceGroup id</b> is required. Find service group id's by using the <i>GET /setup/v1/serviceGroups</i> endpoint.</p>
      parameters:
        - description: id of serviceGroup object
          in: path
          name: id
          required: true
          schema:
            format: int32
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceGroupViewModel"
          description: Success
      summary: Get Service Group
      tags:
        - ServiceGroups
    put:
      description: <p>Use this endpoint to <b>Update</b> a Service Group object. A valid <b>serviceGroup id</b> is required. </p>
      parameters:
        - description: id of serviceGroup object
          in: path
          name: id
          required: true
          schema:
            format: int32
            type: integer
      requestBody:
        content:
          application/*+json:
            schema:
              $ref: "#/components/schemas/ServiceGroupInputModel"
          application/json:
            schema:
              $ref: "#/components/schemas/ServiceGroupInputModel"
          application/json-patch+json:
            schema:
              $ref: "#/components/schemas/ServiceGroupInputModel"
          text/json:
            schema:
              $ref: "#/components/schemas/ServiceGroupInputModel"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceGroupViewModel"
          description: Success
      summary: Update Service Group
      tags:
        - ServiceGroups
  "/setup/v1/servicegroups/{id}/recover":
    put:
      description: <p>Use this endpoint to <b>Recover</b> a deleted Service Group. A valid <b>serviceGroup id</b> is required. </p>
      parameters:
        - description: id of serviceGroup object
          in: path
          name: id
          required: true
          schema:
            format: int32
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceGroupViewModel"
          description: Success
      summary: Recover Service Group
      tags:
        - ServiceGroups
  /setup/v1/services:
    get:
      description: <p>Use this endpoint to return a <b>List of Service</b>. The results are returned in pages. Use the offset and limit parameters to control the page start and number of results. Default offset is 0, limit is 20, max is 100. Use the query parameters to filter the results further.</p>
      parameters:
        - description: id of business location, defaults to primary business location
          in: query
          name: locationId
          schema:
            type: string
        - description: Filter services by groupId
          in: query
          name: serviceGroupId
          schema:
            format: int32
            type: integer
        - description: Filter by deleted status
          in: query
          name: deleted
          schema:
            type: boolean
        - description: Starting row of page, default 0
          in: query
          name: offset
          schema:
            format: int32
            type: integer
        - description: Page limit default 20, max 100
          in: query
          name: limit
          schema:
            format: int32
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceListViewModel"
          description: Success
      summary: List Services
      tags:
        - Services
    post:
      description: "<p>Use this endpoint to <b>Create</b> a new service. If not specified, the business location defaults to the primary business location. Note: Posting a service to the Primary Business Location will scope as company scoped and make the service available to all locations. If you want a service to only be available from a specific location, include the business location id.</p>\r

        <p>Required fields: <b>Name</b> and <b>Duration</b></p>\r

        <p>The service <b>Type</b> is either, <b>1 = Appointment</b> or <b>2 = Event</b>. Default is 1 if not specified.</p>\r

        <p>For type = 1, Appointments - Create an availability entry for each weekday to provide the service for. <b>All days of the week must be provided when adding service availability.</b> Days are defined as <b>sun, mon, tue, wed, thu, fri</b> and <b>sat</b>. Start and End Times are entered in military format. e.g., 800 is 8:00am, 2230 is 10:30pm. If not provided, it defaults to the primary location business hours.</p>\r

        <p>We support 24-hour availability, set startTime=0 and endTime=2400. To set a whole day as unavailable, set both the startTime and endTime to 0. If you require times in between specified hours to be unavailable, use the service block endpoint at: <i>POST ​/setup​/v1​/services​/{id}​/block</i>.</p>\r

        <p>For type = 2, Events - Create service allocations for their availability. Refer to the: <i>POST /setup​/v1​/services​/{id}​/allocations</i> to set up service allocations for the event.</p>\r

        <p>Options are available for customer selected durations, for details: <a href=\"https://docs.onsched.com/docs/services-overview#variable-duration\">Variable Duration Overview</a></p>\r

        <p>Additional parameters include but are not limited to bookingLimit, maxCapacity and maxGroupSize. For details: <a href=\"https://docs.onsched.com/docs/service-max-capacity\">Service Limits Overview</a></p>"
      requestBody:
        content:
          application/*+json:
            schema:
              $ref: "#/components/schemas/ServiceInputModel"
          application/json:
            schema:
              $ref: "#/components/schemas/ServiceInputModel"
          application/json-patch+json:
            schema:
              $ref: "#/components/schemas/ServiceInputModel"
          text/json:
            schema:
              $ref: "#/components/schemas/ServiceInputModel"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceViewModel"
          description: Success
      summary: Create Service
      tags:
        - Services
  "/setup/v1/services/allocations/{id}":
    delete:
      description: <p>Use this endpoint to permanently <b>Delete</b> a service allocation. A valid <b>serviceAllocation id</b> is required.</p>
      parameters:
        - description: id of serviceAllocation object
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceAllocationViewModel"
          description: Success
      summary: Delete Allocation
      tags:
        - Services
    get:
      description: <p>Use this endpoint to <b>Get a Service Allocation</b>. A valid <b>serviceAllocation id</b> is required.</p>
      parameters:
        - description: id of serviceAllocation object
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceAllocationViewModel"
          description: Success
      summary: Get Allocation
      tags:
        - Services
    put:
      description: <p>Use this endpoint to <b>Update</b> a service allocation. A valid <b>serviceAllocation id</b> is required. Refer to the <i>POST /setup/v1/services/{id}/allocations</i> endpoint for fields names and details.</p>
      parameters:
        - description: id of serviceAllocation object
          in: path
          name: id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/*+json:
            schema:
              $ref: "#/components/schemas/ServiceAllocationUpdateModel"
          application/json:
            schema:
              $ref: "#/components/schemas/ServiceAllocationUpdateModel"
          application/json-patch+json:
            schema:
              $ref: "#/components/schemas/ServiceAllocationUpdateModel"
          text/json:
            schema:
              $ref: "#/components/schemas/ServiceAllocationUpdateModel"
        description: Service allocation update model
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceAllocationViewModel"
          description: Success
      summary: Update Allocation
      tags:
        - Services
  "/setup/v1/services/block/{id}":
    delete:
      description: <p>Use this endpoint to permanently <b>Delete</b> a Service Block. A valid <b>serviceBlock id</b> is required.</p>
      parameters:
        - description: id of serviceBlock object
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceBlockViewModel"
          description: Success
      summary: Delete Block
      tags:
        - Services
    put:
      description: <p>Use this endpoint to <b>Update</b> a Service Block. A valid <b>serviceBlock id</b> is required.</p>
      parameters:
        - description: id of serviceBlock object
          in: path
          name: id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/*+json:
            schema:
              $ref: "#/components/schemas/ServiceBlockUpdateModel"
          application/json:
            schema:
              $ref: "#/components/schemas/ServiceBlockUpdateModel"
          application/json-patch+json:
            schema:
              $ref: "#/components/schemas/ServiceBlockUpdateModel"
          text/json:
            schema:
              $ref: "#/components/schemas/ServiceBlockUpdateModel"
        description: Service Block update model
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceBlockViewModel"
          description: Success
      summary: Update Block
      tags:
        - Services
  "/setup/v1/services/blocks/{id}":
    get:
      description: <p>Use this endpoint to <b>Get a Service Block</b>. A valid <b>serviceBlock id</b> is required.</p>
      parameters:
        - description: id of serviceBlock object
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceBlockViewModel"
          description: Success
      summary: Get Block
      tags:
        - Services
  /setup/v1/services/calendar:
    post:
      description: <p>Use this endpoint to <b>Link a Service</b> to a calendar. </p>
      requestBody:
        content:
          application/*+json:
            schema:
              $ref: "#/components/schemas/ServiceCalendarInputModel"
          application/json:
            schema:
              $ref: "#/components/schemas/ServiceCalendarInputModel"
          application/json-patch+json:
            schema:
              $ref: "#/components/schemas/ServiceCalendarInputModel"
          text/json:
            schema:
              $ref: "#/components/schemas/ServiceCalendarInputModel"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceCalendarViewModel"
          description: Success
      summary: Link Service to Calendar
      tags:
        - Services
  "/setup/v1/services/calendar/{id}":
    delete:
      description: <p>Use this endpoint to <b>Delete</b> service links from the calendar specified. A valid <b>calendar id</b> is required.</p>
      parameters:
        - description: id of calender to delete service links from
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceCalendarViewModel"
          description: Success
      summary: Delete Service Links
      tags:
        - Services
  "/setup/v1/services/{id}":
    delete:
      description: <p>Use this endpoint to <b>Delete</b> a service object. A valid <b>service id</b> is required. The service is not permanently deleted and can be recovered by using the <i>PUT /setup​/v1​/services​/{id}​/recover</i> endpoint.</p>
      parameters:
        - description: id of service object
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceViewModel"
          description: Success
      summary: Delete Service
      tags:
        - Services
    get:
      description: <p>Use this endpoint to return a <b>Service</b> object. A valid <b>service id</b> is required. Find service id's by using the <i>GET /setup/v1/services</i> endpoint.</p>
      parameters:
        - description: id of service object
          in: path
          name: id
          required: true
          schema:
            format: int32
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceViewModel"
          description: Success
      summary: Get Service
      tags:
        - Services
    put:
      description: <p>Use this endpoint to <b>Update</b> a service object. A valid <b>service id</b> is required.</p>
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/*+json:
            schema:
              $ref: "#/components/schemas/ServiceUpdateModel"
          application/json:
            schema:
              $ref: "#/components/schemas/ServiceUpdateModel"
          application/json-patch+json:
            schema:
              $ref: "#/components/schemas/ServiceUpdateModel"
          text/json:
            schema:
              $ref: "#/components/schemas/ServiceUpdateModel"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceViewModel"
          description: Success
      summary: Update Service
      tags:
        - Services
  "/setup/v1/services/{id}/allocations":
    get:
      description: "<p>Use this endpoint to return a <b>List of Service Allocations</b> for a specified service. A valid <b>service id</b> is required. Service allocations are used for <b>Event type services only</b> where the events are offered on specific dates and times. Retrieve all allocations for a location by passing in 0 as the service id.</p>\r

        <p>The results are returned in pages. Use the offset and limit parameters to control the page start and number of results. Default offset is 0, limit is 20, max is 100. Use the query parameters to filter the results further.</p>"
      parameters:
        - description: id of  service to list allocations for, 0 for all
          in: path
          name: id
          required: true
          schema:
            type: string
        - description: The id of the location. Defaults to the primary location
          in: query
          name: locationId
          schema:
            type: string
        - description: The id of the resource to filter on
          in: query
          name: resourceId
          schema:
            type: string
        - description: Format YYYY-MM-DD. Filter appointments by on/after startDate
          in: query
          name: startDate
          schema:
            format: date-time
            type: string
        - description: Format YYYY-MM-DD. Filter appointments on/before endDate
          in: query
          name: endDate
          schema:
            format: date-time
            type: string
        - description: Starting row of page, default 0
          in: query
          name: offset
          schema:
            format: int32
            type: integer
        - description: Page limit default 20, max 100
          in: query
          name: limit
          schema:
            format: int32
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceAllocationListViewModel"
          description: service alloaction object
        "400":
          description: Missing or invalid values in the request
        "401":
          description: Authorization error.
        "404":
          description: Service was not found
      summary: List Service Allocations
      tags:
        - Services
    post:
      description: "<p>Use this endpoint to <b>Create</b> a service allocation for a service. A valid <b>service id</b> is required. Service allocations are used for <b>Event type services only</b>. Service allocations allow you to specify the time(s) a service is available as opposed to using weekly availability which represents a weekly schedule, ie: Mon-Fri 9am-5pm.</p>\r

        <p>Required fields: <b>startDate, endDate, startTime, endTime</b> and <b>reason</b>. Service allocations can be set to specific time ranges or for the whole day by setting startTime=0 and endTime=2400. Service allocations can repeat for a specific date range instance or set to repeat at a specified frequency.</p>\r

        <p>\r

        \  <b>Repeat object: (repeats = true)</b>\r

        </p>\r

        <p>The <b>frequency</b> can be set to a value of <b>D, W or M</b> for <b>Day, Week</b> or <b>Month</b> respectively.</p>\r

        <p>Use the <b>interval</b> property to specify the interval that the allocation repeats. For example, an interval of 2 for a weekly allocation means that the allocation will repeat every 2nd week beginning at the day specified. A daily allocation with an interval of 10 means the allocation will repeat every 10 days. The interval property applies to all repeat frequencies.  <b>If using the repeat functionality an interval value is required</b>.</p>\r

        <p>\r

        \  <b>DAILY ALLOCATIONS</b>: Will repeat for each day of the week for the date range specified for the interval specified.  An interval value of “1” repeats every day, and an interval value of “3” is every 3rd day.</p>\r

        <p>\r

        \  <b>WEEKLY ALLOCATIONS</b>: Will repeat only on the specified days of the week for the date range specified. For weekly the <b>frequency</b> is required and should be set to <b>“W”</b>. You must specify the <b>“weekdays”</b> parameter. Weekdays are expressed as a string of digits with each single digit in the string representing a day of the week. The possible values are <b>0,1,2,3,4,5,6</b> where <b>0=Sunday, 1=Monday, 2=Tuesday, 3=Wednesday, 4=Thursday, 5=Friday, 6=Saturday</b>.  For example, a weekly frequency with an interval of “1”, and an entry of weekdays = “24”, will repeat each week on Tuesday and Thursday for the duration of the allocation date range.</p>\r

        <p>\r

        \  <b>MONTHLY ALLOCATIONS</b>: Will repeat either on the day of the month specified in the <b>monthDay</b> property or on the day of the week and week of the month specified by the <b>monthType</b> property.  In both cases <b>frequency</b> is required and should be set to <b>“M”</b>, monthly. <b>monthDay</b> is the day of the month you want allocated.  If monthDay=’15’ this means to allocate the 15th of every month in the date range requested. Using monthDay in conjunction with monthType addresses “day of the week and week of the month” scenario.  There are two possible values for monthType: <b>D for Day of Month</b> or <b>W for Week of Month.</b> For <b>monthType D</b>, monthDay value must be between 1 and 31. It is the day of the month to repeat on.  For <b>monthType M</b>, monthDay value contains 2 digits:  day of week (0-6), (0,1,2,3,4,5,6 where 0=Sunday, 1=Monday, 2=Tuesday, 3=Wednesday, 4=Thursday, 5=Friday, 6=Saturday) and week of month (1-5). 1 being the first week, 2 being the second. The third Thursday of the month is depicted as a monthType=”M” and monthDay=”43”.</p>\r

        <p>\r

        \  <b>Repeats will end on the date specified by the end date.</b>\r

        </p>"
      parameters:
        - description: id of service object
          in: path
          name: id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/*+json:
            schema:
              $ref: "#/components/schemas/ServiceAllocationInputModel"
          application/json:
            schema:
              $ref: "#/components/schemas/ServiceAllocationInputModel"
          application/json-patch+json:
            schema:
              $ref: "#/components/schemas/ServiceAllocationInputModel"
          text/json:
            schema:
              $ref: "#/components/schemas/ServiceAllocationInputModel"
        description: ""
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceAllocationViewModel"
          description: Success
      summary: Create Allocation
      tags:
        - Services
  "/setup/v1/services/{id}/allocations/bulk":
    post:
      description: '<p>Use this endpoint to <b>Create</b> bulk service allocations. A valid <b>service id</b> is required. Use this endpoint only if you need to POST multiple service allocations in one transaction. For details refer to: <a href="POST ​/setup​/v1​/services​/{id}​/allocations">Post Service Allocation</a></p>'
      parameters:
        - description: id of service object
          in: path
          name: id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/*+json:
            schema:
              $ref: "#/components/schemas/ServiceAllocationsInputModel"
          application/json:
            schema:
              $ref: "#/components/schemas/ServiceAllocationsInputModel"
          application/json-patch+json:
            schema:
              $ref: "#/components/schemas/ServiceAllocationsInputModel"
          text/json:
            schema:
              $ref: "#/components/schemas/ServiceAllocationsInputModel"
        description: ""
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: "#/components/schemas/ServiceAllocationViewModel"
                type: array
          description: Success
      summary: Create Allocations Bulk
      tags:
        - Services
  "/setup/v1/services/{id}/availability":
    get:
      description: <p>Use this endpoint to return the <b>Weekly Service Availability</b> for an appointment service. A valid <b>service id</b> is required. Weekly availability is returned for services where the Type = 1. For event type services, where service Type = 2, refer to the <i>GET ​/setup​/v1​/services​/{id}​/allocations</i> endpoint.</p>
      parameters:
        - description: id of service object
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceAvailabilityViewModel"
          description: Success
      summary: Get Weekly Availability
      tags:
        - Services
    put:
      description: "<p>Use this endpoint to <b>Update</b> service weekly availability. A valid <b>service id</b> is required. The availability day entries are created when a service object is created.</p>\r

        <p>To update weekly availability hours, all days of the week must be provided. Days are defined as <b>sun, mon, tue, wed, thu, fri</b> and <b>sat</b>. The <b>startTime</b> and <b>endTime</b> fields are entered in <b>military format. e.g., 800 is 8:00am, 2230 is 10:30pm</b>. We support 24-hour availability, set startTime=0 and endTime=2400. To set a whole day as unavailable, set both the startTime and endTime to 0.</p>\r

        <p>If you require times in between specified hours to be unavailable, use the resource blocks endpoints. Times entered represent the timezone of the business location.</p>"
      parameters:
        - description: id of service object
          in: path
          name: id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/*+json:
            schema:
              $ref: "#/components/schemas/AvailabilityInputModel"
          application/json:
            schema:
              $ref: "#/components/schemas/AvailabilityInputModel"
          application/json-patch+json:
            schema:
              $ref: "#/components/schemas/AvailabilityInputModel"
          text/json:
            schema:
              $ref: "#/components/schemas/AvailabilityInputModel"
        description: Service Availability Input Model
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceAvailabilityViewModel"
          description: Success
      summary: Update Weekly Availability
      tags:
        - Services
  "/setup/v1/services/{id}/block":
    post:
      description: "<p>Use this endpoint to <b>Create</b> a Service Block. A valid <b>service id</b> is required.</p>\r

        <p>Required fields: <b>startDate, endDate, startTime, endTime</b> and <b>reason</b>.</p>\r

        <p>Service blocks can be set to specific time ranges or for the whole day. To block a whole day set startTime to 0 and endTime to 2400.</p>\r

        <p>Service blocks can be for a specific date range instance or set to repeat at a specified frequency. </p>\r

        <p>\r

        \  <b>Repeat object: (repeats = true)</b>\r

        </p>\r

        <p>The <b>frequency</b> can be set to a value of <b>D, W or M</b> for <b>Day, Week</b> or <b>Month</b> respectively.</p>\r

        <p>Use the <b>interval</b> property to specify the interval that the block repeats. For example, an interval of 2 for a weekly block means that the block will repeat every 2nd week beginning at the day specified. A daily block with an interval of 10 means the block will repeat every 10 days. The interval property applies to all repeat frequencies. <b>If using the repeat functionality an interval value is required</b>.</p>\r

        <p>\r

        \  <b>DAILY BLOCKS</b>: Will repeat for each day of the week for the date range specified for the interval specified.  An interval value of “1” repeats every day, and an interval value of “3” is every 3rd day.</p>\r

        <p>\r

        \  <b>WEEKLY BLOCKS</b>: Will repeat only on the specified days of the week for the date range specified. For weekly the <b>frequency</b> is required and should be set to <b>“W”</b>.  You must specify the <b>weekdays</b> parameter. Weekdays are expressed as a string of digits with each single digit in the string representing a day of the week. The possible values are <b>0,1,2,3,4,5,6</b> where <b>0=Sunday, 1=Monday, 2=Tuesday, 3=Wednesday, 4=Thursday, 5=Friday, 6=Saturday</b>. For example, a weekly frequency with an interval of “1”, and an entry of weekdays = “24”, will repeat each week on Tuesday and Thursday for the duration of the block date range.</p>\r

        <p>\r

        \  <b>MONTHLY BLOCKS</b>: Will repeat either on the day of the month specified in the <b>monthDay</b> property or on the day of the week and week of the month specified by the <b>monthType</b> property.  In both cases <b>frequency</b> is required and should be set to <b>“M”</b>, monthly, <b>monthDay</b> is the day of the month you want blocked.  If monthDay=’15’ this means to block the 15th of every month in the date range requested. Using monthDay in conjunction with monthType addresses “day of the week and week of the month” scenario.  There are two possible values for monthType: <b>D for Day of Month</b> or <b>W for Week of Month.</b> For <b>monthType D</b>, monthDay value must be between 1 and 31. It is the day of the month to repeat on. For <b>monthType M</b>, monthDay value contains 2 digits: day of week (0-6), (0,1,2,3,4,5,6 where 0=Sunday, 1=Monday, 2=Tuesday, 3=Wednesday, 4=Thursday, 5=Friday, 6=Saturday) and week of month (1-5). 1 being the first week, 2 being the second. The third Thursday of the month is depicted as a monthType=”M” and monthDay=”43”.</p>\r

        <p>\r

        \  <b>Repeats will end on the date specified by the end date.</b>\r

        </p>"
      parameters:
        - description: id of service object
          in: path
          name: id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/*+json:
            schema:
              $ref: "#/components/schemas/ServiceBlockInputModel"
          application/json:
            schema:
              $ref: "#/components/schemas/ServiceBlockInputModel"
          application/json-patch+json:
            schema:
              $ref: "#/components/schemas/ServiceBlockInputModel"
          text/json:
            schema:
              $ref: "#/components/schemas/ServiceBlockInputModel"
        description: ""
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceBlockViewModel"
          description: Success
      summary: Create Block
      tags:
        - Services
  "/setup/v1/services/{id}/blocks":
    get:
      description: <p>Use this endpoint to return a list of <b>Service Blocks</b>. The results are returned in pages. Use the offset and limit parameters to control the page start and number of results. Default offset is 0, limit is 20, max is 100. Use the query parameters to filter the results further.</p>
      parameters:
        - description: id of service to list blocks for
          in: path
          name: id
          required: true
          schema:
            type: string
        - description: Format YYYY-MM-DD. Filter blocks on/after startDate
          in: query
          name: startDate
          schema:
            format: date-time
            type: string
        - description: Format YYYY-MM-DD. Filter on/before endDate
          in: query
          name: endDate
          schema:
            format: date-time
            type: string
        - description: Starting row of page, default 0
          in: query
          name: offset
          schema:
            format: int32
            type: integer
        - description: Page limit default 20, max 100
          in: query
          name: limit
          schema:
            format: int32
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceBlockListViewModel"
          description: service block object's
        "400":
          description: Missing or invalid values in the request
        "401":
          description: Authorization error.
        "404":
          description: Service was not found
      summary: List Service Blocks
      tags:
        - Services
  "/setup/v1/services/{id}/calendar":
    get:
      description: <p>Use this endpoint to <b>Get the Linked Calendar</b> for the service requested. A valid <b>service id</b> is required. A service can only be linked to one calendar in a location.</p>
      parameters:
        - description: id of service object
          in: path
          name: id
          required: true
          schema:
            type: string
        - description: id of business location, defaults to primary business location
          in: query
          name: locationId
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceCalendarViewModel"
          description: Success
      summary: Get Linked Calendar
      tags:
        - Services
  "/setup/v1/services/{id}/deleteimage":
    delete:
      description: <p>Use this endpoint to permanently <b>Delete</b> a previously uploaded service image. A valid <b>service id</b> is required.</p>
      parameters:
        - description: id of service object
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceViewModel"
          description: Success
      summary: Delete Service Image
      tags:
        - Services
  "/setup/v1/services/{id}/recover":
    put:
      description: <p>Use this endpoint to <b>Recover</b> a deleted service object. A valid <b>service id</b> is required.</p>
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceViewModel"
          description: Success
      summary: Recover Service
      tags:
        - Services
  "/setup/v1/services/{id}/resources":
    get:
      description: <p>Use this endpoint to return a list of <b>Resources</b> that provide the requested service. A valid <b>service id</b> is required. Use the offset and limit parameters to control the page start and number of results. Default offset is 0, limit is 20, max is 100. Use the query parameters to filter the results further.</p>
      parameters:
        - description: id of service object
          in: path
          name: id
          required: true
          schema:
            type: string
        - description: Starting row of page, default 0
          in: query
          name: offset
          schema:
            format: int32
            type: integer
        - description: Page limit default 20, max 100
          in: query
          name: limit
          schema:
            format: int32
            type: integer
        - description: Google calendar authorization return url
          in: query
          name: googleAuthReturnUrl
          schema:
            type: string
        - description: Outlook calendar authorization return url
          in: query
          name: outlookAuthReturnUrl
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResourceListViewModel"
          description: Success
      summary: List Resources for Service
      tags:
        - Services
  "/setup/v1/services/{id}/uploadimage":
    post:
      description: <p>Use this endpoint to <b>Upload</b> an image to the service. A valid <b>service id</b> is required. You must convert the image to a <b>base64 encoded string</b> and pass that string as input along with your <b>filename</b>.</p>
      parameters:
        - description: id of service object
          in: path
          name: id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/*+json:
            schema:
              $ref: "#/components/schemas/ServiceImageInputModel"
          application/json:
            schema:
              $ref: "#/components/schemas/ServiceImageInputModel"
          application/json-patch+json:
            schema:
              $ref: "#/components/schemas/ServiceImageInputModel"
          text/json:
            schema:
              $ref: "#/components/schemas/ServiceImageInputModel"
        description: Input model for image upload
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceViewModel"
          description: Success
      summary: Upload Service Image
      tags:
        - Services
components:
  schemas:
    AddressInputModel:
      additionalProperties: false
      properties:
        addressLine1:
          nullable: true
          type: string
        addressLine2:
          nullable: true
          type: string
        city:
          nullable: true
          type: string
        country:
          nullable: true
          type: string
        postalCode:
          nullable: true
          type: string
        state:
          nullable: true
          type: string
      type: object
    AddressUpdateModel:
      additionalProperties: false
      properties:
        addressLine1:
          nullable: true
          type: string
        addressLine2:
          nullable: true
          type: string
        city:
          nullable: true
          type: string
        country:
          nullable: true
          type: string
        postalCode:
          nullable: true
          type: string
        state:
          nullable: true
          type: string
      type: object
    AddressViewModel:
      additionalProperties: false
      properties:
        addressLine1:
          nullable: true
          type: string
        addressLine2:
          nullable: true
          type: string
        city:
          nullable: true
          type: string
        country:
          nullable: true
          type: string
        postalCode:
          nullable: true
          type: string
        state:
          nullable: true
          type: string
      type: object
    AppointmentAuditViewModel:
      additionalProperties: false
      properties:
        appointmentId:
          nullable: true
          type: string
        id:
          nullable: true
          type: string
        modificationType:
          nullable: true
          type: string
        modifiedBy:
          nullable: true
          type: string
        modifiedOn:
          nullable: true
          type: string
        notesAfter:
          nullable: true
          type: string
        notesBefore:
          nullable: true
          type: string
        statusAfter:
          nullable: true
          type: string
        statusBefore:
          nullable: true
          type: string
      type: object
    AppointmentCustomerViewModel:
      additionalProperties: false
      properties:
        appointmentId:
          nullable: true
          type: string
        customerId:
          nullable: true
          type: string
      type: object
    AppointmentListViewModel:
      additionalProperties: false
      properties:
        count:
          format: int32
          type: integer
        data:
          items:
            $ref: "#/components/schemas/AppointmentViewModel"
          nullable: true
          type: array
        hasMore:
          type: boolean
        object:
          nullable: true
          type: string
        total:
          format: int32
          type: integer
        url:
          nullable: true
          type: string
      type: object
    AppointmentReminderViewModel:
      additionalProperties: false
      properties:
        emailFirstReminder:
          format: int32
          type: integer
        emailFirstReminderInterval:
          format: int32
          type: integer
        emailSecondReminder:
          format: int32
          type: integer
        emailSecondReminderInterval:
          format: int32
          type: integer
        smsFirstReminder:
          format: int32
          type: integer
        smsFirstReminderInterval:
          format: int32
          type: integer
        smsSecondReminder:
          format: int32
          type: integer
        smsSecondReminderInterval:
          format: int32
          type: integer
      type: object
    AppointmentRemindersInputModel:
      additionalProperties: false
      properties:
        emailFirstReminder:
          format: int32
          nullable: true
          type: integer
        emailFirstReminderInterval:
          format: int32
          type: integer
        emailSecondReminder:
          format: int32
          nullable: true
          type: integer
        emailSecondReminderInterval:
          format: int32
          type: integer
        smsFirstReminder:
          format: int32
          nullable: true
          type: integer
        smsFirstReminderInterval:
          format: int32
          type: integer
        smsSecondReminder:
          format: int32
          nullable: true
          type: integer
        smsSecondReminderInterval:
          format: int32
          type: integer
      type: object
    AppointmentResourceViewModel:
      additionalProperties: false
      properties:
        appointmentId:
          nullable: true
          type: string
        resourceEmail:
          nullable: true
          type: string
        resourceGroupId:
          nullable: true
          type: string
        resourceId:
          nullable: true
          type: string
        resourceImageUrl:
          nullable: true
          type: string
        resourceName:
          nullable: true
          type: string
      type: object
    AppointmentViewModel:
      additionalProperties: false
      properties:
        auditTrail:
          items:
            $ref: "#/components/schemas/AppointmentAuditViewModel"
          nullable: true
          type: array
        bookedBy:
          nullable: true
          type: string
        businessName:
          nullable: true
          type: string
        calendarId:
          nullable: true
          type: string
        confirmationNumber:
          nullable: true
          type: string
        confirmed:
          type: boolean
        createDate:
          nullable: true
          type: string
        customFields:
          additionalProperties:
            $ref: "#/components/schemas/CustomFieldViewModel"
          nullable: true
          type: object
        customerId:
          nullable: true
          type: string
        customerMessage:
          nullable: true
          type: string
        customers:
          items:
            $ref: "#/components/schemas/AppointmentCustomerViewModel"
          nullable: true
          type: array
        date:
          nullable: true
          type: string
        dateInternational:
          nullable: true
          type: string
        downloadIcsUrl:
          nullable: true
          type: string
        duration:
          format: int32
          type: integer
        email:
          nullable: true
          type: string
        emailConfirmationSent:
          nullable: true
          type: string
        emailReminderSent:
          nullable: true
          type: string
        endDateTime:
          nullable: true
          type: string
        firstname:
          nullable: true
          type: string
        groupSize:
          format: int32
          nullable: true
          type: integer
        id:
          nullable: true
          type: string
        ipAddress:
          nullable: true
          type: string
        lastModifiedBy:
          nullable: true
          type: string
        lastModifiedOn:
          nullable: true
          type: string
        lastname:
          nullable: true
          type: string
        latitude:
          nullable: true
          type: string
        location:
          nullable: true
          type: string
        locationId:
          nullable: true
          type: string
        longitude:
          nullable: true
          type: string
        name:
          nullable: true
          type: string
        notes:
          nullable: true
          type: string
        object:
          nullable: true
          type: string
        onlineBooking:
          nullable: true
          type: boolean
        paymentStatus:
          format: int32
          type: integer
        phone:
          nullable: true
          type: string
        phoneExt:
          nullable: true
          type: string
        phoneType:
          nullable: true
          type: string
        rescheduledId:
          nullable: true
          type: string
        resourceEmail:
          nullable: true
          type: string
        resourceGroupId:
          nullable: true
          type: string
        resourceGroupName:
          nullable: true
          type: string
        resourceId:
          nullable: true
          type: string
        resourceImageUrl:
          nullable: true
          type: string
        resourceName:
          nullable: true
          type: string
        resources:
          items:
            $ref: "#/components/schemas/AppointmentResourceViewModel"
          nullable: true
          type: array
        serviceAllocationId:
          nullable: true
          type: string
        serviceId:
          nullable: true
          type: string
        serviceImageUrl:
          nullable: true
          type: string
        serviceName:
          nullable: true
          type: string
        smsConfirmationSent:
          nullable: true
          type: string
        smsReminderSent:
          nullable: true
          type: string
        startDateTime:
          nullable: true
          type: string
        status:
          nullable: true
          type: string
        stripeChargeId:
          nullable: true
          type: string
        stripeRefundId:
          nullable: true
          type: string
        time:
          format: int32
          type: integer
        timezone:
          format: int32
          nullable: true
          type: integer
        timezoneIana:
          nullable: true
          type: string
        timezoneId:
          nullable: true
          type: string
      type: object
    AuthorizedCompanyListViewModel:
      additionalProperties: false
      properties:
        count:
          format: int32
          type: integer
        data:
          items:
            $ref: "#/components/schemas/AuthorizedCompanyViewModel"
          nullable: true
          type: array
        email:
          nullable: true
          type: string
        hasMore:
          type: boolean
        object:
          nullable: true
          type: string
        total:
          format: int32
          type: integer
        url:
          nullable: true
          type: string
      type: object
    AuthorizedCompanyViewModel:
      additionalProperties: false
      properties:
        id:
          nullable: true
          type: string
        name:
          nullable: true
          type: string
        object:
          nullable: true
          type: string
      type: object
    AvailabilityInputModel:
      additionalProperties: false
      properties:
        fri:
          $ref: "#/components/schemas/WeekDayInputModel"
        mon:
          $ref: "#/components/schemas/WeekDayInputModel"
        sat:
          $ref: "#/components/schemas/WeekDayInputModel"
        sun:
          $ref: "#/components/schemas/WeekDayInputModel"
        thu:
          $ref: "#/components/schemas/WeekDayInputModel"
        tue:
          $ref: "#/components/schemas/WeekDayInputModel"
        wed:
          $ref: "#/components/schemas/WeekDayInputModel"
      type: object
    AvailabilityViewModel2:
      additionalProperties: false
      properties:
        fri:
          $ref: "#/components/schemas/WeekDayViewModel2"
        mon:
          $ref: "#/components/schemas/WeekDayViewModel2"
        sat:
          $ref: "#/components/schemas/WeekDayViewModel2"
        sun:
          $ref: "#/components/schemas/WeekDayViewModel2"
        thu:
          $ref: "#/components/schemas/WeekDayViewModel2"
        tue:
          $ref: "#/components/schemas/WeekDayViewModel2"
        wed:
          $ref: "#/components/schemas/WeekDayViewModel2"
      type: object
    BusinessDefaultsInputModel:
      additionalProperties: false
      properties:
        autoUpdateCustomer:
          nullable: true
          type: boolean
        businessNotification:
          nullable: true
          type: boolean
        customerCity:
          nullable: true
          type: boolean
        customerState:
          nullable: true
          type: boolean
        emailInfo:
          nullable: true
          type: boolean
        enableUtcTimezone:
          nullable: true
          type: boolean
      type: object
    BusinessDefaultsUpdateModel:
      additionalProperties: false
      properties:
        autoUpdateCustomer:
          nullable: true
          type: boolean
        businessNotification:
          nullable: true
          type: boolean
        customerCity:
          nullable: true
          type: boolean
        customerState:
          nullable: true
          type: boolean
        emailInfo:
          nullable: true
          type: boolean
        enableUtcTimezone:
          nullable: true
          type: boolean
      type: object
    BusinessDefaultsViewModel:
      additionalProperties: false
      properties:
        autoUpdateCustomer:
          nullable: true
          type: boolean
        businessNotification:
          nullable: true
          type: boolean
        customerCity:
          nullable: true
          type: boolean
        customerState:
          nullable: true
          type: boolean
        emailInfo:
          nullable: true
          type: boolean
        enableUtcTimezone:
          nullable: true
          type: boolean
        object:
          nullable: true
          type: string
      type: object
    BusinessHolidayViewModel:
      additionalProperties: false
      properties:
        businessClosed:
          type: boolean
        holidayName:
          nullable: true
          type: string
        id:
          nullable: true
          type: string
        publicHolidayId:
          format: int32
          type: integer
      type: object
    BusinessHourInputModel:
      additionalProperties: false
      properties:
        endTime:
          description: "endTime is entered in military format. e.g. 1800 = 6pm end, 2400 = midnight end of day.\r

            For 24 hours enter startTime = 0 and endTime = 2400"
          format: int32
          type: integer
        is24Hours:
          description: If true then available for 24 hours. startTime must be zero and endTime must be 2400.
          type: boolean
        isOpen:
          description: If false, then not available entire day, starTime and endTime must both be zero. If true, then available between startTime and endTime.
          type: boolean
        startTime:
          description: startTime is entered in military format. e.g. 0 = midnight start, 900 = 9am start
          format: int32
          type: integer
      type: object
    BusinessHourViewModel:
      additionalProperties: false
      properties:
        endTime:
          format: int32
          type: integer
        is24Hours:
          type: boolean
        isOpen:
          type: boolean
        startTime:
          format: int32
          type: integer
      type: object
    BusinessHoursInputModel:
      additionalProperties: false
      properties:
        fri:
          $ref: "#/components/schemas/BusinessHourInputModel"
        mon:
          $ref: "#/components/schemas/BusinessHourInputModel"
        sat:
          $ref: "#/components/schemas/BusinessHourInputModel"
        sun:
          $ref: "#/components/schemas/BusinessHourInputModel"
        thu:
          $ref: "#/components/schemas/BusinessHourInputModel"
        tue:
          $ref: "#/components/schemas/BusinessHourInputModel"
        wed:
          $ref: "#/components/schemas/BusinessHourInputModel"
      type: object
    BusinessHoursUpdateModel:
      additionalProperties: false
      properties:
        fri:
          $ref: "#/components/schemas/BusinessHourInputModel"
        mon:
          $ref: "#/components/schemas/BusinessHourInputModel"
        sat:
          $ref: "#/components/schemas/BusinessHourInputModel"
        sun:
          $ref: "#/components/schemas/BusinessHourInputModel"
        thu:
          $ref: "#/components/schemas/BusinessHourInputModel"
        tue:
          $ref: "#/components/schemas/BusinessHourInputModel"
        wed:
          $ref: "#/components/schemas/BusinessHourInputModel"
      type: object
    BusinessHoursViewModel:
      additionalProperties: false
      properties:
        fri:
          $ref: "#/components/schemas/BusinessHourViewModel"
        mon:
          $ref: "#/components/schemas/BusinessHourViewModel"
        sat:
          $ref: "#/components/schemas/BusinessHourViewModel"
        sun:
          $ref: "#/components/schemas/BusinessHourViewModel"
        thu:
          $ref: "#/components/schemas/BusinessHourViewModel"
        tue:
          $ref: "#/components/schemas/BusinessHourViewModel"
        wed:
          $ref: "#/components/schemas/BusinessHourViewModel"
      type: object
    BusinessPermissionListViewModel:
      additionalProperties: false
      properties:
        count:
          format: int32
          type: integer
        data:
          items:
            $ref: "#/components/schemas/BusinessPermissionViewModel"
          nullable: true
          type: array
        hasMore:
          type: boolean
        object:
          nullable: true
          type: string
        total:
          format: int32
          type: integer
        url:
          nullable: true
          type: string
      type: object
    BusinessPermissionViewModel:
      additionalProperties: false
      properties:
        access:
          nullable: true
          type: string
        function:
          nullable: true
          type: string
        object:
          nullable: true
          type: string
        role:
          nullable: true
          type: string
      type: object
    BusinessServiceListViewModel:
      additionalProperties: false
      properties:
        count:
          format: int32
          type: integer
        data:
          items:
            $ref: "#/components/schemas/BusinessServiceViewModel"
          nullable: true
          type: array
        hasMore:
          type: boolean
        object:
          nullable: true
          type: string
        total:
          format: int32
          type: integer
        url:
          nullable: true
          type: string
      type: object
    BusinessServiceViewModel:
      additionalProperties: false
      properties:
        id:
          format: int32
          type: integer
        object:
          nullable: true
          type: string
        serviceId:
          format: int32
          type: integer
        serviceName:
          nullable: true
          type: string
      type: object
    BusinessUserInputModel:
      additionalProperties: false
      properties:
        email:
          nullable: true
          type: string
        locationId:
          nullable: true
          type: string
        name:
          nullable: true
          type: string
        resourceId:
          nullable: true
          type: string
        role:
          nullable: true
          type: string
        sendRegistrationInvite:
          type: boolean
      type: object
    BusinessUserListViewModel:
      additionalProperties: false
      properties:
        count:
          format: int32
          type: integer
        data:
          items:
            $ref: "#/components/schemas/BusinessUserViewModel"
          nullable: true
          type: array
        hasMore:
          type: boolean
        object:
          nullable: true
          type: string
        total:
          format: int32
          type: integer
        url:
          nullable: true
          type: string
      type: object
    BusinessUserPermissionViewModel:
      additionalProperties: false
      properties:
        access:
          nullable: true
          type: string
        function:
          nullable: true
          type: string
        object:
          nullable: true
          type: string
      type: object
    BusinessUserUpdateModel:
      additionalProperties: false
      properties:
        email:
          nullable: true
          type: string
        name:
          nullable: true
          type: string
        resourceId:
          nullable: true
          type: string
        role:
          nullable: true
          type: string
        sendRegistrationInvite:
          type: boolean
      type: object
    BusinessUserViewModel:
      additionalProperties: false
      properties:
        accountId:
          format: uuid
          nullable: true
          type: string
        businessName:
          nullable: true
          type: string
        email:
          nullable: true
          type: string
        id:
          nullable: true
          type: string
        identityAccount:
          type: boolean
        locationId:
          nullable: true
          type: string
        name:
          nullable: true
          type: string
        object:
          nullable: true
          type: string
        permissions:
          items:
            $ref: "#/components/schemas/BusinessUserPermissionViewModel"
          nullable: true
          type: array
        resourceId:
          nullable: true
          type: string
        resourceName:
          nullable: true
          type: string
        role:
          nullable: true
          type: string
      type: object
    CalendarAuthViewModel:
      additionalProperties: false
      properties:
        calendarAuthUrl:
          nullable: true
          type: string
        calendarId:
          nullable: true
          type: string
        object:
          nullable: true
          type: string
      type: object
    CalendarBlockInputModel:
      additionalProperties: false
      properties:
        endDate:
          format: date
          nullable: true
          type: string
        endTime:
          format: int32
          nullable: true
          type: integer
        reason:
          nullable: true
          type: string
        repeat:
          $ref: "#/components/schemas/RepeatInputModel"
        repeats:
          nullable: true
          type: boolean
        startDate:
          format: date
          nullable: true
          type: string
        startTime:
          format: int32
          nullable: true
          type: integer
      type: object
    CalendarBlockListViewModel:
      additionalProperties: false
      properties:
        count:
          format: int32
          type: integer
        data:
          items:
            $ref: "#/components/schemas/CalendarBlockViewModel"
          nullable: true
          type: array
        hasMore:
          type: boolean
        object:
          nullable: true
          type: string
        total:
          format: int32
          type: integer
        url:
          nullable: true
          type: string
      type: object
    CalendarBlockUpdateModel:
      additionalProperties: false
      properties:
        endDate:
          format: date
          nullable: true
          type: string
        endTime:
          format: int32
          nullable: true
          type: integer
        reason:
          nullable: true
          type: string
        repeat:
          $ref: "#/components/schemas/RepeatInputModel"
        repeats:
          nullable: true
          type: boolean
        startDate:
          format: date
          nullable: true
          type: string
        startTime:
          format: int32
          nullable: true
          type: integer
      type: object
    CalendarBlockViewModel:
      additionalProperties: false
      properties:
        calendarId:
          nullable: true
          type: string
        deletedStatus:
          type: boolean
        deletedTime:
          nullable: true
          type: string
        endDate:
          nullable: true
          type: string
        endTime:
          format: int32
          type: integer
        id:
          nullable: true
          type: string
        locationId:
          nullable: true
          type: string
        object:
          nullable: true
          type: string
        reason:
          nullable: true
          type: string
        repeat:
          $ref: "#/components/schemas/RepeatViewModel"
        repeats:
          type: boolean
        startDate:
          nullable: true
          type: string
        startTime:
          format: int32
          type: integer
      type: object
    CalendarHourViewModel:
      additionalProperties: false
      properties:
        endTime:
          format: int32
          type: integer
        startTime:
          format: int32
          type: integer
      type: object
    CalendarHoursViewModel:
      additionalProperties: false
      properties:
        fri:
          $ref: "#/components/schemas/CalendarHourViewModel"
        mon:
          $ref: "#/components/schemas/CalendarHourViewModel"
        sat:
          $ref: "#/components/schemas/CalendarHourViewModel"
        sun:
          $ref: "#/components/schemas/CalendarHourViewModel"
        thu:
          $ref: "#/components/schemas/CalendarHourViewModel"
        tue:
          $ref: "#/components/schemas/CalendarHourViewModel"
        wed:
          $ref: "#/components/schemas/CalendarHourViewModel"
      type: object
    CompanyDomainInputModel:
      additionalProperties: false
      properties:
        domain:
          nullable: true
          type: string
      type: object
    CompanyDomainListViewModel:
      additionalProperties: false
      properties:
        data:
          items:
            $ref: "#/components/schemas/CompanyDomainViewModel"
          nullable: true
          type: array
        object:
          nullable: true
          type: string
        url:
          nullable: true
          type: string
      type: object
    CompanyDomainUpdateModel:
      additionalProperties: false
      properties:
        domain:
          nullable: true
          type: string
      type: object
    CompanyDomainViewModel:
      additionalProperties: false
      properties:
        domain:
          nullable: true
          type: string
        id:
          nullable: true
          type: string
        object:
          nullable: true
          type: string
      type: object
    CompanyInputModel:
      additionalProperties: false
      properties:
        addressLine1:
          nullable: true
          type: string
        addressLine2:
          nullable: true
          type: string
        bookingWebhookUrl:
          nullable: true
          type: string
        city:
          nullable: true
          type: string
        country:
          nullable: true
          type: string
        customerWebhookUrl:
          nullable: true
          type: string
        disableEmailAndSmsNotifications:
          nullable: true
          type: boolean
        email:
          nullable: true
          type: string
        fax:
          nullable: true
          type: string
        name:
          nullable: true
          type: string
        notificationFromEmailAddress:
          nullable: true
          type: string
        notificationFromName:
          nullable: true
          type: string
        phone:
          nullable: true
          type: string
        postalCode:
          nullable: true
          type: string
        registrationEmail:
          nullable: true
          type: string
        reminderWebhookUrl:
          nullable: true
          type: string
        resourceWebhookUrl:
          nullable: true
          type: string
        state:
          nullable: true
          type: string
        timezoneName:
          nullable: true
          type: string
        webhookSignatureHash:
          nullable: true
          type: string
        website:
          nullable: true
          type: string
      type: object
    CompanyUpdateModel:
      additionalProperties: false
      properties:
        addressLine1:
          nullable: true
          type: string
        addressLine2:
          nullable: true
          type: string
        bookingWebhookUrl:
          nullable: true
          type: string
        city:
          nullable: true
          type: string
        country:
          nullable: true
          type: string
        customerWebhookUrl:
          nullable: true
          type: string
        disableEmailAndSmsNotifications:
          nullable: true
          type: boolean
        email:
          nullable: true
          type: string
        fax:
          nullable: true
          type: string
        name:
          nullable: true
          type: string
        notificationFromEmailAddress:
          nullable: true
          type: string
        notificationFromName:
          nullable: true
          type: string
        phone:
          nullable: true
          type: string
        postalCode:
          nullable: true
          type: string
        registrationEmail:
          nullable: true
          type: string
        reminderWebhookUrl:
          nullable: true
          type: string
        resourceWebhookUrl:
          nullable: true
          type: string
        state:
          nullable: true
          type: string
        timezoneName:
          nullable: true
          type: string
        webhookSignatureHash:
          nullable: true
          type: string
        website:
          nullable: true
          type: string
      type: object
    CompanyViewModel:
      additionalProperties: false
      properties:
        addressLine1:
          nullable: true
          type: string
        addressLine2:
          nullable: true
          type: string
        bookingWebhookUrl:
          nullable: true
          type: string
        city:
          nullable: true
          type: string
        clientId:
          nullable: true
          type: string
        clientSecret:
          nullable: true
          type: string
        country:
          nullable: true
          type: string
        customerWebhookUrl:
          nullable: true
          type: string
        deletedStatus:
          type: boolean
        deletedTime:
          nullable: true
          type: string
        disableEmailAndSmsNotifications:
          type: boolean
        email:
          nullable: true
          type: string
        fax:
          nullable: true
          type: string
        id:
          nullable: true
          type: string
        name:
          nullable: true
          type: string
        notificationFromEmailAddress:
          nullable: true
          type: string
        notificationFromName:
          nullable: true
          type: string
        object:
          nullable: true
          type: string
        phone:
          nullable: true
          type: string
        postalCode:
          nullable: true
          type: string
        registrationDate:
          nullable: true
          type: string
        registrationEmail:
          nullable: true
          type: string
        reminderWebhookUrl:
          nullable: true
          type: string
        resourceWebhookUrl:
          nullable: true
          type: string
        state:
          nullable: true
          type: string
        timezoneId:
          nullable: true
          type: string
        timezoneName:
          nullable: true
          type: string
        webhookSignatureHash:
          nullable: true
          type: string
        website:
          nullable: true
          type: string
      type: object
    ContactInputModel:
      additionalProperties: false
      properties:
        businessPhone:
          nullable: true
          type: string
        businessPhoneExt:
          nullable: true
          type: string
        conferenceInfo:
          nullable: true
          type: string
        homePhone:
          nullable: true
          type: string
        mobilePhone:
          nullable: true
          type: string
        preferredPhoneType:
          nullable: true
          type: string
        skypeUsername:
          nullable: true
          type: string
      type: object
    ContactUpdateModel:
      additionalProperties: false
      properties:
        businessPhone:
          nullable: true
          type: string
        businessPhoneExt:
          nullable: true
          type: string
        conferenceInfo:
          nullable: true
          type: string
        homePhone:
          nullable: true
          type: string
        mobilePhone:
          nullable: true
          type: string
        preferredPhoneType:
          nullable: true
          type: string
        skypeUsername:
          nullable: true
          type: string
      type: object
    ContactViewModel:
      additionalProperties: false
      properties:
        businessPhone:
          nullable: true
          type: string
        businessPhoneExt:
          nullable: true
          type: string
        conferenceInfo:
          nullable: true
          type: string
        homePhone:
          nullable: true
          type: string
        mobilePhone:
          nullable: true
          type: string
        phoneType:
          nullable: true
          type: string
        skypeUsername:
          nullable: true
          type: string
      type: object
    ContentResult:
      additionalProperties: false
      properties:
        content:
          nullable: true
          type: string
        contentType:
          nullable: true
          type: string
        statusCode:
          format: int32
          nullable: true
          type: integer
      type: object
    CustomFieldInputModel:
      additionalProperties: false
      properties:
        field1:
          nullable: true
          type: string
        field10:
          nullable: true
          type: string
        field2:
          nullable: true
          type: string
        field3:
          nullable: true
          type: string
        field4:
          nullable: true
          type: string
        field5:
          nullable: true
          type: string
        field6:
          nullable: true
          type: string
        field7:
          nullable: true
          type: string
        field8:
          nullable: true
          type: string
        field9:
          nullable: true
          type: string
      type: object
    CustomFieldUpdateModel:
      additionalProperties: false
      properties:
        field1:
          nullable: true
          type: string
        field10:
          nullable: true
          type: string
        field2:
          nullable: true
          type: string
        field3:
          nullable: true
          type: string
        field4:
          nullable: true
          type: string
        field5:
          nullable: true
          type: string
        field6:
          nullable: true
          type: string
        field7:
          nullable: true
          type: string
        field8:
          nullable: true
          type: string
        field9:
          nullable: true
          type: string
      type: object
    CustomFieldViewModel:
      additionalProperties: false
      properties:
        name:
          nullable: true
          type: string
        value:
          nullable: true
          type: string
      type: object
    CustomerListViewModel:
      additionalProperties: false
      properties:
        count:
          format: int32
          type: integer
        data:
          items:
            $ref: "#/components/schemas/CustomerViewModel"
          nullable: true
          type: array
        hasMore:
          type: boolean
        object:
          nullable: true
          type: string
        total:
          format: int32
          type: integer
        url:
          nullable: true
          type: string
      type: object
    CustomerPrivacyViewModel:
      additionalProperties: false
      properties:
        appointments:
          items:
            $ref: "#/components/schemas/AppointmentViewModel"
          nullable: true
          type: array
        customer:
          $ref: "#/components/schemas/CustomerViewModel"
      type: object
    CustomerViewModel:
      additionalProperties: false
      properties:
        address:
          $ref: "#/components/schemas/AddressViewModel"
        birthdate:
          nullable: true
          type: string
        businessName:
          nullable: true
          type: string
        companyName:
          nullable: true
          type: string
        contact:
          $ref: "#/components/schemas/ContactViewModel"
        createdBy:
          nullable: true
          type: string
        createdOn:
          nullable: true
          type: string
        customFields:
          additionalProperties:
            $ref: "#/components/schemas/CustomFieldViewModel"
          nullable: true
          type: object
        deletedStatus:
          type: boolean
        deletedTime:
          nullable: true
          type: string
        disabled:
          nullable: true
          type: boolean
        email:
          nullable: true
          type: string
        emailInfo:
          nullable: true
          type: boolean
        emailPromotion:
          nullable: true
          type: boolean
        firstname:
          nullable: true
          type: string
        gender:
          nullable: true
          type: string
        groupId:
          nullable: true
          type: string
        id:
          nullable: true
          type: string
        inviteEmailSent:
          nullable: true
          type: string
        lastVisitDate:
          nullable: true
          type: string
        lastname:
          nullable: true
          type: string
        latitude:
          nullable: true
          type: string
        locationId:
          nullable: true
          type: string
        longitude:
          nullable: true
          type: string
        modifiedBy:
          nullable: true
          type: string
        modifiedOn:
          nullable: true
          type: string
        name:
          nullable: true
          type: string
        notificationType:
          nullable: true
          type: string
        object:
          nullable: true
          type: string
        registeredBy:
          nullable: true
          type: string
        registrationDate:
          nullable: true
          type: string
        resourceId:
          nullable: true
          type: string
        stripeCustomerId:
          nullable: true
          type: string
        subscriptionId:
          nullable: true
          type: string
        verificationDate:
          nullable: true
          type: string
        verifiedBy:
          nullable: true
          type: string
        welcomeEmailSent:
          nullable: true
          type: string
      type: object
    EmailTemplateInputModel:
      additionalProperties: false
      properties:
        templateContent:
          nullable: true
          type: string
        templateName:
          nullable: true
          type: string
      type: object
    EmailTemplateListViewModel:
      additionalProperties: false
      properties:
        data:
          items:
            $ref: "#/components/schemas/EmailTemplateViewModel"
          nullable: true
          type: array
        object:
          nullable: true
          type: string
        total:
          format: int32
          type: integer
        url:
          nullable: true
          type: string
      type: object
    EmailTemplateViewModel:
      additionalProperties: false
      properties:
        customized:
          type: boolean
        description:
          nullable: true
          type: string
        name:
          nullable: true
          type: string
        object:
          nullable: true
          type: string
        scope:
          nullable: true
          type: string
      type: object
    GoogleServiceAccountCreds:
      additionalProperties: false
      properties:
        auth_provider_x509_cert_url:
          nullable: true
          type: string
        auth_uri:
          nullable: true
          type: string
        client_email:
          nullable: true
          type: string
        client_id:
          nullable: true
          type: string
        client_x509_cert_url:
          nullable: true
          type: string
        private_key:
          nullable: true
          type: string
        private_key_id:
          nullable: true
          type: string
        project_id:
          nullable: true
          type: string
        token_uri:
          nullable: true
          type: string
        type:
          nullable: true
          type: string
      type: object
    LocationInputModel:
      additionalProperties: false
      properties:
        address:
          $ref: "#/components/schemas/AddressInputModel"
        adminEmail:
          description: Field is required.
          nullable: true
          type: string
        adminName:
          description: This field is no longer required and has been deprecated.
          nullable: true
          type: string
        appointmentReminders:
          $ref: "#/components/schemas/AppointmentRemindersInputModel"
        businessHours:
          $ref: "#/components/schemas/BusinessHoursInputModel"
        defaults:
          $ref: "#/components/schemas/BusinessDefaultsInputModel"
        email:
          nullable: true
          type: string
        fax:
          nullable: true
          type: string
        friendlyId:
          description: "Use the friendlyId as an alternative to the assigned locationId\r

            Choose something easy and meaningful. Must be unique within your company.\r

            FriendlyId's are limited to maximum of 64 characters."
          nullable: true
          type: string
        name:
          nullable: true
          type: string
        phone:
          description: "GroupSize Limits the number of people that can come\r

            along on a single appointment"
          nullable: true
          type: string
        regionId:
          nullable: true
          type: string
        settings:
          $ref: "#/components/schemas/OnlineSettingsInputModel"
        timezoneName:
          description: Field is required. It is in Iana format. e.g. America/New_York. Use moment.js in your client for ease of timezone detection and selection
          nullable: true
          type: string
        website:
          nullable: true
          type: string
      type: object
    LocationListViewModel:
      additionalProperties: false
      properties:
        count:
          format: int32
          type: integer
        data:
          items:
            $ref: "#/components/schemas/LocationViewModel"
          nullable: true
          type: array
        hasMore:
          type: boolean
        object:
          nullable: true
          type: string
        total:
          format: int32
          type: integer
        url:
          nullable: true
          type: string
      type: object
    LocationUpdateModel:
      additionalProperties: false
      properties:
        address:
          $ref: "#/components/schemas/AddressUpdateModel"
        adminEmail:
          nullable: true
          type: string
        adminName:
          nullable: true
          type: string
        appointmentReminders:
          $ref: "#/components/schemas/AppointmentRemindersInputModel"
        businessHours:
          $ref: "#/components/schemas/BusinessHoursUpdateModel"
        defaults:
          $ref: "#/components/schemas/BusinessDefaultsUpdateModel"
        email:
          nullable: true
          type: string
        fax:
          nullable: true
          type: string
        friendlyId:
          nullable: true
          type: string
        name:
          nullable: true
          type: string
        phone:
          nullable: true
          type: string
        regionId:
          nullable: true
          type: string
        settings:
          $ref: "#/components/schemas/OnlineSettingsUpdateModel"
        timezoneName:
          nullable: true
          type: string
        website:
          nullable: true
          type: string
      type: object
    LocationViewModel:
      additionalProperties: false
      properties:
        address:
          $ref: "#/components/schemas/AddressViewModel"
        adminEmail:
          nullable: true
          type: string
        adminName:
          nullable: true
          type: string
        appointmentReminders:
          $ref: "#/components/schemas/AppointmentReminderViewModel"
        businessHolidays:
          items:
            $ref: "#/components/schemas/BusinessHolidayViewModel"
          nullable: true
          type: array
        businessHours:
          $ref: "#/components/schemas/BusinessHoursViewModel"
        companyId:
          nullable: true
          type: string
        companyName:
          nullable: true
          type: string
        defaults:
          $ref: "#/components/schemas/BusinessDefaultsViewModel"
        email:
          nullable: true
          type: string
        fax:
          nullable: true
          type: string
        friendlyId:
          nullable: true
          type: string
        id:
          nullable: true
          type: string
        imageUrl:
          nullable: true
          type: string
        latitude:
          format: double
          type: number
        logo:
          nullable: true
          type: string
        longitude:
          format: double
          type: number
        name:
          nullable: true
          type: string
        object:
          nullable: true
          type: string
        phone:
          nullable: true
          type: string
        primaryBusiness:
          type: boolean
        primaryCalendarId:
          nullable: true
          type: string
        regionId:
          nullable: true
          type: string
        services:
          items:
            $ref: "#/components/schemas/BusinessServiceViewModel"
          nullable: true
          type: array
        settings:
          $ref: "#/components/schemas/OnlineSettingsViewModel"
        timezoneIana:
          nullable: true
          type: string
        timezoneId:
          nullable: true
          type: string
        timezoneOffset:
          format: int32
          nullable: true
          type: integer
        travel:
          $ref: "#/components/schemas/TravelViewModel"
        website:
          nullable: true
          type: string
      type: object
    LocationsInputModel:
      additionalProperties: false
      properties:
        locations:
          items:
            $ref: "#/components/schemas/LocationInputModel"
          nullable: true
          type: array
      type: object
    MasterEmailTemplateSettingsViewModel:
      additionalProperties: false
      properties:
        centerEmailContent:
          type: boolean
        centerEmailContentPanel:
          type: boolean
        centerEmailFooter:
          type: boolean
        contentBackgroundColor:
          nullable: true
          type: string
        contentColor:
          nullable: true
          type: string
        contentLinkColor:
          nullable: true
          type: string
        emailBackgroundColor:
          nullable: true
          type: string
        emailColor:
          nullable: true
          type: string
        emailLinkColor:
          nullable: true
          type: string
        footerFontSize:
          nullable: true
          type: string
        footerLogoHeight:
          nullable: true
          type: string
        footerLogoPadding:
          nullable: true
          type: string
        footerPanelEmailContact:
          type: boolean
        footerPanelPhoneContact:
          type: boolean
        footerPanelWebsiteContact:
          type: boolean
        headerLogoHeight:
          nullable: true
          type: string
        headerLogoPadding:
          nullable: true
          type: string
        panelBackgroundColor:
          nullable: true
          type: string
        panelColor:
          nullable: true
          type: string
        panelLinkColor:
          nullable: true
          type: string
        privacyPolicyLink:
          nullable: true
          type: string
        showContentPanel:
          type: boolean
        showFooterLogo:
          type: boolean
        showFooterPanel:
          type: boolean
        showHeaderLogo:
          type: boolean
        showHeaderPanel:
          type: boolean
        version:
          nullable: true
          type: string
      type: object
    MasterTemplateSettingsInputModel:
      additionalProperties: false
      properties:
        centerEmailContent:
          nullable: true
          type: boolean
        centerEmailContentPanel:
          nullable: true
          type: boolean
        centerEmailFooter:
          nullable: true
          type: boolean
        contentBackgroundColor:
          nullable: true
          type: string
        contentColor:
          nullable: true
          type: string
        contentLinkColor:
          nullable: true
          type: string
        emailBackgroundColor:
          nullable: true
          type: string
        emailColor:
          nullable: true
          type: string
        emailLinkColor:
          nullable: true
          type: string
        footerFontSize:
          nullable: true
          type: string
        footerLogoHeight:
          nullable: true
          type: string
        footerLogoPadding:
          nullable: true
          type: string
        footerPanelEmailContact:
          nullable: true
          type: boolean
        footerPanelPhoneContact:
          nullable: true
          type: boolean
        footerPanelWebsiteContact:
          nullable: true
          type: boolean
        headerLogoHeight:
          nullable: true
          type: string
        headerLogoPadding:
          nullable: true
          type: string
        panelBackgroundColor:
          nullable: true
          type: string
        panelColor:
          nullable: true
          type: string
        panelLinkColor:
          nullable: true
          type: string
        privacyPolicyLink:
          nullable: true
          type: string
        showContentPanel:
          nullable: true
          type: boolean
        showFooterLogo:
          nullable: true
          type: boolean
        showFooterPanel:
          nullable: true
          type: boolean
        showHeaderLogo:
          nullable: true
          type: boolean
        showHeaderPanel:
          nullable: true
          type: boolean
      type: object
    OnlineSettingsInputModel:
      additionalProperties: false
      properties:
        bookAheadUnit:
          format: int32
          nullable: true
          type: integer
        bookAheadValue:
          format: int32
          nullable: true
          type: integer
        bookInAdvance:
          format: int32
          nullable: true
          type: integer
        bookingTimerMins:
          format: int32
          nullable: true
          type: integer
        customerBookingsPerDay:
          format: int32
          nullable: true
          type: integer
        enableWorldTimezones:
          nullable: true
          type: boolean
      type: object
    OnlineSettingsUpdateModel:
      additionalProperties: false
      properties:
        bookAheadUnit:
          format: int32
          nullable: true
          type: integer
        bookAheadValue:
          format: int32
          nullable: true
          type: integer
        bookInAdvance:
          format: int32
          nullable: true
          type: integer
        bookingTimerMins:
          format: int32
          nullable: true
          type: integer
        customerBookingsPerDay:
          format: int32
          nullable: true
          type: integer
        enableWorldTimezones:
          nullable: true
          type: boolean
      type: object
    OnlineSettingsViewModel:
      additionalProperties: false
      properties:
        availabilityForm:
          format: int32
          type: integer
        bookAheadUnit:
          format: int32
          type: integer
        bookAheadValue:
          format: int32
          type: integer
        bookInAdvance:
          format: int32
          type: integer
        bookWithAccount:
          type: boolean
        bookingConfirmationMessage:
          nullable: true
          type: string
        bookingMessage:
          nullable: true
          type: string
        bookingPolicy:
          nullable: true
          type: string
        bookingTimerMins:
          format: int32
          type: integer
        businessId:
          nullable: true
          type: string
        companyId:
          nullable: true
          type: string
        customerBookingsPerDay:
          format: int32
          type: integer
        customerVerification:
          type: boolean
        defaultService:
          nullable: true
          type: boolean
        defaultToCustomerTimezone:
          type: boolean
        disableAuthorization:
          nullable: true
          type: boolean
        enableWorldTimezones:
          nullable: true
          type: boolean
        enabled:
          type: boolean
        familyMembersEnabled:
          type: boolean
        firstAvailable:
          nullable: true
          type: boolean
        formFlow:
          format: int32
          type: integer
        hideBreadCrumbNav:
          type: boolean
        hideContinueBooking:
          nullable: true
          type: boolean
        hideLocationNav:
          nullable: true
          type: boolean
        hideNavBar:
          nullable: true
          type: boolean
        hideServiceGroupsNav:
          nullable: true
          type: boolean
        hideServicesNav:
          nullable: true
          type: boolean
        id:
          format: int32
          type: integer
        lateCancelAction:
          format: int32
          type: integer
        lateCancelHours:
          format: int32
          type: integer
        lateRescheduleAction:
          format: int32
          type: integer
        lateRescheduleHours:
          format: int32
          type: integer
        liveMode:
          nullable: true
          type: boolean
        locationId:
          nullable: true
          type: string
        object:
          nullable: true
          type: string
        resourceAnyLabel:
          nullable: true
          type: string
        resourceLabel:
          nullable: true
          type: string
        resourceSelection:
          type: boolean
        returnToAvailability:
          type: boolean
        returnToService:
          type: boolean
        serviceLabel:
          nullable: true
          type: string
        showBusinessLogo:
          type: boolean
        showOnSchedLogo:
          type: boolean
        showServiceGroups:
          type: boolean
      type: object
    PhoneViewModel:
      additionalProperties: false
      properties:
        businessPhone:
          nullable: true
          type: string
        businessPhoneExt:
          nullable: true
          type: string
        homePhone:
          nullable: true
          type: string
        mobilePhone:
          nullable: true
          type: string
        phoneType:
          nullable: true
          type: string
      type: object
    RegionInputModel:
      additionalProperties: false
      properties:
        name:
          nullable: true
          type: string
      type: object
    RegionListViewModel:
      additionalProperties: false
      properties:
        count:
          format: int32
          type: integer
        data:
          items:
            $ref: "#/components/schemas/RegionViewModel"
          nullable: true
          type: array
        hasMore:
          type: boolean
        object:
          nullable: true
          type: string
        total:
          format: int32
          type: integer
        url:
          nullable: true
          type: string
      type: object
    RegionUpdateModel:
      additionalProperties: false
      properties:
        name:
          nullable: true
          type: string
      type: object
    RegionViewModel:
      additionalProperties: false
      properties:
        id:
          nullable: true
          type: string
        name:
          nullable: true
          type: string
        object:
          nullable: true
          type: string
      type: object
    RepeatInputModel:
      additionalProperties: false
      properties:
        frequency:
          nullable: true
          type: string
        interval:
          format: int32
          nullable: true
          type: integer
        monthDay:
          format: int32
          nullable: true
          type: integer
        monthType:
          nullable: true
          type: string
        weekdays:
          nullable: true
          type: string
      type: object
    RepeatUpdateModel:
      additionalProperties: false
      properties:
        frequency:
          nullable: true
          type: string
        interval:
          format: int32
          nullable: true
          type: integer
        monthDay:
          format: int32
          nullable: true
          type: integer
        monthType:
          nullable: true
          type: string
        weekdays:
          nullable: true
          type: string
      type: object
    RepeatViewModel:
      additionalProperties: false
      properties:
        frequency:
          nullable: true
          type: string
        interval:
          format: int32
          type: integer
        monthDay:
          nullable: true
          type: string
        monthType:
          nullable: true
          type: string
        weekdays:
          nullable: true
          type: string
      type: object
    ResourceAllocationInputModel:
      additionalProperties: false
      properties:
        endDate:
          format: date
          nullable: true
          type: string
        endTime:
          format: int32
          nullable: true
          type: integer
        reason:
          nullable: true
          type: string
        repeat:
          $ref: "#/components/schemas/RepeatInputModel"
        repeats:
          nullable: true
          type: boolean
        startDate:
          format: date
          nullable: true
          type: string
        startTime:
          format: int32
          nullable: true
          type: integer
      type: object
    ResourceAllocationListViewModel:
      additionalProperties: false
      properties:
        count:
          format: int32
          type: integer
        data:
          items:
            $ref: "#/components/schemas/ResourceAllocationViewModel"
          nullable: true
          type: array
        hasMore:
          type: boolean
        object:
          nullable: true
          type: string
        total:
          format: int32
          type: integer
        url:
          nullable: true
          type: string
      type: object
    ResourceAllocationUpdateModel:
      additionalProperties: false
      properties:
        endDate:
          format: date
          nullable: true
          type: string
        endTime:
          format: int32
          nullable: true
          type: integer
        reason:
          nullable: true
          type: string
        repeat:
          $ref: "#/components/schemas/RepeatInputModel"
        repeats:
          nullable: true
          type: boolean
        startDate:
          format: date
          nullable: true
          type: string
        startTime:
          format: int32
          nullable: true
          type: integer
      type: object
    ResourceAllocationViewModel:
      additionalProperties: false
      properties:
        businessId:
          format: int32
          type: integer
        deletedStatus:
          type: boolean
        deletedTime:
          nullable: true
          type: string
        endDate:
          nullable: true
          type: string
        endTime:
          format: int32
          type: integer
        id:
          format: int32
          type: integer
        object:
          nullable: true
          type: string
        reason:
          nullable: true
          type: string
        repeat:
          $ref: "#/components/schemas/RepeatViewModel"
        repeats:
          type: boolean
        resourceId:
          format: int32
          type: integer
        startDate:
          nullable: true
          type: string
        startTime:
          format: int32
          type: integer
      type: object
    ResourceAvailabilityViewModel:
      additionalProperties: false
      properties:
        businessId:
          format: int32
          type: integer
        ignoreBusinessHours:
          type: boolean
        resourceId:
          format: int32
          type: integer
        resourceName:
          nullable: true
          type: string
        resourceTzo:
          format: int32
          type: integer
        weekdays:
          $ref: "#/components/schemas/AvailabilityViewModel2"
      type: object
    ResourceBlockInputModel:
      additionalProperties: false
      properties:
        allDay:
          nullable: true
          type: boolean
        endDate:
          format: date
          nullable: true
          type: string
        endTime:
          format: int32
          nullable: true
          type: integer
        reason:
          nullable: true
          type: string
        repeat:
          $ref: "#/components/schemas/RepeatInputModel"
        repeats:
          nullable: true
          type: boolean
        startDate:
          format: date
          nullable: true
          type: string
        startTime:
          format: int32
          nullable: true
          type: integer
      type: object
    ResourceBlockListViewModel:
      additionalProperties: false
      properties:
        count:
          format: int32
          type: integer
        data:
          items:
            $ref: "#/components/schemas/ResourceBlockViewModel"
          nullable: true
          type: array
        hasMore:
          type: boolean
        object:
          nullable: true
          type: string
        total:
          format: int32
          type: integer
        url:
          nullable: true
          type: string
      type: object
    ResourceBlockUpdateModel:
      additionalProperties: false
      properties:
        allDay:
          nullable: true
          type: boolean
        endDate:
          format: date
          nullable: true
          type: string
        endTime:
          format: int32
          nullable: true
          type: integer
        reason:
          nullable: true
          type: string
        repeat:
          $ref: "#/components/schemas/RepeatInputModel"
        repeats:
          nullable: true
          type: boolean
        startDate:
          format: date
          nullable: true
          type: string
        startTime:
          format: int32
          nullable: true
          type: integer
      type: object
    ResourceBlockViewModel:
      additionalProperties: false
      properties:
        businessId:
          format: int32
          type: integer
        deletedStatus:
          type: boolean
        deletedTime:
          nullable: true
          type: string
        endDate:
          nullable: true
          type: string
        endTime:
          format: int32
          type: integer
        id:
          format: int32
          type: integer
        object:
          nullable: true
          type: string
        reason:
          nullable: true
          type: string
        repeat:
          $ref: "#/components/schemas/RepeatViewModel"
        repeats:
          type: boolean
        resourceId:
          format: int32
          type: integer
        startDate:
          nullable: true
          type: string
        startTime:
          format: int32
          type: integer
      type: object
    ResourceBulkUpdateModel:
      additionalProperties: false
      properties:
        address:
          $ref: "#/components/schemas/AddressUpdateModel"
        availability:
          $ref: "#/components/schemas/AvailabilityInputModel"
        contact:
          $ref: "#/components/schemas/ContactUpdateModel"
        customFields:
          $ref: "#/components/schemas/CustomFieldUpdateModel"
        description:
          nullable: true
          type: string
        email:
          nullable: true
          type: string
        groupId:
          nullable: true
          type: string
        id:
          nullable: true
          type: string
        name:
          nullable: true
          type: string
        options:
          $ref: "#/components/schemas/ResourceOptionsUpdateModel"
        recurringAvailability:
          nullable: true
          type: boolean
        serviceIds:
          items:
            type: string
          nullable: true
          type: array
        timezoneId:
          nullable: true
          type: string
      type: object
    ResourceGroupInputModel:
      additionalProperties: false
      properties:
        description:
          nullable: true
          type: string
        email:
          nullable: true
          type: string
        locationId:
          nullable: true
          type: string
        name:
          nullable: true
          type: string
      type: object
    ResourceGroupListViewModel:
      additionalProperties: false
      properties:
        count:
          format: int32
          type: integer
        data:
          items:
            $ref: "#/components/schemas/ResourceGroupViewModel"
          nullable: true
          type: array
        hasMore:
          type: boolean
        object:
          nullable: true
          type: string
        total:
          format: int32
          type: integer
        url:
          nullable: true
          type: string
      type: object
    ResourceGroupUpdateModel:
      additionalProperties: false
      properties:
        description:
          nullable: true
          type: string
        email:
          nullable: true
          type: string
        name:
          nullable: true
          type: string
      type: object
    ResourceGroupViewModel:
      additionalProperties: false
      properties:
        bookingNotification:
          format: int32
          type: integer
        deletedStatus:
          type: boolean
        deletedTime:
          format: date-time
          nullable: true
          type: string
        description:
          nullable: true
          type: string
        email:
          nullable: true
          type: string
        id:
          nullable: true
          type: string
        locationId:
          nullable: true
          type: string
        name:
          nullable: true
          type: string
        object:
          nullable: true
          type: string
      type: object
    ResourceHourViewModel:
      additionalProperties: false
      properties:
        endTime:
          format: int32
          type: integer
        startTime:
          format: int32
          type: integer
      type: object
    ResourceHoursViewModel:
      additionalProperties: false
      properties:
        fri:
          $ref: "#/components/schemas/ResourceHourViewModel"
        mon:
          $ref: "#/components/schemas/ResourceHourViewModel"
        sat:
          $ref: "#/components/schemas/ResourceHourViewModel"
        sun:
          $ref: "#/components/schemas/ResourceHourViewModel"
        thu:
          $ref: "#/components/schemas/ResourceHourViewModel"
        tue:
          $ref: "#/components/schemas/ResourceHourViewModel"
        wed:
          $ref: "#/components/schemas/ResourceHourViewModel"
      type: object
    ResourceImageInputModel:
      additionalProperties: false
      properties:
        imageFileData:
          nullable: true
          type: string
        imageFileName:
          nullable: true
          type: string
      type: object
    ResourceInputModel:
      additionalProperties: false
      properties:
        address:
          $ref: "#/components/schemas/AddressInputModel"
        availability:
          $ref: "#/components/schemas/AvailabilityInputModel"
        contact:
          $ref: "#/components/schemas/ContactInputModel"
        customFields:
          $ref: "#/components/schemas/CustomFieldInputModel"
        description:
          nullable: true
          type: string
        email:
          nullable: true
          type: string
        groupId:
          nullable: true
          type: string
        locationId:
          nullable: true
          type: string
        name:
          nullable: true
          type: string
        options:
          $ref: "#/components/schemas/ResourceOptionsInputModel"
        recurringAvailability:
          nullable: true
          type: boolean
        serviceIds:
          items:
            type: string
          nullable: true
          type: array
        timezoneId:
          nullable: true
          type: string
      type: object
    ResourceListViewModel:
      additionalProperties: false
      properties:
        count:
          format: int32
          type: integer
        data:
          items:
            $ref: "#/components/schemas/ResourceViewModel"
          nullable: true
          type: array
        hasMore:
          type: boolean
        object:
          nullable: true
          type: string
        total:
          format: int32
          type: integer
        url:
          nullable: true
          type: string
      type: object
    ResourceOptionsInputModel:
      additionalProperties: false
      description: Options for the new resource
      properties:
        bioLink:
          nullable: true
          type: string
        bookingNotification:
          format: int32
          nullable: true
          type: integer
        calendarAvailability:
          description: 0 = OnSched Availability, 1 = Google Calendar, 2 = Outlook Calendar
          format: int32
          nullable: true
          type: integer
        displayColor:
          nullable: true
          type: string
        effectiveDate:
          format: date-time
          nullable: true
          type: string
        gender:
          nullable: true
          type: string
        googleCalendarId:
          nullable: true
          type: string
        hourly:
          format: double
          nullable: true
          type: number
        ignoreBusinessHours:
          nullable: true
          type: boolean
        notificationType:
          description: 0 = None, 1=Online Bookings 2=All Bookings.
          format: int32
          nullable: true
          type: integer
        outlookCalendarId:
          nullable: true
          type: string
        sortKey:
          format: int32
          nullable: true
          type: integer
      type: object
    ResourceOptionsUpdateModel:
      additionalProperties: false
      properties:
        bioLink:
          nullable: true
          type: string
        bookingNotification:
          format: int32
          nullable: true
          type: integer
        calendarAvailability:
          description: 0 = OnSched Availability, 1 = Google Calendar, 2 = Outlook Calendar
          format: int32
          nullable: true
          type: integer
        displayColor:
          nullable: true
          type: string
        effectiveDate:
          format: date-time
          nullable: true
          type: string
        gender:
          nullable: true
          type: string
        googleCalendarId:
          nullable: true
          type: string
        hourly:
          format: double
          nullable: true
          type: number
        ignoreBusinessHours:
          nullable: true
          type: boolean
        notificationType:
          description: 0 = None, 1=Online Bookings 2=All Bookings.
          format: int32
          nullable: true
          type: integer
        outlookCalendarId:
          nullable: true
          type: string
        sortKey:
          format: int32
          nullable: true
          type: integer
      type: object
    ResourceServiceViewModel:
      additionalProperties: false
      properties:
        object:
          nullable: true
          type: string
        serviceId:
          format: int32
          type: integer
        serviceName:
          nullable: true
          type: string
      type: object
    ResourceUpdateModel:
      additionalProperties: false
      properties:
        address:
          $ref: "#/components/schemas/AddressUpdateModel"
        availability:
          $ref: "#/components/schemas/AvailabilityInputModel"
        contact:
          $ref: "#/components/schemas/ContactUpdateModel"
        customFields:
          $ref: "#/components/schemas/CustomFieldUpdateModel"
        description:
          nullable: true
          type: string
        email:
          nullable: true
          type: string
        groupId:
          nullable: true
          type: string
        locationId:
          nullable: true
          type: string
        name:
          nullable: true
          type: string
        options:
          $ref: "#/components/schemas/ResourceOptionsUpdateModel"
        recurringAvailability:
          nullable: true
          type: boolean
        serviceIds:
          items:
            type: string
          nullable: true
          type: array
        timezoneId:
          nullable: true
          type: string
      type: object
    ResourceViewModel:
      additionalProperties: false
      properties:
        address:
          $ref: "#/components/schemas/AddressViewModel"
        availability:
          $ref: "#/components/schemas/ResourceHoursViewModel"
        bioLink:
          nullable: true
          type: string
        bookingNotification:
          format: int32
          type: integer
        calendarAvailability:
          format: int32
          type: integer
        contact:
          $ref: "#/components/schemas/ContactViewModel"
        customFields:
          $ref: "#/components/schemas/CustomFieldInputModel"
        deletedStatus:
          type: boolean
        deletedTime:
          format: date-time
          nullable: true
          type: string
        description:
          nullable: true
          type: string
        effectiveDate:
          format: date-time
          nullable: true
          type: string
        email:
          nullable: true
          type: string
        gender:
          nullable: true
          type: string
        googleCalendarAuthUrl:
          nullable: true
          type: string
        googleCalendarAuthorized:
          type: boolean
        googleCalendarId:
          nullable: true
          type: string
        groupId:
          format: int32
          nullable: true
          type: integer
        hourly:
          format: double
          nullable: true
          type: number
        id:
          nullable: true
          type: string
        ignoreBusinessHours:
          type: boolean
        imageUrl:
          nullable: true
          type: string
        locationId:
          nullable: true
          type: string
        name:
          nullable: true
          type: string
        notificationType:
          format: int32
          type: integer
        object:
          nullable: true
          type: string
        options:
          $ref: "#/components/schemas/ResourceOptionsInputModel"
        outlookCalendarAuthUrl:
          nullable: true
          type: string
        outlookCalendarAuthorized:
          type: boolean
        outlookCalendarId:
          nullable: true
          type: string
        phone:
          $ref: "#/components/schemas/PhoneViewModel"
        recurringAvailability:
          nullable: true
          type: boolean
        services:
          items:
            $ref: "#/components/schemas/ResourceServiceViewModel"
          nullable: true
          type: array
        skypeName:
          nullable: true
          type: string
        sortKey:
          format: int32
          type: integer
        timezoneIana:
          nullable: true
          type: string
        timezoneId:
          nullable: true
          type: string
        timezoneOffset:
          format: int32
          nullable: true
          type: integer
      type: object
    ResourcesInputModel:
      additionalProperties: false
      properties:
        resources:
          items:
            $ref: "#/components/schemas/ResourceInputModel"
          nullable: true
          type: array
      type: object
    ResourcesUpdateModel:
      additionalProperties: false
      properties:
        resources:
          items:
            $ref: "#/components/schemas/ResourceBulkUpdateModel"
          nullable: true
          type: array
      type: object
    ScheduleInputModel:
      additionalProperties: false
      properties:
        availability:
          $ref: "#/components/schemas/AvailabilityInputModel"
        bookingsPerSlot:
          format: int32
          type: integer
        interval:
          format: int32
          type: integer
        locationId:
          nullable: true
          type: string
        name:
          nullable: true
          type: string
        resourceGroupId:
          nullable: true
          type: string
        type:
          nullable: true
          type: string
      type: object
    ScheduleListViewModel:
      additionalProperties: false
      properties:
        count:
          format: int32
          type: integer
        data:
          items:
            $ref: "#/components/schemas/ScheduleViewModel"
          nullable: true
          type: array
        hasMore:
          type: boolean
        object:
          nullable: true
          type: string
        total:
          format: int32
          type: integer
        url:
          nullable: true
          type: string
      type: object
    ScheduleUpdateModel:
      additionalProperties: false
      properties:
        availability:
          $ref: "#/components/schemas/AvailabilityInputModel"
        bookingsPerSlot:
          format: int32
          type: integer
        interval:
          format: int32
          type: integer
        locationId:
          nullable: true
          type: string
        name:
          nullable: true
          type: string
        resourceGroupId:
          nullable: true
          type: string
        type:
          nullable: true
          type: string
      type: object
    ScheduleViewModel:
      additionalProperties: false
      properties:
        availability:
          $ref: "#/components/schemas/CalendarHoursViewModel"
        bookingsPerSlot:
          format: int32
          type: integer
        deletedStatus:
          type: boolean
        deletedTime:
          format: date-time
          nullable: true
          type: string
        id:
          nullable: true
          type: string
        interval:
          format: int32
          type: integer
        locationId:
          nullable: true
          type: string
        name:
          nullable: true
          type: string
        object:
          nullable: true
          type: string
        primary:
          type: boolean
        resourceGroupId:
          nullable: true
          type: string
        type:
          nullable: true
          type: string
      type: object
    ServiceAllocationInputModel:
      additionalProperties: false
      properties:
        bookingLimit:
          format: int32
          type: integer
        endDate:
          format: date
          nullable: true
          type: string
        endTime:
          format: int32
          nullable: true
          type: integer
        locationId:
          nullable: true
          type: string
        reason:
          nullable: true
          type: string
        repeat:
          $ref: "#/components/schemas/RepeatInputModel"
        repeats:
          nullable: true
          type: boolean
        resourceId:
          nullable: true
          type: string
        startDate:
          format: date
          nullable: true
          type: string
        startTime:
          format: int32
          nullable: true
          type: integer
      type: object
    ServiceAllocationListViewModel:
      additionalProperties: false
      properties:
        count:
          format: int32
          type: integer
        data:
          items:
            $ref: "#/components/schemas/ServiceAllocationViewModel"
          nullable: true
          type: array
        hasMore:
          type: boolean
        object:
          nullable: true
          type: string
        total:
          format: int32
          type: integer
        url:
          nullable: true
          type: string
      type: object
    ServiceAllocationUpdateModel:
      additionalProperties: false
      properties:
        bookingLimit:
          format: int32
          type: integer
        endDate:
          format: date
          nullable: true
          type: string
        endTime:
          format: int32
          nullable: true
          type: integer
        locationId:
          nullable: true
          type: string
        reason:
          nullable: true
          type: string
        repeat:
          $ref: "#/components/schemas/RepeatInputModel"
        repeats:
          nullable: true
          type: boolean
        resourceId:
          nullable: true
          type: string
        startDate:
          format: date
          nullable: true
          type: string
        startTime:
          format: int32
          nullable: true
          type: integer
      type: object
    ServiceAllocationViewModel:
      additionalProperties: false
      properties:
        bookingCount:
          format: int32
          type: integer
        bookingLimit:
          format: int32
          type: integer
        deletedStatus:
          type: boolean
        deletedTime:
          nullable: true
          type: string
        endDate:
          nullable: true
          type: string
        endTime:
          format: int32
          type: integer
        id:
          nullable: true
          type: string
        locationId:
          nullable: true
          type: string
        object:
          nullable: true
          type: string
        reason:
          nullable: true
          type: string
        repeat:
          $ref: "#/components/schemas/RepeatViewModel"
        repeats:
          type: boolean
        resourceAddress:
          $ref: "#/components/schemas/AddressViewModel"
        resourceDescription:
          nullable: true
          type: string
        resourceId:
          nullable: true
          type: string
        resourceImageUrl:
          nullable: true
          type: string
        resourceName:
          nullable: true
          type: string
        resourcePhone:
          $ref: "#/components/schemas/PhoneViewModel"
        serviceDescription:
          nullable: true
          type: string
        serviceDuration:
          format: int32
          type: integer
        serviceId:
          nullable: true
          type: string
        serviceImageUrl:
          nullable: true
          type: string
        serviceName:
          nullable: true
          type: string
        startDate:
          nullable: true
          type: string
        startTime:
          format: int32
          type: integer
        timezoneName:
          nullable: true
          type: string
        timezoneOffset:
          format: int32
          nullable: true
          type: integer
      type: object
    ServiceAllocationsInputModel:
      additionalProperties: false
      properties:
        serviceAllocations:
          items:
            $ref: "#/components/schemas/ServiceAllocationInputModel"
          nullable: true
          type: array
      type: object
    ServiceAvailabilityViewModel:
      additionalProperties: false
      properties:
        ignoreBusinessHours:
          type: boolean
        serviceId:
          format: int32
          type: integer
        serviceName:
          nullable: true
          type: string
        weekdays:
          $ref: "#/components/schemas/AvailabilityViewModel2"
      type: object
    ServiceBlockInputModel:
      additionalProperties: false
      properties:
        endDate:
          format: date
          nullable: true
          type: string
        endTime:
          format: int32
          nullable: true
          type: integer
        locationId:
          nullable: true
          type: string
        reason:
          nullable: true
          type: string
        repeat:
          $ref: "#/components/schemas/RepeatInputModel"
        repeats:
          type: boolean
        startDate:
          format: date
          nullable: true
          type: string
        startTime:
          format: int32
          nullable: true
          type: integer
      type: object
    ServiceBlockListViewModel:
      additionalProperties: false
      properties:
        count:
          format: int32
          type: integer
        data:
          items:
            $ref: "#/components/schemas/ServiceBlockViewModel"
          nullable: true
          type: array
        hasMore:
          type: boolean
        object:
          nullable: true
          type: string
        total:
          format: int32
          type: integer
        url:
          nullable: true
          type: string
      type: object
    ServiceBlockUpdateModel:
      additionalProperties: false
      properties:
        endDate:
          format: date
          nullable: true
          type: string
        endTime:
          format: int32
          nullable: true
          type: integer
        reason:
          nullable: true
          type: string
        repeat:
          $ref: "#/components/schemas/RepeatUpdateModel"
        repeats:
          nullable: true
          type: boolean
        startDate:
          format: date
          nullable: true
          type: string
        startTime:
          format: int32
          nullable: true
          type: integer
      type: object
    ServiceBlockViewModel:
      additionalProperties: false
      properties:
        deletedStatus:
          type: boolean
        deletedTime:
          nullable: true
          type: string
        endDate:
          nullable: true
          type: string
        endTime:
          format: int32
          type: integer
        id:
          nullable: true
          type: string
        locationId:
          nullable: true
          type: string
        object:
          nullable: true
          type: string
        reason:
          nullable: true
          type: string
        repeat:
          $ref: "#/components/schemas/RepeatViewModel"
        repeats:
          type: boolean
        serviceId:
          nullable: true
          type: string
        startDate:
          nullable: true
          type: string
        startTime:
          format: int32
          type: integer
      type: object
    ServiceCalendarInputModel:
      additionalProperties: false
      properties:
        calendarId:
          nullable: true
          type: string
        locationId:
          nullable: true
          type: string
        serviceId:
          nullable: true
          type: string
      type: object
    ServiceCalendarViewModel:
      additionalProperties: false
      properties:
        calendarId:
          nullable: true
          type: string
        calendarName:
          nullable: true
          type: string
        id:
          nullable: true
          type: string
        locationId:
          nullable: true
          type: string
        serviceId:
          nullable: true
          type: string
        serviceName:
          nullable: true
          type: string
      type: object
    ServiceFeesInputModel:
      additionalProperties: false
      properties:
        cancellationFeeAmount:
          format: double
          type: number
        cancellationFeeTaxable:
          type: boolean
        feeAmount:
          format: double
          type: number
        feeTaxable:
          type: boolean
        nonRefundable:
          type: boolean
      type: object
    ServiceFeesUpdateModel:
      additionalProperties: false
      properties:
        cancellationFeeAmount:
          format: double
          nullable: true
          type: number
        cancellationFeeTaxable:
          nullable: true
          type: boolean
        feeAmount:
          format: double
          nullable: true
          type: number
        feeTaxable:
          nullable: true
          type: boolean
        nonRefundable:
          nullable: true
          type: boolean
      type: object
    ServiceGroupInputModel:
      additionalProperties: false
      properties:
        description:
          nullable: true
          type: string
        locationId:
          nullable: true
          type: string
        name:
          nullable: true
          type: string
        type:
          format: int32
          nullable: true
          type: integer
      type: object
    ServiceGroupListViewModel:
      additionalProperties: false
      properties:
        count:
          format: int32
          type: integer
        data:
          items:
            $ref: "#/components/schemas/ServiceGroupViewModel"
          nullable: true
          type: array
        hasMore:
          type: boolean
        object:
          nullable: true
          type: string
        total:
          format: int32
          type: integer
        url:
          nullable: true
          type: string
      type: object
    ServiceGroupViewModel:
      additionalProperties: false
      properties:
        companyId:
          nullable: true
          type: string
        description:
          nullable: true
          type: string
        id:
          nullable: true
          type: string
        imageUrl:
          nullable: true
          type: string
        isDeleted:
          type: boolean
        locationId:
          nullable: true
          type: string
        name:
          nullable: true
          type: string
        object:
          nullable: true
          type: string
        type:
          format: int32
          type: integer
      type: object
    ServiceHourViewModel:
      additionalProperties: false
      properties:
        endTime:
          format: int32
          type: integer
        startTime:
          format: int32
          type: integer
      type: object
    ServiceHoursViewModel:
      additionalProperties: false
      properties:
        fri:
          $ref: "#/components/schemas/ServiceHourViewModel"
        mon:
          $ref: "#/components/schemas/ServiceHourViewModel"
        sat:
          $ref: "#/components/schemas/ServiceHourViewModel"
        sun:
          $ref: "#/components/schemas/ServiceHourViewModel"
        thu:
          $ref: "#/components/schemas/ServiceHourViewModel"
        tue:
          $ref: "#/components/schemas/ServiceHourViewModel"
        wed:
          $ref: "#/components/schemas/ServiceHourViewModel"
      type: object
    ServiceImageInputModel:
      additionalProperties: false
      properties:
        imageFileData:
          nullable: true
          type: string
        imageFileName:
          nullable: true
          type: string
      type: object
    ServiceInputModel:
      additionalProperties: false
      properties:
        availability:
          $ref: "#/components/schemas/AvailabilityInputModel"
        bookingInterval:
          format: int32
          type: integer
        bookingLimit:
          format: int32
          type: integer
        customFields:
          $ref: "#/components/schemas/CustomFieldInputModel"
        description:
          nullable: true
          type: string
        duration:
          format: int32
          type: integer
        fees:
          $ref: "#/components/schemas/ServiceFeesInputModel"
        locationId:
          nullable: true
          type: string
        maxCapacity:
          format: int32
          type: integer
        maxGroupSize:
          format: int32
          type: integer
        mediaPageUrl:
          nullable: true
          type: string
        name:
          nullable: true
          type: string
        options:
          $ref: "#/components/schemas/ServiceOptionsInputModel"
        public:
          type: boolean
        serviceGroupId:
          nullable: true
          type: string
        settings:
          $ref: "#/components/schemas/ServiceSettingsInputModel"
        type:
          nullable: true
          type: string
      type: object
    ServiceListViewModel:
      additionalProperties: false
      properties:
        count:
          format: int32
          type: integer
        data:
          items:
            $ref: "#/components/schemas/ServiceViewModel"
          nullable: true
          type: array
        hasMore:
          type: boolean
        object:
          nullable: true
          type: string
        total:
          format: int32
          type: integer
        url:
          nullable: true
          type: string
      type: object
    ServiceOptionsInputModel:
      additionalProperties: false
      properties:
        consumerPadding:
          nullable: true
          type: boolean
        defaultService:
          nullable: true
          type: boolean
        durationInterval:
          format: int32
          nullable: true
          type: integer
        durationMax:
          format: int32
          nullable: true
          type: integer
        durationMin:
          format: int32
          nullable: true
          type: integer
        durationSelect:
          nullable: true
          type: boolean
        padding:
          format: int32
          nullable: true
          type: integer
      type: object
    ServiceOptionsUpdateModel:
      additionalProperties: false
      properties:
        consumerPadding:
          nullable: true
          type: boolean
        defaultService:
          nullable: true
          type: boolean
        durationInterval:
          format: int32
          nullable: true
          type: integer
        durationMax:
          format: int32
          nullable: true
          type: integer
        durationMin:
          format: int32
          nullable: true
          type: integer
        durationSelect:
          nullable: true
          type: boolean
        padding:
          format: int32
          nullable: true
          type: integer
      type: object
    ServiceSettingsInputModel:
      additionalProperties: false
      properties:
        bookAheadUnit:
          format: int32
          nullable: true
          type: integer
        bookAheadValue:
          format: int32
          nullable: true
          type: integer
        bookInAdvance:
          format: int32
          nullable: true
          type: integer
      type: object
    ServiceSettingsUpdateModel:
      additionalProperties: false
      properties:
        bookAheadUnit:
          format: int32
          nullable: true
          type: integer
        bookAheadValue:
          format: int32
          nullable: true
          type: integer
        bookInAdvance:
          format: int32
          nullable: true
          type: integer
      type: object
    ServiceUpdateModel:
      additionalProperties: false
      properties:
        availability:
          $ref: "#/components/schemas/AvailabilityInputModel"
        bookingInterval:
          format: int32
          nullable: true
          type: integer
        bookingLimit:
          format: int32
          nullable: true
          type: integer
        customFields:
          $ref: "#/components/schemas/CustomFieldUpdateModel"
        description:
          nullable: true
          type: string
        duration:
          format: int32
          nullable: true
          type: integer
        fees:
          $ref: "#/components/schemas/ServiceFeesUpdateModel"
        locationId:
          nullable: true
          type: string
        maxCapacity:
          format: int32
          nullable: true
          type: integer
        maxGroupSize:
          format: int32
          nullable: true
          type: integer
        mediaPageUrl:
          nullable: true
          type: string
        name:
          nullable: true
          type: string
        options:
          $ref: "#/components/schemas/ServiceOptionsUpdateModel"
        public:
          nullable: true
          type: boolean
        serviceGroupId:
          nullable: true
          type: string
        settings:
          $ref: "#/components/schemas/ServiceSettingsUpdateModel"
        type:
          nullable: true
          type: string
      type: object
    ServiceViewModel:
      additionalProperties: false
      properties:
        availability:
          $ref: "#/components/schemas/ServiceHoursViewModel"
        bookAheadUnit:
          format: int32
          type: integer
        bookAheadValue:
          format: int32
          type: integer
        bookInAdvance:
          format: int32
          type: integer
        bookingInterval:
          format: int32
          type: integer
        bookingLimit:
          format: int32
          type: integer
        calendarId:
          nullable: true
          type: string
        calendarResourceGroupId:
          nullable: true
          type: string
        cancellationFeeAmount:
          format: double
          type: number
        cancellationFeeTaxable:
          type: boolean
        companyId:
          nullable: true
          type: string
        consumerPadding:
          type: boolean
        customFields:
          $ref: "#/components/schemas/CustomFieldInputModel"
        dailyBookingLimitCount:
          format: int32
          type: integer
        dailyBookingLimitMinutes:
          format: int32
          type: integer
        defaultService:
          type: boolean
        description:
          nullable: true
          type: string
        duration:
          format: int32
          type: integer
        durationInterval:
          format: int32
          type: integer
        durationMax:
          format: int32
          type: integer
        durationMin:
          format: int32
          type: integer
        durationSelect:
          type: boolean
        feeAmount:
          format: double
          type: number
        feeTaxable:
          type: boolean
        id:
          nullable: true
          type: string
        imageUrl:
          nullable: true
          type: string
        locationId:
          nullable: true
          type: string
        maxBookingLimit:
          format: int32
          type: integer
        maxCapacity:
          format: int32
          type: integer
        maxGroupSize:
          format: int32
          type: integer
        maxResourceBookingLimit:
          format: int32
          type: integer
        mediaPageUrl:
          nullable: true
          type: string
        name:
          nullable: true
          type: string
        nonRefundable:
          type: boolean
        object:
          nullable: true
          type: string
        padding:
          format: int32
          type: integer
        roundRobin:
          format: int32
          type: integer
        serviceGroupId:
          format: int32
          nullable: true
          type: integer
        serviceGroupName:
          nullable: true
          type: string
        showOnline:
          type: boolean
        type:
          nullable: true
          type: string
      type: object
    SystemTimezoneViewModel:
      additionalProperties: false
      properties:
        baseUtcOffset:
          format: int32
          type: integer
        daylightName:
          nullable: true
          type: string
        displayName:
          nullable: true
          type: string
        standardName:
          nullable: true
          type: string
        supportsDaylightSavingTime:
          type: boolean
        timezoneIana:
          nullable: true
          type: string
        timezoneId:
          nullable: true
          type: string
      type: object
    TimezoneViewModel:
      additionalProperties: false
      properties:
        object:
          nullable: true
          type: string
        regions:
          items:
            type: string
          nullable: true
          type: array
        timezones:
          items:
            $ref: "#/components/schemas/TimezonesViewModel"
          nullable: true
          type: array
      type: object
    TimezonesViewModel:
      additionalProperties: false
      properties:
        name:
          nullable: true
          type: string
        region:
          nullable: true
          type: string
        timezoneIanna:
          nullable: true
          type: string
        tzOffset:
          format: int32
          type: integer
      type: object
    TravelViewModel:
      additionalProperties: false
      properties:
        distance:
          nullable: true
          type: string
        proximity:
          nullable: true
          type: string
        startAddress:
          nullable: true
          type: string
        startLat:
          nullable: true
          type: string
        startLon:
          nullable: true
          type: string
        units:
          nullable: true
          type: string
      type: object
    WeekDayInputModel:
      additionalProperties: false
      properties:
        endTime:
          format: int32
          type: integer
        startTime:
          format: int32
          type: integer
      type: object
    WeekDayViewModel2:
      additionalProperties: false
      properties:
        displayEndTime:
          nullable: true
          type: string
        displayStartTime:
          nullable: true
          type: string
        endTime:
          format: int32
          type: integer
        startTime:
          format: int32
          type: integer
      type: object
  securitySchemes:
    oauth2:
      flows:
        clientCredentials:
          scopes:
            OnSchedApi: Consumer and Setup Interface
            distance: Travel and Distance calculations
          tokenUrl: https://sandbox-identity.onsched.com/connect/token
      type: oauth2
