From 56d94791606348c039c3c526fa3550f7c6395150 Mon Sep 17 00:00:00 2001 From: Eduard Marbach Date: Sat, 23 Mar 2024 15:23:46 +0100 Subject: [PATCH] Initial commit --- .env.template | 4 + .gitignore | 4 + README.md | 17 + index.js | 28 + index.ts | 770 ++++ input.yml | 5 + package.json | 24 + pnpm-lock.yaml | 2074 +++++++++ src/__generated__/MySuperbApi.ts | 6716 ++++++++++++++++++++++++++++++ 9 files changed, 9642 insertions(+) create mode 100644 .env.template create mode 100644 .gitignore create mode 100644 README.md create mode 100644 index.js create mode 100644 index.ts create mode 100644 input.yml create mode 100644 package.json create mode 100644 pnpm-lock.yaml create mode 100644 src/__generated__/MySuperbApi.ts diff --git a/.env.template b/.env.template new file mode 100644 index 0000000..215eeb2 --- /dev/null +++ b/.env.template @@ -0,0 +1,4 @@ +SONARR_API_KEY= +SONARR_URL= +RADARR_API_KEY= +RADARR_URL= diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8bfe1dd --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +node_modules +repos +*.env +!.env.template diff --git a/README.md b/README.md new file mode 100644 index 0000000..91d6259 --- /dev/null +++ b/README.md @@ -0,0 +1,17 @@ +# Configarr + +Configuration and synchronization tool for Sonarr and Radarr. + +This will be a project similar to [Recyclarr](https://github.com/recyclarr/recyclarr) or [Notifiarr](https://notifiarr.wiki/) but support for additional specification and not only what [TrashGuides](https://trash-guides.info/) offer. + +This is in very early development and trial stage to see if this is something we want to offer or not. + +> :warning: **This is in very early development and trial stage to see if this is something we want to offer or not.** + +Possible ideas: +- keep support for syncing trash guides + - I like the possible configuration in recyclarr but I miss some features +- add support for local configuration to include + - I don't want to fork a project to add custom things to it +- Maybe an free GUI to sync your stuff +- Add additional best configuration for different languages/countries like Germany diff --git a/index.js b/index.js new file mode 100644 index 0000000..db17358 --- /dev/null +++ b/index.js @@ -0,0 +1,28 @@ +const { generateApi, generateTemplates } = require("swagger-typescript-api"); +const path = require("path"); +const fs = require("fs"); + +const PATH_TO_OUTPUT_DIR = path.resolve(process.cwd(), "./src/__generated__"); + +/* NOTE: all fields are optional expect one of `input`, `url`, `spec` */ +generateApi({ + name: "MySuperbApi.ts", + output: path.resolve(process.cwd(), "./src/__generated__"), + url: "https://raw.githubusercontent.com/Sonarr/Sonarr/develop/src/Sonarr.Api.V3/openapi.json", + httpClientType: "fetch", +}) + .then(({ files, configuration }) => { + files.forEach(({ content, name }) => { + fs.writeFile(path, content); + }); + }) + .catch((e) => console.error(e)); + +// generateTemplates({ +// cleanOutput: false, +// output: PATH_TO_OUTPUT_DIR, +// httpClientType: "fetch", +// modular: false, +// silent: false, +// rewrite: false, +// }); diff --git a/index.ts b/index.ts new file mode 100644 index 0000000..beb5f33 --- /dev/null +++ b/index.ts @@ -0,0 +1,770 @@ +import "dotenv/config"; + +import { readFileSync, readdirSync } from "fs"; +import path from "path"; +import simpleGit from "simple-git"; +import { parse } from "yaml"; +import { + Api, + CustomFormatResource, + CustomFormatSpecificationSchema, + Field, + PrivacyLevel, +} from "./src/__generated__/MySuperbApi"; + +const api = new Api({ + // headers: { + // "X-Api-Key": process.env.SONARR_API_KEY!, + // }, + // url: process.env.SONARR_URL!, + // baseURL: process.env.SONARR_URL!, + baseUrl: process.env.SONARR_URL!, + baseApiParams: { + headers: { + "X-Api-Key": process.env.SONARR_API_KEY!, + }, + }, +}); + +type DynamicImportType = { default: T }; +type TrashCFSpF = { min: number; max: number }; + +type TC1 = Omit & { + implementation: "ReleaseTitleSpecification" | "LanguageSpecification"; + fields?: Field | null; +}; + +type TC2 = Omit & { + implementation: "SizeSpecification"; + fields?: TrashCFSpF; +}; + +type TCM = TC1 | TC2; + +type TrashCFResource = Omit & { + specifications?: TCM[] | null; +}; + +type TrashCF = { + trash_id: string; + trash_scores?: { + default: number; + }; + trash_regex?: string; +} & TrashCFResource; + +const ROOT_PATH = path.resolve(process.cwd()); + +// const getObjectDiff = (obj1, obj2, compareRef = false) => { +// return Object.keys(obj1).reduce((result, key) => { +// if (!obj2.hasOwnProperty(key)) { +// result.push(key); +// } else if (_.isEqual(obj1[key], obj2[key])) { +// const resultKeyIndex = result.indexOf(key); + +// if (compareRef && obj1[key] !== obj2[key]) { +// result[resultKeyIndex] = `${key} (ref)`; +// } else { +// result.splice(resultKeyIndex, 1); +// } +// } +// return result; +// }, Object.keys(obj2)); +// }; + +function differenceInObj(firstObj: any, secondObj: any): any { + let differenceObj: any = {}; + for (const key in firstObj) { + if (Object.prototype.hasOwnProperty.call(firstObj, key)) { + if (firstObj[key] !== secondObj[key]) { + differenceObj[key] = firstObj[key]; + } + } + } + + return differenceObj; +} + +const testGo = async () => { + const object2: TrashCF = { + trash_id: "eb3d5cc0a2be0db205fb823640db6a3c", + trash_scores: { + default: 6, + }, + name: "Repack v2", + includeCustomFormatWhenRenaming: false, + specifications: [ + { + name: "Repack v2", + implementation: "ReleaseTitleSpecification", + negate: false, + required: false, + fields: { + value: "\\b(repack2)\\b", + }, + }, + { + name: "Proper v2", + implementation: "ReleaseTitleSpecification", + negate: false, + required: false, + fields: { + value: "\\b(proper2)\\b", + }, + }, + ], + }; + + const object1 = { + id: 7, + name: "Repack v2", + includeCustomFormatWhenRenaming: false, + specifications: [ + { + name: "Repack v2", + implementation: "ReleaseTitleSpecification", + implementationName: "Release Title", + infoLink: "https://wiki.servarr.com/sonarr/settings#custom-formats-2", + negate: false, + required: false, + fields: [ + { + order: 0, + name: "value", + label: "Regular Expression", + helpText: "Custom Format RegEx is Case Insensitive", + value: "\\b(repack2)\\b", + type: "textbox", + advanced: false, + privacy: PrivacyLevel.Normal, + isFloat: false, + }, + ], + }, + { + name: "Proper v2", + implementation: "ReleaseTitleSpecification", + implementationName: "Release Title", + infoLink: "https://wiki.servarr.com/sonarr/settings#custom-formats-2", + negate: false, + required: false, + fields: [ + { + order: 0, + name: "value", + label: "Regular Expression", + helpText: "Custom Format RegEx is Case Insensitive", + value: "\\b(proper2)\\b", + type: "textbox", + advanced: false, + privacy: PrivacyLevel.Normal, + isFloat: false, + }, + ], + }, + ], + }; + + console.log(differenceInObj(object2, object1)); + + console.log(compareObjects2(object1, object2)); // Output: true +}; + +const trashCfToValidCf = (trashCf: TrashCF): CustomFormatResource => { + const { trash_id, trash_regex, trash_scores, ...rest } = trashCf; + + if (!rest.specifications) { + console.log(`TrashCF is wrong ${trash_id}, ${rest.name}.`); + throw new Error("TrashCF wrong"); + } + + const specs = rest.specifications.map((spec) => { + const newFields: Field[] = []; + + if (!spec.fields) { + console.log(`Spec: ${spec.name} fields is not defined`); + throw new Error(`Spec is not correctly defined: ${spec.name}`); + } + + switch (spec.implementation) { + case "SizeSpecification": + newFields.push({ name: "min", value: spec.fields.min }); + newFields.push({ name: "max", value: spec.fields.max }); + break; + case "ReleaseTitleSpecification": + case "LanguageSpecification": + default: + newFields.push({ value: spec.fields.value }); + break; + } + + return { + ...spec, + fields: newFields.map((f) => { + if (f.name) { + return f; + } + + return { name: "value", ...f }; + }), + }; + }); + + return { ...rest, specifications: specs }; +}; + +function compareObjects( + fullObject: CustomFormatResource, + partialObject: Partial +): boolean { + if (!partialObject.name || !partialObject.specifications) { + return false; + } + + if ( + fullObject.name !== partialObject.name || + fullObject.includeCustomFormatWhenRenaming !== + partialObject.includeCustomFormatWhenRenaming + ) { + return false; + } + + if (!fullObject.specifications || !partialObject.specifications) { + // TODO not sure + return false; + } + + if ( + fullObject.specifications && + fullObject.specifications.length !== partialObject.specifications.length + ) { + return false; + } + + for (let i = 0; i < fullObject.specifications.length; i++) { + const fullSpec = fullObject.specifications[i]; + const partialSpec = partialObject.specifications.find( + (spec) => spec.name === fullSpec.name + ); + + if (!partialSpec) { + return false; + } + + if (!fullSpec.fields || !partialSpec.fields) { + // TODO not sure + return false; + } + + if ( + typeof fullSpec.fields === "object" && + !Array.isArray(fullSpec.fields) + ) { + // Assume single object as array with single element + if ( + !Array.isArray(partialSpec.fields) || + partialSpec.fields.length !== 1 + ) { + return false; + } + + const fullFieldValue = (fullSpec.fields as { value: string }).value; + const partialFieldValue = (partialSpec.fields[0] as Field).value; + + if (fullFieldValue !== partialFieldValue) { + return false; + } + } else { + if ( + !Array.isArray(fullSpec.fields) || + !Array.isArray(partialSpec.fields) || + fullSpec.fields.length !== partialSpec.fields.length + ) { + return false; + } + + for (let j = 0; j < fullSpec.fields.length; j++) { + const fullField = fullSpec.fields[j]; + const partialField = partialSpec.fields.find( + (field) => field.name === fullField.name + ); + + if (!partialField || partialField.value !== fullField.value) { + return false; + } + } + } + } + + return true; +} + +function compareObjects2( + object1: CustomFormatResource, + object2: Partial +): { equal: boolean; changes: string[] } { + const changes: string[] = []; + + for (const key in object2) { + if (Object.prototype.hasOwnProperty.call(object2, key)) { + if (object1.hasOwnProperty(key)) { + const value1 = object1[key]; + let value2 = object2[key]; + + if (key === "fields") { + if (!Array.isArray(value2)) { + value2 = [value2]; + } + } + + if (Array.isArray(value1)) { + if (!Array.isArray(value2)) { + changes.push(`Expected array for key ${key} in object2`); + continue; + } + + if (value1.length !== value2.length) { + changes.push( + `Array length mismatch for key ${key}: object1 length ${value1.length}, object2 length ${value2.length}` + ); + continue; + } + + for (let i = 0; i < value1.length; i++) { + const { equal: isEqual, changes: subChanges } = compareObjects2( + value1[i], + value2[i] + ); + // changes.push( + // ...subChanges.map((subChange) => `${key}[${i}].${subChange}`) + // ); + + if (subChanges.length > 0) { + changes.push(`${key}[${i}].${subChanges[0]}`); + } + + if (!isEqual && changes.length <= 0) { + changes.push( + `Mismatch found in array element at index ${i} for key ${key}` + ); + } + } + } else if (typeof value1 === "object" && value1 !== null) { + if (typeof value2 !== "object" || value2 === null) { + changes.push(`Expected object for key ${key} in object2`); + continue; + } + + const { equal: isEqual, changes: subChanges } = compareObjects2( + value1, + value2 + ); + changes.push(...subChanges.map((subChange) => `${key}.${subChange}`)); + if (!isEqual) { + changes.push(`Mismatch found for key ${key}`); + } + } else { + if (value1 !== value2) { + changes.push( + `Mismatch found for key ${key}: server value ${value1}, value to set ${value2}` + ); + } + } + } else { + } + } + } + + const equal = changes.length === 0; + return { equal, changes }; +} + +function compareObjects3( + object1: CustomFormatResource, + trashCf: TrashCF +): { equal: boolean; changes: string[] } { + const changes: string[] = []; + + const object2 = trashCfToValidCf(trashCf); + + for (const key in object2) { + if (Object.prototype.hasOwnProperty.call(object2, key)) { + if (object1.hasOwnProperty(key)) { + const value1 = object1[key]; + let value2 = object2[key]; + + if (key === "fields") { + if (!Array.isArray(value2)) { + value2 = [value2]; + } + } + + if (Array.isArray(value1)) { + if (!Array.isArray(value2)) { + changes.push(`Expected array for key ${key} in object2`); + continue; + } + + if (value1.length !== value2.length) { + changes.push( + `Array length mismatch for key ${key}: object1 length ${value1.length}, object2 length ${value2.length}` + ); + continue; + } + + for (let i = 0; i < value1.length; i++) { + const { equal: isEqual, changes: subChanges } = compareObjects2( + value1[i], + value2[i] + ); + // changes.push( + // ...subChanges.map((subChange) => `${key}[${i}].${subChange}`) + // ); + + if (subChanges.length > 0) { + changes.push(`${key}[${i}].${subChanges[0]}`); + } + + if (!isEqual && changes.length <= 0) { + changes.push( + `Mismatch found in array element at index ${i} for key ${key}` + ); + } + } + } else if (typeof value1 === "object" && value1 !== null) { + if (typeof value2 !== "object" || value2 === null) { + changes.push(`Expected object for key ${key} in object2`); + continue; + } + + const { equal: isEqual, changes: subChanges } = compareObjects2( + value1, + value2 + ); + changes.push(...subChanges.map((subChange) => `${key}.${subChange}`)); + if (!isEqual) { + changes.push(`Mismatch found for key ${key}`); + } + } else { + if (value1 !== value2) { + changes.push( + `Mismatch found for key ${key}: server value ${value1}, value to set ${value2}` + ); + } + } + } else { + } + } + } + + const equal = changes.length === 0; + return { equal, changes }; +} + +type YamlList = { + trash_ids?: string[]; + quality_profiles: { name: string }[]; +}; + +type YamlInput = { + custom_formats: YamlList[]; +}; + +const loadYamlFile = () => { + const PATH_TO_OUTPUT_DIR = path.resolve(process.cwd(), "."); + + const file = readFileSync(`${PATH_TO_OUTPUT_DIR}/input.yml`, "utf8"); + const yamlRes = parse(file) as YamlInput; + + console.log(yamlRes); + + return yamlRes; +}; + +const gitStuff = async () => { + const trashRepoPath = "./repos/trash-guides"; + + const gitClient = simpleGit(trashRepoPath); + const r = await gitClient.checkIsRepo(); + + if (r) { + await gitClient.pull(); + } else { + await simpleGit().clone( + "https://github.com/BlackDark/fork-TRASH-Guides", + "." + ); + } + + console.log(r); +}; + +const go = async () => { + const yamlStuff = loadYamlFile(); + + const cfTrashToManage: Set = new Set(); + + yamlStuff.custom_formats.map((cf) => { + if (cf.trash_ids) { + cf.trash_ids.forEach((tid) => cfTrashToManage.add(tid)); + } + }); + + const trashRepoPath = "./repos/trash-guides"; + const trashJsonDir = "docs/json"; + const trashRadarrPath = `${trashJsonDir}/radarr`; + const trashRadarrCfPath = `${trashRadarrPath}/cf`; + + const trashSonarrPath = `${trashJsonDir}/sonarr`; + const trashSonarrCfPath = `${trashSonarrPath}/cf`; + + const files = readdirSync(`${trashRepoPath}/${trashSonarrCfPath}`).filter( + (fn) => fn.endsWith("json") + ); + + const trashIdToObject = new Map< + string, + { trashConfig: TrashCF; requestConfig: CustomFormatResource } + >(); + const cfNameToTrashId = new Map(); + + for (const file of files) { + const name = `${trashRepoPath}/${trashSonarrCfPath}/${file}`; + const cf: DynamicImportType = await import(`${ROOT_PATH}/${name}`); + + trashIdToObject.set(cf.default.trash_id, { + trashConfig: cf.default, + requestConfig: trashCfToValidCf(cf.default), + }); + + if (cf.default.name) { + cfNameToTrashId.set(cf.default.name, cf.default.trash_id); + } + } + + console.log(`Trash CFs: ${trashIdToObject.size}`); + + const cfOnServer = await api.api.v3CustomformatList(); + + console.log(`CFs on server: ${cfOnServer.data.length}`); + + const existingCfToObject = new Map(); + const unknownCfToObject = new Map(); + + for (const cfServer of cfOnServer.data) { + if (!cfServer.name) { + console.log("CF without name found", cfServer); + continue; + } + if (cfNameToTrashId.has(cfServer.name)) { + existingCfToObject.set(cfServer.name, cfServer); + } else { + unknownCfToObject.set(cfServer.name, cfServer); + } + } + + const manageCf = async (trashId: string) => { + const tr = trashIdToObject.get(trashId); + + if (!tr) { + console.log(`TrashID to manage ${trashId} does not exists`); + return; + } + + const existingCf = existingCfToObject.get(tr.trashConfig.name!); + + if (existingCf) { + // Update if necessary + const comparison = compareObjects3(existingCf, tr.trashConfig); + + if (!comparison.equal) { + console.log( + `Found mismatch for ${tr.requestConfig.name}.`, + comparison.changes + ); + + try { + const updateResult = await api.api.v3CustomformatUpdate( + existingCf.id, + { + id: existingCf.id, + ...tr.requestConfig, + } + ); + + console.log(`Updated CF ${tr.requestConfig.name}`); + } catch (err) { + console.log(`Failed updating CF ${tr.requestConfig.name}`, err.error); + } + } else { + console.log(`CF ${tr.requestConfig.name} does not need update.`); + } + } else { + // Create + + try { + console.log(JSON.stringify(tr.requestConfig)); + const createResult = await api.api.v3CustomformatCreate( + tr.requestConfig + ); + + console.log(`Created CF ${tr.requestConfig.name}`); + } catch (err) { + console.log(`Failed creating CF ${tr.requestConfig.name}`, err.error); + } + } + }; + // console.log( + // `Matching CF names found on server: ${existingCfToObject.size}`, + // existingCfToObject.keys() + // ); + + for (const manage of cfTrashToManage) { + console.log(`Manage ${manage}`); + + await manageCf(manage); + } + + // for (const [key, value] of existingCfToObject.entries()) { + // const trashThing = trashIdToObject.get(cfNameToTrashId.get(key)!)!; + + // const comparison = compareObjects2(value, trashThing.trashConfig); + + // if (!comparison.equal) { + // console.log(`Found mismatch for ${key}.`, comparison.changes); + // console.log(JSON.stringify(trashThing.requestConfig)); + // console.log(JSON.stringify(trashThing.trashConfig)); + // console.log(JSON.stringify(value)); + + // try { + // const updateResult = await api.api.v3CustomformatUpdate(value.id, { + // id: value.id, + // ...trashThing.requestConfig, + // }); + + // console.log(updateResult.data); + // } catch (err) { + // console.log(err.error); + // } + // } + // } + + console.log( + `Unknown CF names found on server: ${unknownCfToObject.size}`, + unknownCfToObject.keys() + ); + + return; + + const PATH_TO_OUTPUT_DIR = path.resolve(process.cwd(), "."); + + const file = readFileSync(`${PATH_TO_OUTPUT_DIR}/input.yml`, "utf8"); + const yamlRes = parse(file); + + console.log(yamlRes); + + return; + + const result = await api.api.v3CustomformatList(); + console.log(result.data); + + // const test = await api.api.v3CustomformatCreate({ + // name: "Test this", + // specifications: [ + // { + // implementation: "SizeSpecification", + // name: "Hello", + // fields: [ + // { name: "min", value: 15 }, + // { name: "max", value: 40 }, + // ], + // }, + // ], + // }); +}; + +go(); +//testGo(); + +const object22: TrashCF = { + trash_id: "eb3d5cc0a2be0db205fb823640db6a3c", + trash_scores: { + default: 6, + }, + name: "Repack v2", + includeCustomFormatWhenRenaming: false, + specifications: [ + { + name: "Repack v2", + implementation: "ReleaseTitleSpecification", + negate: false, + required: false, + fields: { + value: "\\b(repack22)\\b", + }, + }, + { + name: "Proper v2", + implementation: "ReleaseTitleSpecification", + negate: false, + required: false, + fields: { + value: "\\b(proper2)\\b", + }, + }, + ], +}; + +const object11 = { + id: 7, + name: "Repack v2", + includeCustomFormatWhenRenaming: false, + specifications: [ + { + name: "Repack v2", + implementation: "ReleaseTitleSpecification", + implementationName: "Release Title", + infoLink: "https://wiki.servarr.com/sonarr/settings#custom-formats-2", + negate: false, + required: false, + fields: [ + { + order: 0, + name: "value", + label: "Regular Expression", + helpText: "Custom Format RegEx is Case Insensitive", + value: "\\b(repack2)\\b", + type: "textbox", + advanced: false, + privacy: PrivacyLevel.Normal, + isFloat: false, + }, + ], + }, + { + name: "Proper v2", + implementation: "ReleaseTitleSpecification", + implementationName: "Release Title", + infoLink: "https://wiki.servarr.com/sonarr/settings#custom-formats-2", + negate: false, + required: false, + fields: [ + { + order: 0, + name: "value", + label: "Regular Expression", + helpText: "Custom Format RegEx is Case Insensitive", + value: "\\b(proper2)\\b", + type: "textbox", + advanced: false, + privacy: PrivacyLevel.Normal, + isFloat: false, + }, + ], + }, + ], +}; + +const comparisonResult2 = compareObjects2(object11, object22); +console.log("Objects are equal:", comparisonResult2.equal); +console.log("Changes:", comparisonResult2.changes); diff --git a/input.yml b/input.yml new file mode 100644 index 0000000..7fb80d4 --- /dev/null +++ b/input.yml @@ -0,0 +1,5 @@ +custom_formats: + - trash_ids: + - custom-size-more-40gb + quality_profiles: + - name: Default (DE) diff --git a/package.json b/package.json new file mode 100644 index 0000000..f861f95 --- /dev/null +++ b/package.json @@ -0,0 +1,24 @@ +{ + "name": "swagger-ts-gen", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "tsg": "swagger-to-ts -f input.json -o test.ts", + "go": "tsx index.ts" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "@infinite-debugger/swagger-to-ts": "0.1.0-alpha.124", + "axios": "^1.6.8", + "dotenv": "^16.4.5", + "node-ts": "^6.0.1", + "simple-git": "^3.23.0", + "swagger-typescript-api": "^13.0.3", + "tsx": "^4.7.1", + "yaml": "^2.4.1" + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..5c6971e --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,2074 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +dependencies: + '@infinite-debugger/swagger-to-ts': + specifier: 0.1.0-alpha.124 + version: 0.1.0-alpha.124(@types/node@20.11.30)(crypto-js@4.2.0)(date-fns@3.6.0)(typescript@5.4.2) + axios: + specifier: ^1.6.8 + version: 1.6.8 + dotenv: + specifier: ^16.4.5 + version: 16.4.5 + node-ts: + specifier: ^6.0.1 + version: 6.0.1 + simple-git: + specifier: ^3.23.0 + version: 3.23.0 + swagger-typescript-api: + specifier: ^13.0.3 + version: 13.0.3 + tsx: + specifier: ^4.7.1 + version: 4.7.1 + yaml: + specifier: ^2.4.1 + version: 2.4.1 + +packages: + + /@aashutoshrathi/word-wrap@1.2.6: + resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} + engines: {node: '>=0.10.0'} + dev: false + + /@babel/code-frame@7.24.2: + resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.24.2 + picocolors: 1.0.0 + dev: false + + /@babel/helper-validator-identifier@7.22.20: + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + engines: {node: '>=6.9.0'} + dev: false + + /@babel/highlight@7.24.2: + resolution: {integrity: sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.22.20 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.0.0 + dev: false + + /@cspotcode/source-map-support@0.8.1: + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + dev: false + + /@esbuild/aix-ppc64@0.19.12: + resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + requiresBuild: true + dev: false + optional: true + + /@esbuild/android-arm64@0.19.12: + resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: false + optional: true + + /@esbuild/android-arm@0.19.12: + resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: false + optional: true + + /@esbuild/android-x64@0.19.12: + resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: false + optional: true + + /@esbuild/darwin-arm64@0.19.12: + resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@esbuild/darwin-x64@0.19.12: + resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@esbuild/freebsd-arm64@0.19.12: + resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: false + optional: true + + /@esbuild/freebsd-x64@0.19.12: + resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-arm64@0.19.12: + resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-arm@0.19.12: + resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-ia32@0.19.12: + resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-loong64@0.19.12: + resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-mips64el@0.19.12: + resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-ppc64@0.19.12: + resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-riscv64@0.19.12: + resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-s390x@0.19.12: + resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-x64@0.19.12: + resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/netbsd-x64@0.19.12: + resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: false + optional: true + + /@esbuild/openbsd-x64@0.19.12: + resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: false + optional: true + + /@esbuild/sunos-x64@0.19.12: + resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: false + optional: true + + /@esbuild/win32-arm64@0.19.12: + resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@esbuild/win32-ia32@0.19.12: + resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@esbuild/win32-x64@0.19.12: + resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.57.0 + eslint-visitor-keys: 3.4.3 + dev: false + + /@eslint-community/regexpp@4.10.0: + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: false + + /@eslint/eslintrc@2.1.4: + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@eslint/js@8.57.0: + resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: false + + /@exodus/schemasafe@1.3.0: + resolution: {integrity: sha512-5Aap/GaRupgNx/feGBwLLTVv8OQFfv3pq2lPRzPg9R+IOBnDgghTGW7l7EuVXOvg5cc/xSAlRW8rBrjIC3Nvqw==} + dev: false + + /@humanwhocodes/config-array@0.11.14: + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 2.0.2 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: false + + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: false + + /@humanwhocodes/object-schema@2.0.2: + resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} + dev: false + + /@infinite-debugger/rmk-js-extensions@0.1.0-alpha.28: + resolution: {integrity: sha512-Vmdq3aQdllHsncxx7uPwd21AFMdY9YeXU1AknioY7Roh+FcjcwkMwZmEb9EVcqxXfqOVKpmAIs9z3qulGi7bfA==} + dev: false + + /@infinite-debugger/rmk-utils@0.1.0-alpha.29(crypto-js@4.2.0)(date-fns@3.6.0)(lodash@4.17.21): + resolution: {integrity: sha512-KGYe9ILO/REZw43fK7egM1CeGhK9/0SedCKkiGp5jaq1T6uGaREQ0rQmsO6sBbbmBdzta469VknPTY2i890jcw==} + peerDependencies: + crypto-js: '>=4.1.1' + date-fns: '>=2.29.3' + lodash: '>=4.17.21' + dependencies: + crypto-js: 4.2.0 + date-fns: 3.6.0 + lodash: 4.17.21 + dev: false + + /@infinite-debugger/swagger-to-ts@0.1.0-alpha.124(@types/node@20.11.30)(crypto-js@4.2.0)(date-fns@3.6.0)(typescript@5.4.2): + resolution: {integrity: sha512-fKnvRUaTL1rUX094QP7Bm6O0oqL/DCjHA46fnWqyq7H/dgU1QxxlqWQB0UBpa4AkuTHeIu4iNJQPGB0k4y74cw==} + hasBin: true + dependencies: + '@infinite-debugger/rmk-js-extensions': 0.1.0-alpha.28 + '@infinite-debugger/rmk-utils': 0.1.0-alpha.29(crypto-js@4.2.0)(date-fns@3.6.0)(lodash@4.17.21) + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.0)(typescript@5.4.2) + '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.4.2) + eslint: 8.57.0 + fs-extra: 11.2.0 + lodash: 4.17.21 + pluralize: 8.0.0 + prettier: 2.8.8 + ts-node: 10.9.2(@types/node@20.11.30)(typescript@5.4.2) + walk-sync: 3.0.0 + zod: 3.22.4 + transitivePeerDependencies: + - '@swc/core' + - '@swc/wasm' + - '@types/node' + - crypto-js + - date-fns + - supports-color + - typescript + dev: false + + /@jridgewell/resolve-uri@3.1.2: + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + dev: false + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: false + + /@jridgewell/trace-mapping@0.3.9: + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + dev: false + + /@kwsites/file-exists@1.1.1: + resolution: {integrity: sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==} + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: false + + /@kwsites/promise-deferred@1.1.1: + resolution: {integrity: sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==} + dev: false + + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: false + + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + dev: false + + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + dev: false + + /@rauschma/stringio@1.4.0: + resolution: {integrity: sha512-3uor2f/MXZkmX5RJf8r+OC3WvZVzpSme0yyL0rQDPEnatE02qRcqwEwnsgpgriEck0S/n4vWtUd6tTtrJwk45Q==} + dependencies: + '@types/node': 10.17.60 + dev: false + + /@sindresorhus/is@3.1.2: + resolution: {integrity: sha512-JiX9vxoKMmu8Y3Zr2RVathBL1Cdu4Nt4MuNWemt1Nc06A0RAin9c5FArkhGsyMBWfCu4zj+9b+GxtjAnE4qqLQ==} + engines: {node: '>=10'} + dev: false + + /@tsconfig/node10@1.0.9: + resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} + dev: false + + /@tsconfig/node12@1.0.11: + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + dev: false + + /@tsconfig/node14@1.0.3: + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + dev: false + + /@tsconfig/node16@1.0.4: + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + dev: false + + /@types/json-schema@7.0.15: + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + dev: false + + /@types/minimatch@3.0.5: + resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} + dev: false + + /@types/node@10.17.60: + resolution: {integrity: sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==} + dev: false + + /@types/node@20.11.30: + resolution: {integrity: sha512-dHM6ZxwlmuZaRmUPfv1p+KrdD1Dci04FbdEm/9wEMouFqxYoFl5aMkt0VMAUtYRQDyYvD41WJLukhq/ha3YuTw==} + dependencies: + undici-types: 5.26.5 + dev: false + + /@types/semver@7.5.8: + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + dev: false + + /@types/swagger-schema-official@2.0.22: + resolution: {integrity: sha512-7yQiX6MWSFSvc/1wW5smJMZTZ4fHOd+hqLr3qr/HONDxHEa2bnYAsOcGBOEqFIjd4yetwMOdEDdeW+udRAQnHA==} + dev: false + + /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.0)(typescript@5.4.2): + resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.10.0 + '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.4.2) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.0)(typescript@5.4.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.4.2) + debug: 4.3.4 + eslint: 8.57.0 + graphemer: 1.4.0 + ignore: 5.3.1 + natural-compare-lite: 1.4.0 + semver: 7.6.0 + tsutils: 3.21.0(typescript@5.4.2) + typescript: 5.4.2 + transitivePeerDependencies: + - supports-color + dev: false + + /@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.2): + resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.2) + debug: 4.3.4 + eslint: 8.57.0 + typescript: 5.4.2 + transitivePeerDependencies: + - supports-color + dev: false + + /@typescript-eslint/scope-manager@5.62.0: + resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + dev: false + + /@typescript-eslint/type-utils@5.62.0(eslint@8.57.0)(typescript@5.4.2): + resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.4.2) + debug: 4.3.4 + eslint: 8.57.0 + tsutils: 3.21.0(typescript@5.4.2) + typescript: 5.4.2 + transitivePeerDependencies: + - supports-color + dev: false + + /@typescript-eslint/types@5.62.0: + resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: false + + /@typescript-eslint/typescript-estree@5.62.0(typescript@5.4.2): + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.6.0 + tsutils: 3.21.0(typescript@5.4.2) + typescript: 5.4.2 + transitivePeerDependencies: + - supports-color + dev: false + + /@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@5.4.2): + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.8 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.2) + eslint: 8.57.0 + eslint-scope: 5.1.1 + semver: 7.6.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: false + + /@typescript-eslint/visitor-keys@5.62.0: + resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.62.0 + eslint-visitor-keys: 3.4.3 + dev: false + + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + dev: false + + /acorn-jsx@5.3.2(acorn@8.11.3): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.11.3 + dev: false + + /acorn-walk@8.3.2: + resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} + engines: {node: '>=0.4.0'} + dev: false + + /acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: false + + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: false + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + dev: false + + /ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + dev: false + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + dev: false + + /arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + dev: false + + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: false + + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + dev: false + + /asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + dev: false + + /axios@1.6.8: + resolution: {integrity: sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==} + dependencies: + follow-redirects: 1.15.6 + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + dev: false + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: false + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: false + + /braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + dev: false + + /call-me-maybe@1.0.2: + resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} + dev: false + + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: false + + /chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: false + + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: false + + /char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + dev: false + + /cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: false + + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + dev: false + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + dev: false + + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: false + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: false + + /combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + dev: false + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: false + + /cosmiconfig@8.2.0: + resolution: {integrity: sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==} + engines: {node: '>=14'} + dependencies: + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + dev: false + + /create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + dev: false + + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: false + + /crypto-js@4.2.0: + resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} + dev: false + + /data-uri-to-buffer@4.0.1: + resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} + engines: {node: '>= 12'} + dev: false + + /date-fns@3.6.0: + resolution: {integrity: sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==} + dev: false + + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: false + + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: false + + /delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + dev: false + + /didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + dev: false + + /diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + dev: false + + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: false + + /doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + dev: false + + /dotenv@16.4.5: + resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} + engines: {node: '>=12'} + dev: false + + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dev: false + + /emojilib@2.4.0: + resolution: {integrity: sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==} + dev: false + + /ensure-posix-path@1.1.1: + resolution: {integrity: sha512-VWU0/zXzVbeJNXvME/5EmLuEj2TauvoaTz6aFYK1Z92JCBlDlZ3Gu0tuGR42kpW1754ywTs+QB0g5TP0oj9Zaw==} + dev: false + + /error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + dependencies: + is-arrayish: 0.2.1 + dev: false + + /es6-promise@3.3.1: + resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} + dev: false + + /esbuild@0.19.12: + resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/aix-ppc64': 0.19.12 + '@esbuild/android-arm': 0.19.12 + '@esbuild/android-arm64': 0.19.12 + '@esbuild/android-x64': 0.19.12 + '@esbuild/darwin-arm64': 0.19.12 + '@esbuild/darwin-x64': 0.19.12 + '@esbuild/freebsd-arm64': 0.19.12 + '@esbuild/freebsd-x64': 0.19.12 + '@esbuild/linux-arm': 0.19.12 + '@esbuild/linux-arm64': 0.19.12 + '@esbuild/linux-ia32': 0.19.12 + '@esbuild/linux-loong64': 0.19.12 + '@esbuild/linux-mips64el': 0.19.12 + '@esbuild/linux-ppc64': 0.19.12 + '@esbuild/linux-riscv64': 0.19.12 + '@esbuild/linux-s390x': 0.19.12 + '@esbuild/linux-x64': 0.19.12 + '@esbuild/netbsd-x64': 0.19.12 + '@esbuild/openbsd-x64': 0.19.12 + '@esbuild/sunos-x64': 0.19.12 + '@esbuild/win32-arm64': 0.19.12 + '@esbuild/win32-ia32': 0.19.12 + '@esbuild/win32-x64': 0.19.12 + dev: false + + /escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + engines: {node: '>=6'} + dev: false + + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + dev: false + + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + dev: false + + /eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + dev: false + + /eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: false + + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: false + + /eslint@8.57.0: + resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/regexpp': 4.10.0 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.0 + '@humanwhocodes/config-array': 0.11.14 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.1 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.3 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: false + + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.11.3 + acorn-jsx: 5.3.2(acorn@8.11.3) + eslint-visitor-keys: 3.4.3 + dev: false + + /esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + dev: false + + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + dev: false + + /estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + dev: false + + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: false + + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: false + + /eta@2.2.0: + resolution: {integrity: sha512-UVQ72Rqjy/ZKQalzV5dCCJP80GrmPrMxh6NlNf+erV6ObL0ZFkhCstWRawS85z3smdr3d2wXPsZEY7rDPfGd2g==} + engines: {node: '>=6.0.0'} + dev: false + + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + dev: false + + /fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: false + + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: false + + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: false + + /fast-safe-stringify@2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + dev: false + + /fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + dependencies: + reusify: 1.0.4 + dev: false + + /fetch-blob@3.2.0: + resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} + engines: {node: ^12.20 || >= 14.13} + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 3.3.3 + dev: false + + /file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.2.0 + dev: false + + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: false + + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: false + + /flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flatted: 3.3.1 + keyv: 4.5.4 + rimraf: 3.0.2 + dev: false + + /flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + dev: false + + /follow-redirects@1.15.6: + resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dev: false + + /form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: false + + /formdata-polyfill@4.0.10: + resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} + engines: {node: '>=12.20.0'} + dependencies: + fetch-blob: 3.2.0 + dev: false + + /fs-extra@11.2.0: + resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} + engines: {node: '>=14.14'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + dev: false + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: false + + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + dev: false + + /get-tsconfig@4.7.3: + resolution: {integrity: sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg==} + dependencies: + resolve-pkg-maps: 1.0.0 + dev: false + + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + dev: false + + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + dev: false + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: false + + /globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: false + + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.1 + merge2: 1.4.1 + slash: 3.0.0 + dev: false + + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + dev: false + + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + dev: false + + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + dev: false + + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + dev: false + + /http2-client@1.3.5: + resolution: {integrity: sha512-EC2utToWl4RKfs5zd36Mxq7nzHHBuomZboI0yYL6Y0RmBgT7Sgkq4rQ0ezFTYoIsSs7Tm9SJe+o2FcAg6GBhGA==} + dev: false + + /ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + engines: {node: '>= 4'} + dev: false + + /import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: false + + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: false + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: false + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: false + + /is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + dev: false + + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + dev: false + + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + dev: false + + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + dev: false + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: false + + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: false + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: false + + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + dev: false + + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: false + + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + dev: false + + /json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + dev: false + + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: false + + /json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: false + + /jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + dev: false + + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + dependencies: + json-buffer: 3.0.1 + dev: false + + /levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: false + + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + dev: false + + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + dev: false + + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: false + + /lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: false + + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + dev: false + + /make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + dependencies: + semver: 7.6.0 + dev: false + + /make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + dev: false + + /matcher-collection@2.0.1: + resolution: {integrity: sha512-daE62nS2ZQsDg9raM0IlZzLmI2u+7ZapXBwdoeBUKAYERPDDIc0qNqA8E0Rp2D+gspKR7BgIFP52GeujaGXWeQ==} + engines: {node: 6.* || 8.* || >= 10.*} + dependencies: + '@types/minimatch': 3.0.5 + minimatch: 3.1.2 + dev: false + + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: false + + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: false + + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + dev: false + + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: false + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: false + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: false + + /nanoid@3.3.6: + resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: false + + /natural-compare-lite@1.4.0: + resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} + dev: false + + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: false + + /node-domexception@1.0.0: + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} + dev: false + + /node-emoji@2.1.0: + resolution: {integrity: sha512-tcsBm9C6FmPN5Wo7OjFi9lgMyJjvkAeirmjR/ax8Ttfqy4N8PoFic26uqFTIgayHPNI5FH4ltUvfh9kHzwcK9A==} + dependencies: + '@sindresorhus/is': 3.1.2 + char-regex: 1.0.2 + emojilib: 2.4.0 + skin-tone: 2.0.0 + dev: false + + /node-fetch-h2@2.3.0: + resolution: {integrity: sha512-ofRW94Ab0T4AOh5Fk8t0h8OBWrmjb0SSB20xh1H8YnPV9EJ+f5AMoYSUQ2zgJ4Iq2HAK0I2l5/Nequ8YzFS3Hg==} + engines: {node: 4.x || >=6.0.0} + dependencies: + http2-client: 1.3.5 + dev: false + + /node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + dev: false + + /node-fetch@3.3.2: + resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + data-uri-to-buffer: 4.0.1 + fetch-blob: 3.2.0 + formdata-polyfill: 4.0.10 + dev: false + + /node-readfiles@0.2.0: + resolution: {integrity: sha512-SU00ZarexNlE4Rjdm83vglt5Y9yiQ+XI1XpflWlb7q7UTN1JUItm69xMeiQCTxtTfnzt+83T8Cx+vI2ED++VDA==} + dependencies: + es6-promise: 3.3.1 + dev: false + + /node-ts@6.0.1: + resolution: {integrity: sha512-nxFz4tJYv9Yu6u4e3B1rmfh45Zmge7rD/MlTA5V98+Q5eFsqzCWTWDYvbrNEPGtnzhkqNLk4E2r3C6VSfNoZNQ==} + engines: {node: '>=18.0.0'} + dependencies: + '@rauschma/stringio': 1.4.0 + '@types/node': 20.11.30 + dev: false + + /oas-kit-common@1.0.8: + resolution: {integrity: sha512-pJTS2+T0oGIwgjGpw7sIRU8RQMcUoKCDWFLdBqKB2BNmGpbBMH2sdqAaOXUg8OzonZHU0L7vfJu1mJFEiYDWOQ==} + dependencies: + fast-safe-stringify: 2.1.1 + dev: false + + /oas-linter@3.2.2: + resolution: {integrity: sha512-KEGjPDVoU5K6swgo9hJVA/qYGlwfbFx+Kg2QB/kd7rzV5N8N5Mg6PlsoCMohVnQmo+pzJap/F610qTodKzecGQ==} + dependencies: + '@exodus/schemasafe': 1.3.0 + should: 13.2.3 + yaml: 1.10.2 + dev: false + + /oas-resolver@2.5.6: + resolution: {integrity: sha512-Yx5PWQNZomfEhPPOphFbZKi9W93CocQj18NlD2Pa4GWZzdZpSJvYwoiuurRI7m3SpcChrnO08hkuQDL3FGsVFQ==} + hasBin: true + dependencies: + node-fetch-h2: 2.3.0 + oas-kit-common: 1.0.8 + reftools: 1.1.9 + yaml: 1.10.2 + yargs: 17.7.2 + dev: false + + /oas-schema-walker@1.1.5: + resolution: {integrity: sha512-2yucenq1a9YPmeNExoUa9Qwrt9RFkjqaMAA1X+U7sbb0AqBeTIdMHky9SQQ6iN94bO5NW0W4TRYXerG+BdAvAQ==} + dev: false + + /oas-validator@5.0.8: + resolution: {integrity: sha512-cu20/HE5N5HKqVygs3dt94eYJfBi0TsZvPVXDhbXQHiEityDN+RROTleefoKRKKJ9dFAF2JBkDHgvWj0sjKGmw==} + dependencies: + call-me-maybe: 1.0.2 + oas-kit-common: 1.0.8 + oas-linter: 3.2.2 + oas-resolver: 2.5.6 + oas-schema-walker: 1.1.5 + reftools: 1.1.9 + should: 13.2.3 + yaml: 1.10.2 + dev: false + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: false + + /optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + engines: {node: '>= 0.8.0'} + dependencies: + '@aashutoshrathi/word-wrap': 1.2.6 + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: false + + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + dev: false + + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + dev: false + + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + dev: false + + /parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + dependencies: + '@babel/code-frame': 7.24.2 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + dev: false + + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: false + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: false + + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + dev: false + + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: false + + /picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + dev: false + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: false + + /pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + dev: false + + /prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + dev: false + + /prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + dev: false + + /prettier@3.0.0: + resolution: {integrity: sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==} + engines: {node: '>=14'} + hasBin: true + dev: false + + /proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + dev: false + + /punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + dev: false + + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: false + + /reftools@1.1.9: + resolution: {integrity: sha512-OVede/NQE13xBQ+ob5CKd5KyeJYU2YInb1bmV4nRoOfquZPkAkxuOXicSe1PvqIuZZ4kD13sPKBbR7UFDmli6w==} + dev: false + + /require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + dev: false + + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + dev: false + + /resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + dev: false + + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: false + + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: false + + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + dev: false + + /semver@7.6.0: + resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: false + + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + dev: false + + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + dev: false + + /should-equal@2.0.0: + resolution: {integrity: sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA==} + dependencies: + should-type: 1.4.0 + dev: false + + /should-format@3.0.3: + resolution: {integrity: sha512-hZ58adtulAk0gKtua7QxevgUaXTTXxIi8t41L3zo9AHvjXO1/7sdLECuHeIN2SRtYXpNkmhoUP2pdeWgricQ+Q==} + dependencies: + should-type: 1.4.0 + should-type-adaptors: 1.1.0 + dev: false + + /should-type-adaptors@1.1.0: + resolution: {integrity: sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA==} + dependencies: + should-type: 1.4.0 + should-util: 1.0.1 + dev: false + + /should-type@1.4.0: + resolution: {integrity: sha512-MdAsTu3n25yDbIe1NeN69G4n6mUnJGtSJHygX3+oN0ZbO3DTiATnf7XnYJdGT42JCXurTb1JI0qOBR65shvhPQ==} + dev: false + + /should-util@1.0.1: + resolution: {integrity: sha512-oXF8tfxx5cDk8r2kYqlkUJzZpDBqVY/II2WhvU0n9Y3XYvAYRmeaf1PvvIvTgPnv4KJ+ES5M0PyDq5Jp+Ygy2g==} + dev: false + + /should@13.2.3: + resolution: {integrity: sha512-ggLesLtu2xp+ZxI+ysJTmNjh2U0TsC+rQ/pfED9bUZZ4DKefP27D+7YJVVTvKsmjLpIi9jAa7itwDGkDDmt1GQ==} + dependencies: + should-equal: 2.0.0 + should-format: 3.0.3 + should-type: 1.4.0 + should-type-adaptors: 1.1.0 + should-util: 1.0.1 + dev: false + + /simple-git@3.23.0: + resolution: {integrity: sha512-P9ggTW8vb/21CAL/AmnACAhqBDfnqSSZVpV7WuFtsFR9HLunf5IqQvk+OXAQTfkcZep8pKnt3DV3o7w3TegEkQ==} + dependencies: + '@kwsites/file-exists': 1.1.1 + '@kwsites/promise-deferred': 1.1.1 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: false + + /skin-tone@2.0.0: + resolution: {integrity: sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==} + engines: {node: '>=8'} + dependencies: + unicode-emoji-modifier-base: 1.0.0 + dev: false + + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: false + + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + dev: false + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + dev: false + + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: false + + /supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + dev: false + + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + dev: false + + /swagger-schema-official@2.0.0-bab6bed: + resolution: {integrity: sha512-rCC0NWGKr/IJhtRuPq/t37qvZHI/mH4I4sxflVM+qgVe5Z2uOCivzWaVbuioJaB61kvm5UvB7b49E+oBY0M8jA==} + dev: false + + /swagger-typescript-api@13.0.3: + resolution: {integrity: sha512-774ndLpGm2FNpUZpDugfoOO2pIcvSW9nlcqwLVSH9ju4YKCi1Gd83jPly7upcljOvZ8KO/edIUx+9eYViDYglg==} + hasBin: true + dependencies: + '@types/swagger-schema-official': 2.0.22 + cosmiconfig: 8.2.0 + didyoumean: 1.2.2 + eta: 2.2.0 + js-yaml: 4.1.0 + lodash: 4.17.21 + make-dir: 4.0.0 + nanoid: 3.3.6 + node-emoji: 2.1.0 + node-fetch: 3.3.2 + prettier: 3.0.0 + swagger-schema-official: 2.0.0-bab6bed + swagger2openapi: 7.0.8 + typescript: 5.1.6 + transitivePeerDependencies: + - encoding + dev: false + + /swagger2openapi@7.0.8: + resolution: {integrity: sha512-upi/0ZGkYgEcLeGieoz8gT74oWHA0E7JivX7aN9mAf+Tc7BQoRBvnIGHoPDw+f9TXTW4s6kGYCZJtauP6OYp7g==} + hasBin: true + dependencies: + call-me-maybe: 1.0.2 + node-fetch: 2.7.0 + node-fetch-h2: 2.3.0 + node-readfiles: 0.2.0 + oas-kit-common: 1.0.8 + oas-resolver: 2.5.6 + oas-schema-walker: 1.1.5 + oas-validator: 5.0.8 + reftools: 1.1.9 + yaml: 1.10.2 + yargs: 17.7.2 + transitivePeerDependencies: + - encoding + dev: false + + /text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: false + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + dev: false + + /tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + dev: false + + /ts-node@10.9.2(@types/node@20.11.30)(typescript@5.4.2): + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 20.11.30 + acorn: 8.11.3 + acorn-walk: 8.3.2 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.4.2 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + dev: false + + /tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + dev: false + + /tsutils@3.21.0(typescript@5.4.2): + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 5.4.2 + dev: false + + /tsx@4.7.1: + resolution: {integrity: sha512-8d6VuibXHtlN5E3zFkgY8u4DX7Y3Z27zvvPKVmLon/D4AjuKzarkUBTLDBgj9iTQ0hg5xM7c/mYiRVM+HETf0g==} + engines: {node: '>=18.0.0'} + hasBin: true + dependencies: + esbuild: 0.19.12 + get-tsconfig: 4.7.3 + optionalDependencies: + fsevents: 2.3.3 + dev: false + + /type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + dev: false + + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: false + + /typescript@5.1.6: + resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} + engines: {node: '>=14.17'} + hasBin: true + dev: false + + /typescript@5.4.2: + resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} + engines: {node: '>=14.17'} + hasBin: true + dev: false + + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + dev: false + + /unicode-emoji-modifier-base@1.0.0: + resolution: {integrity: sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==} + engines: {node: '>=4'} + dev: false + + /universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + dev: false + + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.3.1 + dev: false + + /v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + dev: false + + /walk-sync@3.0.0: + resolution: {integrity: sha512-41TvKmDGVpm2iuH7o+DAOt06yyu/cSHpX3uzAwetzASvlNtVddgIjXIb2DfB/Wa20B1Jo86+1Dv1CraSU7hWdw==} + engines: {node: 10.* || >= 12.*} + dependencies: + '@types/minimatch': 3.0.5 + ensure-posix-path: 1.1.1 + matcher-collection: 2.0.1 + minimatch: 3.1.2 + dev: false + + /web-streams-polyfill@3.3.3: + resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} + engines: {node: '>= 8'} + dev: false + + /webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + dev: false + + /whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + dev: false + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: false + + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: false + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: false + + /y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + dev: false + + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: false + + /yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + dev: false + + /yaml@2.4.1: + resolution: {integrity: sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg==} + engines: {node: '>= 14'} + hasBin: true + dev: false + + /yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + dev: false + + /yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + dependencies: + cliui: 8.0.1 + escalade: 3.1.2 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + dev: false + + /yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + dev: false + + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + dev: false + + /zod@3.22.4: + resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} + dev: false diff --git a/src/__generated__/MySuperbApi.ts b/src/__generated__/MySuperbApi.ts new file mode 100644 index 0000000..32d8e8b --- /dev/null +++ b/src/__generated__/MySuperbApi.ts @@ -0,0 +1,6716 @@ +/* eslint-disable */ +/* tslint:disable */ +/* + * --------------------------------------------------------------- + * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ## + * ## ## + * ## AUTHOR: acacode ## + * ## SOURCE: https://github.com/acacode/swagger-typescript-api ## + * --------------------------------------------------------------- + */ + +export interface AddSeriesOptions { + ignoreEpisodesWithFiles?: boolean; + ignoreEpisodesWithoutFiles?: boolean; + monitor?: MonitorTypes; + searchForMissingEpisodes?: boolean; + searchForCutoffUnmetEpisodes?: boolean; +} + +export interface AlternateTitleResource { + title?: string | null; + /** @format int32 */ + seasonNumber?: number | null; + /** @format int32 */ + sceneSeasonNumber?: number | null; + sceneOrigin?: string | null; + comment?: string | null; +} + +export enum ApplyTags { + Add = "add", + Remove = "remove", + Replace = "replace", +} + +export enum AuthenticationRequiredType { + Enabled = "enabled", + DisabledForLocalAddresses = "disabledForLocalAddresses", +} + +export enum AuthenticationType { + None = "none", + Basic = "basic", + Forms = "forms", + External = "external", +} + +export interface AutoTaggingResource { + /** @format int32 */ + id?: number; + name?: string | null; + removeTagsAutomatically?: boolean; + /** @uniqueItems true */ + tags?: number[] | null; + specifications?: AutoTaggingSpecificationSchema[] | null; +} + +export interface AutoTaggingSpecificationSchema { + /** @format int32 */ + id?: number; + name?: string | null; + implementation?: string | null; + implementationName?: string | null; + negate?: boolean; + required?: boolean; + fields?: Field[] | null; +} + +export interface BackupResource { + /** @format int32 */ + id?: number; + name?: string | null; + path?: string | null; + type?: BackupType; + /** @format int64 */ + size?: number; + /** @format date-time */ + time?: string; +} + +export enum BackupType { + Scheduled = "scheduled", + Manual = "manual", + Update = "update", +} + +export interface BlocklistBulkResource { + ids?: number[] | null; +} + +export interface BlocklistResource { + /** @format int32 */ + id?: number; + /** @format int32 */ + seriesId?: number; + episodeIds?: number[] | null; + sourceTitle?: string | null; + languages?: Language[] | null; + quality?: QualityModel; + customFormats?: CustomFormatResource[] | null; + /** @format date-time */ + date?: string; + protocol?: DownloadProtocol; + indexer?: string | null; + message?: string | null; + series?: SeriesResource; +} + +export interface BlocklistResourcePagingResource { + /** @format int32 */ + page?: number; + /** @format int32 */ + pageSize?: number; + sortKey?: string | null; + sortDirection?: SortDirection; + /** @format int32 */ + totalRecords?: number; + records?: BlocklistResource[] | null; +} + +export enum CertificateValidationType { + Enabled = "enabled", + DisabledForLocalAddresses = "disabledForLocalAddresses", + Disabled = "disabled", +} + +export interface Command { + sendUpdatesToClient?: boolean; + updateScheduledTask?: boolean; + completionMessage?: string | null; + requiresDiskAccess?: boolean; + isExclusive?: boolean; + isLongRunning?: boolean; + name?: string | null; + /** @format date-time */ + lastExecutionTime?: string | null; + /** @format date-time */ + lastStartTime?: string | null; + trigger?: CommandTrigger; + suppressMessages?: boolean; + clientUserAgent?: string | null; +} + +export enum CommandPriority { + Normal = "normal", + High = "high", + Low = "low", +} + +export interface CommandResource { + /** @format int32 */ + id?: number; + name?: string | null; + commandName?: string | null; + message?: string | null; + body?: Command; + priority?: CommandPriority; + status?: CommandStatus; + result?: CommandResult; + /** @format date-time */ + queued?: string; + /** @format date-time */ + started?: string | null; + /** @format date-time */ + ended?: string | null; + duration?: TimeSpan; + exception?: string | null; + trigger?: CommandTrigger; + clientUserAgent?: string | null; + /** @format date-time */ + stateChangeTime?: string | null; + sendUpdatesToClient?: boolean; + updateScheduledTask?: boolean; + /** @format date-time */ + lastExecutionTime?: string | null; +} + +export enum CommandResult { + Unknown = "unknown", + Successful = "successful", + Unsuccessful = "unsuccessful", +} + +export enum CommandStatus { + Queued = "queued", + Started = "started", + Completed = "completed", + Failed = "failed", + Aborted = "aborted", + Cancelled = "cancelled", + Orphaned = "orphaned", +} + +export enum CommandTrigger { + Unspecified = "unspecified", + Manual = "manual", + Scheduled = "scheduled", +} + +export interface CustomFilterResource { + /** @format int32 */ + id?: number; + type?: string | null; + label?: string | null; + filters?: Record[] | null; +} + +export interface CustomFormatResource { + /** @format int32 */ + id?: number; + name?: string | null; + includeCustomFormatWhenRenaming?: boolean | null; + specifications?: CustomFormatSpecificationSchema[] | null; +} + +export interface CustomFormatSpecificationSchema { + /** @format int32 */ + id?: number; + name?: string | null; + implementation?: string | null; + implementationName?: string | null; + infoLink?: string | null; + negate?: boolean; + required?: boolean; + fields?: Field[] | null; + presets?: CustomFormatSpecificationSchema[] | null; +} + +export enum DatabaseType { + SqLite = "sqLite", + PostgreSQL = "postgreSQL", +} + +export interface DelayProfileResource { + /** @format int32 */ + id?: number; + enableUsenet?: boolean; + enableTorrent?: boolean; + preferredProtocol?: DownloadProtocol; + /** @format int32 */ + usenetDelay?: number; + /** @format int32 */ + torrentDelay?: number; + bypassIfHighestQuality?: boolean; + bypassIfAboveCustomFormatScore?: boolean; + /** @format int32 */ + minimumCustomFormatScore?: number; + /** @format int32 */ + order?: number; + /** @uniqueItems true */ + tags?: number[] | null; +} + +export interface DiskSpaceResource { + /** @format int32 */ + id?: number; + path?: string | null; + label?: string | null; + /** @format int64 */ + freeSpace?: number; + /** @format int64 */ + totalSpace?: number; +} + +export interface DownloadClientBulkResource { + ids?: number[] | null; + tags?: number[] | null; + applyTags?: ApplyTags; + enable?: boolean | null; + /** @format int32 */ + priority?: number | null; + removeCompletedDownloads?: boolean | null; + removeFailedDownloads?: boolean | null; +} + +export interface DownloadClientConfigResource { + /** @format int32 */ + id?: number; + downloadClientWorkingFolders?: string | null; + enableCompletedDownloadHandling?: boolean; + autoRedownloadFailed?: boolean; + autoRedownloadFailedFromInteractiveSearch?: boolean; +} + +export interface DownloadClientResource { + /** @format int32 */ + id?: number; + name?: string | null; + fields?: Field[] | null; + implementationName?: string | null; + implementation?: string | null; + configContract?: string | null; + infoLink?: string | null; + message?: ProviderMessage; + /** @uniqueItems true */ + tags?: number[] | null; + presets?: DownloadClientResource[] | null; + enable?: boolean; + protocol?: DownloadProtocol; + /** @format int32 */ + priority?: number; + removeCompletedDownloads?: boolean; + removeFailedDownloads?: boolean; +} + +export enum DownloadProtocol { + Unknown = "unknown", + Usenet = "usenet", + Torrent = "torrent", +} + +export interface EpisodeFileListResource { + episodeFileIds?: number[] | null; + languages?: Language[] | null; + quality?: QualityModel; + sceneName?: string | null; + releaseGroup?: string | null; +} + +export interface EpisodeFileResource { + /** @format int32 */ + id?: number; + /** @format int32 */ + seriesId?: number; + /** @format int32 */ + seasonNumber?: number; + relativePath?: string | null; + path?: string | null; + /** @format int64 */ + size?: number; + /** @format date-time */ + dateAdded?: string; + sceneName?: string | null; + releaseGroup?: string | null; + languages?: Language[] | null; + quality?: QualityModel; + customFormats?: CustomFormatResource[] | null; + /** @format int32 */ + customFormatScore?: number; + /** @format int32 */ + indexerFlags?: number | null; + /** @format int32 */ + releaseType?: number | null; + mediaInfo?: MediaInfoResource; + qualityCutoffNotMet?: boolean; +} + +export enum EpisodeHistoryEventType { + Unknown = "unknown", + Grabbed = "grabbed", + SeriesFolderImported = "seriesFolderImported", + DownloadFolderImported = "downloadFolderImported", + DownloadFailed = "downloadFailed", + EpisodeFileDeleted = "episodeFileDeleted", + EpisodeFileRenamed = "episodeFileRenamed", + DownloadIgnored = "downloadIgnored", +} + +export interface EpisodeResource { + /** @format int32 */ + id?: number; + /** @format int32 */ + seriesId?: number; + /** @format int32 */ + tvdbId?: number; + /** @format int32 */ + episodeFileId?: number; + /** @format int32 */ + seasonNumber?: number; + /** @format int32 */ + episodeNumber?: number; + title?: string | null; + airDate?: string | null; + /** @format date-time */ + airDateUtc?: string | null; + /** @format int32 */ + runtime?: number; + finaleType?: string | null; + overview?: string | null; + episodeFile?: EpisodeFileResource; + hasFile?: boolean; + monitored?: boolean; + /** @format int32 */ + absoluteEpisodeNumber?: number | null; + /** @format int32 */ + sceneAbsoluteEpisodeNumber?: number | null; + /** @format int32 */ + sceneEpisodeNumber?: number | null; + /** @format int32 */ + sceneSeasonNumber?: number | null; + unverifiedSceneNumbering?: boolean; + /** @format date-time */ + endTime?: string | null; + /** @format date-time */ + grabDate?: string | null; + seriesTitle?: string | null; + series?: SeriesResource; + images?: MediaCover[] | null; + grabbed?: boolean; +} + +export interface EpisodeResourcePagingResource { + /** @format int32 */ + page?: number; + /** @format int32 */ + pageSize?: number; + sortKey?: string | null; + sortDirection?: SortDirection; + /** @format int32 */ + totalRecords?: number; + records?: EpisodeResource[] | null; +} + +export enum EpisodeTitleRequiredType { + Always = "always", + BulkSeasonReleases = "bulkSeasonReleases", + Never = "never", +} + +export interface EpisodesMonitoredResource { + episodeIds?: number[] | null; + monitored?: boolean; +} + +export interface Field { + /** @format int32 */ + order?: number; + name?: string | null; + label?: string | null; + unit?: string | null; + helpText?: string | null; + helpTextWarning?: string | null; + helpLink?: string | null; + value?: any; + type?: string | null; + advanced?: boolean; + selectOptions?: SelectOption[] | null; + selectOptionsProviderAction?: string | null; + section?: string | null; + hidden?: string | null; + privacy?: PrivacyLevel; + placeholder?: string | null; + isFloat?: boolean; +} + +export enum FileDateType { + None = "none", + LocalAirDate = "localAirDate", + UtcAirDate = "utcAirDate", +} + +export enum HealthCheckResult { + Ok = "ok", + Notice = "notice", + Warning = "warning", + Error = "error", +} + +export interface HealthResource { + /** @format int32 */ + id?: number; + source?: string | null; + type?: HealthCheckResult; + message?: string | null; + wikiUrl?: HttpUri; +} + +export interface HistoryResource { + /** @format int32 */ + id?: number; + /** @format int32 */ + episodeId?: number; + /** @format int32 */ + seriesId?: number; + sourceTitle?: string | null; + languages?: Language[] | null; + quality?: QualityModel; + customFormats?: CustomFormatResource[] | null; + /** @format int32 */ + customFormatScore?: number; + qualityCutoffNotMet?: boolean; + /** @format date-time */ + date?: string; + downloadId?: string | null; + eventType?: EpisodeHistoryEventType; + data?: Record; + episode?: EpisodeResource; + series?: SeriesResource; +} + +export interface HistoryResourcePagingResource { + /** @format int32 */ + page?: number; + /** @format int32 */ + pageSize?: number; + sortKey?: string | null; + sortDirection?: SortDirection; + /** @format int32 */ + totalRecords?: number; + records?: HistoryResource[] | null; +} + +export interface HostConfigResource { + /** @format int32 */ + id?: number; + bindAddress?: string | null; + /** @format int32 */ + port?: number; + /** @format int32 */ + sslPort?: number; + enableSsl?: boolean; + launchBrowser?: boolean; + authenticationMethod?: AuthenticationType; + authenticationRequired?: AuthenticationRequiredType; + analyticsEnabled?: boolean; + username?: string | null; + password?: string | null; + passwordConfirmation?: string | null; + logLevel?: string | null; + consoleLogLevel?: string | null; + branch?: string | null; + apiKey?: string | null; + sslCertPath?: string | null; + sslCertPassword?: string | null; + urlBase?: string | null; + instanceName?: string | null; + applicationUrl?: string | null; + updateAutomatically?: boolean; + updateMechanism?: UpdateMechanism; + updateScriptPath?: string | null; + proxyEnabled?: boolean; + proxyType?: ProxyType; + proxyHostname?: string | null; + /** @format int32 */ + proxyPort?: number; + proxyUsername?: string | null; + proxyPassword?: string | null; + proxyBypassFilter?: string | null; + proxyBypassLocalAddresses?: boolean; + certificateValidation?: CertificateValidationType; + backupFolder?: string | null; + /** @format int32 */ + backupInterval?: number; + /** @format int32 */ + backupRetention?: number; +} + +export interface HttpUri { + fullUri?: string | null; + scheme?: string | null; + host?: string | null; + /** @format int32 */ + port?: number | null; + path?: string | null; + query?: string | null; + fragment?: string | null; +} + +export interface ImportListBulkResource { + ids?: number[] | null; + tags?: number[] | null; + applyTags?: ApplyTags; + enableAutomaticAdd?: boolean | null; + rootFolderPath?: string | null; + /** @format int32 */ + qualityProfileId?: number | null; +} + +export interface ImportListConfigResource { + /** @format int32 */ + id?: number; + listSyncLevel?: ListSyncLevelType; + /** @format int32 */ + listSyncTag?: number; +} + +export interface ImportListExclusionResource { + /** @format int32 */ + id?: number; + /** @format int32 */ + tvdbId?: number; + title?: string | null; +} + +export interface ImportListExclusionResourcePagingResource { + /** @format int32 */ + page?: number; + /** @format int32 */ + pageSize?: number; + sortKey?: string | null; + sortDirection?: SortDirection; + /** @format int32 */ + totalRecords?: number; + records?: ImportListExclusionResource[] | null; +} + +export interface ImportListResource { + /** @format int32 */ + id?: number; + name?: string | null; + fields?: Field[] | null; + implementationName?: string | null; + implementation?: string | null; + configContract?: string | null; + infoLink?: string | null; + message?: ProviderMessage; + /** @uniqueItems true */ + tags?: number[] | null; + presets?: ImportListResource[] | null; + enableAutomaticAdd?: boolean; + searchForMissingEpisodes?: boolean; + shouldMonitor?: MonitorTypes; + monitorNewItems?: NewItemMonitorTypes; + rootFolderPath?: string | null; + /** @format int32 */ + qualityProfileId?: number; + seriesType?: SeriesTypes; + seasonFolder?: boolean; + listType?: ImportListType; + /** @format int32 */ + listOrder?: number; + minRefreshInterval?: TimeSpan; +} + +export enum ImportListType { + Program = "program", + Plex = "plex", + Trakt = "trakt", + Simkl = "simkl", + Other = "other", + Advanced = "advanced", +} + +export interface IndexerBulkResource { + ids?: number[] | null; + tags?: number[] | null; + applyTags?: ApplyTags; + enableRss?: boolean | null; + enableAutomaticSearch?: boolean | null; + enableInteractiveSearch?: boolean | null; + /** @format int32 */ + priority?: number | null; +} + +export interface IndexerConfigResource { + /** @format int32 */ + id?: number; + /** @format int32 */ + minimumAge?: number; + /** @format int32 */ + retention?: number; + /** @format int32 */ + maximumSize?: number; + /** @format int32 */ + rssSyncInterval?: number; +} + +export interface IndexerFlagResource { + /** @format int32 */ + id?: number; + name?: string | null; + nameLower?: string | null; +} + +export interface IndexerResource { + /** @format int32 */ + id?: number; + name?: string | null; + fields?: Field[] | null; + implementationName?: string | null; + implementation?: string | null; + configContract?: string | null; + infoLink?: string | null; + message?: ProviderMessage; + /** @uniqueItems true */ + tags?: number[] | null; + presets?: IndexerResource[] | null; + enableRss?: boolean; + enableAutomaticSearch?: boolean; + enableInteractiveSearch?: boolean; + supportsRss?: boolean; + supportsSearch?: boolean; + protocol?: DownloadProtocol; + /** @format int32 */ + priority?: number; + /** @format int32 */ + seasonSearchMaximumSingleEpisodeAge?: number; + /** @format int32 */ + downloadClientId?: number; +} + +export interface Language { + /** @format int32 */ + id?: number; + name?: string | null; +} + +export interface LanguageProfileItemResource { + /** @format int32 */ + id?: number; + language?: Language; + allowed?: boolean; +} + +export interface LanguageProfileResource { + /** @format int32 */ + id?: number; + name?: string | null; + upgradeAllowed?: boolean; + cutoff?: Language; + languages?: LanguageProfileItemResource[] | null; +} + +export interface LanguageResource { + /** @format int32 */ + id?: number; + name?: string | null; + nameLower?: string | null; +} + +export enum ListSyncLevelType { + Disabled = "disabled", + LogOnly = "logOnly", + KeepAndUnmonitor = "keepAndUnmonitor", + KeepAndTag = "keepAndTag", +} + +export interface LocalizationLanguageResource { + identifier?: string | null; +} + +export interface LocalizationResource { + /** @format int32 */ + id?: number; + strings?: Record; +} + +export interface LogFileResource { + /** @format int32 */ + id?: number; + filename?: string | null; + /** @format date-time */ + lastWriteTime?: string; + contentsUrl?: string | null; + downloadUrl?: string | null; +} + +export interface LogResource { + /** @format int32 */ + id?: number; + /** @format date-time */ + time?: string; + exception?: string | null; + exceptionType?: string | null; + level?: string | null; + logger?: string | null; + message?: string | null; + method?: string | null; +} + +export interface LogResourcePagingResource { + /** @format int32 */ + page?: number; + /** @format int32 */ + pageSize?: number; + sortKey?: string | null; + sortDirection?: SortDirection; + /** @format int32 */ + totalRecords?: number; + records?: LogResource[] | null; +} + +export interface ManualImportReprocessResource { + /** @format int32 */ + id?: number; + path?: string | null; + /** @format int32 */ + seriesId?: number; + /** @format int32 */ + seasonNumber?: number | null; + episodes?: EpisodeResource[] | null; + episodeIds?: number[] | null; + quality?: QualityModel; + languages?: Language[] | null; + releaseGroup?: string | null; + downloadId?: string | null; + customFormats?: CustomFormatResource[] | null; + /** @format int32 */ + customFormatScore?: number; + /** @format int32 */ + indexerFlags?: number; + releaseType?: ReleaseType; + rejections?: Rejection[] | null; +} + +export interface ManualImportResource { + /** @format int32 */ + id?: number; + path?: string | null; + relativePath?: string | null; + folderName?: string | null; + name?: string | null; + /** @format int64 */ + size?: number; + series?: SeriesResource; + /** @format int32 */ + seasonNumber?: number | null; + episodes?: EpisodeResource[] | null; + /** @format int32 */ + episodeFileId?: number | null; + releaseGroup?: string | null; + quality?: QualityModel; + languages?: Language[] | null; + /** @format int32 */ + qualityWeight?: number; + downloadId?: string | null; + customFormats?: CustomFormatResource[] | null; + /** @format int32 */ + customFormatScore?: number; + /** @format int32 */ + indexerFlags?: number; + releaseType?: ReleaseType; + rejections?: Rejection[] | null; +} + +export interface MediaCover { + coverType?: MediaCoverTypes; + url?: string | null; + remoteUrl?: string | null; +} + +export enum MediaCoverTypes { + Unknown = "unknown", + Poster = "poster", + Banner = "banner", + Fanart = "fanart", + Screenshot = "screenshot", + Headshot = "headshot", + Clearlogo = "clearlogo", +} + +export interface MediaInfoResource { + /** @format int32 */ + id?: number; + /** @format int64 */ + audioBitrate?: number; + /** @format double */ + audioChannels?: number; + audioCodec?: string | null; + audioLanguages?: string | null; + /** @format int32 */ + audioStreamCount?: number; + /** @format int32 */ + videoBitDepth?: number; + /** @format int64 */ + videoBitrate?: number; + videoCodec?: string | null; + /** @format double */ + videoFps?: number; + videoDynamicRange?: string | null; + videoDynamicRangeType?: string | null; + resolution?: string | null; + runTime?: string | null; + scanType?: string | null; + subtitles?: string | null; +} + +export interface MediaManagementConfigResource { + /** @format int32 */ + id?: number; + autoUnmonitorPreviouslyDownloadedEpisodes?: boolean; + recycleBin?: string | null; + /** @format int32 */ + recycleBinCleanupDays?: number; + downloadPropersAndRepacks?: ProperDownloadTypes; + createEmptySeriesFolders?: boolean; + deleteEmptyFolders?: boolean; + fileDate?: FileDateType; + rescanAfterRefresh?: RescanAfterRefreshType; + setPermissionsLinux?: boolean; + chmodFolder?: string | null; + chownGroup?: string | null; + episodeTitleRequired?: EpisodeTitleRequiredType; + skipFreeSpaceCheckWhenImporting?: boolean; + /** @format int32 */ + minimumFreeSpaceWhenImporting?: number; + copyUsingHardlinks?: boolean; + useScriptImport?: boolean; + scriptImportPath?: string | null; + importExtraFiles?: boolean; + extraFileExtensions?: string | null; + enableMediaInfo?: boolean; +} + +export interface MetadataResource { + /** @format int32 */ + id?: number; + name?: string | null; + fields?: Field[] | null; + implementationName?: string | null; + implementation?: string | null; + configContract?: string | null; + infoLink?: string | null; + message?: ProviderMessage; + /** @uniqueItems true */ + tags?: number[] | null; + presets?: MetadataResource[] | null; + enable?: boolean; +} + +export enum MonitorTypes { + Unknown = "unknown", + All = "all", + Future = "future", + Missing = "missing", + Existing = "existing", + FirstSeason = "firstSeason", + LastSeason = "lastSeason", + LatestSeason = "latestSeason", + Pilot = "pilot", + Recent = "recent", + MonitorSpecials = "monitorSpecials", + UnmonitorSpecials = "unmonitorSpecials", + None = "none", + Skip = "skip", +} + +export interface MonitoringOptions { + ignoreEpisodesWithFiles?: boolean; + ignoreEpisodesWithoutFiles?: boolean; + monitor?: MonitorTypes; +} + +export interface NamingConfigResource { + /** @format int32 */ + id?: number; + renameEpisodes?: boolean; + replaceIllegalCharacters?: boolean; + /** @format int32 */ + colonReplacementFormat?: number; + /** @format int32 */ + multiEpisodeStyle?: number; + standardEpisodeFormat?: string | null; + dailyEpisodeFormat?: string | null; + animeEpisodeFormat?: string | null; + seriesFolderFormat?: string | null; + seasonFolderFormat?: string | null; + specialsFolderFormat?: string | null; +} + +export enum NewItemMonitorTypes { + All = "all", + None = "none", +} + +export interface NotificationResource { + /** @format int32 */ + id?: number; + name?: string | null; + fields?: Field[] | null; + implementationName?: string | null; + implementation?: string | null; + configContract?: string | null; + infoLink?: string | null; + message?: ProviderMessage; + /** @uniqueItems true */ + tags?: number[] | null; + presets?: NotificationResource[] | null; + link?: string | null; + onGrab?: boolean; + onDownload?: boolean; + onUpgrade?: boolean; + onRename?: boolean; + onSeriesAdd?: boolean; + onSeriesDelete?: boolean; + onEpisodeFileDelete?: boolean; + onEpisodeFileDeleteForUpgrade?: boolean; + onHealthIssue?: boolean; + onHealthRestored?: boolean; + onApplicationUpdate?: boolean; + onManualInteractionRequired?: boolean; + supportsOnGrab?: boolean; + supportsOnDownload?: boolean; + supportsOnUpgrade?: boolean; + supportsOnRename?: boolean; + supportsOnSeriesAdd?: boolean; + supportsOnSeriesDelete?: boolean; + supportsOnEpisodeFileDelete?: boolean; + supportsOnEpisodeFileDeleteForUpgrade?: boolean; + supportsOnHealthIssue?: boolean; + supportsOnHealthRestored?: boolean; + supportsOnApplicationUpdate?: boolean; + supportsOnManualInteractionRequired?: boolean; + includeHealthWarnings?: boolean; + testCommand?: string | null; +} + +export interface ParseResource { + /** @format int32 */ + id?: number; + title?: string | null; + parsedEpisodeInfo?: ParsedEpisodeInfo; + series?: SeriesResource; + episodes?: EpisodeResource[] | null; + languages?: Language[] | null; + customFormats?: CustomFormatResource[] | null; + /** @format int32 */ + customFormatScore?: number; +} + +export interface ParsedEpisodeInfo { + releaseTitle?: string | null; + seriesTitle?: string | null; + seriesTitleInfo?: SeriesTitleInfo; + quality?: QualityModel; + /** @format int32 */ + seasonNumber?: number; + episodeNumbers?: number[] | null; + absoluteEpisodeNumbers?: number[] | null; + specialAbsoluteEpisodeNumbers?: number[] | null; + airDate?: string | null; + languages?: Language[] | null; + fullSeason?: boolean; + isPartialSeason?: boolean; + isMultiSeason?: boolean; + isSeasonExtra?: boolean; + isSplitEpisode?: boolean; + special?: boolean; + releaseGroup?: string | null; + releaseHash?: string | null; + /** @format int32 */ + seasonPart?: number; + releaseTokens?: string | null; + /** @format int32 */ + dailyPart?: number | null; + isDaily?: boolean; + isAbsoluteNumbering?: boolean; + isPossibleSpecialEpisode?: boolean; + isPossibleSceneSeasonSpecial?: boolean; + releaseType?: ReleaseType; +} + +export interface PingResource { + status?: string | null; +} + +export enum PrivacyLevel { + Normal = "normal", + Password = "password", + ApiKey = "apiKey", + UserName = "userName", +} + +export interface ProfileFormatItemResource { + /** @format int32 */ + id?: number; + /** @format int32 */ + format?: number; + name?: string | null; + /** @format int32 */ + score?: number; +} + +export enum ProperDownloadTypes { + PreferAndUpgrade = "preferAndUpgrade", + DoNotUpgrade = "doNotUpgrade", + DoNotPrefer = "doNotPrefer", +} + +export interface ProviderMessage { + message?: string | null; + type?: ProviderMessageType; +} + +export enum ProviderMessageType { + Info = "info", + Warning = "warning", + Error = "error", +} + +export enum ProxyType { + Http = "http", + Socks4 = "socks4", + Socks5 = "socks5", +} + +export interface Quality { + /** @format int32 */ + id?: number; + name?: string | null; + source?: QualitySource; + /** @format int32 */ + resolution?: number; +} + +export interface QualityDefinitionResource { + /** @format int32 */ + id?: number; + quality?: Quality; + title?: string | null; + /** @format int32 */ + weight?: number; + /** @format double */ + minSize?: number | null; + /** @format double */ + maxSize?: number | null; + /** @format double */ + preferredSize?: number | null; +} + +export interface QualityModel { + quality?: Quality; + revision?: Revision; +} + +export interface QualityProfileQualityItemResource { + /** @format int32 */ + id?: number; + name?: string | null; + quality?: Quality; + items?: QualityProfileQualityItemResource[] | null; + allowed?: boolean; +} + +export interface QualityProfileResource { + /** @format int32 */ + id?: number; + name?: string | null; + upgradeAllowed?: boolean; + /** @format int32 */ + cutoff?: number; + items?: QualityProfileQualityItemResource[] | null; + /** @format int32 */ + minFormatScore?: number; + /** @format int32 */ + cutoffFormatScore?: number; + formatItems?: ProfileFormatItemResource[] | null; +} + +export enum QualitySource { + Unknown = "unknown", + Television = "television", + TelevisionRaw = "televisionRaw", + Web = "web", + WebRip = "webRip", + Dvd = "dvd", + Bluray = "bluray", + BlurayRaw = "blurayRaw", +} + +export interface QueueBulkResource { + ids?: number[] | null; +} + +export interface QueueResource { + /** @format int32 */ + id?: number; + /** @format int32 */ + seriesId?: number | null; + /** @format int32 */ + episodeId?: number | null; + /** @format int32 */ + seasonNumber?: number | null; + series?: SeriesResource; + episode?: EpisodeResource; + languages?: Language[] | null; + quality?: QualityModel; + customFormats?: CustomFormatResource[] | null; + /** @format int32 */ + customFormatScore?: number; + /** @format double */ + size?: number; + title?: string | null; + /** @format double */ + sizeleft?: number; + timeleft?: TimeSpan; + /** @format date-time */ + estimatedCompletionTime?: string | null; + /** @format date-time */ + added?: string | null; + status?: string | null; + trackedDownloadStatus?: TrackedDownloadStatus; + trackedDownloadState?: TrackedDownloadState; + statusMessages?: TrackedDownloadStatusMessage[] | null; + errorMessage?: string | null; + downloadId?: string | null; + protocol?: DownloadProtocol; + downloadClient?: string | null; + downloadClientHasPostImportCategory?: boolean; + indexer?: string | null; + outputPath?: string | null; + episodeHasFile?: boolean; +} + +export interface QueueResourcePagingResource { + /** @format int32 */ + page?: number; + /** @format int32 */ + pageSize?: number; + sortKey?: string | null; + sortDirection?: SortDirection; + /** @format int32 */ + totalRecords?: number; + records?: QueueResource[] | null; +} + +export interface QueueStatusResource { + /** @format int32 */ + id?: number; + /** @format int32 */ + totalCount?: number; + /** @format int32 */ + count?: number; + /** @format int32 */ + unknownCount?: number; + errors?: boolean; + warnings?: boolean; + unknownErrors?: boolean; + unknownWarnings?: boolean; +} + +export interface Ratings { + /** @format int32 */ + votes?: number; + /** @format double */ + value?: number; +} + +export interface Rejection { + reason?: string | null; + type?: RejectionType; +} + +export enum RejectionType { + Permanent = "permanent", + Temporary = "temporary", +} + +export interface ReleaseEpisodeResource { + /** @format int32 */ + id?: number; + /** @format int32 */ + seasonNumber?: number; + /** @format int32 */ + episodeNumber?: number; + /** @format int32 */ + absoluteEpisodeNumber?: number | null; + title?: string | null; +} + +export interface ReleaseProfileResource { + /** @format int32 */ + id?: number; + name?: string | null; + enabled?: boolean; + required?: any; + ignored?: any; + /** @format int32 */ + indexerId?: number; + /** @uniqueItems true */ + tags?: number[] | null; +} + +export interface ReleaseResource { + /** @format int32 */ + id?: number; + guid?: string | null; + quality?: QualityModel; + /** @format int32 */ + qualityWeight?: number; + /** @format int32 */ + age?: number; + /** @format double */ + ageHours?: number; + /** @format double */ + ageMinutes?: number; + /** @format int64 */ + size?: number; + /** @format int32 */ + indexerId?: number; + indexer?: string | null; + releaseGroup?: string | null; + subGroup?: string | null; + releaseHash?: string | null; + title?: string | null; + fullSeason?: boolean; + sceneSource?: boolean; + /** @format int32 */ + seasonNumber?: number; + languages?: Language[] | null; + /** @format int32 */ + languageWeight?: number; + airDate?: string | null; + seriesTitle?: string | null; + episodeNumbers?: number[] | null; + absoluteEpisodeNumbers?: number[] | null; + /** @format int32 */ + mappedSeasonNumber?: number | null; + mappedEpisodeNumbers?: number[] | null; + mappedAbsoluteEpisodeNumbers?: number[] | null; + /** @format int32 */ + mappedSeriesId?: number | null; + mappedEpisodeInfo?: ReleaseEpisodeResource[] | null; + approved?: boolean; + temporarilyRejected?: boolean; + rejected?: boolean; + /** @format int32 */ + tvdbId?: number; + /** @format int32 */ + tvRageId?: number; + rejections?: string[] | null; + /** @format date-time */ + publishDate?: string; + commentUrl?: string | null; + downloadUrl?: string | null; + infoUrl?: string | null; + episodeRequested?: boolean; + downloadAllowed?: boolean; + /** @format int32 */ + releaseWeight?: number; + customFormats?: CustomFormatResource[] | null; + /** @format int32 */ + customFormatScore?: number; + sceneMapping?: AlternateTitleResource; + magnetUrl?: string | null; + infoHash?: string | null; + /** @format int32 */ + seeders?: number | null; + /** @format int32 */ + leechers?: number | null; + protocol?: DownloadProtocol; + /** @format int32 */ + indexerFlags?: number; + isDaily?: boolean; + isAbsoluteNumbering?: boolean; + isPossibleSpecialEpisode?: boolean; + special?: boolean; + /** @format int32 */ + seriesId?: number | null; + /** @format int32 */ + episodeId?: number | null; + episodeIds?: number[] | null; + /** @format int32 */ + downloadClientId?: number | null; + downloadClient?: string | null; + shouldOverride?: boolean | null; +} + +export enum ReleaseType { + Unknown = "unknown", + SingleEpisode = "singleEpisode", + MultiEpisode = "multiEpisode", + SeasonPack = "seasonPack", +} + +export interface RemotePathMappingResource { + /** @format int32 */ + id?: number; + host?: string | null; + remotePath?: string | null; + localPath?: string | null; +} + +export interface RenameEpisodeResource { + /** @format int32 */ + id?: number; + /** @format int32 */ + seriesId?: number; + /** @format int32 */ + seasonNumber?: number; + episodeNumbers?: number[] | null; + /** @format int32 */ + episodeFileId?: number; + existingPath?: string | null; + newPath?: string | null; +} + +export enum RescanAfterRefreshType { + Always = "always", + AfterManual = "afterManual", + Never = "never", +} + +export interface Revision { + /** @format int32 */ + version?: number; + /** @format int32 */ + real?: number; + isRepack?: boolean; +} + +export interface RootFolderResource { + /** @format int32 */ + id?: number; + path?: string | null; + accessible?: boolean; + /** @format int64 */ + freeSpace?: number | null; + unmappedFolders?: UnmappedFolder[] | null; +} + +export enum RuntimeMode { + Console = "console", + Service = "service", + Tray = "tray", +} + +export interface SeasonPassResource { + series?: SeasonPassSeriesResource[] | null; + monitoringOptions?: MonitoringOptions; +} + +export interface SeasonPassSeriesResource { + /** @format int32 */ + id?: number; + monitored?: boolean | null; + seasons?: SeasonResource[] | null; +} + +export interface SeasonResource { + /** @format int32 */ + seasonNumber?: number; + monitored?: boolean; + statistics?: SeasonStatisticsResource; + images?: MediaCover[] | null; +} + +export interface SeasonStatisticsResource { + /** @format date-time */ + nextAiring?: string | null; + /** @format date-time */ + previousAiring?: string | null; + /** @format int32 */ + episodeFileCount?: number; + /** @format int32 */ + episodeCount?: number; + /** @format int32 */ + totalEpisodeCount?: number; + /** @format int64 */ + sizeOnDisk?: number; + releaseGroups?: string[] | null; + /** @format double */ + percentOfEpisodes?: number; +} + +export interface SelectOption { + /** @format int32 */ + value?: number; + name?: string | null; + /** @format int32 */ + order?: number; + hint?: string | null; +} + +export interface SeriesEditorResource { + seriesIds?: number[] | null; + monitored?: boolean | null; + monitorNewItems?: NewItemMonitorTypes; + /** @format int32 */ + qualityProfileId?: number | null; + seriesType?: SeriesTypes; + seasonFolder?: boolean | null; + rootFolderPath?: string | null; + tags?: number[] | null; + applyTags?: ApplyTags; + moveFiles?: boolean; + deleteFiles?: boolean; + addImportListExclusion?: boolean; +} + +export interface SeriesResource { + /** @format int32 */ + id?: number; + title?: string | null; + alternateTitles?: AlternateTitleResource[] | null; + sortTitle?: string | null; + status?: SeriesStatusType; + ended?: boolean; + profileName?: string | null; + overview?: string | null; + /** @format date-time */ + nextAiring?: string | null; + /** @format date-time */ + previousAiring?: string | null; + network?: string | null; + airTime?: string | null; + images?: MediaCover[] | null; + originalLanguage?: Language; + remotePoster?: string | null; + seasons?: SeasonResource[] | null; + /** @format int32 */ + year?: number; + path?: string | null; + /** @format int32 */ + qualityProfileId?: number; + seasonFolder?: boolean; + monitored?: boolean; + monitorNewItems?: NewItemMonitorTypes; + useSceneNumbering?: boolean; + /** @format int32 */ + runtime?: number; + /** @format int32 */ + tvdbId?: number; + /** @format int32 */ + tvRageId?: number; + /** @format int32 */ + tvMazeId?: number; + /** @format date-time */ + firstAired?: string | null; + /** @format date-time */ + lastAired?: string | null; + seriesType?: SeriesTypes; + cleanTitle?: string | null; + imdbId?: string | null; + titleSlug?: string | null; + rootFolderPath?: string | null; + folder?: string | null; + certification?: string | null; + genres?: string[] | null; + /** @uniqueItems true */ + tags?: number[] | null; + /** @format date-time */ + added?: string; + addOptions?: AddSeriesOptions; + ratings?: Ratings; + statistics?: SeriesStatisticsResource; + episodesChanged?: boolean | null; + /** + * @deprecated + * @format int32 + */ + languageProfileId?: number; +} + +export interface SeriesStatisticsResource { + /** @format int32 */ + seasonCount?: number; + /** @format int32 */ + episodeFileCount?: number; + /** @format int32 */ + episodeCount?: number; + /** @format int32 */ + totalEpisodeCount?: number; + /** @format int64 */ + sizeOnDisk?: number; + releaseGroups?: string[] | null; + /** @format double */ + percentOfEpisodes?: number; +} + +export enum SeriesStatusType { + Continuing = "continuing", + Ended = "ended", + Upcoming = "upcoming", + Deleted = "deleted", +} + +export interface SeriesTitleInfo { + title?: string | null; + titleWithoutYear?: string | null; + /** @format int32 */ + year?: number; + allTitles?: string[] | null; +} + +export enum SeriesTypes { + Standard = "standard", + Daily = "daily", + Anime = "anime", +} + +export enum SortDirection { + Default = "default", + Ascending = "ascending", + Descending = "descending", +} + +export interface SystemResource { + appName?: string | null; + instanceName?: string | null; + version?: string | null; + /** @format date-time */ + buildTime?: string; + isDebug?: boolean; + isProduction?: boolean; + isAdmin?: boolean; + isUserInteractive?: boolean; + startupPath?: string | null; + appData?: string | null; + osName?: string | null; + osVersion?: string | null; + isNetCore?: boolean; + isLinux?: boolean; + isOsx?: boolean; + isWindows?: boolean; + isDocker?: boolean; + mode?: RuntimeMode; + branch?: string | null; + authentication?: AuthenticationType; + sqliteVersion?: Version; + /** @format int32 */ + migrationVersion?: number; + urlBase?: string | null; + runtimeVersion?: Version; + runtimeName?: string | null; + /** @format date-time */ + startTime?: string; + packageVersion?: string | null; + packageAuthor?: string | null; + packageUpdateMechanism?: UpdateMechanism; + packageUpdateMechanismMessage?: string | null; + databaseVersion?: Version; + databaseType?: DatabaseType; +} + +export interface TagDetailsResource { + /** @format int32 */ + id?: number; + label?: string | null; + delayProfileIds?: number[] | null; + importListIds?: number[] | null; + notificationIds?: number[] | null; + restrictionIds?: number[] | null; + indexerIds?: number[] | null; + downloadClientIds?: number[] | null; + autoTagIds?: number[] | null; + seriesIds?: number[] | null; +} + +export interface TagResource { + /** @format int32 */ + id?: number; + label?: string | null; +} + +export interface TaskResource { + /** @format int32 */ + id?: number; + name?: string | null; + taskName?: string | null; + /** @format int32 */ + interval?: number; + /** @format date-time */ + lastExecution?: string; + /** @format date-time */ + lastStartTime?: string; + /** @format date-time */ + nextExecution?: string; + lastDuration?: TimeSpan; +} + +export interface TimeSpan { + /** @format int64 */ + ticks?: number; + /** @format int32 */ + days?: number; + /** @format int32 */ + hours?: number; + /** @format int32 */ + milliseconds?: number; + /** @format int32 */ + minutes?: number; + /** @format int32 */ + seconds?: number; + /** @format double */ + totalDays?: number; + /** @format double */ + totalHours?: number; + /** @format double */ + totalMilliseconds?: number; + /** @format double */ + totalMinutes?: number; + /** @format double */ + totalSeconds?: number; +} + +export enum TrackedDownloadState { + Downloading = "downloading", + ImportPending = "importPending", + Importing = "importing", + Imported = "imported", + FailedPending = "failedPending", + Failed = "failed", + Ignored = "ignored", +} + +export enum TrackedDownloadStatus { + Ok = "ok", + Warning = "warning", + Error = "error", +} + +export interface TrackedDownloadStatusMessage { + title?: string | null; + messages?: string[] | null; +} + +export interface UiConfigResource { + /** @format int32 */ + id?: number; + /** @format int32 */ + firstDayOfWeek?: number; + calendarWeekColumnHeader?: string | null; + shortDateFormat?: string | null; + longDateFormat?: string | null; + timeFormat?: string | null; + showRelativeDates?: boolean; + enableColorImpairedMode?: boolean; + theme?: string | null; + /** @format int32 */ + uiLanguage?: number; +} + +export interface UnmappedFolder { + name?: string | null; + path?: string | null; + relativePath?: string | null; +} + +export interface UpdateChanges { + new?: string[] | null; + fixed?: string[] | null; +} + +export enum UpdateMechanism { + BuiltIn = "builtIn", + Script = "script", + External = "external", + Apt = "apt", + Docker = "docker", +} + +export interface UpdateResource { + /** @format int32 */ + id?: number; + version?: Version; + branch?: string | null; + /** @format date-time */ + releaseDate?: string; + fileName?: string | null; + url?: string | null; + installed?: boolean; + /** @format date-time */ + installedOn?: string | null; + installable?: boolean; + latest?: boolean; + changes?: UpdateChanges; + hash?: string | null; +} + +export interface Version { + /** @format int32 */ + major?: number; + /** @format int32 */ + minor?: number; + /** @format int32 */ + build?: number; + /** @format int32 */ + revision?: number; + /** @format int32 */ + majorRevision?: number; + /** @format int32 */ + minorRevision?: number; +} + +export type QueryParamsType = Record; +export type ResponseFormat = keyof Omit; + +export interface FullRequestParams extends Omit { + /** set parameter to `true` for call `securityWorker` for this request */ + secure?: boolean; + /** request path */ + path: string; + /** content type of request body */ + type?: ContentType; + /** query params */ + query?: QueryParamsType; + /** format of response (i.e. response.json() -> format: "json") */ + format?: ResponseFormat; + /** request body */ + body?: unknown; + /** base url */ + baseUrl?: string; + /** request cancellation token */ + cancelToken?: CancelToken; +} + +export type RequestParams = Omit< + FullRequestParams, + "body" | "method" | "query" | "path" +>; + +export interface ApiConfig { + baseUrl?: string; + baseApiParams?: Omit; + securityWorker?: ( + securityData: SecurityDataType | null + ) => Promise | RequestParams | void; + customFetch?: typeof fetch; +} + +export interface HttpResponse + extends Response { + data: D; + error: E; +} + +type CancelToken = Symbol | string | number; + +export enum ContentType { + Json = "application/json", + FormData = "multipart/form-data", + UrlEncoded = "application/x-www-form-urlencoded", + Text = "text/plain", +} + +export class HttpClient { + public baseUrl: string = "{protocol}://{hostpath}"; + private securityData: SecurityDataType | null = null; + private securityWorker?: ApiConfig["securityWorker"]; + private abortControllers = new Map(); + private customFetch = (...fetchParams: Parameters) => + fetch(...fetchParams); + + private baseApiParams: RequestParams = { + credentials: "same-origin", + headers: {}, + redirect: "follow", + referrerPolicy: "no-referrer", + }; + + constructor(apiConfig: ApiConfig = {}) { + Object.assign(this, apiConfig); + } + + public setSecurityData = (data: SecurityDataType | null) => { + this.securityData = data; + }; + + protected encodeQueryParam(key: string, value: any) { + const encodedKey = encodeURIComponent(key); + return `${encodedKey}=${encodeURIComponent( + typeof value === "number" ? value : `${value}` + )}`; + } + + protected addQueryParam(query: QueryParamsType, key: string) { + return this.encodeQueryParam(key, query[key]); + } + + protected addArrayQueryParam(query: QueryParamsType, key: string) { + const value = query[key]; + return value.map((v: any) => this.encodeQueryParam(key, v)).join("&"); + } + + protected toQueryString(rawQuery?: QueryParamsType): string { + const query = rawQuery || {}; + const keys = Object.keys(query).filter( + (key) => "undefined" !== typeof query[key] + ); + return keys + .map((key) => + Array.isArray(query[key]) + ? this.addArrayQueryParam(query, key) + : this.addQueryParam(query, key) + ) + .join("&"); + } + + protected addQueryParams(rawQuery?: QueryParamsType): string { + const queryString = this.toQueryString(rawQuery); + return queryString ? `?${queryString}` : ""; + } + + private contentFormatters: Record any> = { + [ContentType.Json]: (input: any) => + input !== null && (typeof input === "object" || typeof input === "string") + ? JSON.stringify(input) + : input, + [ContentType.Text]: (input: any) => + input !== null && typeof input !== "string" + ? JSON.stringify(input) + : input, + [ContentType.FormData]: (input: any) => + Object.keys(input || {}).reduce((formData, key) => { + const property = input[key]; + formData.append( + key, + property instanceof Blob + ? property + : typeof property === "object" && property !== null + ? JSON.stringify(property) + : `${property}` + ); + return formData; + }, new FormData()), + [ContentType.UrlEncoded]: (input: any) => this.toQueryString(input), + }; + + protected mergeRequestParams( + params1: RequestParams, + params2?: RequestParams + ): RequestParams { + return { + ...this.baseApiParams, + ...params1, + ...(params2 || {}), + headers: { + ...(this.baseApiParams.headers || {}), + ...(params1.headers || {}), + ...((params2 && params2.headers) || {}), + }, + }; + } + + protected createAbortSignal = ( + cancelToken: CancelToken + ): AbortSignal | undefined => { + if (this.abortControllers.has(cancelToken)) { + const abortController = this.abortControllers.get(cancelToken); + if (abortController) { + return abortController.signal; + } + return void 0; + } + + const abortController = new AbortController(); + this.abortControllers.set(cancelToken, abortController); + return abortController.signal; + }; + + public abortRequest = (cancelToken: CancelToken) => { + const abortController = this.abortControllers.get(cancelToken); + + if (abortController) { + abortController.abort(); + this.abortControllers.delete(cancelToken); + } + }; + + public request = async ({ + body, + secure, + path, + type, + query, + format, + baseUrl, + cancelToken, + ...params + }: FullRequestParams): Promise> => { + const secureParams = + ((typeof secure === "boolean" ? secure : this.baseApiParams.secure) && + this.securityWorker && + (await this.securityWorker(this.securityData))) || + {}; + const requestParams = this.mergeRequestParams(params, secureParams); + const queryString = query && this.toQueryString(query); + const payloadFormatter = this.contentFormatters[type || ContentType.Json]; + const responseFormat = format || requestParams.format; + + return this.customFetch( + `${baseUrl || this.baseUrl || ""}${path}${ + queryString ? `?${queryString}` : "" + }`, + { + ...requestParams, + headers: { + ...(requestParams.headers || {}), + ...(type && type !== ContentType.FormData + ? { "Content-Type": type } + : {}), + }, + signal: + (cancelToken + ? this.createAbortSignal(cancelToken) + : requestParams.signal) || null, + body: + typeof body === "undefined" || body === null + ? null + : payloadFormatter(body), + } + ).then(async (response) => { + const r = response as HttpResponse; + r.data = null as unknown as T; + r.error = null as unknown as E; + + const data = !responseFormat + ? r + : await response[responseFormat]() + .then((data) => { + if (r.ok) { + r.data = data; + } else { + r.error = data; + } + return r; + }) + .catch((e) => { + r.error = e; + return r; + }); + + if (cancelToken) { + this.abortControllers.delete(cancelToken); + } + + if (!response.ok) throw data; + return data; + }); + }; +} + +/** + * @title Sonarr + * @version 3.0.0 + * @license GPL-3.0 (https://github.com/Sonarr/Sonarr/blob/develop/LICENSE) + * @baseUrl {protocol}://{hostpath} + * + * Sonarr API docs - The v3 API docs apply to both v3 and v4 versions of Sonarr. Some functionality may only be available in v4 of the Sonarr application. + */ +export class Api< + SecurityDataType extends unknown +> extends HttpClient { + /** + * No description + * + * @tags StaticResource + * @name GetRoot + * @request GET:/ + * @secure + */ + getRoot = (path: string, params: RequestParams = {}) => + this.request({ + path: `/`, + method: "GET", + secure: true, + ...params, + }); + + api = { + /** + * No description + * + * @tags ApiInfo + * @name GetApi + * @request GET:/api + * @secure + */ + getApi: (params: RequestParams = {}) => + this.request({ + path: `/api`, + method: "GET", + secure: true, + ...params, + }), + + /** + * No description + * + * @tags AutoTagging + * @name V3AutotaggingCreate + * @request POST:/api/v3/autotagging + * @secure + */ + v3AutotaggingCreate: ( + data: AutoTaggingResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/autotagging`, + method: "POST", + body: data, + secure: true, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags AutoTagging + * @name V3AutotaggingList + * @request GET:/api/v3/autotagging + * @secure + */ + v3AutotaggingList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/autotagging`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags AutoTagging + * @name V3AutotaggingUpdate + * @request PUT:/api/v3/autotagging/{id} + * @secure + */ + v3AutotaggingUpdate: ( + id: string, + data: AutoTaggingResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/autotagging/${id}`, + method: "PUT", + body: data, + secure: true, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags AutoTagging + * @name V3AutotaggingDelete + * @request DELETE:/api/v3/autotagging/{id} + * @secure + */ + v3AutotaggingDelete: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/autotagging/${id}`, + method: "DELETE", + secure: true, + ...params, + }), + + /** + * No description + * + * @tags AutoTagging + * @name V3AutotaggingDetail + * @request GET:/api/v3/autotagging/{id} + * @secure + */ + v3AutotaggingDetail: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/autotagging/${id}`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags AutoTagging + * @name V3AutotaggingSchemaList + * @request GET:/api/v3/autotagging/schema + * @secure + */ + v3AutotaggingSchemaList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/autotagging/schema`, + method: "GET", + secure: true, + ...params, + }), + + /** + * No description + * + * @tags Backup + * @name V3SystemBackupList + * @request GET:/api/v3/system/backup + * @secure + */ + v3SystemBackupList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/system/backup`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags Backup + * @name V3SystemBackupDelete + * @request DELETE:/api/v3/system/backup/{id} + * @secure + */ + v3SystemBackupDelete: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/system/backup/${id}`, + method: "DELETE", + secure: true, + ...params, + }), + + /** + * No description + * + * @tags Backup + * @name V3SystemBackupRestoreCreate + * @request POST:/api/v3/system/backup/restore/{id} + * @secure + */ + v3SystemBackupRestoreCreate: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/system/backup/restore/${id}`, + method: "POST", + secure: true, + ...params, + }), + + /** + * No description + * + * @tags Backup + * @name V3SystemBackupRestoreUploadCreate + * @request POST:/api/v3/system/backup/restore/upload + * @secure + */ + v3SystemBackupRestoreUploadCreate: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/system/backup/restore/upload`, + method: "POST", + secure: true, + ...params, + }), + + /** + * No description + * + * @tags Blocklist + * @name V3BlocklistList + * @request GET:/api/v3/blocklist + * @secure + */ + v3BlocklistList: ( + query?: { + /** + * @format int32 + * @default 1 + */ + page?: number; + /** + * @format int32 + * @default 10 + */ + pageSize?: number; + sortKey?: string; + sortDirection?: SortDirection; + }, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/blocklist`, + method: "GET", + query: query, + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags Blocklist + * @name V3BlocklistDelete + * @request DELETE:/api/v3/blocklist/{id} + * @secure + */ + v3BlocklistDelete: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/blocklist/${id}`, + method: "DELETE", + secure: true, + ...params, + }), + + /** + * No description + * + * @tags Blocklist + * @name V3BlocklistBulkDelete + * @request DELETE:/api/v3/blocklist/bulk + * @secure + */ + v3BlocklistBulkDelete: ( + data: BlocklistBulkResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/blocklist/bulk`, + method: "DELETE", + body: data, + secure: true, + type: ContentType.Json, + ...params, + }), + + /** + * No description + * + * @tags Calendar + * @name V3CalendarList + * @request GET:/api/v3/calendar + * @secure + */ + v3CalendarList: ( + query?: { + /** @format date-time */ + start?: string; + /** @format date-time */ + end?: string; + /** @default false */ + unmonitored?: boolean; + /** @default false */ + includeSeries?: boolean; + /** @default false */ + includeEpisodeFile?: boolean; + /** @default false */ + includeEpisodeImages?: boolean; + /** @default "" */ + tags?: string; + }, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/calendar`, + method: "GET", + query: query, + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags Calendar + * @name V3CalendarDetail + * @request GET:/api/v3/calendar/{id} + * @secure + */ + v3CalendarDetail: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/calendar/${id}`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags Command + * @name V3CommandCreate + * @request POST:/api/v3/command + * @secure + */ + v3CommandCreate: (data: CommandResource, params: RequestParams = {}) => + this.request({ + path: `/api/v3/command`, + method: "POST", + body: data, + secure: true, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags Command + * @name V3CommandList + * @request GET:/api/v3/command + * @secure + */ + v3CommandList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/command`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags Command + * @name V3CommandDelete + * @request DELETE:/api/v3/command/{id} + * @secure + */ + v3CommandDelete: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/command/${id}`, + method: "DELETE", + secure: true, + ...params, + }), + + /** + * No description + * + * @tags Command + * @name V3CommandDetail + * @request GET:/api/v3/command/{id} + * @secure + */ + v3CommandDetail: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/command/${id}`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags CustomFilter + * @name V3CustomfilterList + * @request GET:/api/v3/customfilter + * @secure + */ + v3CustomfilterList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/customfilter`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags CustomFilter + * @name V3CustomfilterCreate + * @request POST:/api/v3/customfilter + * @secure + */ + v3CustomfilterCreate: ( + data: CustomFilterResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/customfilter`, + method: "POST", + body: data, + secure: true, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags CustomFilter + * @name V3CustomfilterUpdate + * @request PUT:/api/v3/customfilter/{id} + * @secure + */ + v3CustomfilterUpdate: ( + id: string, + data: CustomFilterResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/customfilter/${id}`, + method: "PUT", + body: data, + secure: true, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags CustomFilter + * @name V3CustomfilterDelete + * @request DELETE:/api/v3/customfilter/{id} + * @secure + */ + v3CustomfilterDelete: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/customfilter/${id}`, + method: "DELETE", + secure: true, + ...params, + }), + + /** + * No description + * + * @tags CustomFilter + * @name V3CustomfilterDetail + * @request GET:/api/v3/customfilter/{id} + * @secure + */ + v3CustomfilterDetail: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/customfilter/${id}`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags CustomFormat + * @name V3CustomformatCreate + * @request POST:/api/v3/customformat + * @secure + */ + v3CustomformatCreate: ( + data: CustomFormatResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/customformat`, + method: "POST", + body: data, + secure: true, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags CustomFormat + * @name V3CustomformatList + * @request GET:/api/v3/customformat + * @secure + */ + v3CustomformatList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/customformat`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags CustomFormat + * @name V3CustomformatUpdate + * @request PUT:/api/v3/customformat/{id} + * @secure + */ + v3CustomformatUpdate: ( + id: string, + data: CustomFormatResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/customformat/${id}`, + method: "PUT", + body: data, + secure: true, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags CustomFormat + * @name V3CustomformatDelete + * @request DELETE:/api/v3/customformat/{id} + * @secure + */ + v3CustomformatDelete: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/customformat/${id}`, + method: "DELETE", + secure: true, + ...params, + }), + + /** + * No description + * + * @tags CustomFormat + * @name V3CustomformatDetail + * @request GET:/api/v3/customformat/{id} + * @secure + */ + v3CustomformatDetail: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/customformat/${id}`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags CustomFormat + * @name V3CustomformatSchemaList + * @request GET:/api/v3/customformat/schema + * @secure + */ + v3CustomformatSchemaList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/customformat/schema`, + method: "GET", + secure: true, + ...params, + }), + + /** + * No description + * + * @tags Cutoff + * @name V3WantedCutoffList + * @request GET:/api/v3/wanted/cutoff + * @secure + */ + v3WantedCutoffList: ( + query?: { + /** + * @format int32 + * @default 1 + */ + page?: number; + /** + * @format int32 + * @default 10 + */ + pageSize?: number; + sortKey?: string; + sortDirection?: SortDirection; + /** @default false */ + includeSeries?: boolean; + /** @default false */ + includeEpisodeFile?: boolean; + /** @default false */ + includeImages?: boolean; + /** @default true */ + monitored?: boolean; + }, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/wanted/cutoff`, + method: "GET", + query: query, + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags Cutoff + * @name V3WantedCutoffDetail + * @request GET:/api/v3/wanted/cutoff/{id} + * @secure + */ + v3WantedCutoffDetail: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/wanted/cutoff/${id}`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags DelayProfile + * @name V3DelayprofileCreate + * @request POST:/api/v3/delayprofile + * @secure + */ + v3DelayprofileCreate: ( + data: DelayProfileResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/delayprofile`, + method: "POST", + body: data, + secure: true, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags DelayProfile + * @name V3DelayprofileList + * @request GET:/api/v3/delayprofile + * @secure + */ + v3DelayprofileList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/delayprofile`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags DelayProfile + * @name V3DelayprofileDelete + * @request DELETE:/api/v3/delayprofile/{id} + * @secure + */ + v3DelayprofileDelete: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/delayprofile/${id}`, + method: "DELETE", + secure: true, + ...params, + }), + + /** + * No description + * + * @tags DelayProfile + * @name V3DelayprofileUpdate + * @request PUT:/api/v3/delayprofile/{id} + * @secure + */ + v3DelayprofileUpdate: ( + id: string, + data: DelayProfileResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/delayprofile/${id}`, + method: "PUT", + body: data, + secure: true, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags DelayProfile + * @name V3DelayprofileDetail + * @request GET:/api/v3/delayprofile/{id} + * @secure + */ + v3DelayprofileDetail: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/delayprofile/${id}`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags DelayProfile + * @name V3DelayprofileReorderUpdate + * @request PUT:/api/v3/delayprofile/reorder/{id} + * @secure + */ + v3DelayprofileReorderUpdate: ( + id: number, + query?: { + /** @format int32 */ + after?: number; + }, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/delayprofile/reorder/${id}`, + method: "PUT", + query: query, + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags DiskSpace + * @name V3DiskspaceList + * @request GET:/api/v3/diskspace + * @secure + */ + v3DiskspaceList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/diskspace`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags DownloadClient + * @name V3DownloadclientList + * @request GET:/api/v3/downloadclient + * @secure + */ + v3DownloadclientList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/downloadclient`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags DownloadClient + * @name V3DownloadclientCreate + * @request POST:/api/v3/downloadclient + * @secure + */ + v3DownloadclientCreate: ( + data: DownloadClientResource, + query?: { + /** @default false */ + forceSave?: boolean; + }, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/downloadclient`, + method: "POST", + query: query, + body: data, + secure: true, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags DownloadClient + * @name V3DownloadclientUpdate + * @request PUT:/api/v3/downloadclient/{id} + * @secure + */ + v3DownloadclientUpdate: ( + id: string, + data: DownloadClientResource, + query?: { + /** @default false */ + forceSave?: boolean; + }, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/downloadclient/${id}`, + method: "PUT", + query: query, + body: data, + secure: true, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags DownloadClient + * @name V3DownloadclientDelete + * @request DELETE:/api/v3/downloadclient/{id} + * @secure + */ + v3DownloadclientDelete: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/downloadclient/${id}`, + method: "DELETE", + secure: true, + ...params, + }), + + /** + * No description + * + * @tags DownloadClient + * @name V3DownloadclientDetail + * @request GET:/api/v3/downloadclient/{id} + * @secure + */ + v3DownloadclientDetail: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/downloadclient/${id}`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags DownloadClient + * @name V3DownloadclientBulkUpdate + * @request PUT:/api/v3/downloadclient/bulk + * @secure + */ + v3DownloadclientBulkUpdate: ( + data: DownloadClientBulkResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/downloadclient/bulk`, + method: "PUT", + body: data, + secure: true, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags DownloadClient + * @name V3DownloadclientBulkDelete + * @request DELETE:/api/v3/downloadclient/bulk + * @secure + */ + v3DownloadclientBulkDelete: ( + data: DownloadClientBulkResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/downloadclient/bulk`, + method: "DELETE", + body: data, + secure: true, + type: ContentType.Json, + ...params, + }), + + /** + * No description + * + * @tags DownloadClient + * @name V3DownloadclientSchemaList + * @request GET:/api/v3/downloadclient/schema + * @secure + */ + v3DownloadclientSchemaList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/downloadclient/schema`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags DownloadClient + * @name V3DownloadclientTestCreate + * @request POST:/api/v3/downloadclient/test + * @secure + */ + v3DownloadclientTestCreate: ( + data: DownloadClientResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/downloadclient/test`, + method: "POST", + body: data, + secure: true, + type: ContentType.Json, + ...params, + }), + + /** + * No description + * + * @tags DownloadClient + * @name V3DownloadclientTestallCreate + * @request POST:/api/v3/downloadclient/testall + * @secure + */ + v3DownloadclientTestallCreate: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/downloadclient/testall`, + method: "POST", + secure: true, + ...params, + }), + + /** + * No description + * + * @tags DownloadClient + * @name V3DownloadclientActionCreate + * @request POST:/api/v3/downloadclient/action/{name} + * @secure + */ + v3DownloadclientActionCreate: ( + name: string, + data: DownloadClientResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/downloadclient/action/${name}`, + method: "POST", + body: data, + secure: true, + type: ContentType.Json, + ...params, + }), + + /** + * No description + * + * @tags DownloadClientConfig + * @name V3ConfigDownloadclientList + * @request GET:/api/v3/config/downloadclient + * @secure + */ + v3ConfigDownloadclientList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/config/downloadclient`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags DownloadClientConfig + * @name V3ConfigDownloadclientUpdate + * @request PUT:/api/v3/config/downloadclient/{id} + * @secure + */ + v3ConfigDownloadclientUpdate: ( + id: string, + data: DownloadClientConfigResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/config/downloadclient/${id}`, + method: "PUT", + body: data, + secure: true, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags DownloadClientConfig + * @name V3ConfigDownloadclientDetail + * @request GET:/api/v3/config/downloadclient/{id} + * @secure + */ + v3ConfigDownloadclientDetail: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/config/downloadclient/${id}`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags Episode + * @name V3EpisodeList + * @request GET:/api/v3/episode + * @secure + */ + v3EpisodeList: ( + query?: { + /** @format int32 */ + seriesId?: number; + /** @format int32 */ + seasonNumber?: number; + episodeIds?: number[]; + /** @format int32 */ + episodeFileId?: number; + /** @default false */ + includeImages?: boolean; + }, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/episode`, + method: "GET", + query: query, + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags Episode + * @name V3EpisodeUpdate + * @request PUT:/api/v3/episode/{id} + * @secure + */ + v3EpisodeUpdate: ( + id: number, + data: EpisodeResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/episode/${id}`, + method: "PUT", + body: data, + secure: true, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags Episode + * @name V3EpisodeDetail + * @request GET:/api/v3/episode/{id} + * @secure + */ + v3EpisodeDetail: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/episode/${id}`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags Episode + * @name V3EpisodeMonitorUpdate + * @request PUT:/api/v3/episode/monitor + * @secure + */ + v3EpisodeMonitorUpdate: ( + data: EpisodesMonitoredResource, + query?: { + /** @default false */ + includeImages?: boolean; + }, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/episode/monitor`, + method: "PUT", + query: query, + body: data, + secure: true, + type: ContentType.Json, + ...params, + }), + + /** + * No description + * + * @tags EpisodeFile + * @name V3EpisodefileList + * @request GET:/api/v3/episodefile + * @secure + */ + v3EpisodefileList: ( + query?: { + /** @format int32 */ + seriesId?: number; + episodeFileIds?: number[]; + }, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/episodefile`, + method: "GET", + query: query, + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags EpisodeFile + * @name V3EpisodefileUpdate + * @request PUT:/api/v3/episodefile/{id} + * @secure + */ + v3EpisodefileUpdate: ( + id: string, + data: EpisodeFileResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/episodefile/${id}`, + method: "PUT", + body: data, + secure: true, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags EpisodeFile + * @name V3EpisodefileDelete + * @request DELETE:/api/v3/episodefile/{id} + * @secure + */ + v3EpisodefileDelete: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/episodefile/${id}`, + method: "DELETE", + secure: true, + ...params, + }), + + /** + * No description + * + * @tags EpisodeFile + * @name V3EpisodefileDetail + * @request GET:/api/v3/episodefile/{id} + * @secure + */ + v3EpisodefileDetail: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/episodefile/${id}`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags EpisodeFile + * @name V3EpisodefileEditorUpdate + * @request PUT:/api/v3/episodefile/editor + * @secure + */ + v3EpisodefileEditorUpdate: ( + data: EpisodeFileListResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/episodefile/editor`, + method: "PUT", + body: data, + secure: true, + type: ContentType.Json, + ...params, + }), + + /** + * No description + * + * @tags EpisodeFile + * @name V3EpisodefileBulkDelete + * @request DELETE:/api/v3/episodefile/bulk + * @secure + */ + v3EpisodefileBulkDelete: ( + data: EpisodeFileListResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/episodefile/bulk`, + method: "DELETE", + body: data, + secure: true, + type: ContentType.Json, + ...params, + }), + + /** + * No description + * + * @tags EpisodeFile + * @name V3EpisodefileBulkUpdate + * @request PUT:/api/v3/episodefile/bulk + * @secure + */ + v3EpisodefileBulkUpdate: ( + data: EpisodeFileResource[], + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/episodefile/bulk`, + method: "PUT", + body: data, + secure: true, + type: ContentType.Json, + ...params, + }), + + /** + * No description + * + * @tags FileSystem + * @name V3FilesystemList + * @request GET:/api/v3/filesystem + * @secure + */ + v3FilesystemList: ( + query?: { + path?: string; + /** @default false */ + includeFiles?: boolean; + /** @default false */ + allowFoldersWithoutTrailingSlashes?: boolean; + }, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/filesystem`, + method: "GET", + query: query, + secure: true, + ...params, + }), + + /** + * No description + * + * @tags FileSystem + * @name V3FilesystemTypeList + * @request GET:/api/v3/filesystem/type + * @secure + */ + v3FilesystemTypeList: ( + query?: { + path?: string; + }, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/filesystem/type`, + method: "GET", + query: query, + secure: true, + ...params, + }), + + /** + * No description + * + * @tags FileSystem + * @name V3FilesystemMediafilesList + * @request GET:/api/v3/filesystem/mediafiles + * @secure + */ + v3FilesystemMediafilesList: ( + query?: { + path?: string; + }, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/filesystem/mediafiles`, + method: "GET", + query: query, + secure: true, + ...params, + }), + + /** + * No description + * + * @tags Health + * @name V3HealthList + * @request GET:/api/v3/health + * @secure + */ + v3HealthList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/health`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags History + * @name V3HistoryList + * @request GET:/api/v3/history + * @secure + */ + v3HistoryList: ( + query?: { + /** + * @format int32 + * @default 1 + */ + page?: number; + /** + * @format int32 + * @default 10 + */ + pageSize?: number; + sortKey?: string; + sortDirection?: SortDirection; + includeSeries?: boolean; + includeEpisode?: boolean; + eventType?: number[]; + /** @format int32 */ + episodeId?: number; + downloadId?: string; + seriesIds?: number[]; + languages?: number[]; + quality?: number[]; + }, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/history`, + method: "GET", + query: query, + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags History + * @name V3HistorySinceList + * @request GET:/api/v3/history/since + * @secure + */ + v3HistorySinceList: ( + query?: { + /** @format date-time */ + date?: string; + eventType?: EpisodeHistoryEventType; + /** @default false */ + includeSeries?: boolean; + /** @default false */ + includeEpisode?: boolean; + }, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/history/since`, + method: "GET", + query: query, + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags History + * @name V3HistorySeriesList + * @request GET:/api/v3/history/series + * @secure + */ + v3HistorySeriesList: ( + query?: { + /** @format int32 */ + seriesId?: number; + /** @format int32 */ + seasonNumber?: number; + eventType?: EpisodeHistoryEventType; + /** @default false */ + includeSeries?: boolean; + /** @default false */ + includeEpisode?: boolean; + }, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/history/series`, + method: "GET", + query: query, + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags History + * @name V3HistoryFailedCreate + * @request POST:/api/v3/history/failed/{id} + * @secure + */ + v3HistoryFailedCreate: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/history/failed/${id}`, + method: "POST", + secure: true, + ...params, + }), + + /** + * No description + * + * @tags HostConfig + * @name V3ConfigHostList + * @request GET:/api/v3/config/host + * @secure + */ + v3ConfigHostList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/config/host`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags HostConfig + * @name V3ConfigHostUpdate + * @request PUT:/api/v3/config/host/{id} + * @secure + */ + v3ConfigHostUpdate: ( + id: string, + data: HostConfigResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/config/host/${id}`, + method: "PUT", + body: data, + secure: true, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags HostConfig + * @name V3ConfigHostDetail + * @request GET:/api/v3/config/host/{id} + * @secure + */ + v3ConfigHostDetail: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/config/host/${id}`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags ImportList + * @name V3ImportlistList + * @request GET:/api/v3/importlist + * @secure + */ + v3ImportlistList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/importlist`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags ImportList + * @name V3ImportlistCreate + * @request POST:/api/v3/importlist + * @secure + */ + v3ImportlistCreate: ( + data: ImportListResource, + query?: { + /** @default false */ + forceSave?: boolean; + }, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/importlist`, + method: "POST", + query: query, + body: data, + secure: true, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags ImportList + * @name V3ImportlistUpdate + * @request PUT:/api/v3/importlist/{id} + * @secure + */ + v3ImportlistUpdate: ( + id: string, + data: ImportListResource, + query?: { + /** @default false */ + forceSave?: boolean; + }, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/importlist/${id}`, + method: "PUT", + query: query, + body: data, + secure: true, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags ImportList + * @name V3ImportlistDelete + * @request DELETE:/api/v3/importlist/{id} + * @secure + */ + v3ImportlistDelete: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/importlist/${id}`, + method: "DELETE", + secure: true, + ...params, + }), + + /** + * No description + * + * @tags ImportList + * @name V3ImportlistDetail + * @request GET:/api/v3/importlist/{id} + * @secure + */ + v3ImportlistDetail: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/importlist/${id}`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags ImportList + * @name V3ImportlistBulkUpdate + * @request PUT:/api/v3/importlist/bulk + * @secure + */ + v3ImportlistBulkUpdate: ( + data: ImportListBulkResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/importlist/bulk`, + method: "PUT", + body: data, + secure: true, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags ImportList + * @name V3ImportlistBulkDelete + * @request DELETE:/api/v3/importlist/bulk + * @secure + */ + v3ImportlistBulkDelete: ( + data: ImportListBulkResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/importlist/bulk`, + method: "DELETE", + body: data, + secure: true, + type: ContentType.Json, + ...params, + }), + + /** + * No description + * + * @tags ImportList + * @name V3ImportlistSchemaList + * @request GET:/api/v3/importlist/schema + * @secure + */ + v3ImportlistSchemaList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/importlist/schema`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags ImportList + * @name V3ImportlistTestCreate + * @request POST:/api/v3/importlist/test + * @secure + */ + v3ImportlistTestCreate: ( + data: ImportListResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/importlist/test`, + method: "POST", + body: data, + secure: true, + type: ContentType.Json, + ...params, + }), + + /** + * No description + * + * @tags ImportList + * @name V3ImportlistTestallCreate + * @request POST:/api/v3/importlist/testall + * @secure + */ + v3ImportlistTestallCreate: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/importlist/testall`, + method: "POST", + secure: true, + ...params, + }), + + /** + * No description + * + * @tags ImportList + * @name V3ImportlistActionCreate + * @request POST:/api/v3/importlist/action/{name} + * @secure + */ + v3ImportlistActionCreate: ( + name: string, + data: ImportListResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/importlist/action/${name}`, + method: "POST", + body: data, + secure: true, + type: ContentType.Json, + ...params, + }), + + /** + * No description + * + * @tags ImportListConfig + * @name V3ConfigImportlistList + * @request GET:/api/v3/config/importlist + * @secure + */ + v3ConfigImportlistList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/config/importlist`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags ImportListConfig + * @name V3ConfigImportlistUpdate + * @request PUT:/api/v3/config/importlist/{id} + * @secure + */ + v3ConfigImportlistUpdate: ( + id: string, + data: ImportListConfigResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/config/importlist/${id}`, + method: "PUT", + body: data, + secure: true, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags ImportListConfig + * @name V3ConfigImportlistDetail + * @request GET:/api/v3/config/importlist/{id} + * @secure + */ + v3ConfigImportlistDetail: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/config/importlist/${id}`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags ImportListExclusion + * @name V3ImportlistexclusionList + * @request GET:/api/v3/importlistexclusion + * @deprecated + * @secure + */ + v3ImportlistexclusionList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/importlistexclusion`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags ImportListExclusion + * @name V3ImportlistexclusionCreate + * @request POST:/api/v3/importlistexclusion + * @secure + */ + v3ImportlistexclusionCreate: ( + data: ImportListExclusionResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/importlistexclusion`, + method: "POST", + body: data, + secure: true, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags ImportListExclusion + * @name V3ImportlistexclusionPagedList + * @request GET:/api/v3/importlistexclusion/paged + * @secure + */ + v3ImportlistexclusionPagedList: ( + query?: { + /** + * @format int32 + * @default 1 + */ + page?: number; + /** + * @format int32 + * @default 10 + */ + pageSize?: number; + sortKey?: string; + sortDirection?: SortDirection; + }, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/importlistexclusion/paged`, + method: "GET", + query: query, + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags ImportListExclusion + * @name V3ImportlistexclusionUpdate + * @request PUT:/api/v3/importlistexclusion/{id} + * @secure + */ + v3ImportlistexclusionUpdate: ( + id: string, + data: ImportListExclusionResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/importlistexclusion/${id}`, + method: "PUT", + body: data, + secure: true, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags ImportListExclusion + * @name V3ImportlistexclusionDelete + * @request DELETE:/api/v3/importlistexclusion/{id} + * @secure + */ + v3ImportlistexclusionDelete: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/importlistexclusion/${id}`, + method: "DELETE", + secure: true, + ...params, + }), + + /** + * No description + * + * @tags ImportListExclusion + * @name V3ImportlistexclusionDetail + * @request GET:/api/v3/importlistexclusion/{id} + * @secure + */ + v3ImportlistexclusionDetail: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/importlistexclusion/${id}`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags Indexer + * @name V3IndexerList + * @request GET:/api/v3/indexer + * @secure + */ + v3IndexerList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/indexer`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags Indexer + * @name V3IndexerCreate + * @request POST:/api/v3/indexer + * @secure + */ + v3IndexerCreate: ( + data: IndexerResource, + query?: { + /** @default false */ + forceSave?: boolean; + }, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/indexer`, + method: "POST", + query: query, + body: data, + secure: true, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags Indexer + * @name V3IndexerUpdate + * @request PUT:/api/v3/indexer/{id} + * @secure + */ + v3IndexerUpdate: ( + id: string, + data: IndexerResource, + query?: { + /** @default false */ + forceSave?: boolean; + }, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/indexer/${id}`, + method: "PUT", + query: query, + body: data, + secure: true, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags Indexer + * @name V3IndexerDelete + * @request DELETE:/api/v3/indexer/{id} + * @secure + */ + v3IndexerDelete: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/indexer/${id}`, + method: "DELETE", + secure: true, + ...params, + }), + + /** + * No description + * + * @tags Indexer + * @name V3IndexerDetail + * @request GET:/api/v3/indexer/{id} + * @secure + */ + v3IndexerDetail: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/indexer/${id}`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags Indexer + * @name V3IndexerBulkUpdate + * @request PUT:/api/v3/indexer/bulk + * @secure + */ + v3IndexerBulkUpdate: ( + data: IndexerBulkResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/indexer/bulk`, + method: "PUT", + body: data, + secure: true, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags Indexer + * @name V3IndexerBulkDelete + * @request DELETE:/api/v3/indexer/bulk + * @secure + */ + v3IndexerBulkDelete: ( + data: IndexerBulkResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/indexer/bulk`, + method: "DELETE", + body: data, + secure: true, + type: ContentType.Json, + ...params, + }), + + /** + * No description + * + * @tags Indexer + * @name V3IndexerSchemaList + * @request GET:/api/v3/indexer/schema + * @secure + */ + v3IndexerSchemaList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/indexer/schema`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags Indexer + * @name V3IndexerTestCreate + * @request POST:/api/v3/indexer/test + * @secure + */ + v3IndexerTestCreate: (data: IndexerResource, params: RequestParams = {}) => + this.request({ + path: `/api/v3/indexer/test`, + method: "POST", + body: data, + secure: true, + type: ContentType.Json, + ...params, + }), + + /** + * No description + * + * @tags Indexer + * @name V3IndexerTestallCreate + * @request POST:/api/v3/indexer/testall + * @secure + */ + v3IndexerTestallCreate: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/indexer/testall`, + method: "POST", + secure: true, + ...params, + }), + + /** + * No description + * + * @tags Indexer + * @name V3IndexerActionCreate + * @request POST:/api/v3/indexer/action/{name} + * @secure + */ + v3IndexerActionCreate: ( + name: string, + data: IndexerResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/indexer/action/${name}`, + method: "POST", + body: data, + secure: true, + type: ContentType.Json, + ...params, + }), + + /** + * No description + * + * @tags IndexerConfig + * @name V3ConfigIndexerList + * @request GET:/api/v3/config/indexer + * @secure + */ + v3ConfigIndexerList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/config/indexer`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags IndexerConfig + * @name V3ConfigIndexerUpdate + * @request PUT:/api/v3/config/indexer/{id} + * @secure + */ + v3ConfigIndexerUpdate: ( + id: string, + data: IndexerConfigResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/config/indexer/${id}`, + method: "PUT", + body: data, + secure: true, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags IndexerConfig + * @name V3ConfigIndexerDetail + * @request GET:/api/v3/config/indexer/{id} + * @secure + */ + v3ConfigIndexerDetail: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/config/indexer/${id}`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags IndexerFlag + * @name V3IndexerflagList + * @request GET:/api/v3/indexerflag + * @secure + */ + v3IndexerflagList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/indexerflag`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags Language + * @name V3LanguageList + * @request GET:/api/v3/language + * @secure + */ + v3LanguageList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/language`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags Language + * @name V3LanguageDetail + * @request GET:/api/v3/language/{id} + * @secure + */ + v3LanguageDetail: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/language/${id}`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags LanguageProfile + * @name V3LanguageprofileCreate + * @request POST:/api/v3/languageprofile + * @deprecated + * @secure + */ + v3LanguageprofileCreate: ( + data: LanguageProfileResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/languageprofile`, + method: "POST", + body: data, + secure: true, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags LanguageProfile + * @name V3LanguageprofileList + * @request GET:/api/v3/languageprofile + * @deprecated + * @secure + */ + v3LanguageprofileList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/languageprofile`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags LanguageProfile + * @name V3LanguageprofileDelete + * @request DELETE:/api/v3/languageprofile/{id} + * @deprecated + * @secure + */ + v3LanguageprofileDelete: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/languageprofile/${id}`, + method: "DELETE", + secure: true, + ...params, + }), + + /** + * No description + * + * @tags LanguageProfile + * @name V3LanguageprofileUpdate + * @request PUT:/api/v3/languageprofile/{id} + * @deprecated + * @secure + */ + v3LanguageprofileUpdate: ( + id: string, + data: LanguageProfileResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/languageprofile/${id}`, + method: "PUT", + body: data, + secure: true, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags LanguageProfile + * @name V3LanguageprofileDetail + * @request GET:/api/v3/languageprofile/{id} + * @secure + */ + v3LanguageprofileDetail: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/languageprofile/${id}`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags LanguageProfileSchema + * @name V3LanguageprofileSchemaList + * @request GET:/api/v3/languageprofile/schema + * @deprecated + * @secure + */ + v3LanguageprofileSchemaList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/languageprofile/schema`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags Localization + * @name V3LocalizationList + * @request GET:/api/v3/localization + * @secure + */ + v3LocalizationList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/localization`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags Localization + * @name V3LocalizationLanguageList + * @request GET:/api/v3/localization/language + * @secure + */ + v3LocalizationLanguageList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/localization/language`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags Localization + * @name V3LocalizationDetail + * @request GET:/api/v3/localization/{id} + * @secure + */ + v3LocalizationDetail: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/localization/${id}`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags Log + * @name V3LogList + * @request GET:/api/v3/log + * @secure + */ + v3LogList: ( + query?: { + /** + * @format int32 + * @default 1 + */ + page?: number; + /** + * @format int32 + * @default 10 + */ + pageSize?: number; + sortKey?: string; + sortDirection?: SortDirection; + level?: string; + }, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/log`, + method: "GET", + query: query, + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags LogFile + * @name V3LogFileList + * @request GET:/api/v3/log/file + * @secure + */ + v3LogFileList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/log/file`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags LogFile + * @name V3LogFileDetail + * @request GET:/api/v3/log/file/{filename} + * @secure + */ + v3LogFileDetail: (filename: string, params: RequestParams = {}) => + this.request({ + path: `/api/v3/log/file/${filename}`, + method: "GET", + secure: true, + ...params, + }), + + /** + * No description + * + * @tags ManualImport + * @name V3ManualimportList + * @request GET:/api/v3/manualimport + * @secure + */ + v3ManualimportList: ( + query?: { + folder?: string; + downloadId?: string; + /** @format int32 */ + seriesId?: number; + /** @format int32 */ + seasonNumber?: number; + /** @default true */ + filterExistingFiles?: boolean; + }, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/manualimport`, + method: "GET", + query: query, + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags ManualImport + * @name V3ManualimportCreate + * @request POST:/api/v3/manualimport + * @secure + */ + v3ManualimportCreate: ( + data: ManualImportReprocessResource[], + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/manualimport`, + method: "POST", + body: data, + secure: true, + type: ContentType.Json, + ...params, + }), + + /** + * No description + * + * @tags MediaCover + * @name V3MediacoverDetail + * @request GET:/api/v3/mediacover/{seriesId}/{filename} + * @secure + */ + v3MediacoverDetail: ( + seriesId: number, + filename: string, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/mediacover/${seriesId}/${filename}`, + method: "GET", + secure: true, + ...params, + }), + + /** + * No description + * + * @tags MediaManagementConfig + * @name V3ConfigMediamanagementList + * @request GET:/api/v3/config/mediamanagement + * @secure + */ + v3ConfigMediamanagementList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/config/mediamanagement`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags MediaManagementConfig + * @name V3ConfigMediamanagementUpdate + * @request PUT:/api/v3/config/mediamanagement/{id} + * @secure + */ + v3ConfigMediamanagementUpdate: ( + id: string, + data: MediaManagementConfigResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/config/mediamanagement/${id}`, + method: "PUT", + body: data, + secure: true, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags MediaManagementConfig + * @name V3ConfigMediamanagementDetail + * @request GET:/api/v3/config/mediamanagement/{id} + * @secure + */ + v3ConfigMediamanagementDetail: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/config/mediamanagement/${id}`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags Metadata + * @name V3MetadataList + * @request GET:/api/v3/metadata + * @secure + */ + v3MetadataList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/metadata`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags Metadata + * @name V3MetadataCreate + * @request POST:/api/v3/metadata + * @secure + */ + v3MetadataCreate: ( + data: MetadataResource, + query?: { + /** @default false */ + forceSave?: boolean; + }, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/metadata`, + method: "POST", + query: query, + body: data, + secure: true, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags Metadata + * @name V3MetadataUpdate + * @request PUT:/api/v3/metadata/{id} + * @secure + */ + v3MetadataUpdate: ( + id: string, + data: MetadataResource, + query?: { + /** @default false */ + forceSave?: boolean; + }, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/metadata/${id}`, + method: "PUT", + query: query, + body: data, + secure: true, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags Metadata + * @name V3MetadataDelete + * @request DELETE:/api/v3/metadata/{id} + * @secure + */ + v3MetadataDelete: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/metadata/${id}`, + method: "DELETE", + secure: true, + ...params, + }), + + /** + * No description + * + * @tags Metadata + * @name V3MetadataDetail + * @request GET:/api/v3/metadata/{id} + * @secure + */ + v3MetadataDetail: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/metadata/${id}`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags Metadata + * @name V3MetadataSchemaList + * @request GET:/api/v3/metadata/schema + * @secure + */ + v3MetadataSchemaList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/metadata/schema`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags Metadata + * @name V3MetadataTestCreate + * @request POST:/api/v3/metadata/test + * @secure + */ + v3MetadataTestCreate: ( + data: MetadataResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/metadata/test`, + method: "POST", + body: data, + secure: true, + type: ContentType.Json, + ...params, + }), + + /** + * No description + * + * @tags Metadata + * @name V3MetadataTestallCreate + * @request POST:/api/v3/metadata/testall + * @secure + */ + v3MetadataTestallCreate: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/metadata/testall`, + method: "POST", + secure: true, + ...params, + }), + + /** + * No description + * + * @tags Metadata + * @name V3MetadataActionCreate + * @request POST:/api/v3/metadata/action/{name} + * @secure + */ + v3MetadataActionCreate: ( + name: string, + data: MetadataResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/metadata/action/${name}`, + method: "POST", + body: data, + secure: true, + type: ContentType.Json, + ...params, + }), + + /** + * No description + * + * @tags Missing + * @name V3WantedMissingList + * @request GET:/api/v3/wanted/missing + * @secure + */ + v3WantedMissingList: ( + query?: { + /** + * @format int32 + * @default 1 + */ + page?: number; + /** + * @format int32 + * @default 10 + */ + pageSize?: number; + sortKey?: string; + sortDirection?: SortDirection; + /** @default false */ + includeSeries?: boolean; + /** @default false */ + includeImages?: boolean; + /** @default true */ + monitored?: boolean; + }, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/wanted/missing`, + method: "GET", + query: query, + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags Missing + * @name V3WantedMissingDetail + * @request GET:/api/v3/wanted/missing/{id} + * @secure + */ + v3WantedMissingDetail: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/wanted/missing/${id}`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags NamingConfig + * @name V3ConfigNamingList + * @request GET:/api/v3/config/naming + * @secure + */ + v3ConfigNamingList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/config/naming`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags NamingConfig + * @name V3ConfigNamingUpdate + * @request PUT:/api/v3/config/naming/{id} + * @secure + */ + v3ConfigNamingUpdate: ( + id: string, + data: NamingConfigResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/config/naming/${id}`, + method: "PUT", + body: data, + secure: true, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags NamingConfig + * @name V3ConfigNamingDetail + * @request GET:/api/v3/config/naming/{id} + * @secure + */ + v3ConfigNamingDetail: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/config/naming/${id}`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags NamingConfig + * @name V3ConfigNamingExamplesList + * @request GET:/api/v3/config/naming/examples + * @secure + */ + v3ConfigNamingExamplesList: ( + query?: { + renameEpisodes?: boolean; + replaceIllegalCharacters?: boolean; + /** @format int32 */ + colonReplacementFormat?: number; + /** @format int32 */ + multiEpisodeStyle?: number; + standardEpisodeFormat?: string; + dailyEpisodeFormat?: string; + animeEpisodeFormat?: string; + seriesFolderFormat?: string; + seasonFolderFormat?: string; + specialsFolderFormat?: string; + /** @format int32 */ + id?: number; + resourceName?: string; + }, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/config/naming/examples`, + method: "GET", + query: query, + secure: true, + ...params, + }), + + /** + * No description + * + * @tags Notification + * @name V3NotificationList + * @request GET:/api/v3/notification + * @secure + */ + v3NotificationList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/notification`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags Notification + * @name V3NotificationCreate + * @request POST:/api/v3/notification + * @secure + */ + v3NotificationCreate: ( + data: NotificationResource, + query?: { + /** @default false */ + forceSave?: boolean; + }, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/notification`, + method: "POST", + query: query, + body: data, + secure: true, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags Notification + * @name V3NotificationUpdate + * @request PUT:/api/v3/notification/{id} + * @secure + */ + v3NotificationUpdate: ( + id: string, + data: NotificationResource, + query?: { + /** @default false */ + forceSave?: boolean; + }, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/notification/${id}`, + method: "PUT", + query: query, + body: data, + secure: true, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags Notification + * @name V3NotificationDelete + * @request DELETE:/api/v3/notification/{id} + * @secure + */ + v3NotificationDelete: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/notification/${id}`, + method: "DELETE", + secure: true, + ...params, + }), + + /** + * No description + * + * @tags Notification + * @name V3NotificationDetail + * @request GET:/api/v3/notification/{id} + * @secure + */ + v3NotificationDetail: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/notification/${id}`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags Notification + * @name V3NotificationSchemaList + * @request GET:/api/v3/notification/schema + * @secure + */ + v3NotificationSchemaList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/notification/schema`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags Notification + * @name V3NotificationTestCreate + * @request POST:/api/v3/notification/test + * @secure + */ + v3NotificationTestCreate: ( + data: NotificationResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/notification/test`, + method: "POST", + body: data, + secure: true, + type: ContentType.Json, + ...params, + }), + + /** + * No description + * + * @tags Notification + * @name V3NotificationTestallCreate + * @request POST:/api/v3/notification/testall + * @secure + */ + v3NotificationTestallCreate: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/notification/testall`, + method: "POST", + secure: true, + ...params, + }), + + /** + * No description + * + * @tags Notification + * @name V3NotificationActionCreate + * @request POST:/api/v3/notification/action/{name} + * @secure + */ + v3NotificationActionCreate: ( + name: string, + data: NotificationResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/notification/action/${name}`, + method: "POST", + body: data, + secure: true, + type: ContentType.Json, + ...params, + }), + + /** + * No description + * + * @tags Parse + * @name V3ParseList + * @request GET:/api/v3/parse + * @secure + */ + v3ParseList: ( + query?: { + title?: string; + path?: string; + }, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/parse`, + method: "GET", + query: query, + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags QualityDefinition + * @name V3QualitydefinitionUpdate + * @request PUT:/api/v3/qualitydefinition/{id} + * @secure + */ + v3QualitydefinitionUpdate: ( + id: string, + data: QualityDefinitionResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/qualitydefinition/${id}`, + method: "PUT", + body: data, + secure: true, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags QualityDefinition + * @name V3QualitydefinitionDetail + * @request GET:/api/v3/qualitydefinition/{id} + * @secure + */ + v3QualitydefinitionDetail: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/qualitydefinition/${id}`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags QualityDefinition + * @name V3QualitydefinitionList + * @request GET:/api/v3/qualitydefinition + * @secure + */ + v3QualitydefinitionList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/qualitydefinition`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags QualityDefinition + * @name V3QualitydefinitionUpdateUpdate + * @request PUT:/api/v3/qualitydefinition/update + * @secure + */ + v3QualitydefinitionUpdateUpdate: ( + data: QualityDefinitionResource[], + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/qualitydefinition/update`, + method: "PUT", + body: data, + secure: true, + type: ContentType.Json, + ...params, + }), + + /** + * No description + * + * @tags QualityProfile + * @name V3QualityprofileCreate + * @request POST:/api/v3/qualityprofile + * @secure + */ + v3QualityprofileCreate: ( + data: QualityProfileResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/qualityprofile`, + method: "POST", + body: data, + secure: true, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags QualityProfile + * @name V3QualityprofileList + * @request GET:/api/v3/qualityprofile + * @secure + */ + v3QualityprofileList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/qualityprofile`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags QualityProfile + * @name V3QualityprofileDelete + * @request DELETE:/api/v3/qualityprofile/{id} + * @secure + */ + v3QualityprofileDelete: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/qualityprofile/${id}`, + method: "DELETE", + secure: true, + ...params, + }), + + /** + * No description + * + * @tags QualityProfile + * @name V3QualityprofileUpdate + * @request PUT:/api/v3/qualityprofile/{id} + * @secure + */ + v3QualityprofileUpdate: ( + id: string, + data: QualityProfileResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/qualityprofile/${id}`, + method: "PUT", + body: data, + secure: true, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags QualityProfile + * @name V3QualityprofileDetail + * @request GET:/api/v3/qualityprofile/{id} + * @secure + */ + v3QualityprofileDetail: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/qualityprofile/${id}`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags QualityProfileSchema + * @name V3QualityprofileSchemaList + * @request GET:/api/v3/qualityprofile/schema + * @secure + */ + v3QualityprofileSchemaList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/qualityprofile/schema`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags Queue + * @name V3QueueDelete + * @request DELETE:/api/v3/queue/{id} + * @secure + */ + v3QueueDelete: ( + id: number, + query?: { + /** @default true */ + removeFromClient?: boolean; + /** @default false */ + blocklist?: boolean; + /** @default false */ + skipRedownload?: boolean; + /** @default false */ + changeCategory?: boolean; + }, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/queue/${id}`, + method: "DELETE", + query: query, + secure: true, + ...params, + }), + + /** + * No description + * + * @tags Queue + * @name V3QueueBulkDelete + * @request DELETE:/api/v3/queue/bulk + * @secure + */ + v3QueueBulkDelete: ( + data: QueueBulkResource, + query?: { + /** @default true */ + removeFromClient?: boolean; + /** @default false */ + blocklist?: boolean; + /** @default false */ + skipRedownload?: boolean; + /** @default false */ + changeCategory?: boolean; + }, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/queue/bulk`, + method: "DELETE", + query: query, + body: data, + secure: true, + type: ContentType.Json, + ...params, + }), + + /** + * No description + * + * @tags Queue + * @name V3QueueList + * @request GET:/api/v3/queue + * @secure + */ + v3QueueList: ( + query?: { + /** + * @format int32 + * @default 1 + */ + page?: number; + /** + * @format int32 + * @default 10 + */ + pageSize?: number; + sortKey?: string; + sortDirection?: SortDirection; + /** @default false */ + includeUnknownSeriesItems?: boolean; + /** @default false */ + includeSeries?: boolean; + /** @default false */ + includeEpisode?: boolean; + seriesIds?: number[]; + protocol?: DownloadProtocol; + languages?: number[]; + /** @format int32 */ + quality?: number; + }, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/queue`, + method: "GET", + query: query, + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags QueueAction + * @name V3QueueGrabCreate + * @request POST:/api/v3/queue/grab/{id} + * @secure + */ + v3QueueGrabCreate: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/queue/grab/${id}`, + method: "POST", + secure: true, + ...params, + }), + + /** + * No description + * + * @tags QueueAction + * @name V3QueueGrabBulkCreate + * @request POST:/api/v3/queue/grab/bulk + * @secure + */ + v3QueueGrabBulkCreate: ( + data: QueueBulkResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/queue/grab/bulk`, + method: "POST", + body: data, + secure: true, + type: ContentType.Json, + ...params, + }), + + /** + * No description + * + * @tags QueueDetails + * @name V3QueueDetailsList + * @request GET:/api/v3/queue/details + * @secure + */ + v3QueueDetailsList: ( + query?: { + /** @format int32 */ + seriesId?: number; + episodeIds?: number[]; + /** @default false */ + includeSeries?: boolean; + /** @default false */ + includeEpisode?: boolean; + }, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/queue/details`, + method: "GET", + query: query, + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags QueueStatus + * @name V3QueueStatusList + * @request GET:/api/v3/queue/status + * @secure + */ + v3QueueStatusList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/queue/status`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags Release + * @name V3ReleaseCreate + * @request POST:/api/v3/release + * @secure + */ + v3ReleaseCreate: (data: ReleaseResource, params: RequestParams = {}) => + this.request({ + path: `/api/v3/release`, + method: "POST", + body: data, + secure: true, + type: ContentType.Json, + ...params, + }), + + /** + * No description + * + * @tags Release + * @name V3ReleaseList + * @request GET:/api/v3/release + * @secure + */ + v3ReleaseList: ( + query?: { + /** @format int32 */ + seriesId?: number; + /** @format int32 */ + episodeId?: number; + /** @format int32 */ + seasonNumber?: number; + }, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/release`, + method: "GET", + query: query, + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags ReleaseProfile + * @name V3ReleaseprofileCreate + * @request POST:/api/v3/releaseprofile + * @secure + */ + v3ReleaseprofileCreate: ( + data: ReleaseProfileResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/releaseprofile`, + method: "POST", + body: data, + secure: true, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags ReleaseProfile + * @name V3ReleaseprofileList + * @request GET:/api/v3/releaseprofile + * @secure + */ + v3ReleaseprofileList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/releaseprofile`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags ReleaseProfile + * @name V3ReleaseprofileDelete + * @request DELETE:/api/v3/releaseprofile/{id} + * @secure + */ + v3ReleaseprofileDelete: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/releaseprofile/${id}`, + method: "DELETE", + secure: true, + ...params, + }), + + /** + * No description + * + * @tags ReleaseProfile + * @name V3ReleaseprofileUpdate + * @request PUT:/api/v3/releaseprofile/{id} + * @secure + */ + v3ReleaseprofileUpdate: ( + id: string, + data: ReleaseProfileResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/releaseprofile/${id}`, + method: "PUT", + body: data, + secure: true, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags ReleaseProfile + * @name V3ReleaseprofileDetail + * @request GET:/api/v3/releaseprofile/{id} + * @secure + */ + v3ReleaseprofileDetail: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/releaseprofile/${id}`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags ReleasePush + * @name V3ReleasePushCreate + * @request POST:/api/v3/release/push + * @secure + */ + v3ReleasePushCreate: (data: ReleaseResource, params: RequestParams = {}) => + this.request({ + path: `/api/v3/release/push`, + method: "POST", + body: data, + secure: true, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags RemotePathMapping + * @name V3RemotepathmappingCreate + * @request POST:/api/v3/remotepathmapping + * @secure + */ + v3RemotepathmappingCreate: ( + data: RemotePathMappingResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/remotepathmapping`, + method: "POST", + body: data, + secure: true, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags RemotePathMapping + * @name V3RemotepathmappingList + * @request GET:/api/v3/remotepathmapping + * @secure + */ + v3RemotepathmappingList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/remotepathmapping`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags RemotePathMapping + * @name V3RemotepathmappingDelete + * @request DELETE:/api/v3/remotepathmapping/{id} + * @secure + */ + v3RemotepathmappingDelete: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/remotepathmapping/${id}`, + method: "DELETE", + secure: true, + ...params, + }), + + /** + * No description + * + * @tags RemotePathMapping + * @name V3RemotepathmappingUpdate + * @request PUT:/api/v3/remotepathmapping/{id} + * @secure + */ + v3RemotepathmappingUpdate: ( + id: string, + data: RemotePathMappingResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/remotepathmapping/${id}`, + method: "PUT", + body: data, + secure: true, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags RemotePathMapping + * @name V3RemotepathmappingDetail + * @request GET:/api/v3/remotepathmapping/{id} + * @secure + */ + v3RemotepathmappingDetail: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/remotepathmapping/${id}`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags RenameEpisode + * @name V3RenameList + * @request GET:/api/v3/rename + * @secure + */ + v3RenameList: ( + query?: { + /** @format int32 */ + seriesId?: number; + /** @format int32 */ + seasonNumber?: number; + }, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/rename`, + method: "GET", + query: query, + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags RootFolder + * @name V3RootfolderCreate + * @request POST:/api/v3/rootfolder + * @secure + */ + v3RootfolderCreate: ( + data: RootFolderResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/rootfolder`, + method: "POST", + body: data, + secure: true, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags RootFolder + * @name V3RootfolderList + * @request GET:/api/v3/rootfolder + * @secure + */ + v3RootfolderList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/rootfolder`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags RootFolder + * @name V3RootfolderDelete + * @request DELETE:/api/v3/rootfolder/{id} + * @secure + */ + v3RootfolderDelete: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/rootfolder/${id}`, + method: "DELETE", + secure: true, + ...params, + }), + + /** + * No description + * + * @tags RootFolder + * @name V3RootfolderDetail + * @request GET:/api/v3/rootfolder/{id} + * @secure + */ + v3RootfolderDetail: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/rootfolder/${id}`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags SeasonPass + * @name V3SeasonpassCreate + * @request POST:/api/v3/seasonpass + * @secure + */ + v3SeasonpassCreate: ( + data: SeasonPassResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/seasonpass`, + method: "POST", + body: data, + secure: true, + type: ContentType.Json, + ...params, + }), + + /** + * No description + * + * @tags Series + * @name V3SeriesList + * @request GET:/api/v3/series + * @secure + */ + v3SeriesList: ( + query?: { + /** @format int32 */ + tvdbId?: number; + /** @default false */ + includeSeasonImages?: boolean; + }, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/series`, + method: "GET", + query: query, + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags Series + * @name V3SeriesCreate + * @request POST:/api/v3/series + * @secure + */ + v3SeriesCreate: (data: SeriesResource, params: RequestParams = {}) => + this.request({ + path: `/api/v3/series`, + method: "POST", + body: data, + secure: true, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags Series + * @name V3SeriesDetail + * @request GET:/api/v3/series/{id} + * @secure + */ + v3SeriesDetail: ( + id: number, + query?: { + /** @default false */ + includeSeasonImages?: boolean; + }, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/series/${id}`, + method: "GET", + query: query, + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags Series + * @name V3SeriesUpdate + * @request PUT:/api/v3/series/{id} + * @secure + */ + v3SeriesUpdate: ( + id: string, + data: SeriesResource, + query?: { + /** @default false */ + moveFiles?: boolean; + }, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/series/${id}`, + method: "PUT", + query: query, + body: data, + secure: true, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags Series + * @name V3SeriesDelete + * @request DELETE:/api/v3/series/{id} + * @secure + */ + v3SeriesDelete: ( + id: number, + query?: { + /** @default false */ + deleteFiles?: boolean; + /** @default false */ + addImportListExclusion?: boolean; + }, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/series/${id}`, + method: "DELETE", + query: query, + secure: true, + ...params, + }), + + /** + * No description + * + * @tags SeriesEditor + * @name V3SeriesEditorUpdate + * @request PUT:/api/v3/series/editor + * @secure + */ + v3SeriesEditorUpdate: ( + data: SeriesEditorResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/series/editor`, + method: "PUT", + body: data, + secure: true, + type: ContentType.Json, + ...params, + }), + + /** + * No description + * + * @tags SeriesEditor + * @name V3SeriesEditorDelete + * @request DELETE:/api/v3/series/editor + * @secure + */ + v3SeriesEditorDelete: ( + data: SeriesEditorResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/series/editor`, + method: "DELETE", + body: data, + secure: true, + type: ContentType.Json, + ...params, + }), + + /** + * No description + * + * @tags SeriesImport + * @name V3SeriesImportCreate + * @request POST:/api/v3/series/import + * @secure + */ + v3SeriesImportCreate: ( + data: SeriesResource[], + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/series/import`, + method: "POST", + body: data, + secure: true, + type: ContentType.Json, + ...params, + }), + + /** + * No description + * + * @tags SeriesLookup + * @name V3SeriesLookupList + * @request GET:/api/v3/series/lookup + * @secure + */ + v3SeriesLookupList: ( + query?: { + term?: string; + }, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/series/lookup`, + method: "GET", + query: query, + secure: true, + ...params, + }), + + /** + * No description + * + * @tags System + * @name V3SystemStatusList + * @request GET:/api/v3/system/status + * @secure + */ + v3SystemStatusList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/system/status`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags System + * @name V3SystemRoutesList + * @request GET:/api/v3/system/routes + * @secure + */ + v3SystemRoutesList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/system/routes`, + method: "GET", + secure: true, + ...params, + }), + + /** + * No description + * + * @tags System + * @name V3SystemRoutesDuplicateList + * @request GET:/api/v3/system/routes/duplicate + * @secure + */ + v3SystemRoutesDuplicateList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/system/routes/duplicate`, + method: "GET", + secure: true, + ...params, + }), + + /** + * No description + * + * @tags System + * @name V3SystemShutdownCreate + * @request POST:/api/v3/system/shutdown + * @secure + */ + v3SystemShutdownCreate: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/system/shutdown`, + method: "POST", + secure: true, + ...params, + }), + + /** + * No description + * + * @tags System + * @name V3SystemRestartCreate + * @request POST:/api/v3/system/restart + * @secure + */ + v3SystemRestartCreate: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/system/restart`, + method: "POST", + secure: true, + ...params, + }), + + /** + * No description + * + * @tags Tag + * @name V3TagList + * @request GET:/api/v3/tag + * @secure + */ + v3TagList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/tag`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags Tag + * @name V3TagCreate + * @request POST:/api/v3/tag + * @secure + */ + v3TagCreate: (data: TagResource, params: RequestParams = {}) => + this.request({ + path: `/api/v3/tag`, + method: "POST", + body: data, + secure: true, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags Tag + * @name V3TagUpdate + * @request PUT:/api/v3/tag/{id} + * @secure + */ + v3TagUpdate: (id: string, data: TagResource, params: RequestParams = {}) => + this.request({ + path: `/api/v3/tag/${id}`, + method: "PUT", + body: data, + secure: true, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags Tag + * @name V3TagDelete + * @request DELETE:/api/v3/tag/{id} + * @secure + */ + v3TagDelete: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/tag/${id}`, + method: "DELETE", + secure: true, + ...params, + }), + + /** + * No description + * + * @tags Tag + * @name V3TagDetail + * @request GET:/api/v3/tag/{id} + * @secure + */ + v3TagDetail: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/tag/${id}`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags TagDetails + * @name V3TagDetailList + * @request GET:/api/v3/tag/detail + * @secure + */ + v3TagDetailList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/tag/detail`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags TagDetails + * @name V3TagDetailDetail + * @request GET:/api/v3/tag/detail/{id} + * @secure + */ + v3TagDetailDetail: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/tag/detail/${id}`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags Task + * @name V3SystemTaskList + * @request GET:/api/v3/system/task + * @secure + */ + v3SystemTaskList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/system/task`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags Task + * @name V3SystemTaskDetail + * @request GET:/api/v3/system/task/{id} + * @secure + */ + v3SystemTaskDetail: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/system/task/${id}`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags UiConfig + * @name V3ConfigUiUpdate + * @request PUT:/api/v3/config/ui/{id} + * @secure + */ + v3ConfigUiUpdate: ( + id: string, + data: UiConfigResource, + params: RequestParams = {} + ) => + this.request({ + path: `/api/v3/config/ui/${id}`, + method: "PUT", + body: data, + secure: true, + type: ContentType.Json, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags UiConfig + * @name V3ConfigUiDetail + * @request GET:/api/v3/config/ui/{id} + * @secure + */ + v3ConfigUiDetail: (id: number, params: RequestParams = {}) => + this.request({ + path: `/api/v3/config/ui/${id}`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags UiConfig + * @name V3ConfigUiList + * @request GET:/api/v3/config/ui + * @secure + */ + v3ConfigUiList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/config/ui`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags Update + * @name V3UpdateList + * @request GET:/api/v3/update + * @secure + */ + v3UpdateList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/update`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags UpdateLogFile + * @name V3LogFileUpdateList + * @request GET:/api/v3/log/file/update + * @secure + */ + v3LogFileUpdateList: (params: RequestParams = {}) => + this.request({ + path: `/api/v3/log/file/update`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + + /** + * No description + * + * @tags UpdateLogFile + * @name V3LogFileUpdateDetail + * @request GET:/api/v3/log/file/update/{filename} + * @secure + */ + v3LogFileUpdateDetail: (filename: string, params: RequestParams = {}) => + this.request({ + path: `/api/v3/log/file/update/${filename}`, + method: "GET", + secure: true, + ...params, + }), + }; + login = { + /** + * No description + * + * @tags Authentication + * @name LoginCreate + * @request POST:/login + * @secure + */ + loginCreate: ( + data: { + username?: string; + password?: string; + rememberMe?: string; + }, + query?: { + returnUrl?: string; + }, + params: RequestParams = {} + ) => + this.request({ + path: `/login`, + method: "POST", + query: query, + body: data, + secure: true, + type: ContentType.FormData, + ...params, + }), + + /** + * No description + * + * @tags StaticResource + * @name LoginList + * @request GET:/login + * @secure + */ + loginList: (params: RequestParams = {}) => + this.request({ + path: `/login`, + method: "GET", + secure: true, + ...params, + }), + }; + logout = { + /** + * No description + * + * @tags Authentication + * @name LogoutList + * @request GET:/logout + * @secure + */ + logoutList: (params: RequestParams = {}) => + this.request({ + path: `/logout`, + method: "GET", + secure: true, + ...params, + }), + }; + feed = { + /** + * No description + * + * @tags CalendarFeed + * @name V3CalendarSonarrIcsList + * @request GET:/feed/v3/calendar/sonarr.ics + * @secure + */ + v3CalendarSonarrIcsList: ( + query?: { + /** + * @format int32 + * @default 7 + */ + pastDays?: number; + /** + * @format int32 + * @default 28 + */ + futureDays?: number; + /** @default "" */ + tags?: string; + /** @default false */ + unmonitored?: boolean; + /** @default false */ + premieresOnly?: boolean; + /** @default false */ + asAllDay?: boolean; + }, + params: RequestParams = {} + ) => + this.request({ + path: `/feed/v3/calendar/sonarr.ics`, + method: "GET", + query: query, + secure: true, + ...params, + }), + }; + ping = { + /** + * No description + * + * @tags Ping + * @name PingList + * @request GET:/ping + * @secure + */ + pingList: (params: RequestParams = {}) => + this.request({ + path: `/ping`, + method: "GET", + secure: true, + format: "json", + ...params, + }), + }; + content = { + /** + * No description + * + * @tags StaticResource + * @name ContentDetail + * @request GET:/content/{path} + * @secure + */ + contentDetail: (path: string, params: RequestParams = {}) => + this.request({ + path: `/content/${path}`, + method: "GET", + secure: true, + ...params, + }), + }; + path = { + /** + * No description + * + * @tags StaticResource + * @name GetPath + * @request GET:/{path} + * @secure + */ + getPath: (path: string, params: RequestParams = {}) => + this.request({ + path: `/${path}`, + method: "GET", + secure: true, + ...params, + }), + }; +}