/* eslint-disable */
/*
 * This file was auto-generated by `make update-types` at 2024-01-25 00:54:34.794Z.
 * DO NOT make changes to this file.
 */

export interface paths {
  '/api/v1/categories/': {
    /** List all categories. */
    get: operations['categories_list']
    /** Create a new category. */
    post: operations['categories_create']
  }
  '/api/v1/categories/{id}/': {
    /** Retrieve a single category. */
    get: operations['categories_retrieve']
    /** Update an existing category. */
    put: operations['categories_update']
    /** Delete an existing category. */
    delete: operations['categories_destroy']
    /** Partially update an existing category. */
    patch: operations['categories_partial_update']
  }
  '/api/v1/funding-categories/': {
    /** List all funding categories. */
    get: operations['funding_categories_list']
    /** Create a new funding category. */
    post: operations['funding_categories_create']
  }
  '/api/v1/funding-categories/{id}/': {
    /** Retrieve a single funding category. */
    get: operations['funding_categories_retrieve']
    /** Update an existing funding category. */
    put: operations['funding_categories_update']
    /** Delete an existing funding category. */
    delete: operations['funding_categories_destroy']
    /** Partially update an existing funding category. */
    patch: operations['funding_categories_partial_update']
  }
  '/api/v1/hosts/': {
    /** List all hosts. */
    get: operations['hosts_list']
    /** Create a new host. */
    post: operations['hosts_create']
  }
  '/api/v1/hosts/{id}/': {
    /** Retrieve a single host. */
    get: operations['hosts_retrieve']
    /** Update an existing host. */
    put: operations['hosts_update']
    /** Delete an existing host. */
    delete: operations['hosts_destroy']
    /** Partially update an existing host. */
    patch: operations['hosts_partial_update']
  }
  '/api/v1/images/': {
    /** List all images. */
    get: operations['images_list']
    /**
     * Create a new image.
     * @description Create an Image instance. Any user can create an image.
     */
    post: operations['images_create']
  }
  '/api/v1/images/{id}/': {
    /** Retrieve a single image. */
    get: operations['images_retrieve']
    /**
     * Update an existing image.
     * @description Only `alt_text`, `credits`, and `ppoi` can be updated.
     */
    put: operations['images_update']
    /**
     * Delete an existing image.
     * @description Destroy an Image instance. Only the owner can delete an image.
     */
    delete: operations['images_destroy']
    /**
     * Partially update an existing image.
     * @description Only `alt_text`, `credits`, and `ppoi` can be updated.
     */
    patch: operations['images_partial_update']
  }
  '/api/v1/languages/': {
    /** List all languages. */
    get: operations['languages_list']
    /** Create a new language. */
    post: operations['languages_create']
  }
  '/api/v1/languages/{id}/': {
    /** Retrieve a single language. */
    get: operations['languages_retrieve']
    /** Update an existing language. */
    put: operations['languages_update']
    /** Delete an existing language. */
    delete: operations['languages_destroy']
    /** Partially update an existing language. */
    patch: operations['languages_partial_update']
  }
  '/api/v1/licenses/': {
    /** List all license types. */
    get: operations['licenses_list']
    /** Create a new license type. */
    post: operations['licenses_create']
  }
  '/api/v1/licenses/{id}/': {
    /** Retrieve a single license type. */
    get: operations['licenses_retrieve']
    /** Update an existing license type. */
    put: operations['licenses_update']
    /** Delete an existing license type. */
    delete: operations['licenses_destroy']
    /** Partially update an existing license type. */
    patch: operations['licenses_partial_update']
  }
  '/api/v1/link-types/': {
    /** List all link types. */
    get: operations['link_types_list']
    /** Create a new link type. */
    post: operations['link_types_create']
  }
  '/api/v1/link-types/{id}/': {
    /** Retrieve a single link type. */
    get: operations['link_types_retrieve']
    /** Update an existing link type. */
    put: operations['link_types_update']
    /** Delete an existing link type. */
    delete: operations['link_types_destroy']
    /** Partially update an existing link type. */
    patch: operations['link_types_partial_update']
  }
  '/api/v1/music-focus/': {
    /** List all music focuses. */
    get: operations['music_focus_list']
    /** Create a new music focus. */
    post: operations['music_focus_create']
  }
  '/api/v1/music-focus/{id}/': {
    /** Retrieve a single music focus. */
    get: operations['music_focus_retrieve']
    /** Update an existing music focus. */
    put: operations['music_focus_update']
    /** Delete an existing music focus. */
    delete: operations['music_focus_destroy']
    /** Partially update an existing music focus. */
    patch: operations['music_focus_partial_update']
  }
  '/api/v1/notes/': {
    /** List all notes. */
    get: operations['notes_list']
    /** Create a new note. */
    post: operations['notes_create']
  }
  '/api/v1/notes/{id}/': {
    /** Retrieve a single note. */
    get: operations['notes_retrieve']
    /** Update an existing note. */
    put: operations['notes_update']
    /** Delete an existing note. */
    delete: operations['notes_destroy']
    /**
     * Partially update an existing note.
     * @description Only admins can partially update existing notes.
     */
    patch: operations['notes_partial_update']
  }
  '/api/v1/rrules/': {
    /** List all rrule. */
    get: operations['rrules_list']
    post: operations['rrules_create']
  }
  '/api/v1/rrules/{id}/': {
    /** Retrieve a single rrule. */
    get: operations['rrules_retrieve']
    put: operations['rrules_update']
    delete: operations['rrules_destroy']
    patch: operations['rrules_partial_update']
  }
  '/api/v1/schedules/': {
    /** List all schedules. */
    get: operations['schedules_list']
    /**
     * Create a new schedule.
     * @description Create a schedule, generate timeslots, test for collisions and resolve them
     * (including notes).
     *
     * Note that creating or updating a schedule is the only way to create timeslots.
     *
     * Only admins may add schedules.
     *
     * The projected timeslots defined by the schedule are matched against existing
     * timeslots. The API will return an object that contains
     *
     * * the schedule's data,
     * * projected timeslots,
     * * detected collisions,
     * * and possible solutions.
     *
     * As long as no `solutions` object has been set or unresolved collisions exist,
     * no data is written to the database. A schedule is only created if at least
     * one timeslot was generated by it.
     *
     * In order to resolve any possible conflicts, the client must submit a new request with
     * a solution for each conflict. Possible solutions are listed as part of the projected
     * timeslot in the `solution_choices` array. In a best-case scenario with no detected
     * conflicts an empty solutions object will suffice. For more details on the individual
     * types of solutions see the SolutionChoicesEnum.
     *
     * **Please note**:
     * If there's more than one collision for a projected timeslot, only `theirs` and `ours`
     * are currently supported as solutions.
     */
    post: operations['schedules_create']
  }
  '/api/v1/schedules/{id}/': {
    /** Retrieve a single schedule. */
    get: operations['schedules_retrieve']
    /**
     * Update an existing schedule.
     * @description Update a schedule, generate timeslots, test for collisions and resolve
     * them including notes.
     *
     * Only admins may update schedules.
     */
    put: operations['schedules_update']
    /**
     * Delete an existing schedule.
     * @description Only admins may delete schedules.
     */
    delete: operations['schedules_destroy']
    /** Partially update an existing schedule. */
    patch: operations['schedules_partial_update']
  }
  '/api/v1/schema/': {
    /**
     * @description OpenApi3 schema for this API. Format can be selected via content negotiation.
     *
     * - YAML: application/vnd.oai.openapi
     * - JSON: application/vnd.oai.openapi+json
     */
    get: operations['schema_retrieve']
  }
  '/api/v1/shows/': {
    /** List all shows. */
    get: operations['shows_list']
    /**
     * Create a new show.
     * @description Only admins may create a show.
     */
    post: operations['shows_create']
  }
  '/api/v1/shows/{id}/': {
    /** Retrieve a single show. */
    get: operations['shows_retrieve']
    /**
     * Update an existing show.
     * @description Non-admin users may only update shows they own.
     */
    put: operations['shows_update']
    /**
     * Delete an existing show.
     * @description Only admins may delete shows.
     */
    delete: operations['shows_destroy']
    /** Partially update an existing show. */
    patch: operations['shows_partial_update']
  }
  '/api/v1/shows/{show_pk}/notes/': {
    /** List all notes. */
    get: operations['shows_notes_list']
    /** Create a new note. */
    post: operations['shows_notes_create']
  }
  '/api/v1/shows/{show_pk}/notes/{id}/': {
    /** Retrieve a single note. */
    get: operations['shows_notes_retrieve']
    /** Update an existing note. */
    put: operations['shows_notes_update']
    /** Delete an existing note. */
    delete: operations['shows_notes_destroy']
    /**
     * Partially update an existing note.
     * @description Only admins can partially update existing notes.
     */
    patch: operations['shows_notes_partial_update']
  }
  '/api/v1/shows/{show_pk}/schedules/': {
    /** List all schedules. */
    get: operations['shows_schedules_list']
    /**
     * Create a new schedule.
     * @description Create a schedule, generate timeslots, test for collisions and resolve them
     * (including notes).
     *
     * Note that creating or updating a schedule is the only way to create timeslots.
     *
     * Only admins may add schedules.
     *
     * The projected timeslots defined by the schedule are matched against existing
     * timeslots. The API will return an object that contains
     *
     * * the schedule's data,
     * * projected timeslots,
     * * detected collisions,
     * * and possible solutions.
     *
     * As long as no `solutions` object has been set or unresolved collisions exist,
     * no data is written to the database. A schedule is only created if at least
     * one timeslot was generated by it.
     *
     * In order to resolve any possible conflicts, the client must submit a new request with
     * a solution for each conflict. Possible solutions are listed as part of the projected
     * timeslot in the `solution_choices` array. In a best-case scenario with no detected
     * conflicts an empty solutions object will suffice. For more details on the individual
     * types of solutions see the SolutionChoicesEnum.
     *
     * **Please note**:
     * If there's more than one collision for a projected timeslot, only `theirs` and `ours`
     * are currently supported as solutions.
     */
    post: operations['shows_schedules_create']
  }
  '/api/v1/shows/{show_pk}/schedules/{id}/': {
    /** Retrieve a single schedule. */
    get: operations['shows_schedules_retrieve']
    /**
     * Update an existing schedule.
     * @description Update a schedule, generate timeslots, test for collisions and resolve
     * them including notes.
     *
     * Only admins may update schedules.
     */
    put: operations['shows_schedules_update']
    /**
     * Delete an existing schedule.
     * @description Only admins may delete schedules.
     */
    delete: operations['shows_schedules_destroy']
    /** Partially update an existing schedule. */
    patch: operations['shows_schedules_partial_update']
  }
  '/api/v1/shows/{show_pk}/schedules/{schedule_pk}/timeslots/': {
    /**
     * List all timeslots.
     * @description
     * By default, only timeslots ranging from now + 60 days will be displayed.
     * You may override this default overriding start and/or end parameter.
     */
    get: operations['shows_schedules_timeslots_list']
  }
  '/api/v1/shows/{show_pk}/schedules/{schedule_pk}/timeslots/{id}/': {
    /** Retrieve a single timeslot. */
    get: operations['shows_schedules_timeslots_retrieve']
    /** Update an existing timeslot. */
    put: operations['shows_schedules_timeslots_update']
    /**
     * Delete an existing timeslot.
     * @description Only admins may delete timeslots.
     */
    delete: operations['shows_schedules_timeslots_destroy']
    /** Partially update an existing timeslot. */
    patch: operations['shows_schedules_timeslots_partial_update']
  }
  '/api/v1/shows/{show_pk}/schedules/{schedule_pk}/timeslots/{timeslot_pk}/note/': {
    /** List all notes. */
    get: operations['shows_schedules_timeslots_note_list']
    /** Create a new note. */
    post: operations['shows_schedules_timeslots_note_create']
  }
  '/api/v1/shows/{show_pk}/schedules/{schedule_pk}/timeslots/{timeslot_pk}/note/{id}/': {
    /** Retrieve a single note. */
    get: operations['shows_schedules_timeslots_note_retrieve']
    /** Update an existing note. */
    put: operations['shows_schedules_timeslots_note_update']
    /** Delete an existing note. */
    delete: operations['shows_schedules_timeslots_note_destroy']
    /**
     * Partially update an existing note.
     * @description Only admins can partially update existing notes.
     */
    patch: operations['shows_schedules_timeslots_note_partial_update']
  }
  '/api/v1/shows/{show_pk}/timeslots/': {
    /**
     * List all timeslots.
     * @description
     * By default, only timeslots ranging from now + 60 days will be displayed.
     * You may override this default overriding start and/or end parameter.
     */
    get: operations['shows_timeslots_list']
  }
  '/api/v1/shows/{show_pk}/timeslots/{id}/': {
    /** Retrieve a single timeslot. */
    get: operations['shows_timeslots_retrieve']
    /** Update an existing timeslot. */
    put: operations['shows_timeslots_update']
    /**
     * Delete an existing timeslot.
     * @description Only admins may delete timeslots.
     */
    delete: operations['shows_timeslots_destroy']
    /** Partially update an existing timeslot. */
    patch: operations['shows_timeslots_partial_update']
  }
  '/api/v1/shows/{show_pk}/timeslots/{timeslot_pk}/note/': {
    /** List all notes. */
    get: operations['shows_timeslots_note_list']
    /** Create a new note. */
    post: operations['shows_timeslots_note_create']
  }
  '/api/v1/shows/{show_pk}/timeslots/{timeslot_pk}/note/{id}/': {
    /** Retrieve a single note. */
    get: operations['shows_timeslots_note_retrieve']
    /** Update an existing note. */
    put: operations['shows_timeslots_note_update']
    /** Delete an existing note. */
    delete: operations['shows_timeslots_note_destroy']
    /**
     * Partially update an existing note.
     * @description Only admins can partially update existing notes.
     */
    patch: operations['shows_timeslots_note_partial_update']
  }
  '/api/v1/timeslots/': {
    /**
     * List all timeslots.
     * @description
     * By default, only timeslots ranging from now + 60 days will be displayed.
     * You may override this default overriding start and/or end parameter.
     */
    get: operations['timeslots_list']
  }
  '/api/v1/timeslots/{id}/': {
    /** Retrieve a single timeslot. */
    get: operations['timeslots_retrieve']
    /** Update an existing timeslot. */
    put: operations['timeslots_update']
    /**
     * Delete an existing timeslot.
     * @description Only admins may delete timeslots.
     */
    delete: operations['timeslots_destroy']
    /** Partially update an existing timeslot. */
    patch: operations['timeslots_partial_update']
  }
  '/api/v1/topics/': {
    /** List all topics. */
    get: operations['topics_list']
    /** Create a new topic. */
    post: operations['topics_create']
  }
  '/api/v1/topics/{id}/': {
    /** Retrieve a single topic. */
    get: operations['topics_retrieve']
    /** Update an existing topic. */
    put: operations['topics_update']
    /** Delete an existing topic. */
    delete: operations['topics_destroy']
    /** Partially update an existing topic. */
    patch: operations['topics_partial_update']
  }
  '/api/v1/types/': {
    /** List all types. */
    get: operations['types_list']
    /** Create a new type. */
    post: operations['types_create']
  }
  '/api/v1/types/{id}/': {
    /** Retrieve a single type. */
    get: operations['types_retrieve']
    /** Update an existing type. */
    put: operations['types_update']
    /** Delete an existing type. */
    delete: operations['types_destroy']
    /** Partially update an existing type. */
    patch: operations['types_partial_update']
  }
  '/api/v1/users/': {
    /**
     * List all users.
     * @description The returned list of records will only contain a single record for non-admin users which is their own user account.
     */
    get: operations['users_list']
    /**
     * Create a new user.
     * @description Only admins may create users.
     */
    post: operations['users_create']
  }
  '/api/v1/users/{id}/': {
    /**
     * Retrieve a single user.
     * @description Non-admin users may only retrieve their own user record.
     */
    get: operations['users_retrieve']
    /**
     * Update an existing user.
     * @description Non-admin users may only update their own user record.
     */
    put: operations['users_update']
    /**
     * Partially update an existing user.
     * @description Non-admin users may only update their own user record.
     */
    patch: operations['users_partial_update']
  }
}

export type webhooks = Record<string, never>

export interface components {
  schemas: {
    /**
     * @description * `1` - first
     * * `2` - second
     * * `3` - third
     * * `4` - fourth
     * * `5` - fifth
     * * `-1` - last
     * @enum {integer}
     */
    BySetPosEnum: 1 | 2 | 3 | 4 | 5 | -1
    /**
     * @description **0**: Monday
     *
     *
     * **1**: Tuesday
     *
     *
     * **2**: Wednesday
     *
     *
     * **3**: Thursday
     *
     *
     * **4**: Friday
     *
     *
     * **5**: Saturday
     *
     *
     * **6**: Sunday
     * @enum {integer}
     */
    ByWeekdayEnum: 0 | 1 | 2 | 3 | 4 | 5 | 6
    /**
     * @description * `None` -
     * * `0,1,2,3,4` - business days
     * * `5,6` - weekends
     * @enum {unknown}
     */
    ByWeekdaysEnum: '0,1,2,3,4' | '5,6'
    Category: {
      description?: string
      id: number
      isActive?: boolean
      name: string
      slug: string
      subtitle?: string
    }
    Collision: {
      id: number
      /** Format: date-time */
      start: string
      /** Format: date-time */
      end: string
      playlistId: number | null
      showId: number
      showName: string
      repetitionOfId: number | null
      scheduleId: number
      memo: string
      noteId: number | null
    }
    DryRunTimeSlot: {
      id: number | null
      scheduleId: number | null
      playlistId: number | null
      /** Format: date */
      start: string
      /** Format: date */
      end: string
      repetitionOfId: number | null
      memo: string
    }
    Error: {
      message: string
      code: string | null
    }
    /**
     * @description * `0` - once
     * * `1` - monthly
     * * `2` - weekly
     * * `3` - daily
     * @enum {integer}
     */
    FreqEnum: 0 | 1 | 2 | 3
    FundingCategory: {
      id: number
      isActive?: boolean
      name: string
      slug: string
    }
    Host: {
      biography?: string
      /** Format: email */
      email?: string
      id: number
      imageId?: number | null
      isActive?: boolean
      links?: components['schemas']['HostLink'][]
      name: string
      ownerIds: (number | null)[]
      /** Format: date-time */
      createdAt: string
      createdBy: string
      /** Format: date-time */
      updatedAt: string | null
      updatedBy: string
    }
    HostLink: {
      type: string
      /** Format: uri */
      url: string
    }
    Image: {
      altText?: string
      credits?: string
      /** Format: uri */
      image?: string | null
      licenseId?: number | null
      ppoi?: string
      height: number | null
      id: number
      /** @description Returns thumbnails */
      thumbnails: readonly {
        /** Format: double */
        width: number
        /** Format: double */
        height: number
        url: string
      }[]
      width: number | null
    }
    Language: {
      id: number
      isActive?: boolean
      name: string
    }
    License: {
      id: number
      /** @description Identifier of the license */
      identifier: string
      /** @description Name of the license */
      name: string
      needsAuthor?: boolean
      requiresExpressPermissionForPublication?: boolean
      /** Format: uri */
      url?: string
    }
    LinkType: {
      id: number
      /** @description Name of the link type */
      name: string
      /** @description Type of the link */
      type: string
    }
    MusicFocus: {
      id: number
      isActive?: boolean
      name: string
      slug: string
    }
    Note: {
      cbaId?: number | null
      content: string
      contributorIds?: number[]
      id: number
      imageId?: number | null
      languageIds?: (number | null)[]
      links?: components['schemas']['NoteLink'][]
      ownerId: number
      playlistId?: number
      slug?: string
      summary?: string
      tags?: string
      timeslotId?: number
      title: string
      topicIds?: (number | null)[]
      /** Format: date-time */
      createdAt: string
      createdBy: string
      /** Format: date-time */
      updatedAt: string | null
      updatedBy: string
    }
    NoteLink: {
      type: string
      /** Format: uri */
      url: string
    }
    /** @enum {unknown} */
    NullEnum: ''
    PaginatedHostList: {
      /** @example 123 */
      count?: number
      /**
       * Format: uri
       * @example http://api.example.org/accounts/?offset=400&limit=100
       */
      next?: string | null
      /**
       * Format: uri
       * @example http://api.example.org/accounts/?offset=200&limit=100
       */
      previous?: string | null
      results?: components['schemas']['Host'][]
    }
    PaginatedImageList: {
      /** @example 123 */
      count?: number
      /**
       * Format: uri
       * @example http://api.example.org/accounts/?offset=400&limit=100
       */
      next?: string | null
      /**
       * Format: uri
       * @example http://api.example.org/accounts/?offset=200&limit=100
       */
      previous?: string | null
      results?: components['schemas']['Image'][]
    }
    PaginatedNoteList: {
      /** @example 123 */
      count?: number
      /**
       * Format: uri
       * @example http://api.example.org/accounts/?offset=400&limit=100
       */
      next?: string | null
      /**
       * Format: uri
       * @example http://api.example.org/accounts/?offset=200&limit=100
       */
      previous?: string | null
      results?: components['schemas']['Note'][]
    }
    PaginatedScheduleList: {
      /** @example 123 */
      count?: number
      /**
       * Format: uri
       * @example http://api.example.org/accounts/?offset=400&limit=100
       */
      next?: string | null
      /**
       * Format: uri
       * @example http://api.example.org/accounts/?offset=200&limit=100
       */
      previous?: string | null
      results?: components['schemas']['Schedule'][]
    }
    PaginatedShowList: {
      /** @example 123 */
      count?: number
      /**
       * Format: uri
       * @example http://api.example.org/accounts/?offset=400&limit=100
       */
      next?: string | null
      /**
       * Format: uri
       * @example http://api.example.org/accounts/?offset=200&limit=100
       */
      previous?: string | null
      results?: components['schemas']['Show'][]
    }
    PaginatedTimeSlotList: {
      /** @example 123 */
      count?: number
      /**
       * Format: uri
       * @example http://api.example.org/accounts/?offset=400&limit=100
       */
      next?: string | null
      /**
       * Format: uri
       * @example http://api.example.org/accounts/?offset=200&limit=100
       */
      previous?: string | null
      results?: components['schemas']['TimeSlot'][]
    }
    PatchedCategory: {
      description?: string
      id?: number
      isActive?: boolean
      name?: string
      slug?: string
      subtitle?: string
    }
    PatchedFundingCategory: {
      id?: number
      isActive?: boolean
      name?: string
      slug?: string
    }
    PatchedHost: {
      biography?: string
      /** Format: email */
      email?: string
      id?: number
      imageId?: number | null
      isActive?: boolean
      links?: components['schemas']['HostLink'][]
      name?: string
      ownerIds?: (number | null)[]
      /** Format: date-time */
      createdAt?: string
      createdBy?: string
      /** Format: date-time */
      updatedAt?: string | null
      updatedBy?: string
    }
    PatchedImage: {
      altText?: string
      credits?: string
      /** Format: uri */
      image?: string | null
      licenseId?: number | null
      ppoi?: string
      height?: number | null
      id?: number
      /** @description Returns thumbnails */
      thumbnails?: readonly {
        /** Format: double */
        width: number
        /** Format: double */
        height: number
        url: string
      }[]
      width?: number | null
    }
    PatchedLanguage: {
      id?: number
      isActive?: boolean
      name?: string
    }
    PatchedLicense: {
      id?: number
      /** @description Identifier of the license */
      identifier?: string
      /** @description Name of the license */
      name?: string
      needsAuthor?: boolean
      requiresExpressPermissionForPublication?: boolean
      /** Format: uri */
      url?: string
    }
    PatchedLinkType: {
      id?: number
      /** @description Name of the link type */
      name?: string
      /** @description Type of the link */
      type?: string
    }
    PatchedMusicFocus: {
      id?: number
      isActive?: boolean
      name?: string
      slug?: string
    }
    PatchedNote: {
      cbaId?: number | null
      content?: string
      contributorIds?: number[]
      id?: number
      imageId?: number | null
      languageIds?: (number | null)[]
      links?: components['schemas']['NoteLink'][]
      ownerId?: number
      playlistId?: number
      slug?: string
      summary?: string
      tags?: string
      timeslotId?: number
      title?: string
      topicIds?: (number | null)[]
      /** Format: date-time */
      createdAt?: string
      createdBy?: string
      /** Format: date-time */
      updatedAt?: string | null
      updatedBy?: string
    }
    PatchedRRule: {
      bySetPos?: components['schemas']['BySetPosEnum'] | components['schemas']['NullEnum'] | null
      byWeekdays?:
        | components['schemas']['ByWeekdaysEnum']
        | components['schemas']['NullEnum']
        | null
      /** @description How many occurrences should be generated. */
      count?: number | null
      freq?: components['schemas']['FreqEnum']
      id?: number
      /**
       * @description The interval between each freq iteration.
       * @default 1
       */
      interval?: number
      name?: string
    }
    PatchedScheduleCreateUpdateRequest: {
      schedule?: components['schemas']['ScheduleInRequest']
      solutions?: {
        [key: string]:
          | 'theirs'
          | 'ours'
          | 'theirs-start'
          | 'ours-start'
          | 'theirs-end'
          | 'ours-end'
          | 'theirs-both'
          | 'ours-both'
      }
      notes?: {
        [key: string]: number
      }
      playlists?: {
        [key: string]: number
      }
    }
    PatchedShow: {
      categoryIds?: number[]
      cbaSeriesId?: number | null
      defaultPlaylistId?: number | null
      description?: string
      /** Format: email */
      email?: string | null
      fundingCategoryId?: number
      hostIds?: number[]
      id?: number
      imageId?: number | null
      internalNote?: string
      isActive?: boolean
      isPublic?: boolean
      languageIds?: number[]
      links?: components['schemas']['HostLink'][]
      logoId?: number | null
      musicFocusIds?: number[]
      name?: string
      ownerIds?: number[]
      predecessorId?: number | null
      shortDescription?: string
      slug?: string
      topicIds?: number[]
      typeId?: number
      /** Format: date-time */
      createdAt?: string
      createdBy?: string
      /** Format: date-time */
      updatedAt?: string | null
      updatedBy?: string
    }
    PatchedTimeSlot: {
      memo?: string
      playlistId?: number | null
      repetitionOfId?: number | null
      /** Format: date-time */
      end?: string
      id?: number
      noteId?: number
      scheduleId?: number
      showId?: number
      /** Format: date-time */
      start?: string
    }
    PatchedTopic: {
      id?: number
      isActive?: boolean
      name?: string
      slug?: string
    }
    PatchedType: {
      id?: number
      isActive?: boolean
      name?: string
      slug?: string
    }
    PatchedUser: {
      /**
       * Email address
       * Format: email
       */
      email?: string
      firstName?: string
      id?: number
      /**
       * Active
       * @description Designates whether this user should be treated as active. Unselect this instead of deleting accounts.
       */
      isActive?: boolean
      /**
       * Staff status
       * @description Designates whether the user can log into this admin site.
       */
      isStaff?: boolean
      /**
       * Superuser status
       * @description Designates that this user has all permissions without explicitly assigning them.
       */
      isSuperuser?: boolean
      lastName?: string
      password?: string
      profile?: components['schemas']['Profile']
      /** @description Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only. */
      username?: string
    }
    Profile: {
      cbaUsername?: string
      /** CBA Token */
      cbaUserToken?: string
      /** Format: date-time */
      createdAt: string
      createdBy: string
      /** Format: date-time */
      updatedAt: string | null
      updatedBy: string
    }
    ProjectedTimeSlot: {
      hash: string
      /** Format: date-time */
      start: string
      /** Format: date-time */
      end: string
      collisions: components['schemas']['Collision'][]
      error: string | null
      solutionChoices: components['schemas']['SolutionChoicesEnum'][]
    }
    RRule: {
      bySetPos: components['schemas']['BySetPosEnum'] | components['schemas']['NullEnum'] | null
      byWeekdays: components['schemas']['ByWeekdaysEnum'] | components['schemas']['NullEnum'] | null
      /** @description How many occurrences should be generated. */
      count: number | null
      freq: components['schemas']['FreqEnum']
      id: number
      /**
       * @description The interval between each freq iteration.
       * @default 1
       */
      interval: number
      name: string
    }
    Schedule: {
      /** @description Whether to add add_days_no but skipping the weekends. E.g. if weekday is Friday, the date returned will be the next Monday. */
      addBusinessDaysOnly?: boolean
      /** @description Add a number of days to the generated dates. This can be useful for repetitions, like 'On the following day'. */
      addDaysNo?: number | null
      /**
       * @description Number of the Weekday.
       *
       * * `0` - Monday
       * * `1` - Tuesday
       * * `2` - Wednesday
       * * `3` - Thursday
       * * `4` - Friday
       * * `5` - Saturday
       * * `6` - Sunday
       */
      byWeekday?: components['schemas']['ByWeekdayEnum'] | components['schemas']['NullEnum'] | null
      /** @description A tank ID in case the timeslot's playlist_id is empty. */
      defaultPlaylistId?: number | null
      /**
       * Format: time
       * @description End time of schedule.
       */
      endTime?: string | null
      /**
       * Format: date
       * @description Start date of schedule.
       */
      firstDate: string
      id: number
      /** @description Whether the schedule is a repetition. */
      isRepetition?: boolean
      /**
       * Format: date
       * @description End date of schedule.
       */
      lastDate?: string | null
      /** @description A recurrence rule. */
      rruleId: number
      /** @description Show the schedule belongs to. */
      showId: number
      /**
       * Format: time
       * @description Start time of schedule.
       */
      startTime: string
    }
    ScheduleConflictResponse: {
      projected: components['schemas']['ProjectedTimeSlot'][]
      solutions: {
        [key: string]:
          | 'theirs'
          | 'ours'
          | 'theirs-start'
          | 'ours-start'
          | 'theirs-end'
          | 'ours-end'
          | 'theirs-both'
          | 'ours-both'
      }
      notes: {
        [key: string]: number
      }
      playlists: {
        [key: string]: number
      }
      schedule: components['schemas']['UnsavedSchedule']
    }
    ScheduleCreateUpdateRequest: {
      schedule: components['schemas']['ScheduleInRequest']
      solutions?: {
        [key: string]:
          | 'theirs'
          | 'ours'
          | 'theirs-start'
          | 'ours-start'
          | 'theirs-end'
          | 'ours-end'
          | 'theirs-both'
          | 'ours-both'
      }
      notes?: {
        [key: string]: number
      }
      playlists?: {
        [key: string]: number
      }
    }
    ScheduleDryRunResponse: {
      created: components['schemas']['DryRunTimeSlot'][]
      updated: components['schemas']['DryRunTimeSlot'][]
      deleted: components['schemas']['DryRunTimeSlot'][]
    }
    ScheduleInRequest: {
      /** @description Whether to add add_days_no but skipping the weekends. E.g. if weekday is Friday, the date returned will be the next Monday. */
      addBusinessDaysOnly?: boolean
      /** @description Add a number of days to the generated dates. This can be useful for repetitions, like 'On the following day'. */
      addDaysNo?: number | null
      /**
       * @description Number of the Weekday.
       *
       * * `0` - Monday
       * * `1` - Tuesday
       * * `2` - Wednesday
       * * `3` - Thursday
       * * `4` - Friday
       * * `5` - Saturday
       * * `6` - Sunday
       */
      byWeekday?: components['schemas']['ByWeekdayEnum'] | components['schemas']['NullEnum'] | null
      /** @description A tank ID in case the timeslot's playlist_id is empty. */
      defaultPlaylistId?: number | null
      /** @description Whether to simulate the database changes. If true, no database changes will occur. Instead a list of objects that would be created, updated and deleted if dryrun was false will be returned. */
      dryrun?: boolean
      /**
       * Format: time
       * @description End time of schedule.
       */
      endTime?: string | null
      /**
       * Format: date
       * @description Start date of schedule.
       */
      firstDate: string
      /** @description Whether the schedule is a repetition. */
      isRepetition?: boolean
      /**
       * Format: date
       * @description End date of schedule.
       */
      lastDate?: string | null
      /** @description A recurrence rule. */
      rruleId: number
      /** @description Show the schedule belongs to. */
      showId: number
      /**
       * Format: time
       * @description Start time of schedule.
       */
      startTime: string
    }
    ScheduleResponse: {
      projected: components['schemas']['ProjectedTimeSlot'][]
      solutions: {
        [key: string]:
          | 'theirs'
          | 'ours'
          | 'theirs-start'
          | 'ours-start'
          | 'theirs-end'
          | 'ours-end'
          | 'theirs-both'
          | 'ours-both'
      }
      notes: {
        [key: string]: number
      }
      playlists: {
        [key: string]: number
      }
      schedule: components['schemas']['Schedule']
    }
    Show: {
      categoryIds: number[]
      cbaSeriesId?: number | null
      defaultPlaylistId?: number | null
      description?: string
      /** Format: email */
      email?: string | null
      fundingCategoryId: number
      hostIds: number[]
      id: number
      imageId?: number | null
      internalNote?: string
      isActive?: boolean
      isPublic?: boolean
      languageIds: number[]
      links?: components['schemas']['HostLink'][]
      logoId?: number | null
      musicFocusIds: number[]
      name: string
      ownerIds: number[]
      predecessorId?: number | null
      shortDescription: string
      slug: string
      topicIds: number[]
      typeId: number
      /** Format: date-time */
      createdAt: string
      createdBy: string
      /** Format: date-time */
      updatedAt: string | null
      updatedBy: string
    }
    /**
     * @description **theirs**: Discard projected timeslot. Keep existing timeslot(s).
     *
     *
     * **ours**: Create projected timeslot. Delete existing timeslot(s).
     *
     *
     * **theirs-start**: Keep existing timeslot. Create projected timeslot with start time of existing end.
     *
     *
     * **ours-start**: Create projected timeslot. Change end of existing timeslot to projected start time.
     *
     *
     * **theirs-end**: Keep existing timeslot. Create projected timeslot with end of existing start time.
     *
     *
     * **ours-end**: Create projected timeslot. Change start of existing timeslot to projected end time.
     *
     *
     * **theirs-both**: Keep existing timeslot. Create two projected timeslots with end of existing start and start of existing end.
     *
     *
     * **ours-both**: Create projected timeslot. Split existing timeslot into two:
     *
     * * set existing end time to projected start,
     * * create another timeslot with start = projected end and end = existing end.
     * @enum {string}
     */
    SolutionChoicesEnum:
      | 'theirs'
      | 'ours'
      | 'theirs-start'
      | 'ours-start'
      | 'theirs-end'
      | 'ours-end'
      | 'theirs-both'
      | 'ours-both'
    TimeSlot: {
      memo?: string
      playlistId?: number | null
      repetitionOfId?: number | null
      /** Format: date-time */
      end: string
      id: number
      noteId: number
      scheduleId?: number
      showId: number
      /** Format: date-time */
      start: string
    }
    Topic: {
      id: number
      isActive?: boolean
      name: string
      slug: string
    }
    Type: {
      id: number
      isActive?: boolean
      name: string
      slug: string
    }
    UnsavedSchedule: {
      /** @description Whether to add add_days_no but skipping the weekends. E.g. if weekday is Friday, the date returned will be the next Monday. */
      addBusinessDaysOnly?: boolean
      /** @description Add a number of days to the generated dates. This can be useful for repetitions, like 'On the following day'. */
      addDaysNo?: number | null
      /**
       * @description Number of the Weekday.
       *
       * * `0` - Monday
       * * `1` - Tuesday
       * * `2` - Wednesday
       * * `3` - Thursday
       * * `4` - Friday
       * * `5` - Saturday
       * * `6` - Sunday
       */
      byWeekday?: components['schemas']['ByWeekdayEnum'] | components['schemas']['NullEnum'] | null
      /** @description A tank ID in case the timeslot's playlist_id is empty. */
      defaultPlaylistId?: number | null
      /**
       * Format: time
       * @description End time of schedule.
       */
      endTime?: string | null
      /**
       * Format: date
       * @description Start date of schedule.
       */
      firstDate: string
      id: number | null
      /** @description Whether the schedule is a repetition. */
      isRepetition?: boolean
      /**
       * Format: date
       * @description End date of schedule.
       */
      lastDate?: string | null
      /** @description A recurrence rule. */
      rruleId: number
      /** @description Show the schedule belongs to. */
      showId: number
      /**
       * Format: time
       * @description Start time of schedule.
       */
      startTime: string
    }
    User: {
      /**
       * Email address
       * Format: email
       */
      email?: string
      firstName?: string
      id: number
      /**
       * Active
       * @description Designates whether this user should be treated as active. Unselect this instead of deleting accounts.
       */
      isActive?: boolean
      /**
       * Staff status
       * @description Designates whether the user can log into this admin site.
       */
      isStaff?: boolean
      /**
       * Superuser status
       * @description Designates that this user has all permissions without explicitly assigning them.
       */
      isSuperuser?: boolean
      lastName?: string
      password: string
      profile?: components['schemas']['Profile']
      /** @description Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only. */
      username: string
    }
  }
  responses: never
  parameters: never
  requestBodies: never
  headers: never
  pathItems: never
}

export type $defs = Record<string, never>

export type external = Record<string, never>

export interface operations {
  /** List all categories. */
  categories_list: {
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['Category'][]
        }
      }
    }
  }
  /** Create a new category. */
  categories_create: {
    requestBody: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['Category']
        'multipart/form-data': components['schemas']['Category']
        'application/json': components['schemas']['Category']
      }
    }
    responses: {
      201: {
        content: {
          'application/json': components['schemas']['Category']
        }
      }
    }
  }
  /** Retrieve a single category. */
  categories_retrieve: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this category. */
        id: number
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['Category']
        }
      }
    }
  }
  /** Update an existing category. */
  categories_update: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this category. */
        id: number
      }
    }
    requestBody: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['Category']
        'multipart/form-data': components['schemas']['Category']
        'application/json': components['schemas']['Category']
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['Category']
        }
      }
    }
  }
  /** Delete an existing category. */
  categories_destroy: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this category. */
        id: number
      }
    }
    responses: {
      /** @description No response body */
      204: {
        content: never
      }
    }
  }
  /** Partially update an existing category. */
  categories_partial_update: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this category. */
        id: number
      }
    }
    requestBody?: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['PatchedCategory']
        'multipart/form-data': components['schemas']['PatchedCategory']
        'application/json': components['schemas']['PatchedCategory']
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['Category']
        }
      }
    }
  }
  /** List all funding categories. */
  funding_categories_list: {
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['FundingCategory'][]
        }
      }
    }
  }
  /** Create a new funding category. */
  funding_categories_create: {
    requestBody: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['FundingCategory']
        'multipart/form-data': components['schemas']['FundingCategory']
        'application/json': components['schemas']['FundingCategory']
      }
    }
    responses: {
      201: {
        content: {
          'application/json': components['schemas']['FundingCategory']
        }
      }
    }
  }
  /** Retrieve a single funding category. */
  funding_categories_retrieve: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this funding category. */
        id: number
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['FundingCategory']
        }
      }
    }
  }
  /** Update an existing funding category. */
  funding_categories_update: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this funding category. */
        id: number
      }
    }
    requestBody: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['FundingCategory']
        'multipart/form-data': components['schemas']['FundingCategory']
        'application/json': components['schemas']['FundingCategory']
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['FundingCategory']
        }
      }
    }
  }
  /** Delete an existing funding category. */
  funding_categories_destroy: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this funding category. */
        id: number
      }
    }
    responses: {
      /** @description No response body */
      204: {
        content: never
      }
    }
  }
  /** Partially update an existing funding category. */
  funding_categories_partial_update: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this funding category. */
        id: number
      }
    }
    requestBody?: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['PatchedFundingCategory']
        'multipart/form-data': components['schemas']['PatchedFundingCategory']
        'application/json': components['schemas']['PatchedFundingCategory']
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['FundingCategory']
        }
      }
    }
  }
  /** List all hosts. */
  hosts_list: {
    parameters: {
      query?: {
        /** @description Number of results to return per page. */
        limit?: number
        /** @description The initial index from which to return the results. */
        offset?: number
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['PaginatedHostList']
        }
      }
    }
  }
  /** Create a new host. */
  hosts_create: {
    requestBody: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['Host']
        'multipart/form-data': components['schemas']['Host']
        'application/json': components['schemas']['Host']
      }
    }
    responses: {
      201: {
        content: {
          'application/json': components['schemas']['Host']
        }
      }
    }
  }
  /** Retrieve a single host. */
  hosts_retrieve: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this host. */
        id: number
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['Host']
        }
      }
    }
  }
  /** Update an existing host. */
  hosts_update: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this host. */
        id: number
      }
    }
    requestBody: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['Host']
        'multipart/form-data': components['schemas']['Host']
        'application/json': components['schemas']['Host']
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['Host']
        }
      }
    }
  }
  /** Delete an existing host. */
  hosts_destroy: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this host. */
        id: number
      }
    }
    responses: {
      /** @description No response body */
      204: {
        content: never
      }
    }
  }
  /** Partially update an existing host. */
  hosts_partial_update: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this host. */
        id: number
      }
    }
    requestBody?: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['PatchedHost']
        'multipart/form-data': components['schemas']['PatchedHost']
        'application/json': components['schemas']['PatchedHost']
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['Host']
        }
      }
    }
  }
  /** List all images. */
  images_list: {
    parameters: {
      query?: {
        /** @description Number of results to return per page. */
        limit?: number
        /** @description The initial index from which to return the results. */
        offset?: number
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['PaginatedImageList']
        }
      }
    }
  }
  /**
   * Create a new image.
   * @description Create an Image instance. Any user can create an image.
   */
  images_create: {
    requestBody?: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['Image']
        'multipart/form-data': components['schemas']['Image']
        'application/json': components['schemas']['Image']
      }
    }
    responses: {
      201: {
        content: {
          'application/json': components['schemas']['Image']
        }
      }
    }
  }
  /** Retrieve a single image. */
  images_retrieve: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this image. */
        id: number
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['Image']
        }
      }
    }
  }
  /**
   * Update an existing image.
   * @description Only `alt_text`, `credits`, and `ppoi` can be updated.
   */
  images_update: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this image. */
        id: number
      }
    }
    requestBody?: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['Image']
        'multipart/form-data': components['schemas']['Image']
        'application/json': components['schemas']['Image']
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['Image']
        }
      }
    }
  }
  /**
   * Delete an existing image.
   * @description Destroy an Image instance. Only the owner can delete an image.
   */
  images_destroy: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this image. */
        id: number
      }
    }
    responses: {
      /** @description No response body */
      204: {
        content: never
      }
    }
  }
  /**
   * Partially update an existing image.
   * @description Only `alt_text`, `credits`, and `ppoi` can be updated.
   */
  images_partial_update: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this image. */
        id: number
      }
    }
    requestBody?: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['PatchedImage']
        'multipart/form-data': components['schemas']['PatchedImage']
        'application/json': components['schemas']['PatchedImage']
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['Image']
        }
      }
    }
  }
  /** List all languages. */
  languages_list: {
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['Language'][]
        }
      }
    }
  }
  /** Create a new language. */
  languages_create: {
    requestBody: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['Language']
        'multipart/form-data': components['schemas']['Language']
        'application/json': components['schemas']['Language']
      }
    }
    responses: {
      201: {
        content: {
          'application/json': components['schemas']['Language']
        }
      }
    }
  }
  /** Retrieve a single language. */
  languages_retrieve: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this language. */
        id: number
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['Language']
        }
      }
    }
  }
  /** Update an existing language. */
  languages_update: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this language. */
        id: number
      }
    }
    requestBody: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['Language']
        'multipart/form-data': components['schemas']['Language']
        'application/json': components['schemas']['Language']
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['Language']
        }
      }
    }
  }
  /** Delete an existing language. */
  languages_destroy: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this language. */
        id: number
      }
    }
    responses: {
      /** @description No response body */
      204: {
        content: never
      }
    }
  }
  /** Partially update an existing language. */
  languages_partial_update: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this language. */
        id: number
      }
    }
    requestBody?: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['PatchedLanguage']
        'multipart/form-data': components['schemas']['PatchedLanguage']
        'application/json': components['schemas']['PatchedLanguage']
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['Language']
        }
      }
    }
  }
  /** List all license types. */
  licenses_list: {
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['License'][]
        }
      }
    }
  }
  /** Create a new license type. */
  licenses_create: {
    requestBody: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['License']
        'multipart/form-data': components['schemas']['License']
        'application/json': components['schemas']['License']
      }
    }
    responses: {
      201: {
        content: {
          'application/json': components['schemas']['License']
        }
      }
    }
  }
  /** Retrieve a single license type. */
  licenses_retrieve: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this license. */
        id: number
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['License']
        }
      }
    }
  }
  /** Update an existing license type. */
  licenses_update: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this license. */
        id: number
      }
    }
    requestBody: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['License']
        'multipart/form-data': components['schemas']['License']
        'application/json': components['schemas']['License']
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['License']
        }
      }
    }
  }
  /** Delete an existing license type. */
  licenses_destroy: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this license. */
        id: number
      }
    }
    responses: {
      /** @description No response body */
      204: {
        content: never
      }
    }
  }
  /** Partially update an existing license type. */
  licenses_partial_update: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this license. */
        id: number
      }
    }
    requestBody?: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['PatchedLicense']
        'multipart/form-data': components['schemas']['PatchedLicense']
        'application/json': components['schemas']['PatchedLicense']
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['License']
        }
      }
    }
  }
  /** List all link types. */
  link_types_list: {
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['LinkType'][]
        }
      }
    }
  }
  /** Create a new link type. */
  link_types_create: {
    requestBody: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['LinkType']
        'multipart/form-data': components['schemas']['LinkType']
        'application/json': components['schemas']['LinkType']
      }
    }
    responses: {
      201: {
        content: {
          'application/json': components['schemas']['LinkType']
        }
      }
    }
  }
  /** Retrieve a single link type. */
  link_types_retrieve: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this link type. */
        id: number
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['LinkType']
        }
      }
    }
  }
  /** Update an existing link type. */
  link_types_update: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this link type. */
        id: number
      }
    }
    requestBody: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['LinkType']
        'multipart/form-data': components['schemas']['LinkType']
        'application/json': components['schemas']['LinkType']
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['LinkType']
        }
      }
    }
  }
  /** Delete an existing link type. */
  link_types_destroy: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this link type. */
        id: number
      }
    }
    responses: {
      /** @description No response body */
      204: {
        content: never
      }
    }
  }
  /** Partially update an existing link type. */
  link_types_partial_update: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this link type. */
        id: number
      }
    }
    requestBody?: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['PatchedLinkType']
        'multipart/form-data': components['schemas']['PatchedLinkType']
        'application/json': components['schemas']['PatchedLinkType']
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['LinkType']
        }
      }
    }
  }
  /** List all music focuses. */
  music_focus_list: {
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['MusicFocus'][]
        }
      }
    }
  }
  /** Create a new music focus. */
  music_focus_create: {
    requestBody: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['MusicFocus']
        'multipart/form-data': components['schemas']['MusicFocus']
        'application/json': components['schemas']['MusicFocus']
      }
    }
    responses: {
      201: {
        content: {
          'application/json': components['schemas']['MusicFocus']
        }
      }
    }
  }
  /** Retrieve a single music focus. */
  music_focus_retrieve: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this music focus. */
        id: number
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['MusicFocus']
        }
      }
    }
  }
  /** Update an existing music focus. */
  music_focus_update: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this music focus. */
        id: number
      }
    }
    requestBody: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['MusicFocus']
        'multipart/form-data': components['schemas']['MusicFocus']
        'application/json': components['schemas']['MusicFocus']
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['MusicFocus']
        }
      }
    }
  }
  /** Delete an existing music focus. */
  music_focus_destroy: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this music focus. */
        id: number
      }
    }
    responses: {
      /** @description No response body */
      204: {
        content: never
      }
    }
  }
  /** Partially update an existing music focus. */
  music_focus_partial_update: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this music focus. */
        id: number
      }
    }
    requestBody?: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['PatchedMusicFocus']
        'multipart/form-data': components['schemas']['PatchedMusicFocus']
        'application/json': components['schemas']['PatchedMusicFocus']
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['MusicFocus']
        }
      }
    }
  }
  /** List all notes. */
  notes_list: {
    parameters: {
      query?: {
        /** @description Return only notes matching the specified id(s). */
        ids?: number[]
        /** @description Number of results to return per page. */
        limit?: number
        /** @description The initial index from which to return the results. */
        offset?: number
        /** @description Return only notes that belong to the specified owner(s). */
        ownerIds?: number[]
        /** @description Return only notes that belong to the specified show(s). */
        showIds?: string[]
        /** @description Return only notes by show the specified owner(s): all notes the user may edit. */
        showOwnerIds?: string[]
        /** @description Return only notes that belong to the specified timeslot(s). */
        timeslotIds?: number[]
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['PaginatedNoteList']
        }
      }
    }
  }
  /** Create a new note. */
  notes_create: {
    requestBody: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['Note']
        'multipart/form-data': components['schemas']['Note']
        'application/json': components['schemas']['Note']
      }
    }
    responses: {
      201: {
        content: {
          'application/json': components['schemas']['Note']
        }
      }
    }
  }
  /** Retrieve a single note. */
  notes_retrieve: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this note. */
        id: number
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['Note']
        }
      }
    }
  }
  /** Update an existing note. */
  notes_update: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this note. */
        id: number
      }
    }
    requestBody: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['Note']
        'multipart/form-data': components['schemas']['Note']
        'application/json': components['schemas']['Note']
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['Note']
        }
      }
    }
  }
  /** Delete an existing note. */
  notes_destroy: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this note. */
        id: number
      }
    }
    responses: {
      /** @description No response body */
      204: {
        content: never
      }
    }
  }
  /**
   * Partially update an existing note.
   * @description Only admins can partially update existing notes.
   */
  notes_partial_update: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this note. */
        id: number
      }
    }
    requestBody?: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['PatchedNote']
        'multipart/form-data': components['schemas']['PatchedNote']
        'application/json': components['schemas']['PatchedNote']
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['Note']
        }
      }
    }
  }
  /** List all rrule. */
  rrules_list: {
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['RRule'][]
        }
      }
    }
  }
  rrules_create: {
    requestBody?: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['RRule']
        'multipart/form-data': components['schemas']['RRule']
        'application/json': components['schemas']['RRule']
      }
    }
    responses: {
      201: {
        content: {
          'application/json': components['schemas']['RRule']
        }
      }
    }
  }
  /** Retrieve a single rrule. */
  rrules_retrieve: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this recurrence rule. */
        id: number
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['RRule']
        }
      }
    }
  }
  rrules_update: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this recurrence rule. */
        id: number
      }
    }
    requestBody?: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['RRule']
        'multipart/form-data': components['schemas']['RRule']
        'application/json': components['schemas']['RRule']
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['RRule']
        }
      }
    }
  }
  rrules_destroy: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this recurrence rule. */
        id: number
      }
    }
    responses: {
      /** @description No response body */
      204: {
        content: never
      }
    }
  }
  rrules_partial_update: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this recurrence rule. */
        id: number
      }
    }
    requestBody?: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['PatchedRRule']
        'multipart/form-data': components['schemas']['PatchedRRule']
        'application/json': components['schemas']['PatchedRRule']
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['RRule']
        }
      }
    }
  }
  /** List all schedules. */
  schedules_list: {
    parameters: {
      query?: {
        /** @description Number of results to return per page. */
        limit?: number
        /** @description The initial index from which to return the results. */
        offset?: number
        /** @description Return only schedules that belong to the specified show(s). */
        showIds?: number[]
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['PaginatedScheduleList']
        }
      }
    }
  }
  /**
   * Create a new schedule.
   * @description Create a schedule, generate timeslots, test for collisions and resolve them
   * (including notes).
   *
   * Note that creating or updating a schedule is the only way to create timeslots.
   *
   * Only admins may add schedules.
   *
   * The projected timeslots defined by the schedule are matched against existing
   * timeslots. The API will return an object that contains
   *
   * * the schedule's data,
   * * projected timeslots,
   * * detected collisions,
   * * and possible solutions.
   *
   * As long as no `solutions` object has been set or unresolved collisions exist,
   * no data is written to the database. A schedule is only created if at least
   * one timeslot was generated by it.
   *
   * In order to resolve any possible conflicts, the client must submit a new request with
   * a solution for each conflict. Possible solutions are listed as part of the projected
   * timeslot in the `solution_choices` array. In a best-case scenario with no detected
   * conflicts an empty solutions object will suffice. For more details on the individual
   * types of solutions see the SolutionChoicesEnum.
   *
   * **Please note**:
   * If there's more than one collision for a projected timeslot, only `theirs` and `ours`
   * are currently supported as solutions.
   */
  schedules_create: {
    requestBody: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['ScheduleCreateUpdateRequest']
        'multipart/form-data': components['schemas']['ScheduleCreateUpdateRequest']
        'application/json': components['schemas']['ScheduleCreateUpdateRequest']
      }
    }
    responses: {
      /** @description Signals the successful creation of the schedule and of the projected timeslots. */
      201: {
        content: {
          'application/json': components['schemas']['ScheduleResponse']
        }
      }
      /** @description Returns the list of timeslots that would be created, updated and deleted if the schedule request would not have been sent with the dryrun flag. */
      202: {
        content: {
          'application/json': components['schemas']['ScheduleDryRunResponse']
        }
      }
      /**
       * @description
       * Returned in case the request contained invalid data.
       *
       * This may happen if:
       * * the last date is before the start date (`no-start-after-end`),
       *   in which case you should correct either the start or until date.
       * * The start and last date are the same (`no-same-day-start-and-end`).
       *   This is only allowed for single timeslots with the recurrence rule
       *   set to `once`. You should fix either the start or until date.
       * * The number of conflicts and solutions aren’t the same
       *   (`one-solution-per-conflict`). Only one solution is allowed per conflict,
       *   so you either offered too many or not enough solutions for any reported
       *   conflicts.
       * * The referenced recurrence rule does not exist.
       */
      400: {
        content: {
          'application/json': components['schemas']['Error']
        }
      }
      /** @description Returned in case the request contained no or invalid authenticated data or the authenticated user does not have authorization to perform the requested operation. */
      403: {
        content: {
          'application/json': components['schemas']['Error']
        }
      }
      /**
       * @description
       * Returns the list of projected timeslots and any collisions that may have
       * been found for existing timeslots.
       *
       * Errors on projected timeslots may include:
       * * 'This change on the timeslot is not allowed.'
       *   When adding: There was a change in the schedule's data during conflict
       *   resolution.
       *   When updating: Fields 'start', 'end', 'by_weekday' or 'rrule' have changed,
       *   which is not allowed.
       * * 'No solution given': No solution was provided for the conflict in
       *   `solutions`. Provide a value of `solution_choices`.
       * * 'Given solution is not accepted for this conflict.':
       *   The solution has a value which is not part of `solution_choices`.
       *   Provide a value of `solution_choices` (at least `ours` or `theirs`).
       */
      409: {
        content: {
          'application/json': components['schemas']['ScheduleConflictResponse']
        }
      }
    }
  }
  /** Retrieve a single schedule. */
  schedules_retrieve: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this schedule. */
        id: number
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['Schedule']
        }
      }
    }
  }
  /**
   * Update an existing schedule.
   * @description Update a schedule, generate timeslots, test for collisions and resolve
   * them including notes.
   *
   * Only admins may update schedules.
   */
  schedules_update: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this schedule. */
        id: number
      }
    }
    requestBody: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['ScheduleCreateUpdateRequest']
        'multipart/form-data': components['schemas']['ScheduleCreateUpdateRequest']
        'application/json': components['schemas']['ScheduleCreateUpdateRequest']
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['ScheduleCreateUpdateRequest']
        }
      }
    }
  }
  /**
   * Delete an existing schedule.
   * @description Only admins may delete schedules.
   */
  schedules_destroy: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this schedule. */
        id: number
      }
    }
    responses: {
      /** @description No response body */
      204: {
        content: never
      }
    }
  }
  /** Partially update an existing schedule. */
  schedules_partial_update: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this schedule. */
        id: number
      }
    }
    requestBody?: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['PatchedScheduleCreateUpdateRequest']
        'multipart/form-data': components['schemas']['PatchedScheduleCreateUpdateRequest']
        'application/json': components['schemas']['PatchedScheduleCreateUpdateRequest']
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['ScheduleCreateUpdateRequest']
        }
      }
    }
  }
  /**
   * @description OpenApi3 schema for this API. Format can be selected via content negotiation.
   *
   * - YAML: application/vnd.oai.openapi
   * - JSON: application/vnd.oai.openapi+json
   */
  schema_retrieve: {
    parameters: {
      query?: {
        format?: 'json' | 'yaml'
        lang?:
          | 'af'
          | 'ar'
          | 'ar-dz'
          | 'ast'
          | 'az'
          | 'be'
          | 'bg'
          | 'bn'
          | 'br'
          | 'bs'
          | 'ca'
          | 'ckb'
          | 'cs'
          | 'cy'
          | 'da'
          | 'de'
          | 'dsb'
          | 'el'
          | 'en'
          | 'en-au'
          | 'en-gb'
          | 'eo'
          | 'es'
          | 'es-ar'
          | 'es-co'
          | 'es-mx'
          | 'es-ni'
          | 'es-ve'
          | 'et'
          | 'eu'
          | 'fa'
          | 'fi'
          | 'fr'
          | 'fy'
          | 'ga'
          | 'gd'
          | 'gl'
          | 'he'
          | 'hi'
          | 'hr'
          | 'hsb'
          | 'hu'
          | 'hy'
          | 'ia'
          | 'id'
          | 'ig'
          | 'io'
          | 'is'
          | 'it'
          | 'ja'
          | 'ka'
          | 'kab'
          | 'kk'
          | 'km'
          | 'kn'
          | 'ko'
          | 'ky'
          | 'lb'
          | 'lt'
          | 'lv'
          | 'mk'
          | 'ml'
          | 'mn'
          | 'mr'
          | 'ms'
          | 'my'
          | 'nb'
          | 'ne'
          | 'nl'
          | 'nn'
          | 'os'
          | 'pa'
          | 'pl'
          | 'pt'
          | 'pt-br'
          | 'ro'
          | 'ru'
          | 'sk'
          | 'sl'
          | 'sq'
          | 'sr'
          | 'sr-latn'
          | 'sv'
          | 'sw'
          | 'ta'
          | 'te'
          | 'tg'
          | 'th'
          | 'tk'
          | 'tr'
          | 'tt'
          | 'udm'
          | 'uk'
          | 'ur'
          | 'uz'
          | 'vi'
          | 'zh-hans'
          | 'zh-hant'
      }
    }
    responses: {
      200: {
        content: {
          'application/vnd.oai.openapi': {
            [key: string]: unknown
          }
          'application/yaml': {
            [key: string]: unknown
          }
          'application/vnd.oai.openapi+json': {
            [key: string]: unknown
          }
          'application/json': {
            [key: string]: unknown
          }
        }
      }
    }
  }
  /** List all shows. */
  shows_list: {
    parameters: {
      query?: {
        /** @description Return only shows of the given category or categories. */
        categoryIds?: number[]
        /** @description Return only shows of the given category slug. */
        categorySlug?: string
        /** @description Return only shows assigned to the given host(s). */
        hostIds?: number[]
        /** @description Return only currently running shows (with timeslots in the future) if true or past or upcoming shows if false. */
        isActive?: boolean
        /** @description Return only shows that are public/non-public. */
        isPublic?: boolean
        /** @description Return only shows of the given language(s). */
        languageIds?: number[]
        /** @description Number of results to return per page. */
        limit?: number
        /** @description Return only shows with given music focus(es). */
        musicFocusIds?: number[]
        /** @description Return only shows with the give music focus slug. */
        musicFocusSlug?: string
        /** @description The initial index from which to return the results. */
        offset?: number
        /**
         * @description Order shows by the given field(s).
         *
         * * `name` - Name
         * * `-name` - Name (descending)
         * * `slug` - Slug
         * * `-slug` - Slug (descending)
         * * `id` - Id
         * * `-id` - Id (descending)
         * * `is_active` - Is active
         * * `-is_active` - Is active (descending)
         * * `is_owner` - Is owner
         * * `-is_owner` - Is owner (descending)
         * * `updated_at` - Updated at
         * * `-updated_at` - Updated at (descending)
         * * `updated_by` - Updated by
         * * `-updated_by` - Updated by (descending)
         */
        order?: (
          | '-id'
          | '-is_active'
          | '-is_owner'
          | '-name'
          | '-slug'
          | '-updated_at'
          | '-updated_by'
          | 'id'
          | 'is_active'
          | 'is_owner'
          | 'name'
          | 'slug'
          | 'updated_at'
          | 'updated_by'
        )[]
        /** @description Return only shows that belong to the given owner(s). */
        ownerIds?: number[]
        /** @description A search term. */
        search?: string
        /** @description Return only shows of the given topic(s). */
        topicIds?: number[]
        /** @description Return only shows of the given topic slug. */
        topicSlug?: string
        /** @description Return only shows of a given type. */
        typeId?: number[]
        /** @description Return only shows of the given type slug. */
        typeSlug?: string
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['PaginatedShowList']
        }
      }
    }
  }
  /**
   * Create a new show.
   * @description Only admins may create a show.
   */
  shows_create: {
    requestBody: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['Show']
        'multipart/form-data': components['schemas']['Show']
        'application/json': components['schemas']['Show']
      }
    }
    responses: {
      201: {
        content: {
          'application/json': components['schemas']['Show']
        }
      }
    }
  }
  /** Retrieve a single show. */
  shows_retrieve: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this show. */
        id: number
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['Show']
        }
      }
    }
  }
  /**
   * Update an existing show.
   * @description Non-admin users may only update shows they own.
   */
  shows_update: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this show. */
        id: number
      }
    }
    requestBody: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['Show']
        'multipart/form-data': components['schemas']['Show']
        'application/json': components['schemas']['Show']
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['Show']
        }
      }
    }
  }
  /**
   * Delete an existing show.
   * @description Only admins may delete shows.
   */
  shows_destroy: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this show. */
        id: number
      }
    }
    responses: {
      /** @description No response body */
      204: {
        content: never
      }
    }
  }
  /** Partially update an existing show. */
  shows_partial_update: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this show. */
        id: number
      }
    }
    requestBody?: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['PatchedShow']
        'multipart/form-data': components['schemas']['PatchedShow']
        'application/json': components['schemas']['PatchedShow']
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['Show']
        }
      }
    }
  }
  /** List all notes. */
  shows_notes_list: {
    parameters: {
      query?: {
        /** @description Return only notes matching the specified id(s). */
        ids?: number[]
        /** @description Number of results to return per page. */
        limit?: number
        /** @description The initial index from which to return the results. */
        offset?: number
        /** @description Return only notes that belong to the specified owner(s). */
        ownerIds?: number[]
        /** @description Return only notes that belong to the specified show(s). */
        showIds?: string[]
        /** @description Return only notes by show the specified owner(s): all notes the user may edit. */
        showOwnerIds?: string[]
        /** @description Return only notes that belong to the specified timeslot(s). */
        timeslotIds?: number[]
      }
      path: {
        showPk: string
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['PaginatedNoteList']
        }
      }
    }
  }
  /** Create a new note. */
  shows_notes_create: {
    parameters: {
      path: {
        showPk: string
      }
    }
    requestBody: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['Note']
        'multipart/form-data': components['schemas']['Note']
        'application/json': components['schemas']['Note']
      }
    }
    responses: {
      201: {
        content: {
          'application/json': components['schemas']['Note']
        }
      }
    }
  }
  /** Retrieve a single note. */
  shows_notes_retrieve: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this note. */
        id: number
        showPk: string
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['Note']
        }
      }
    }
  }
  /** Update an existing note. */
  shows_notes_update: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this note. */
        id: number
        showPk: string
      }
    }
    requestBody: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['Note']
        'multipart/form-data': components['schemas']['Note']
        'application/json': components['schemas']['Note']
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['Note']
        }
      }
    }
  }
  /** Delete an existing note. */
  shows_notes_destroy: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this note. */
        id: number
        showPk: string
      }
    }
    responses: {
      /** @description No response body */
      204: {
        content: never
      }
    }
  }
  /**
   * Partially update an existing note.
   * @description Only admins can partially update existing notes.
   */
  shows_notes_partial_update: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this note. */
        id: number
        showPk: string
      }
    }
    requestBody?: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['PatchedNote']
        'multipart/form-data': components['schemas']['PatchedNote']
        'application/json': components['schemas']['PatchedNote']
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['Note']
        }
      }
    }
  }
  /** List all schedules. */
  shows_schedules_list: {
    parameters: {
      query?: {
        /** @description Number of results to return per page. */
        limit?: number
        /** @description The initial index from which to return the results. */
        offset?: number
        /** @description Return only schedules that belong to the specified show(s). */
        showIds?: number[]
      }
      path: {
        showPk: number
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['PaginatedScheduleList']
        }
      }
    }
  }
  /**
   * Create a new schedule.
   * @description Create a schedule, generate timeslots, test for collisions and resolve them
   * (including notes).
   *
   * Note that creating or updating a schedule is the only way to create timeslots.
   *
   * Only admins may add schedules.
   *
   * The projected timeslots defined by the schedule are matched against existing
   * timeslots. The API will return an object that contains
   *
   * * the schedule's data,
   * * projected timeslots,
   * * detected collisions,
   * * and possible solutions.
   *
   * As long as no `solutions` object has been set or unresolved collisions exist,
   * no data is written to the database. A schedule is only created if at least
   * one timeslot was generated by it.
   *
   * In order to resolve any possible conflicts, the client must submit a new request with
   * a solution for each conflict. Possible solutions are listed as part of the projected
   * timeslot in the `solution_choices` array. In a best-case scenario with no detected
   * conflicts an empty solutions object will suffice. For more details on the individual
   * types of solutions see the SolutionChoicesEnum.
   *
   * **Please note**:
   * If there's more than one collision for a projected timeslot, only `theirs` and `ours`
   * are currently supported as solutions.
   */
  shows_schedules_create: {
    parameters: {
      path: {
        showPk: number
      }
    }
    requestBody: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['ScheduleCreateUpdateRequest']
        'multipart/form-data': components['schemas']['ScheduleCreateUpdateRequest']
        'application/json': components['schemas']['ScheduleCreateUpdateRequest']
      }
    }
    responses: {
      /** @description Signals the successful creation of the schedule and of the projected timeslots. */
      201: {
        content: {
          'application/json': components['schemas']['ScheduleResponse']
        }
      }
      /** @description Returns the list of timeslots that would be created, updated and deleted if the schedule request would not have been sent with the dryrun flag. */
      202: {
        content: {
          'application/json': components['schemas']['ScheduleDryRunResponse']
        }
      }
      /**
       * @description
       * Returned in case the request contained invalid data.
       *
       * This may happen if:
       * * the last date is before the start date (`no-start-after-end`),
       *   in which case you should correct either the start or until date.
       * * The start and last date are the same (`no-same-day-start-and-end`).
       *   This is only allowed for single timeslots with the recurrence rule
       *   set to `once`. You should fix either the start or until date.
       * * The number of conflicts and solutions aren’t the same
       *   (`one-solution-per-conflict`). Only one solution is allowed per conflict,
       *   so you either offered too many or not enough solutions for any reported
       *   conflicts.
       * * The referenced recurrence rule does not exist.
       */
      400: {
        content: {
          'application/json': components['schemas']['Error']
        }
      }
      /** @description Returned in case the request contained no or invalid authenticated data or the authenticated user does not have authorization to perform the requested operation. */
      403: {
        content: {
          'application/json': components['schemas']['Error']
        }
      }
      /**
       * @description
       * Returns the list of projected timeslots and any collisions that may have
       * been found for existing timeslots.
       *
       * Errors on projected timeslots may include:
       * * 'This change on the timeslot is not allowed.'
       *   When adding: There was a change in the schedule's data during conflict
       *   resolution.
       *   When updating: Fields 'start', 'end', 'by_weekday' or 'rrule' have changed,
       *   which is not allowed.
       * * 'No solution given': No solution was provided for the conflict in
       *   `solutions`. Provide a value of `solution_choices`.
       * * 'Given solution is not accepted for this conflict.':
       *   The solution has a value which is not part of `solution_choices`.
       *   Provide a value of `solution_choices` (at least `ours` or `theirs`).
       */
      409: {
        content: {
          'application/json': components['schemas']['ScheduleConflictResponse']
        }
      }
    }
  }
  /** Retrieve a single schedule. */
  shows_schedules_retrieve: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this schedule. */
        id: number
        showPk: number
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['Schedule']
        }
      }
    }
  }
  /**
   * Update an existing schedule.
   * @description Update a schedule, generate timeslots, test for collisions and resolve
   * them including notes.
   *
   * Only admins may update schedules.
   */
  shows_schedules_update: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this schedule. */
        id: number
        showPk: number
      }
    }
    requestBody: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['ScheduleCreateUpdateRequest']
        'multipart/form-data': components['schemas']['ScheduleCreateUpdateRequest']
        'application/json': components['schemas']['ScheduleCreateUpdateRequest']
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['ScheduleCreateUpdateRequest']
        }
      }
    }
  }
  /**
   * Delete an existing schedule.
   * @description Only admins may delete schedules.
   */
  shows_schedules_destroy: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this schedule. */
        id: number
        showPk: number
      }
    }
    responses: {
      /** @description No response body */
      204: {
        content: never
      }
    }
  }
  /** Partially update an existing schedule. */
  shows_schedules_partial_update: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this schedule. */
        id: number
        showPk: number
      }
    }
    requestBody?: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['PatchedScheduleCreateUpdateRequest']
        'multipart/form-data': components['schemas']['PatchedScheduleCreateUpdateRequest']
        'application/json': components['schemas']['PatchedScheduleCreateUpdateRequest']
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['ScheduleCreateUpdateRequest']
        }
      }
    }
  }
  /**
   * List all timeslots.
   * @description
   * By default, only timeslots ranging from now + 60 days will be displayed.
   * You may override this default overriding start and/or end parameter.
   */
  shows_schedules_timeslots_list: {
    parameters: {
      query?: {
        /** @description Only returns timeslots that end on or before the specified date. By default, this is set to value of the start filter + 60 days. */
        end?: string
        /** @description Number of results to return per page. */
        limit?: number
        /** @description The initial index from which to return the results. */
        offset?: number
        /**
         * @description Ordering
         *
         * * `repetitions` - Repetitions
         * * `-repetitions` - Repetitions (descending)
         * * `note` - Note
         * * `-note` - Note (descending)
         * * `id` - Id
         * * `-id` - Id (descending)
         * * `end` - End
         * * `-end` - End (descending)
         * * `memo` - Memo
         * * `-memo` - Memo (descending)
         * * `playlist_id` - Playlist id
         * * `-playlist_id` - Playlist id (descending)
         * * `repetition_of` - Repetition of
         * * `-repetition_of` - Repetition of (descending)
         * * `schedule` - Schedule
         * * `-schedule` - Schedule (descending)
         * * `start` - Start
         * * `-start` - Start (descending)
         */
        order?: (
          | '-end'
          | '-id'
          | '-memo'
          | '-note'
          | '-playlist_id'
          | '-repetition_of'
          | '-repetitions'
          | '-schedule'
          | '-start'
          | 'end'
          | 'id'
          | 'memo'
          | 'note'
          | 'playlist_id'
          | 'repetition_of'
          | 'repetitions'
          | 'schedule'
          | 'start'
        )[]
        /** @description Return only timeslots that belong to the specified schedule(s). */
        scheduleIds?: number[]
        /** @description Return only timeslots that belong to the specified show(s). */
        showIds?: number[]
        /** @description Only returns timeslots after that start on or after the specified date. By default, this is set to the current date. */
        start?: string
        /** @description Returns the 10 nearest timeslots around the specified datetime. If specified without a datetime value the current date and time is assumed. */
        surrounding?: string
      }
      path: {
        schedulePk: number
        showPk: string
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['PaginatedTimeSlotList']
        }
      }
    }
  }
  /** Retrieve a single timeslot. */
  shows_schedules_timeslots_retrieve: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this time slot. */
        id: number
        schedulePk: number
        showPk: string
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['TimeSlot']
        }
      }
    }
  }
  /** Update an existing timeslot. */
  shows_schedules_timeslots_update: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this time slot. */
        id: number
        schedulePk: number
        showPk: string
      }
    }
    requestBody?: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['TimeSlot']
        'multipart/form-data': components['schemas']['TimeSlot']
        'application/json': components['schemas']['TimeSlot']
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['TimeSlot']
        }
      }
    }
  }
  /**
   * Delete an existing timeslot.
   * @description Only admins may delete timeslots.
   */
  shows_schedules_timeslots_destroy: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this time slot. */
        id: number
        schedulePk: number
        showPk: string
      }
    }
    responses: {
      /** @description No response body */
      204: {
        content: never
      }
    }
  }
  /** Partially update an existing timeslot. */
  shows_schedules_timeslots_partial_update: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this time slot. */
        id: number
        schedulePk: number
        showPk: string
      }
    }
    requestBody?: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['PatchedTimeSlot']
        'multipart/form-data': components['schemas']['PatchedTimeSlot']
        'application/json': components['schemas']['PatchedTimeSlot']
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['TimeSlot']
        }
      }
    }
  }
  /** List all notes. */
  shows_schedules_timeslots_note_list: {
    parameters: {
      query?: {
        /** @description Return only notes matching the specified id(s). */
        ids?: number[]
        /** @description Number of results to return per page. */
        limit?: number
        /** @description The initial index from which to return the results. */
        offset?: number
        /** @description Return only notes that belong to the specified owner(s). */
        ownerIds?: number[]
        /** @description Return only notes that belong to the specified show(s). */
        showIds?: string[]
        /** @description Return only notes by show the specified owner(s): all notes the user may edit. */
        showOwnerIds?: string[]
        /** @description Return only notes that belong to the specified timeslot(s). */
        timeslotIds?: number[]
      }
      path: {
        schedulePk: number
        showPk: string
        timeslotPk: number
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['PaginatedNoteList']
        }
      }
    }
  }
  /** Create a new note. */
  shows_schedules_timeslots_note_create: {
    parameters: {
      path: {
        schedulePk: number
        showPk: string
        timeslotPk: number
      }
    }
    requestBody: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['Note']
        'multipart/form-data': components['schemas']['Note']
        'application/json': components['schemas']['Note']
      }
    }
    responses: {
      201: {
        content: {
          'application/json': components['schemas']['Note']
        }
      }
    }
  }
  /** Retrieve a single note. */
  shows_schedules_timeslots_note_retrieve: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this note. */
        id: number
        schedulePk: number
        showPk: string
        timeslotPk: number
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['Note']
        }
      }
    }
  }
  /** Update an existing note. */
  shows_schedules_timeslots_note_update: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this note. */
        id: number
        schedulePk: number
        showPk: string
        timeslotPk: number
      }
    }
    requestBody: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['Note']
        'multipart/form-data': components['schemas']['Note']
        'application/json': components['schemas']['Note']
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['Note']
        }
      }
    }
  }
  /** Delete an existing note. */
  shows_schedules_timeslots_note_destroy: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this note. */
        id: number
        schedulePk: number
        showPk: string
        timeslotPk: number
      }
    }
    responses: {
      /** @description No response body */
      204: {
        content: never
      }
    }
  }
  /**
   * Partially update an existing note.
   * @description Only admins can partially update existing notes.
   */
  shows_schedules_timeslots_note_partial_update: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this note. */
        id: number
        schedulePk: number
        showPk: string
        timeslotPk: number
      }
    }
    requestBody?: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['PatchedNote']
        'multipart/form-data': components['schemas']['PatchedNote']
        'application/json': components['schemas']['PatchedNote']
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['Note']
        }
      }
    }
  }
  /**
   * List all timeslots.
   * @description
   * By default, only timeslots ranging from now + 60 days will be displayed.
   * You may override this default overriding start and/or end parameter.
   */
  shows_timeslots_list: {
    parameters: {
      query?: {
        /** @description Only returns timeslots that end on or before the specified date. By default, this is set to value of the start filter + 60 days. */
        end?: string
        /** @description Number of results to return per page. */
        limit?: number
        /** @description The initial index from which to return the results. */
        offset?: number
        /**
         * @description Ordering
         *
         * * `repetitions` - Repetitions
         * * `-repetitions` - Repetitions (descending)
         * * `note` - Note
         * * `-note` - Note (descending)
         * * `id` - Id
         * * `-id` - Id (descending)
         * * `end` - End
         * * `-end` - End (descending)
         * * `memo` - Memo
         * * `-memo` - Memo (descending)
         * * `playlist_id` - Playlist id
         * * `-playlist_id` - Playlist id (descending)
         * * `repetition_of` - Repetition of
         * * `-repetition_of` - Repetition of (descending)
         * * `schedule` - Schedule
         * * `-schedule` - Schedule (descending)
         * * `start` - Start
         * * `-start` - Start (descending)
         */
        order?: (
          | '-end'
          | '-id'
          | '-memo'
          | '-note'
          | '-playlist_id'
          | '-repetition_of'
          | '-repetitions'
          | '-schedule'
          | '-start'
          | 'end'
          | 'id'
          | 'memo'
          | 'note'
          | 'playlist_id'
          | 'repetition_of'
          | 'repetitions'
          | 'schedule'
          | 'start'
        )[]
        /** @description Return only timeslots that belong to the specified schedule(s). */
        scheduleIds?: number[]
        /** @description Return only timeslots that belong to the specified show(s). */
        showIds?: number[]
        /** @description Only returns timeslots after that start on or after the specified date. By default, this is set to the current date. */
        start?: string
        /** @description Returns the 10 nearest timeslots around the specified datetime. If specified without a datetime value the current date and time is assumed. */
        surrounding?: string
      }
      path: {
        showPk: string
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['PaginatedTimeSlotList']
        }
      }
    }
  }
  /** Retrieve a single timeslot. */
  shows_timeslots_retrieve: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this time slot. */
        id: number
        showPk: string
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['TimeSlot']
        }
      }
    }
  }
  /** Update an existing timeslot. */
  shows_timeslots_update: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this time slot. */
        id: number
        showPk: string
      }
    }
    requestBody?: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['TimeSlot']
        'multipart/form-data': components['schemas']['TimeSlot']
        'application/json': components['schemas']['TimeSlot']
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['TimeSlot']
        }
      }
    }
  }
  /**
   * Delete an existing timeslot.
   * @description Only admins may delete timeslots.
   */
  shows_timeslots_destroy: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this time slot. */
        id: number
        showPk: string
      }
    }
    responses: {
      /** @description No response body */
      204: {
        content: never
      }
    }
  }
  /** Partially update an existing timeslot. */
  shows_timeslots_partial_update: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this time slot. */
        id: number
        showPk: string
      }
    }
    requestBody?: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['PatchedTimeSlot']
        'multipart/form-data': components['schemas']['PatchedTimeSlot']
        'application/json': components['schemas']['PatchedTimeSlot']
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['TimeSlot']
        }
      }
    }
  }
  /** List all notes. */
  shows_timeslots_note_list: {
    parameters: {
      query?: {
        /** @description Return only notes matching the specified id(s). */
        ids?: number[]
        /** @description Number of results to return per page. */
        limit?: number
        /** @description The initial index from which to return the results. */
        offset?: number
        /** @description Return only notes that belong to the specified owner(s). */
        ownerIds?: number[]
        /** @description Return only notes that belong to the specified show(s). */
        showIds?: string[]
        /** @description Return only notes by show the specified owner(s): all notes the user may edit. */
        showOwnerIds?: string[]
        /** @description Return only notes that belong to the specified timeslot(s). */
        timeslotIds?: number[]
      }
      path: {
        showPk: string
        timeslotPk: number
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['PaginatedNoteList']
        }
      }
    }
  }
  /** Create a new note. */
  shows_timeslots_note_create: {
    parameters: {
      path: {
        showPk: string
        timeslotPk: number
      }
    }
    requestBody: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['Note']
        'multipart/form-data': components['schemas']['Note']
        'application/json': components['schemas']['Note']
      }
    }
    responses: {
      201: {
        content: {
          'application/json': components['schemas']['Note']
        }
      }
    }
  }
  /** Retrieve a single note. */
  shows_timeslots_note_retrieve: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this note. */
        id: number
        showPk: string
        timeslotPk: number
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['Note']
        }
      }
    }
  }
  /** Update an existing note. */
  shows_timeslots_note_update: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this note. */
        id: number
        showPk: string
        timeslotPk: number
      }
    }
    requestBody: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['Note']
        'multipart/form-data': components['schemas']['Note']
        'application/json': components['schemas']['Note']
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['Note']
        }
      }
    }
  }
  /** Delete an existing note. */
  shows_timeslots_note_destroy: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this note. */
        id: number
        showPk: string
        timeslotPk: number
      }
    }
    responses: {
      /** @description No response body */
      204: {
        content: never
      }
    }
  }
  /**
   * Partially update an existing note.
   * @description Only admins can partially update existing notes.
   */
  shows_timeslots_note_partial_update: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this note. */
        id: number
        showPk: string
        timeslotPk: number
      }
    }
    requestBody?: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['PatchedNote']
        'multipart/form-data': components['schemas']['PatchedNote']
        'application/json': components['schemas']['PatchedNote']
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['Note']
        }
      }
    }
  }
  /**
   * List all timeslots.
   * @description
   * By default, only timeslots ranging from now + 60 days will be displayed.
   * You may override this default overriding start and/or end parameter.
   */
  timeslots_list: {
    parameters: {
      query?: {
        /** @description Only returns timeslots that end on or before the specified date. By default, this is set to value of the start filter + 60 days. */
        end?: string
        /** @description Number of results to return per page. */
        limit?: number
        /** @description The initial index from which to return the results. */
        offset?: number
        /**
         * @description Ordering
         *
         * * `repetitions` - Repetitions
         * * `-repetitions` - Repetitions (descending)
         * * `note` - Note
         * * `-note` - Note (descending)
         * * `id` - Id
         * * `-id` - Id (descending)
         * * `end` - End
         * * `-end` - End (descending)
         * * `memo` - Memo
         * * `-memo` - Memo (descending)
         * * `playlist_id` - Playlist id
         * * `-playlist_id` - Playlist id (descending)
         * * `repetition_of` - Repetition of
         * * `-repetition_of` - Repetition of (descending)
         * * `schedule` - Schedule
         * * `-schedule` - Schedule (descending)
         * * `start` - Start
         * * `-start` - Start (descending)
         */
        order?: (
          | '-end'
          | '-id'
          | '-memo'
          | '-note'
          | '-playlist_id'
          | '-repetition_of'
          | '-repetitions'
          | '-schedule'
          | '-start'
          | 'end'
          | 'id'
          | 'memo'
          | 'note'
          | 'playlist_id'
          | 'repetition_of'
          | 'repetitions'
          | 'schedule'
          | 'start'
        )[]
        /** @description Return only timeslots that belong to the specified schedule(s). */
        scheduleIds?: number[]
        /** @description Return only timeslots that belong to the specified show(s). */
        showIds?: number[]
        /** @description Only returns timeslots after that start on or after the specified date. By default, this is set to the current date. */
        start?: string
        /** @description Returns the 10 nearest timeslots around the specified datetime. If specified without a datetime value the current date and time is assumed. */
        surrounding?: string
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['PaginatedTimeSlotList']
        }
      }
    }
  }
  /** Retrieve a single timeslot. */
  timeslots_retrieve: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this time slot. */
        id: number
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['TimeSlot']
        }
      }
    }
  }
  /** Update an existing timeslot. */
  timeslots_update: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this time slot. */
        id: number
      }
    }
    requestBody?: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['TimeSlot']
        'multipart/form-data': components['schemas']['TimeSlot']
        'application/json': components['schemas']['TimeSlot']
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['TimeSlot']
        }
      }
    }
  }
  /**
   * Delete an existing timeslot.
   * @description Only admins may delete timeslots.
   */
  timeslots_destroy: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this time slot. */
        id: number
      }
    }
    responses: {
      /** @description No response body */
      204: {
        content: never
      }
    }
  }
  /** Partially update an existing timeslot. */
  timeslots_partial_update: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this time slot. */
        id: number
      }
    }
    requestBody?: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['PatchedTimeSlot']
        'multipart/form-data': components['schemas']['PatchedTimeSlot']
        'application/json': components['schemas']['PatchedTimeSlot']
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['TimeSlot']
        }
      }
    }
  }
  /** List all topics. */
  topics_list: {
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['Topic'][]
        }
      }
    }
  }
  /** Create a new topic. */
  topics_create: {
    requestBody: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['Topic']
        'multipart/form-data': components['schemas']['Topic']
        'application/json': components['schemas']['Topic']
      }
    }
    responses: {
      201: {
        content: {
          'application/json': components['schemas']['Topic']
        }
      }
    }
  }
  /** Retrieve a single topic. */
  topics_retrieve: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this topic. */
        id: number
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['Topic']
        }
      }
    }
  }
  /** Update an existing topic. */
  topics_update: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this topic. */
        id: number
      }
    }
    requestBody: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['Topic']
        'multipart/form-data': components['schemas']['Topic']
        'application/json': components['schemas']['Topic']
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['Topic']
        }
      }
    }
  }
  /** Delete an existing topic. */
  topics_destroy: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this topic. */
        id: number
      }
    }
    responses: {
      /** @description No response body */
      204: {
        content: never
      }
    }
  }
  /** Partially update an existing topic. */
  topics_partial_update: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this topic. */
        id: number
      }
    }
    requestBody?: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['PatchedTopic']
        'multipart/form-data': components['schemas']['PatchedTopic']
        'application/json': components['schemas']['PatchedTopic']
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['Topic']
        }
      }
    }
  }
  /** List all types. */
  types_list: {
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['Type'][]
        }
      }
    }
  }
  /** Create a new type. */
  types_create: {
    requestBody: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['Type']
        'multipart/form-data': components['schemas']['Type']
        'application/json': components['schemas']['Type']
      }
    }
    responses: {
      201: {
        content: {
          'application/json': components['schemas']['Type']
        }
      }
    }
  }
  /** Retrieve a single type. */
  types_retrieve: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this type. */
        id: number
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['Type']
        }
      }
    }
  }
  /** Update an existing type. */
  types_update: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this type. */
        id: number
      }
    }
    requestBody: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['Type']
        'multipart/form-data': components['schemas']['Type']
        'application/json': components['schemas']['Type']
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['Type']
        }
      }
    }
  }
  /** Delete an existing type. */
  types_destroy: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this type. */
        id: number
      }
    }
    responses: {
      /** @description No response body */
      204: {
        content: never
      }
    }
  }
  /** Partially update an existing type. */
  types_partial_update: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this type. */
        id: number
      }
    }
    requestBody?: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['PatchedType']
        'multipart/form-data': components['schemas']['PatchedType']
        'application/json': components['schemas']['PatchedType']
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['Type']
        }
      }
    }
  }
  /**
   * List all users.
   * @description The returned list of records will only contain a single record for non-admin users which is their own user account.
   */
  users_list: {
    parameters: {
      query?: {
        /** @description A search term. */
        search?: string
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['User'][]
        }
      }
    }
  }
  /**
   * Create a new user.
   * @description Only admins may create users.
   */
  users_create: {
    requestBody: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['User']
        'multipart/form-data': components['schemas']['User']
        'application/json': components['schemas']['User']
      }
    }
    responses: {
      201: {
        content: {
          'application/json': components['schemas']['User']
        }
      }
    }
  }
  /**
   * Retrieve a single user.
   * @description Non-admin users may only retrieve their own user record.
   */
  users_retrieve: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this user. */
        id: number
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['User']
        }
      }
    }
  }
  /**
   * Update an existing user.
   * @description Non-admin users may only update their own user record.
   */
  users_update: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this user. */
        id: number
      }
    }
    requestBody: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['User']
        'multipart/form-data': components['schemas']['User']
        'application/json': components['schemas']['User']
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['User']
        }
      }
    }
  }
  /**
   * Partially update an existing user.
   * @description Non-admin users may only update their own user record.
   */
  users_partial_update: {
    parameters: {
      path: {
        /** @description A unique integer value identifying this user. */
        id: number
      }
    }
    requestBody?: {
      content: {
        'application/x-www-form-urlencoded': components['schemas']['PatchedUser']
        'multipart/form-data': components['schemas']['PatchedUser']
        'application/json': components['schemas']['PatchedUser']
      }
    }
    responses: {
      200: {
        content: {
          'application/json': components['schemas']['User']
        }
      }
    }
  }
}