Skip to content
Snippets Groups Projects
tank-types.ts 27 KiB
Newer Older
Konrad Mohrfeldt's avatar
Konrad Mohrfeldt committed
 * This file was auto-generated by `make update-types` at 2024-03-27 20:31:32.680Z.
 * DO NOT make changes to this file.
 */

export interface paths {
  '/api/v1/files': {
    /**
     * List files
     * @description Lists files of show
     */
    get: {
      parameters: {
        query: {
          /** @description ID of the show */
          showId: number
          /** @description Limit number of results */
          /** @description Start listing from offset */
          offset?: number
        }
      }
      responses: {
        /** @description OK */
        200: {
          content: {
            'application/json': components['schemas']['v1.FilesListing']
          }
        }
        /** @description Bad Request */
        400: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Forbidden */
        403: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Internal Server Error */
        500: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
      }
    }
    /**
     * Add file
     * @description Adds a file and starts import
     */
    post: {
      parameters: {
        query?: {
          /** @description running|done - If given, return not before import has the given state */
        }
      }
      /** @description URI of the file */
      requestBody: {
        content: {
          'application/json': components['schemas']['v1.FileCreateRequest']
        }
      }
      responses: {
        /** @description Created */
        201: {
          content: {
            'application/json': components['schemas']['store.File']
          }
        }
        /** @description Bad Request */
        400: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Forbidden */
        403: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Internal Server Error */
        500: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
      }
    }
  }
  '/api/v1/files/{id}': {
    /**
     * Retrieve file
     * @description Retrieves file object.
     */
    get: {
      parameters: {
        path: {
          /** @description ID of the file */
          id: number
        }
      }
      responses: {
        /** @description OK */
        200: {
          content: {
            'application/json': components['schemas']['store.File']
          }
        }
        /** @description Bad Request */
        400: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Forbidden */
        403: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Not Found */
        404: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Internal Server Error */
        500: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
      }
    }
    /**
     * Delete file
     * @description Removes a file.
     */
    delete: {
      parameters: {
        path: {
          /** @description ID of the file */
          id: number
        }
      }
      responses: {
        /** @description No Content */
        204: {
          content: {}
        }
        /** @description Bad Request */
        400: {
          content: {
            '*/*': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Forbidden */
        403: {
          content: {
            '*/*': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Not Found */
        404: {
          content: {
            '*/*': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Conflict */
        409: {
          content: {
            '*/*': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Internal Server Error */
        500: {
          content: {
            '*/*': components['schemas']['v1.ErrorResponse']
          }
        }
      }
    }
    /**
     * Update file
     * @description Updates file metadata.
     */
    patch: {
      parameters: {
        path: {
          /** @description ID of the file */
          id: number
        }
      }
      /** @description File metadata */
      requestBody?: {
        content: {
          'application/json': components['schemas']['store.FileMetadata']
        }
      }
      responses: {
        /** @description OK */
        200: {
          content: {
            'application/json': components['schemas']['store.File']
          }
        }
        /** @description Bad Request */
        400: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Forbidden */
        403: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Not Found */
        404: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Internal Server Error */
        500: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
      }
    }
  }
  '/api/v1/files/{id}/import': {
    /**
     * Retrieve import status
     * @description Retrieves import status of the file.
     */
    get: {
      parameters: {
        query: {
          /** @description ID of the show */
          showId: number
          /** @description running|done - If given, return not before import has the given state */
          /** @description ID of the file */
          id: number
        }
      }
      responses: {
        /** @description OK */
        200: {
          content: {
            'application/json': components['schemas']['importer.Job']
          }
        }
        /** @description Bad Request */
        400: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Forbidden */
        403: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description No job for this file */
        404: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Internal Server Error */
        500: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
      }
    }
    /**
     * Cancel file import
     * @description Cancels import of file.
     */
    delete: {
      parameters: {
        query: {
          /** @description ID of the show */
          showId: number
        }
          /** @description ID of the file */
          id: number
        }
      }
      responses: {
        /** @description No Content */
        204: {
          content: {}
        }
        /** @description Bad Request */
        400: {
          content: {
            '*/*': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Forbidden */
        403: {
          content: {
            '*/*': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description No job for this file */
        404: {
          content: {
            '*/*': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Internal Server Error */
        500: {
          content: {
            '*/*': components['schemas']['v1.ErrorResponse']
          }
        }
      }
    }
  }
  '/api/v1/files/{id}/logs': {
    /**
     * Retrieve import logs
     * @description Retrieves import logs of the file.
     */
    get: {
      parameters: {
        path: {
          /** @description ID of the file */
          id: number
        }
      }
      responses: {
        /** @description OK */
        200: {
          content: {
            'application/json': components['schemas']['v1.FileImportLogs']
          }
        }
        /** @description Bad Request */
        400: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Forbidden */
        403: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Not Found */
        404: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Internal Server Error */
        500: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
      }
    }
  }
  '/api/v1/files/{id}/upload': {
    /**
     * Upload file content
     * @description Uploads file content. Only available if file was created using SourceURI set to upload://-type and file import state is running.
     */
    get: {
      parameters: {
        query: {
          /** @description ID of the show */
          showId: number
          /** @description A unique identifier for the uploaded file */
          /** @description ID of the file */
          id: number
        }
      }
      responses: {
        /** @description OK */
        200: {
          content: {}
        }
        /** @description No Content */
        204: {
          content: {}
        }
        /** @description Bad Request */
        400: {
          content: {
            '*/*': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Forbidden */
        403: {
          content: {
            '*/*': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Conflict */
        409: {
          content: {
            '*/*': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Internal Server Error */
        500: {
          content: {
            '*/*': components['schemas']['v1.ErrorResponse']
          }
        }
      }
    }
    /**
     * Upload file content
     * @description Uploads file content. Only available if file was created using SourceURI set to upload://-type and file import state is running.
     */
    put: {
      parameters: {
        query: {
          /** @description ID of the show */
          showId: number
        }
          /** @description ID of the file */
          id: number
        }
      }
      responses: {
        /** @description OK */
        200: {
          content: {}
        }
        /** @description Bad Request */
        400: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Forbidden */
        403: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Not Found */
        404: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Internal Server Error */
        500: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
      }
    }
    /**
     * Upload file content
     * @description Uploads file content via flow.js. Only available if file was created using SourceURI set to upload://-type and file import state is running.
     */
    post: {
      parameters: {
        path: {
          /** @description ID of the file */
          id: number
        }
      }
      responses: {
        /** @description OK */
        200: {
          content: {}
        }
        /** @description Bad Request */
        400: {
          content: {
            '*/*': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Forbidden */
        403: {
          content: {
            '*/*': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Conflict */
        409: {
          content: {
            '*/*': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Internal Server Error */
        500: {
          content: {
            '*/*': components['schemas']['v1.ErrorResponse']
          }
        }
      }
    }
  }
  '/api/v1/files/{id}/usage': {
    /**
     * List referring playlists
     * @description Lists playlists referring to the file.
     */
    get: {
      parameters: {
        path: {
          /** @description ID of the file */
          id: number
        }
      }
      responses: {
        /** @description OK */
        200: {
          content: {
            'application/json': components['schemas']['v1.FileUsageListing']
          }
        }
        /** @description Bad Request */
        400: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Forbidden */
        403: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Not Found */
        404: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Internal Server Error */
        500: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
      }
    }
  }
  '/api/v1/imports': {
    /**
     * List imports
     * @description Lists all running and pending imports
     */
    get: {
      parameters: {
        query: {
          /** @description ID of the show */
          showId: number
          /** @description Limit number of results */
          /** @description Start listing from offset */
          offset?: number
        }
      }
      responses: {
        /** @description OK */
        200: {
          content: {
            'application/json': components['schemas']['v1.JobsListing']
          }
        }
        /** @description Bad Request */
        400: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Forbidden */
        403: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Internal Server Error */
        500: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
      }
    }
  }
  '/api/v1/playlists': {
     * @description Lists all playlists, the ones of a show or the ones that include a file
          /** @description ID of the show */
          showId?: number
          /** @description ID of the file */
          fileId?: number
          /** @description Limit number of results */
          /** @description Start listing from offset */
          offset?: number
        }
      }
      responses: {
        /** @description OK */
        200: {
          content: {
            'application/json': components['schemas']['v1.PlaylistsListing']
          }
        }
        /** @description Bad Request */
        400: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Forbidden */
        403: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Internal Server Error */
        500: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
      }
    }
    /**
     * Create playlist
     * @description Creates a new playlist for the show.
     */
    post: {
      /** @description Playlist data */
      requestBody: {
        content: {
          'application/json': components['schemas']['store.Playlist']
        }
      }
      responses: {
        /** @description Created */
        201: {
          content: {
            'application/json': components['schemas']['store.Playlist']
          }
        }
        /** @description Bad Request */
        400: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Forbidden */
        403: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Internal Server Error */
        500: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
      }
    }
  }
  '/api/v1/playlists/{id}': {
     * @description Retrieves a playlist.
          /** @description ID of the playlist */
          id: number
        }
      }
      responses: {
        /** @description OK */
        200: {
          content: {
            'application/json': components['schemas']['store.Playlist']
          }
        }
        /** @description Bad Request */
        400: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Forbidden */
        403: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Not Found */
        404: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Internal Server Error */
        500: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
      }
    }
    /**
     * Update playlist
     * @description Updates a playlist of a show.
     */
    put: {
      parameters: {
        path: {
          /** @description ID of the playlist */
          id: number
        }
      }
      /** @description Playlist data */
      requestBody: {
        content: {
          'application/json': components['schemas']['store.Playlist']
        }
      }
      responses: {
        /** @description OK */
        200: {
          content: {
            'application/json': components['schemas']['store.Playlist']
          }
        }
        /** @description Bad Request */
        400: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Forbidden */
        403: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Not Found */
        404: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Internal Server Error */
        500: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
      }
    }
    /**
     * Delete playlist
     * @description Deletes a playlist of a show.
     */
    delete: {
      parameters: {
        path: {
          /** @description ID of the playlist */
          id: number
        }
      }
      responses: {
        /** @description No Content */
        204: {
          content: {}
        }
        /** @description Bad Request */
        400: {
          content: {
            '*/*': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Forbidden */
        403: {
          content: {
            '*/*': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Not Found */
        404: {
          content: {
            '*/*': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Internal Server Error */
        500: {
          content: {
            '*/*': components['schemas']['v1.ErrorResponse']
          }
        }
      }
    }
  }
  '/api/v1/shows': {
    /**
     * List shows
     * @description Lists all existing shows
     */
    get: {
      parameters: {
        query?: {
          /** @description Limit number of results */
          limit?: number
          /** @description Start listing from offset */
          offset?: number
        }
      }
      responses: {
        /** @description OK */
        200: {
          content: {
            'application/json': components['schemas']['v1.ShowsListing']
          }
        }
        /** @description Bad Request */
        400: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Internal Server Error */
        500: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
      }
    }
  }
  '/api/v1/shows/': {
    /**
     * Create show
     * @description Creates a new show
     */
    post: {
      parameters: {
        query: {
          /** @description ID of the show to be created */
          showId: number
          /** @description If given, all files and playlists will be copied from the show */
          cloneFrom?: number
        }
      }
      responses: {
        /** @description Created */
        201: {
          content: {
            'application/json': components['schemas']['store.Show']
          }
        }
        /** @description Forbidden */
        403: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Not Found */
        404: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Conflict */
        409: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Internal Server Error */
        500: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
      }
    }
  }
  '/api/v1/shows/{id}': {
    /**
     * Delete show
     * @description Deletes a show
     */
    delete: {
      parameters: {
        path: {
          /** @description ID of the show to be deleted */
          id: number
        }
      }
      responses: {
        /** @description No Content */
        204: {
          content: {}
        }
        /** @description Forbidden */
        403: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
        /** @description Internal Server Error */
        500: {
          content: {
            'application/json': components['schemas']['v1.ErrorResponse']
          }
        }
      }
    }
  }
  '/healthz': {
    /**
     * Check health
     * @description Checks daemon health.
     */
    get: {
      responses: {
        /** @description OK */
        200: {
          content: {
            'application/json': components['schemas']['main.Health']
          }
        }
        /** @description Service Unavailable */
        503: {
          content: {
            'application/json': components['schemas']['main.Health']
          }
        }
      }
    }
  }
}

export type webhooks = Record<string, never>

export interface components {
  schemas: {
    'importer.Job': {
      created?: string
      id?: number
      progress?: number
      source?: components['schemas']['importer.SourceURL']
      started?: number
      state?: components['schemas']['importer.JobState']
      user?: string
    /** @enum {integer} */
    'importer.JobState': 0 | 1 | 2 | 3 | 4 | 5
    'importer.SourceURL': string
    'main.Health': {
      auth?: string
      importer?: string
      store?: string
    }