/* 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'] } } } } }