Chili Piper Meeting Type API

The meeting-type API from Chili Piper — 4 operation(s) for meeting-type.

OpenAPI Specification

chili-piper-meeting-type-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Chili Piper Meeting Type API
  version: '1.0'
  description: 'Operations tagged meeting-type across 5 of this provider''s published API definitions: chili-piper-concierge-router-builder-openapi.yaml, chili-piper-concierge-router-configuration-openapi.yaml, chili-piper-handoff-router-configuration-openapi.yaml, chili-piper-meeting-type-management-openapi.yaml, chili-piper-scheduling-link-management-openapi.yaml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://fire.chilipiper.com/api/fire-edge
  description: Production
security:
- apiKeyAuth: []
tags:
- name: meeting-type
paths:
  /v1/org/meeting-types:
    servers:
    - url: https://fire.chilipiper.com/api/fire-edge
      description: Production
    post:
      tags:
      - meeting-type
      summary: Create meeting type
      description: "[operation: meeting-type-create]\n\n\n\nMUTATING\n\n\n\nCreates a reusable team meeting type; the backend fills in product defaults for anything you omit. Only name, duration (\"30 minutes\") and the default location are set by the create call itself — description, inviteTitle, inviteDescription, location alternatives, and the admin scheduling link that carries sharedWith are applied by FURTHER calls immediately after. `description` is internal (never shown to guests); to set the guest-facing calendar invite use inviteTitle/inviteDescription, both of which accept {CP.*} merge tags. `sharedWith` is {type: \"Workspace\"} or {type: \"Teams\", teamIds}; supplying it provisions the admin (one-on-one) scheduling link that carries the scope — omit it and sharing can only be set later by managing that link directly.\n\n  Note: creation is NOT atomic — if a follow-up call fails the meeting type exists without those fields, and re-creating duplicates it; fix with meeting-type-update instead.\n\n- location (opt): {default: <Location>, others: [<Location>]}; omit to keep the workspace default. Each <Location> is one of:\n\n    {type: \"ZoomOneTimeLink\"|\"TeamsMeetingLink\"|\"GongLink\"|\"GoToMeetingLink\"|\"RingCentralLink\"|\"WebexLink\"|\"HostsDefaultConferenceDetails\"|\"HostsDefaultPhysicalLocation\", index, host: \"Host\"|\"AssigneeIfExists\"|\"BookerIfExists\"}\n    {type: \"CalendarPlatformConference\", index}\n    {type: \"AskTheGuest\", index}\n    {type: \"DefinedInMeetingType\", index, value?}\n\n→\n\n    {id, workspaceId, name, description?, inviteTitle, inviteDescription, status, duration, location: {default: {type, index, host?, value?}, others: [{type, index, host?, value?}]}, buffers: {before?, after?}, meetingLimit?: {limitBy: \"Email\"|\"Domain\", timeframe: \"Hourly\"|\"Daily\"|\"Weekly\"|\"Monthly\"|\"Yearly\", count}, sharedWith?: {type: \"Workspace\"}|{type: \"Teams\", teamIds}, reminders: [{id, workspaceId, channel, trigger: {kind, offset?}, name, title?, body}]}\n\nsee: meeting-type-list (find a workspaceId), meeting-type-update (edit afterwards)"
      operationId: meetingTypeCreate
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MeetingTypeCreate'
        required: true
      responses:
        '200':
          description: ''
          headers:
            Cache-Control:
              required: true
              schema:
                type: string
            X-Robots-Tag:
              required: true
              schema:
                type: string
            Pragma:
              required: true
              schema:
                type: string
            Expires:
              required: true
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MeetingType'
        '400':
          description: 'Invalid value for: body'
          content:
            text/plain:
              schema:
                type: string
        default:
          description: ''
          headers:
            Location:
              required: false
              schema:
                type: string
          content:
            application/json:
              schema:
                type: object
                required:
                - errorCode
                - errorMessage
                properties:
                  errorCode:
                    type: string
                  errorMessage:
                    type: string
                  arguments:
                    $ref: '#/components/schemas/Map_String'
      security:
      - apiKeyAuth: []
      X-Chili-Required-Permissions:
      - meeting-type.create
  /v1/org/meeting-types/list:
    servers:
    - url: https://fire.chilipiper.com/api/fire-edge
      description: Production
    get:
      tags:
      - meeting-type
      summary: List meeting types
      description: "[operation: meeting-type-list]\n\n\n\nREAD-ONLY\n\n\n\nBrowses the tenant's reusable team meeting types — the templates that scheduling links and routers reference. Personal meeting types are excluded. Omit workspaceId to fan out across every workspace; pass it to scope to one.\n\n→\n\n    [{id, workspaceId, name, description?, inviteTitle, inviteDescription, status, duration, location: {default: {type, index, host?, value?}, others: [{type, index, host?, value?}]}, buffers: {before?, after?}, meetingLimit?: {limitBy: \"Email\"|\"Domain\", timeframe: \"Hourly\"|\"Daily\"|\"Weekly\"|\"Monthly\"|\"Yearly\", count}, sharedWith?: {type: \"Workspace\"}|{type: \"Teams\", teamIds}, reminders?: [{id, workspaceId, channel, trigger: {kind, offset?}, name, title?, body}]}]\n\n  Note: reminders are not fetched on list (the field is null) — use meeting-type-get to read a meeting type's reminders; null means \"not fetched\", never \"no reminders\".\n\n  Note: meetingLimit.timeframe is approximate — the backend's reset schedule (e.g. every-2-weeks) is summarised to the nearest timeframe; finer reset details (every-N, anchor day) are not surfaced.\n\n  Note: sharedWith (the sharing scope: whole workspace vs specific teams) is read from the meeting type's admin (one-on-one) scheduling link; it is null when no such link, or more than one, is found — null means \"indeterminate\", not \"workspace\".\n\nsee: meeting-type-get (fetch a single meeting type), meeting-type-create (add one), meeting-type-update (edit one)"
      operationId: meetingTypeList
      parameters:
      - name: workspaceId
        in: query
        description: Filter meeting types by workspace ID. Omit to list across all of the tenant's workspaces.
        required: false
        schema:
          type: string
          pattern: '[^\s\\/]+'
      responses:
        '200':
          description: ''
          headers:
            Cache-Control:
              required: true
              schema:
                type: string
            X-Robots-Tag:
              required: true
              schema:
                type: string
            Pragma:
              required: true
              schema:
                type: string
            Expires:
              required: true
              schema:
                type: string
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/MeetingType'
        '400':
          description: 'Invalid value for: query parameter workspaceId'
          content:
            text/plain:
              schema:
                type: string
        default:
          description: ''
          headers:
            Location:
              required: false
              schema:
                type: string
          content:
            application/json:
              schema:
                type: object
                required:
                - errorCode
                - errorMessage
                properties:
                  errorCode:
                    type: string
                  errorMessage:
                    type: string
                  arguments:
                    $ref: '#/components/schemas/Map_String'
      security:
      - apiKeyAuth: []
      X-Chili-Required-Permissions:
      - meeting-type.read
  /v1/org/meeting-types/{meetingTypeId}:
    servers:
    - url: https://fire.chilipiper.com/api/fire-edge
      description: Production
    get:
      tags:
      - meeting-type
      summary: Get meeting type
      description: "[operation: meeting-type-get]\n\n\n\nREAD-ONLY\n\n\n\nFetches one team meeting type by id, including its attached reminders (unlike meeting-type-list, which leaves reminders null). Use it before editing to read current state, or once you already know the id instead of browsing the list.\n\n→\n\n    {id, workspaceId, name, description?, inviteTitle, inviteDescription, status, duration, location: {default: {type, index, host?, value?}, others: [{type, index, host?, value?}]}, buffers: {before?, after?}, meetingLimit?: {limitBy: \"Email\"|\"Domain\", timeframe: \"Hourly\"|\"Daily\"|\"Weekly\"|\"Monthly\"|\"Yearly\", count}, sharedWith?: {type: \"Workspace\"}|{type: \"Teams\", teamIds}, reminders: [{id, workspaceId, channel, trigger: {kind, offset?}, name, title?, body}]}\n\n  Note: meetingLimit.timeframe is approximate — the backend's reset schedule (e.g. every-2-weeks) is summarised to the nearest timeframe; finer reset details (every-N, anchor day) are not surfaced.\n\n  Note: sharedWith (the sharing scope: whole workspace vs specific teams) is read from the meeting type's admin (one-on-one) scheduling link; it is null when no such link, or more than one, is found — null means \"indeterminate\", not \"workspace\".\n\n⚠ personal meeting types are not manageable here and return an error\n\nsee: meeting-type-list (browse to find an id), meeting-type-update (edit), meeting-type-delete (remove)"
      operationId: meetingTypeGet
      parameters:
      - name: meetingTypeId
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: ''
          headers:
            Cache-Control:
              required: true
              schema:
                type: string
            X-Robots-Tag:
              required: true
              schema:
                type: string
            Pragma:
              required: true
              schema:
                type: string
            Expires:
              required: true
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MeetingType'
        '400':
          description: 'Invalid value for: path parameter meetingTypeId'
          content:
            text/plain:
              schema:
                type: string
        default:
          description: ''
          headers:
            Location:
              required: false
              schema:
                type: string
          content:
            application/json:
              schema:
                type: object
                required:
                - errorCode
                - errorMessage
                properties:
                  errorCode:
                    type: string
                  errorMessage:
                    type: string
                  arguments:
                    $ref: '#/components/schemas/Map_String'
      security:
      - apiKeyAuth: []
      X-Chili-Required-Permissions:
      - meeting-type.read
    put:
      tags:
      - meeting-type
      summary: Update meeting type
      description: "[operation: meeting-type-update]\n\n\n\nMUTATING — IDEMPOTENT\n\n\n\nEdits a team meeting type. Every field is optional — send only what you want to change; omitted fields keep their current value. `description` is internal; change the guest-facing invite via inviteTitle/inviteDescription ({CP.*} merge tags). `location` is a full replacement of the conferencing config, not a merge. `meetingLimit` caps bookings per limitBy per timeframe. Prefer reading current state with meeting-type-get first.\n\n- status (opt): \"Active\" or \"Inactive\"\n\n- location (opt): replaces the full config — {default: <Location>, others: [<Location>]}; omit to leave unchanged. Each <Location> is one of:\n\n    {type: \"ZoomOneTimeLink\"|\"TeamsMeetingLink\"|\"GongLink\"|\"GoToMeetingLink\"|\"RingCentralLink\"|\"WebexLink\"|\"HostsDefaultConferenceDetails\"|\"HostsDefaultPhysicalLocation\", index, host: \"Host\"|\"AssigneeIfExists\"|\"BookerIfExists\"}\n    {type: \"CalendarPlatformConference\", index}\n    {type: \"AskTheGuest\", index}\n    {type: \"DefinedInMeetingType\", index, value?}\n\n- meetingLimit (opt): {limitBy: \"Email\"|\"Domain\", timeframe: \"Hourly\"|\"Daily\"|\"Weekly\"|\"Monthly\"|\"Yearly\", count}\n\n- sharedWith (opt): new scope — {type: \"Workspace\"} or {type: \"Teams\", teamIds}; applied to the admin (one-on-one) scheduling link, which must exist as exactly one (409 if none — set sharedWith at create time first — or more than one).\n\n  Note: sharedWith is applied AFTER the other changes commit — a 409 here means those are already persisted (re-run without sharedWith, then fix the admin link directly).\n\n→\n\n    {id, workspaceId, name, description?, inviteTitle, inviteDescription, status, duration, location: {default: {type, index, host?, value?}, others: [{type, index, host?, value?}]}, buffers: {before?, after?}, meetingLimit?: {limitBy: \"Email\"|\"Domain\", timeframe: \"Hourly\"|\"Daily\"|\"Weekly\"|\"Monthly\"|\"Yearly\", count}, sharedWith?: {type: \"Workspace\"}|{type: \"Teams\", teamIds}, reminders: [{id, workspaceId, channel, trigger: {kind, offset?}, name, title?, body}]}\n\n⚠ takes effect immediately\n\nsee: meeting-type-get (fetch current state before editing)"
      operationId: meetingTypeUpdate
      parameters:
      - name: meetingTypeId
        in: path
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MeetingTypeUpdate'
        required: true
      responses:
        '200':
          description: ''
          headers:
            Cache-Control:
              required: true
              schema:
                type: string
            X-Robots-Tag:
              required: true
              schema:
                type: string
            Pragma:
              required: true
              schema:
                type: string
            Expires:
              required: true
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MeetingType'
        '400':
          description: 'Invalid value for: path parameter meetingTypeId, Invalid value for: body'
          content:
            text/plain:
              schema:
                type: string
        default:
          description: ''
          headers:
            Location:
              required: false
              schema:
                type: string
          content:
            application/json:
              schema:
                type: object
                required:
                - errorCode
                - errorMessage
                properties:
                  errorCode:
                    type: string
                  errorMessage:
                    type: string
                  arguments:
                    $ref: '#/components/schemas/Map_String'
      security:
      - apiKeyAuth: []
      X-Chili-Required-Permissions:
      - meeting-type.modify
    delete:
      tags:
      - meeting-type
      summary: Remove meeting type
      description: '[operation: meeting-type-delete]




        MUTATING — DESTRUCTIVE




        Deletes a team meeting type by id.


        ⚠ irreversible via API; any scheduling links or routers referencing this meeting type stop working


        see: meeting-type-list or meeting-type-get (confirm the id before deleting)'
      operationId: meetingTypeDelete
      parameters:
      - name: meetingTypeId
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: ''
          headers:
            Cache-Control:
              required: true
              schema:
                type: string
            X-Robots-Tag:
              required: true
              schema:
                type: string
            Pragma:
              required: true
              schema:
                type: string
            Expires:
              required: true
              schema:
                type: string
        '400':
          description: 'Invalid value for: path parameter meetingTypeId'
          content:
            text/plain:
              schema:
                type: string
        default:
          description: ''
          headers:
            Location:
              required: false
              schema:
                type: string
          content:
            application/json:
              schema:
                type: object
                required:
                - errorCode
                - errorMessage
                properties:
                  errorCode:
                    type: string
                  errorMessage:
                    type: string
                  arguments:
                    $ref: '#/components/schemas/Map_String'
      security:
      - apiKeyAuth: []
      X-Chili-Required-Permissions:
      - meeting-type.remove
  /v1/org/meeting-types/{meetingTypeId}/reminders/{reminderId}:
    servers:
    - url: https://fire.chilipiper.com/api/fire-edge
      description: Production
    put:
      tags:
      - meeting-type
      summary: Attach reminder to meeting type
      description: "[operation: meeting-type-attach-reminder]\n\n\n\nMUTATING — IDEMPOTENT\n\n\n\nLinks an existing reminder to a team meeting type so it starts sending it, and returns the updated meeting type. The reminder must live in the same workspace (create one with meeting-type-reminder-create). Idempotent: re-attaching an already-attached reminder is a no-op.\n\n→\n\n    {id, workspaceId, name, description?, inviteTitle, inviteDescription, status, duration, location: {default: {type, index, host?, value?}, others: [{type, index, host?, value?}]}, buffers: {before?, after?}, meetingLimit?: {limitBy: \"Email\"|\"Domain\", timeframe: \"Hourly\"|\"Daily\"|\"Weekly\"|\"Monthly\"|\"Yearly\", count}, sharedWith?: {type: \"Workspace\"}|{type: \"Teams\", teamIds}, reminders: [{id, workspaceId, channel, trigger: {kind, offset?}, name, title?, body}]}\n\n⚠ takes effect immediately\n\nsee: meeting-type-reminder-create (make a reminder first), meeting-type-get (confirm the association), meeting-type-detach-reminder (remove it)"
      operationId: meetingTypeAttachReminder
      parameters:
      - name: meetingTypeId
        in: path
        required: true
        schema:
          type: string
          format: uuid
      - name: reminderId
        in: path
        required: true
        schema:
          type: string
          pattern: '[^\s\\/]+'
      responses:
        '200':
          description: ''
          headers:
            Cache-Control:
              required: true
              schema:
                type: string
            X-Robots-Tag:
              required: true
              schema:
                type: string
            Pragma:
              required: true
              schema:
                type: string
            Expires:
              required: true
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MeetingType'
        '400':
          description: 'Invalid value for: path parameter meetingTypeId, Invalid value for: path parameter reminderId'
          content:
            text/plain:
              schema:
                type: string
        default:
          description: ''
          headers:
            Location:
              required: false
              schema:
                type: string
          content:
            application/json:
              schema:
                type: object
                required:
                - errorCode
                - errorMessage
                properties:
                  errorCode:
                    type: string
                  errorMessage:
                    type: string
                  arguments:
                    $ref: '#/components/schemas/Map_String'
      security:
      - apiKeyAuth: []
      X-Chili-Required-Permissions:
      - meeting-type.modify
    delete:
      tags:
      - meeting-type
      summary: Detach reminder from meeting type
      description: "[operation: meeting-type-detach-reminder]\n\n\n\nMUTATING — IDEMPOTENT\n\n\n\nUnlinks a reminder from a team meeting type (it stops sending it), and returns the updated meeting type. The reminder itself is NOT deleted — it stays available to re-attach or to use elsewhere; delete it entirely with meeting-type-reminder-delete. Idempotent: detaching a reminder that is not attached is a no-op.\n\n→\n\n    {id, workspaceId, name, description?, inviteTitle, inviteDescription, status, duration, location: {default: {type, index, host?, value?}, others: [{type, index, host?, value?}]}, buffers: {before?, after?}, meetingLimit?: {limitBy: \"Email\"|\"Domain\", timeframe: \"Hourly\"|\"Daily\"|\"Weekly\"|\"Monthly\"|\"Yearly\", count}, sharedWith?: {type: \"Workspace\"}|{type: \"Teams\", teamIds}, reminders: [{id, workspaceId, channel, trigger: {kind, offset?}, name, title?, body}]}\n\n⚠ takes effect immediately\n\nsee: meeting-type-get (confirm), meeting-type-attach-reminder (re-attach), meeting-type-reminder-delete (delete the reminder entirely)"
      operationId: meetingTypeDetachReminder
      parameters:
      - name: meetingTypeId
        in: path
        required: true
        schema:
          type: string
          format: uuid
      - name: reminderId
        in: path
        required: true
        schema:
          type: string
          pattern: '[^\s\\/]+'
      responses:
        '200':
          description: ''
          headers:
            Cache-Control:
              required: true
              schema:
                type: string
            X-Robots-Tag:
              required: true
              schema:
                type: string
            Pragma:
              required: true
              schema:
                type: string
            Expires:
              required: true
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MeetingType'
        '400':
          description: 'Invalid value for: path parameter meetingTypeId, Invalid value for: path parameter reminderId'
          content:
            text/plain:
              schema:
                type: string
        default:
          description: ''
          headers:
            Location:
              required: false
              schema:
                type: string
          content:
            application/json:
              schema:
                type: object
                required:
                - errorCode
                - errorMessage
                properties:
                  errorCode:
                    type: string
                  errorMessage:
                    type: string
                  arguments:
                    $ref: '#/components/schemas/Map_String'
      security:
      - apiKeyAuth: []
      X-Chili-Required-Permissions:
      - meeting-type.modify
components:
  schemas:
    MeetingLocation_WebexLink:
      title: MeetingLocation_WebexLink
      type: object
      required:
      - index
      - host
      - type
      properties:
        index:
          type: integer
          format: int32
        host:
          $ref: '#/components/schemas/MeetingLocationHost'
        type:
          type: string
          const: WebexLink
    MeetingLocation_DefinedInMeetingType:
      title: MeetingLocation_DefinedInMeetingType
      type: object
      required:
      - index
      - type
      properties:
        index:
          type: integer
          format: int32
        value:
          type: string
          minLength: 1
        type:
          type: string
          const: DefinedInMeetingType
    MeetingBookingLimitBy:
      title: MeetingBookingLimitBy
      type: string
      enum:
      - Email
      - Domain
    ReminderTrigger:
      title: ReminderTrigger
      type: object
      required:
      - kind
      properties:
        kind:
          $ref: '#/components/schemas/ReminderTriggerKind'
        offset:
          type: string
    WorkspaceId:
      title: WorkspaceId
      examples:
      - b7263a5d-89cb-4f50-a532-ea4aff74688e
      type: string
      pattern: '[^\s\\/]+'
    MeetingTypeId:
      title: MeetingTypeId
      examples:
      - 4a8f2b3c-7d1e-4f9b-8a2c-3d5e6f789012
      type: string
      format: uuid
    MeetingTypeUpdate:
      title: MeetingTypeUpdate
      type: object
      properties:
        name:
          type: string
        description:
          type: string
        inviteTitle:
          type: string
        inviteDescription:
          type: string
        duration:
          type: string
        status:
          $ref: '#/components/schemas/MeetingTypeStatus'
        location:
          $ref: '#/components/schemas/MeetingLocations'
        buffers:
          $ref: '#/components/schemas/MeetingBuffers'
        meetingLimit:
          $ref: '#/components/schemas/MeetingBookingLimit'
        sharedWith:
          $ref: '#/components/schemas/SharedWith'
    MeetingType:
      title: MeetingType
      type: object
      required:
      - id
      - workspaceId
      - name
      - inviteTitle
      - inviteDescription
      - status
      - duration
      - location
      - buffers
      properties:
        id:
          $ref: '#/components/schemas/MeetingTypeId'
        workspaceId:
          $ref: '#/components/schemas/WorkspaceId'
        name:
          type: string
        description:
          type: string
        inviteTitle:
          type: string
        inviteDescription:
          type: string
        status:
          $ref: '#/components/schemas/MeetingTypeStatus'
        duration:
          type: string
        location:
          $ref: '#/components/schemas/MeetingLocations'
        buffers:
          $ref: '#/components/schemas/MeetingBuffers'
        meetingLimit:
          $ref: '#/components/schemas/MeetingBookingLimit'
        sharedWith:
          $ref: '#/components/schemas/SharedWith'
        reminders:
          type: array
          items:
            $ref: '#/components/schemas/Reminder'
    MeetingLocation_HostsDefaultConferenceDetails:
      title: MeetingLocation_HostsDefaultConferenceDetails
      type: object
      required:
      - index
      - host
      - type
      properties:
        index:
          type: integer
          format: int32
        host:
          $ref: '#/components/schemas/MeetingLocationHost'
        type:
          type: string
          const: HostsDefaultConferenceDetails
    Reminder:
      title: Reminder
      type: object
      required:
      - id
      - workspaceId
      - channel
      - trigger
      - name
      - body
      properties:
        id:
          type: string
          pattern: '[^\s\\/]+'
        workspaceId:
          $ref: '#/components/schemas/WorkspaceId'
        channel:
          $ref: '#/components/schemas/ReminderChannel'
        trigger:
          $ref: '#/components/schemas/ReminderTrigger'
        name:
          type: string
        title:
          type: string
        body:
          type: string
    MeetingLocation_GongLink:
      title: MeetingLocation_GongLink
      type: object
      required:
      - index
      - host
      - type
      properties:
        index:
          type: integer
          format: int32
        host:
          $ref: '#/components/schemas/MeetingLocationHost'
        type:
          type: string
          const: GongLink
    MeetingBookingLimitTimeframe:
      title: MeetingBookingLimitTimeframe
      type: string
      enum:
      - Hourly
      - Daily
      - Weekly
      - Monthly
      - Yearly
    MeetingLocation_HostsDefaultPhysicalLocation:
      title: MeetingLocation_HostsDefaultPhysicalLocation
      type: object
      required:
      - index
      - host
      - type
      properties:
        index:
          type: integer
          format: int32
        host:
          $ref: '#/components/schemas/MeetingLocationHost'
        type:
          type: string
          const: HostsDefaultPhysicalLocation
    MeetingLocations:
      title: MeetingLocations
      type: object
      required:
      - default
      properties:
        default:
          $ref: '#/components/schemas/MeetingLocation'
        others:
          type: array
          items:
            $ref: '#/components/schemas/MeetingLocation'
    MeetingLocation_TeamsMeetingLink:
      title: MeetingLocation_TeamsMeetingLink
      type: object
      required:
      - index
      - host
      - type
      properties:
        index:
          type: integer
          format: int32
        host:
          $ref: '#/components/schemas/MeetingLocationHost'
        type:
          type: string
          const: TeamsMeetingLink
    MeetingBuffers:
      title: MeetingBuffers
      type: object
      properties:
        before:
          type: string
        after:
          type: string
    MeetingLocationHost:
      title: MeetingLocationHost
      type: string
      enum:
      - Host
      - AssigneeIfExists
      - BookerIfExists
    MeetingTypeStatus:
      title: MeetingTypeStatus
      type: string
      enum:
      - Active
      - Inactive
    MeetingLocation_AskTheGuest:
      title: MeetingLocation_AskTheGuest
      type: object
      required:
      - index
      - type
      properties:
        index:
          type: integer
          format: int32
        type:
          type: string
          const: AskTheGuest
    MeetingLocation_ZoomOneTimeLink:
      title: MeetingLocation_ZoomOneTimeLink
      type: object
      required:
      - index
      - host
      - type
      properties:
        index:
          type: integer
          format: int32
        host:
          $ref: '#/components/schemas/MeetingLocationHost'
        type:
          type: string
          const: ZoomOneTimeLink
    SharedWith_Teams:
      title: SharedWith_Teams
      type: object
      required:
      - type
      properties:
        teamIds:
          type: array
          uniqueItems: true
          items:
            type: string
            pattern: '[^\s\\/]+'
        type:
          type: string
          const: Teams
    ReminderChannel:
      title: ReminderChannel
      type: string
      enum:
      - Email
      - Sms
    SharedWith:
      title: SharedWith
      oneOf:
      - $ref: '#/components/schemas/SharedWith_Teams'
      - $ref: '#/components/schemas/SharedWith_Workspace'
      discriminator:
        propertyName: type
        mapping:
          Teams: '#/components/schemas/SharedWith_Teams'
          Workspace: '#/components/schemas/SharedWith_Workspace'
    Map_String:
      title: Map_String
      type: object
      additionalProperties:
        type: string
    MeetingLocation_GoToMeetingLink:
      title: MeetingLocation_GoToMeetingLink
      type: object
      required:
      - index
      - host
      - type
      properties:
        index:
          type: integer
          format: int32
        host:
          $ref: '#/components/schemas/MeetingLocationHost'
        type:
          type: string
          const: GoToMeetingLink
    MeetingBookingLimit:
      title: MeetingBookingLimit
      type: object
      required:
      - limitBy
      - timeframe
      - count
      properties:
        limitBy:
          $ref: '#/components/schemas/MeetingBookingLimitBy'
        timeframe:
          $ref: '#/components/schemas/MeetingBookingLimitTimeframe'
        count:
          type: integer
          format: int32
    MeetingLocation_CalendarPlatformConference:
      title: MeetingLocation_CalendarPlatformConference
      type: object
      required:
      - index
      - type
      properties:
        index:
          type: integer
        

# --- truncated at 32 KB (35 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/chili-piper/refs/heads/main/openapi/chili-piper-meeting-type-api-openapi.yml