diff --git a/.astro/content-assets.mjs b/.astro/content-assets.mjs new file mode 100644 index 000000000..2b8b8234b --- /dev/null +++ b/.astro/content-assets.mjs @@ -0,0 +1 @@ +export default new Map(); \ No newline at end of file diff --git a/.astro/content-modules.mjs b/.astro/content-modules.mjs new file mode 100644 index 000000000..2b8b8234b --- /dev/null +++ b/.astro/content-modules.mjs @@ -0,0 +1 @@ +export default new Map(); \ No newline at end of file diff --git a/.astro/content.d.ts b/.astro/content.d.ts new file mode 100644 index 000000000..9ce54e3b9 --- /dev/null +++ b/.astro/content.d.ts @@ -0,0 +1,155 @@ +declare module 'astro:content' { + export interface RenderResult { + Content: import('astro/runtime/server/index.js').AstroComponentFactory; + headings: import('astro').MarkdownHeading[]; + remarkPluginFrontmatter: Record; + } + interface Render { + '.md': Promise; + } + + export interface RenderedContent { + html: string; + metadata?: { + imagePaths: Array; + [key: string]: unknown; + }; + } +} + +declare module 'astro:content' { + type Flatten = T extends { [K: string]: infer U } ? U : never; + + export type CollectionKey = keyof AnyEntryMap; + export type CollectionEntry = Flatten; + + export type ContentCollectionKey = keyof ContentEntryMap; + export type DataCollectionKey = keyof DataEntryMap; + + type AllValuesOf = T extends any ? T[keyof T] : never; + type ValidContentEntrySlug = AllValuesOf< + ContentEntryMap[C] + >['slug']; + + /** @deprecated Use `getEntry` instead. */ + export function getEntryBySlug< + C extends keyof ContentEntryMap, + E extends ValidContentEntrySlug | (string & {}), + >( + collection: C, + // Note that this has to accept a regular string too, for SSR + entrySlug: E, + ): E extends ValidContentEntrySlug + ? Promise> + : Promise | undefined>; + + /** @deprecated Use `getEntry` instead. */ + export function getDataEntryById( + collection: C, + entryId: E, + ): Promise>; + + export function getCollection>( + collection: C, + filter?: (entry: CollectionEntry) => entry is E, + ): Promise; + export function getCollection( + collection: C, + filter?: (entry: CollectionEntry) => unknown, + ): Promise[]>; + + export function getEntry< + C extends keyof ContentEntryMap, + E extends ValidContentEntrySlug | (string & {}), + >(entry: { + collection: C; + slug: E; + }): E extends ValidContentEntrySlug + ? Promise> + : Promise | undefined>; + export function getEntry< + C extends keyof DataEntryMap, + E extends keyof DataEntryMap[C] | (string & {}), + >(entry: { + collection: C; + id: E; + }): E extends keyof DataEntryMap[C] + ? Promise + : Promise | undefined>; + export function getEntry< + C extends keyof ContentEntryMap, + E extends ValidContentEntrySlug | (string & {}), + >( + collection: C, + slug: E, + ): E extends ValidContentEntrySlug + ? Promise> + : Promise | undefined>; + export function getEntry< + C extends keyof DataEntryMap, + E extends keyof DataEntryMap[C] | (string & {}), + >( + collection: C, + id: E, + ): E extends keyof DataEntryMap[C] + ? string extends keyof DataEntryMap[C] + ? Promise | undefined + : Promise + : Promise | undefined>; + + /** Resolve an array of entry references from the same collection */ + export function getEntries( + entries: { + collection: C; + slug: ValidContentEntrySlug; + }[], + ): Promise[]>; + export function getEntries( + entries: { + collection: C; + id: keyof DataEntryMap[C]; + }[], + ): Promise[]>; + + export function render( + entry: AnyEntryMap[C][string], + ): Promise; + + export function reference( + collection: C, + ): import('astro/zod').ZodEffects< + import('astro/zod').ZodString, + C extends keyof ContentEntryMap + ? { + collection: C; + slug: ValidContentEntrySlug; + } + : { + collection: C; + id: keyof DataEntryMap[C]; + } + >; + // Allow generic `string` to avoid excessive type errors in the config + // if `dev` is not running to update as you edit. + // Invalid collection names will be caught at build time. + export function reference( + collection: C, + ): import('astro/zod').ZodEffects; + + type ReturnTypeOrOriginal = T extends (...args: any[]) => infer R ? R : T; + type InferEntrySchema = import('astro/zod').infer< + ReturnTypeOrOriginal['schema']> + >; + + type ContentEntryMap = { + + }; + + type DataEntryMap = { + + }; + + type AnyEntryMap = ContentEntryMap & DataEntryMap; + + export type ContentConfig = typeof import("../docs/src/content.config.mjs"); +} diff --git a/.astro/data-store.json b/.astro/data-store.json new file mode 100644 index 000000000..c75b8d3ba --- /dev/null +++ b/.astro/data-store.json @@ -0,0 +1 @@ +[["Map",1,2],"meta::meta",["Map",3,4],"astro-version","5.0.3"] \ No newline at end of file diff --git a/.astro/settings.json b/.astro/settings.json new file mode 100644 index 000000000..658e9c9b7 --- /dev/null +++ b/.astro/settings.json @@ -0,0 +1,5 @@ +{ + "_variables": { + "lastUpdateCheck": 1733268214099 + } +} \ No newline at end of file diff --git a/.astro/types.d.ts b/.astro/types.d.ts new file mode 100644 index 000000000..f964fe0cf --- /dev/null +++ b/.astro/types.d.ts @@ -0,0 +1 @@ +/// diff --git a/.babelrc.json b/.babelrc.json deleted file mode 100644 index 48eb3966c..000000000 --- a/.babelrc.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "presets": [ - [ - "@babel/preset-env", - { - "targets": { - "esmodules": true, - "android": "80", - "chrome": "85", - "edge": "87", - "firefox": "84", - "ios": "13", - "node": "14", - "opera": "72", - "safari": "14", - "samsung": "14" - }, - "bugfixes": true - } - ] - ], - "plugins": [ - [ - "template-html-minifier", { - "modules": { - "lit-html": ["html"], - "lit-element": [ - "html", - {"name": "css", "encapsulation": "style"} - ] - }, - "htmlMinifier": { - "collapseWhitespace": true, - "conservativeCollapse": true, - "removeComments": true, - "caseSensitive": true, - "minifyCSS": true - } - } - ] - ] -} \ No newline at end of file diff --git a/.eslintrc b/.eslintrc deleted file mode 100644 index 067c54db1..000000000 --- a/.eslintrc +++ /dev/null @@ -1,53 +0,0 @@ -{ - "parser": "@babel/eslint-parser", - "parserOptions": { - "sourceType": "module", - "allowImportExportEverywhere": false, - "ecmaVersion": 2020, - "babelOptions": { - "configFile": "./.babelrc.json" - } - }, - "extends": "airbnb-base", - "settings": { - "import/resolver":{ - "webpack":{ - "config":"webpack.config.js" - } - } - }, - "env": { - "browser": true, - "node": true - }, - "globals": { - "globalThis": false // means it is not writeable - }, - "rules": { - "max-len": [1, 300, 2, {"ignoreComments": true}], - "no-debugger": 0, - "no-plusplus": 0, - "no-param-reassign": 0, - "no-nested-ternary": 0, - "no-continue": 0, - "no-restricted-syntax" :0, - "guard-for-in": 0, - "consistent-return": 0, - "array-callback-return": 0, - "class-methods-use-this": 0, - "prefer-destructuring": [ - "error", {"object": true, "array": false} - ], - "no-unused-vars": ["error", { - "vars": "all", - "args": "after-used", - "caughtErrors": "all", - "ignoreRestSiblings": false - }], - "object-curly-newline": ["error", { - "ObjectPattern": { "multiline": true }, - "ImportDeclaration": "never", - "ExportDeclaration": { "multiline": true, "minProperties": 6 } - }] - } -} \ No newline at end of file diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 000000000..5bfd821d8 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,8 @@ +{ + "tabWidth": 2, + "useTabs": false, + "semi": true, + "singleQuote": true, + "trailingComma": "es5", + "printWidth": 140 +} \ No newline at end of file diff --git a/astro.config.mjs b/astro.config.mjs new file mode 100644 index 000000000..e8bc4d1a5 --- /dev/null +++ b/astro.config.mjs @@ -0,0 +1,122 @@ +import { defineConfig } from 'astro/config'; +import { fileURLToPath } from 'url'; +import { dirname, resolve } from 'path'; +import fs from 'fs-extra'; +import bannerPlugin from 'vite-plugin-banner'; +import minifyHTML from 'rollup-plugin-minify-html-literals'; +import { build } from 'vite'; +import pkg from './package.json' +import { transform } from 'esbuild'; +import { watch } from 'fs'; +import { globSync } from 'glob'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + +const sharedPlugins = [ + minifyHTML.default({ + include: ["./src/*", "./src/styles/*", "./src/templates/*", "./src/components/*"], + exclude: ["./src/utils/*", "src/rapidoc.js"] + }), + bannerPlugin(`/*! + * @license + * ${pkg.name} v${pkg.version} + * (c) ${new Date().getFullYear()} ${pkg.author} + * SPDX-License-Identifier: ${pkg.license} + */`), + { + // This plugin is added coz in vite library mode The generated bundle is not minified + name: 'minifyEs', + renderChunk: { + order: 'post', + async handler(code) { + return await transform(code, { + minify: true, + drop: ['console','debugger'], + format: 'esm', + }); + }, + }, + } +]; + +export default defineConfig({ + // Astro Related config + srcDir: './docs/src', + outDir: './docs/generated-docs', + publicDir: './docs/public', + site: 'https://rapidocweb.com', + build: { + format: 'file' + }, + + // Vite related config + vite: { + resolve: { + alias: { + '~': resolve(__dirname, './src') + }, + }, + plugins: [ + { + name: 'build-rapidoc', + apply: 'build', // Only run during build, not during dev + async buildStart() { + await build({ + configFile: false, + build: { + lib: { + entry: resolve(__dirname, 'src/index.js'), + formats: ['es'], + fileName: 'rapidoc-min', + }, + outDir: resolve(__dirname, 'dist'), + emptyOutDir: true, + }, + resolve: { + alias: { + '~': resolve(__dirname, './src'), + '~/rapidoc': resolve(__dirname, './src/rapidoc.js'), + } + }, + plugins: sharedPlugins + }); + + // After building WebComponent copy it to docs/generated-docs/rapidoc + await fs.ensureDir(resolve(__dirname, 'docs/generated-docs/rapidoc')); + await fs.copy( + resolve(__dirname, 'dist/rapidoc-min.js'), + resolve(__dirname, 'docs/generated-docs/rapidoc/rapidoc-min.js') + ); + } + }, + { + name: 'serve-source-in-dev', + apply: 'serve', // Only run during dev not build + configureServer(server) { + server.middlewares.use((req, res, next) => { + if (req.url === '/rapidoc/rapidoc-min.js') { + // Redirect to the source file in development + req.url = '/src/index.js'; + } + next(); + }); + + // Astro dont watch for yaml changes out of the box. So This code Watch for yaml changes and relods in dev mode + const yamlFiles = globSync(resolve(__dirname, './docs/src/data/**/*.yaml')); + yamlFiles.forEach(file => { + watch(file, (eventType) => { + if (eventType === 'change') { + server.moduleGraph.invalidateAll(); + server.ws.send({ + type: 'full-reload', + path: '*' + }); + } + }); + }); + } + } + ], + }, +}); \ No newline at end of file diff --git a/dist/index.html b/dist/index.html deleted file mode 100644 index 927c7ff4a..000000000 --- a/dist/index.html +++ /dev/null @@ -1,6 +0,0 @@ -RapiDoc \ No newline at end of file diff --git a/dist/index.html.gz b/dist/index.html.gz deleted file mode 100644 index 3518b3e87..000000000 Binary files a/dist/index.html.gz and /dev/null differ diff --git a/dist/rapidoc-min.js b/dist/rapidoc-min.js index 2994ec317..e7a0aa463 100644 --- a/dist/rapidoc-min.js +++ b/dist/rapidoc-min.js @@ -1,3299 +1,262 @@ -/*! RapiDoc 9.3.8 | Author - Mrinmoy Majumdar | License information can be found in rapidoc-min.js.LICENSE.txt */ -(()=>{var e,t,r={557:(e,t,r)=>{"use strict";const s=globalThis,n=s.ShadowRoot&&(void 0===s.ShadyCSS||s.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,i=Symbol(),o=new WeakMap;class a{constructor(e,t,r){if(this._$cssResult$=!0,r!==i)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=t}get styleSheet(){let e=this.o;const t=this.t;if(n&&void 0===e){const r=void 0!==t&&1===t.length;r&&(e=o.get(t)),void 0===e&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),r&&o.set(t,e))}return e}toString(){return this.cssText}}const l=e=>new a("string"==typeof e?e:e+"",void 0,i),c=(e,...t)=>{const r=1===e.length?e[0]:t.reduce(((t,r,s)=>t+(e=>{if(!0===e._$cssResult$)return e.cssText;if("number"==typeof e)return e;throw Error("Value passed to 'css' function must be a 'css' function result: "+e+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(r)+e[s+1]),e[0]);return new a(r,e,i)},p=(e,t)=>{if(n)e.adoptedStyleSheets=t.map((e=>e instanceof CSSStyleSheet?e:e.styleSheet));else for(const r of t){const t=document.createElement("style"),n=s.litNonce;void 0!==n&&t.setAttribute("nonce",n),t.textContent=r.cssText,e.appendChild(t)}},u=n?e=>e:e=>e instanceof CSSStyleSheet?(e=>{let t="";for(const r of e.cssRules)t+=r.cssText;return l(t)})(e):e,{is:d,defineProperty:h,getOwnPropertyDescriptor:m,getOwnPropertyNames:f,getOwnPropertySymbols:g,getPrototypeOf:y}=Object,v=globalThis,b=v.trustedTypes,x=b?b.emptyScript:"",w=v.reactiveElementPolyfillSupport,$=(e,t)=>e,S={toAttribute(e,t){switch(t){case Boolean:e=e?x:null;break;case Object:case Array:e=null==e?e:JSON.stringify(e)}return e},fromAttribute(e,t){let r=e;switch(t){case Boolean:r=null!==e;break;case Number:r=null===e?null:Number(e);break;case Object:case Array:try{r=JSON.parse(e)}catch(e){r=null}}return r}},E=(e,t)=>!d(e,t),k={attribute:!0,type:String,converter:S,reflect:!1,hasChanged:E};Symbol.metadata??=Symbol("metadata"),v.litPropertyMetadata??=new WeakMap;class A extends HTMLElement{static addInitializer(e){this._$Ei(),(this.l??=[]).push(e)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(e,t=k){if(t.state&&(t.attribute=!1),this._$Ei(),this.elementProperties.set(e,t),!t.noAccessor){const r=Symbol(),s=this.getPropertyDescriptor(e,r,t);void 0!==s&&h(this.prototype,e,s)}}static getPropertyDescriptor(e,t,r){const{get:s,set:n}=m(this.prototype,e)??{get(){return this[t]},set(e){this[t]=e}};return{get(){return s?.call(this)},set(t){const i=s?.call(this);n.call(this,t),this.requestUpdate(e,i,r)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??k}static _$Ei(){if(this.hasOwnProperty($("elementProperties")))return;const e=y(this);e.finalize(),void 0!==e.l&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty($("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty($("properties"))){const e=this.properties,t=[...f(e),...g(e)];for(const r of t)this.createProperty(r,e[r])}const e=this[Symbol.metadata];if(null!==e){const t=litPropertyMetadata.get(e);if(void 0!==t)for(const[e,r]of t)this.elementProperties.set(e,r)}this._$Eh=new Map;for(const[e,t]of this.elementProperties){const r=this._$Eu(e,t);void 0!==r&&this._$Eh.set(r,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(e){const t=[];if(Array.isArray(e)){const r=new Set(e.flat(1/0).reverse());for(const e of r)t.unshift(u(e))}else void 0!==e&&t.push(u(e));return t}static _$Eu(e,t){const r=t.attribute;return!1===r?void 0:"string"==typeof r?r:"string"==typeof e?e.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise((e=>this.enableUpdating=e)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((e=>e(this)))}addController(e){(this._$EO??=new Set).add(e),void 0!==this.renderRoot&&this.isConnected&&e.hostConnected?.()}removeController(e){this._$EO?.delete(e)}_$E_(){const e=new Map,t=this.constructor.elementProperties;for(const r of t.keys())this.hasOwnProperty(r)&&(e.set(r,this[r]),delete this[r]);e.size>0&&(this._$Ep=e)}createRenderRoot(){const e=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return p(e,this.constructor.elementStyles),e}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((e=>e.hostConnected?.()))}enableUpdating(e){}disconnectedCallback(){this._$EO?.forEach((e=>e.hostDisconnected?.()))}attributeChangedCallback(e,t,r){this._$AK(e,r)}_$EC(e,t){const r=this.constructor.elementProperties.get(e),s=this.constructor._$Eu(e,r);if(void 0!==s&&!0===r.reflect){const n=(void 0!==r.converter?.toAttribute?r.converter:S).toAttribute(t,r.type);this._$Em=e,null==n?this.removeAttribute(s):this.setAttribute(s,n),this._$Em=null}}_$AK(e,t){const r=this.constructor,s=r._$Eh.get(e);if(void 0!==s&&this._$Em!==s){const e=r.getPropertyOptions(s),n="function"==typeof e.converter?{fromAttribute:e.converter}:void 0!==e.converter?.fromAttribute?e.converter:S;this._$Em=s,this[s]=n.fromAttribute(t,e.type),this._$Em=null}}requestUpdate(e,t,r){if(void 0!==e){if(r??=this.constructor.getPropertyOptions(e),!(r.hasChanged??E)(this[e],t))return;this.P(e,t,r)}!1===this.isUpdatePending&&(this._$ES=this._$ET())}P(e,t,r){this._$AL.has(e)||this._$AL.set(e,t),!0===r.reflect&&this._$Em!==e&&(this._$Ej??=new Set).add(e)}async _$ET(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}const e=this.scheduleUpdate();return null!=e&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[e,t]of this._$Ep)this[e]=t;this._$Ep=void 0}const e=this.constructor.elementProperties;if(e.size>0)for(const[t,r]of e)!0!==r.wrapped||this._$AL.has(t)||void 0===this[t]||this.P(t,this[t],r)}let e=!1;const t=this._$AL;try{e=this.shouldUpdate(t),e?(this.willUpdate(t),this._$EO?.forEach((e=>e.hostUpdate?.())),this.update(t)):this._$EU()}catch(t){throw e=!1,this._$EU(),t}e&&this._$AE(t)}willUpdate(e){}_$AE(e){this._$EO?.forEach((e=>e.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(e){return!0}update(e){this._$Ej&&=this._$Ej.forEach((e=>this._$EC(e,this[e]))),this._$EU()}updated(e){}firstUpdated(e){}}A.elementStyles=[],A.shadowRootOptions={mode:"open"},A[$("elementProperties")]=new Map,A[$("finalized")]=new Map,w?.({ReactiveElement:A}),(v.reactiveElementVersions??=[]).push("2.0.4");const O=globalThis,j=O.trustedTypes,T=j?j.createPolicy("lit-html",{createHTML:e=>e}):void 0,P="$lit$",C=`lit$${Math.random().toFixed(9).slice(2)}$`,I="?"+C,_=`<${I}>`,R=document,F=()=>R.createComment(""),M=e=>null===e||"object"!=typeof e&&"function"!=typeof e,L=Array.isArray,D=e=>L(e)||"function"==typeof e?.[Symbol.iterator],B="[ \t\n\f\r]",q=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,N=/-->/g,U=/>/g,z=RegExp(`>|${B}(?:([^\\s"'>=/]+)(${B}*=${B}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,"g"),H=/'/g,V=/"/g,W=/^(?:script|style|textarea|title)$/i,G=e=>(t,...r)=>({_$litType$:e,strings:t,values:r}),J=G(1),K=(G(2),G(3),Symbol.for("lit-noChange")),Y=Symbol.for("lit-nothing"),X=new WeakMap,Z=R.createTreeWalker(R,129);function Q(e,t){if(!L(e)||!e.hasOwnProperty("raw"))throw Error("invalid template strings array");return void 0!==T?T.createHTML(t):t}const ee=(e,t)=>{const r=e.length-1,s=[];let n,i=2===t?"":3===t?"":"",o=q;for(let t=0;t"===l[0]?(o=n??q,c=-1):void 0===l[1]?c=-2:(c=o.lastIndex-l[2].length,a=l[1],o=void 0===l[3]?z:'"'===l[3]?V:H):o===V||o===H?o=z:o===N||o===U?o=q:(o=z,n=void 0);const u=o===z&&e[t+1].startsWith("/>")?" ":"";i+=o===q?r+_:c>=0?(s.push(a),r.slice(0,c)+P+r.slice(c)+C+u):r+C+(-2===c?t:u)}return[Q(e,i+(e[r]||"")+(2===t?"":3===t?"":"")),s]};class te{constructor({strings:e,_$litType$:t},r){let s;this.parts=[];let n=0,i=0;const o=e.length-1,a=this.parts,[l,c]=ee(e,t);if(this.el=te.createElement(l,r),Z.currentNode=this.el.content,2===t||3===t){const e=this.el.content.firstChild;e.replaceWith(...e.childNodes)}for(;null!==(s=Z.nextNode())&&a.length0){s.textContent=j?j.emptyScript:"";for(let r=0;r2||""!==r[0]||""!==r[1]?(this._$AH=Array(r.length-1).fill(new String),this.strings=r):this._$AH=Y}_$AI(e,t=this,r,s){const n=this.strings;let i=!1;if(void 0===n)e=re(this,e,t,0),i=!M(e)||e!==this._$AH&&e!==K,i&&(this._$AH=e);else{const s=e;let o,a;for(e=n[0],o=0;o{const s=r?.renderBefore??t;let n=s._$litPart$;if(void 0===n){const e=r?.renderBefore??null;s._$litPart$=n=new ne(t.insertBefore(F(),e),e,void 0,r??{})}return n._$AI(e),n})(t,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this.o?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this.o?.setConnected(!1)}render(){return K}}de._$litElement$=!0,de.finalized=!0,globalThis.litElementHydrateSupport?.({LitElement:de});const he=globalThis.litElementPolyfillSupport;he?.({LitElement:de});function me(){return{async:!1,baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,hooks:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1}}(globalThis.litElementVersions??=[]).push("4.1.0");let fe={async:!1,baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,hooks:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1};const ge=/[&<>"']/,ye=new RegExp(ge.source,"g"),ve=/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,be=new RegExp(ve.source,"g"),xe={"&":"&","<":"<",">":">",'"':""","'":"'"},we=e=>xe[e];function $e(e,t){if(t){if(ge.test(e))return e.replace(ye,we)}else if(ve.test(e))return e.replace(be,we);return e}const Se=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi;function Ee(e){return e.replace(Se,((e,t)=>"colon"===(t=t.toLowerCase())?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""))}const ke=/(^|[^\[])\^/g;function Ae(e,t){e="string"==typeof e?e:e.source,t=t||"";const r={replace:(t,s)=>(s=(s=s.source||s).replace(ke,"$1"),e=e.replace(t,s),r),getRegex:()=>new RegExp(e,t)};return r}const Oe=/[^\w:]/g,je=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;function Te(e,t,r){if(e){let e;try{e=decodeURIComponent(Ee(r)).replace(Oe,"").toLowerCase()}catch(e){return null}if(0===e.indexOf("javascript:")||0===e.indexOf("vbscript:")||0===e.indexOf("data:"))return null}t&&!je.test(r)&&(r=function(e,t){Pe[" "+e]||(Ce.test(e)?Pe[" "+e]=e+"/":Pe[" "+e]=Me(e,"/",!0));e=Pe[" "+e];const r=-1===e.indexOf(":");return"//"===t.substring(0,2)?r?t:e.replace(Ie,"$1")+t:"/"===t.charAt(0)?r?t:e.replace(_e,"$1")+t:e+t}(t,r));try{r=encodeURI(r).replace(/%25/g,"%")}catch(e){return null}return r}const Pe={},Ce=/^[^:]+:\/*[^/]*$/,Ie=/^([^:]+:)[\s\S]*$/,_e=/^([^:]+:\/*[^/]*)[\s\S]*$/;const Re={exec:function(){}};function Fe(e,t){const r=e.replace(/\|/g,((e,t,r)=>{let s=!1,n=t;for(;--n>=0&&"\\"===r[n];)s=!s;return s?"|":" |"})).split(/ \|/);let s=0;if(r[0].trim()||r.shift(),r.length>0&&!r[r.length-1].trim()&&r.pop(),r.length>t)r.splice(t);else for(;r.length1;)1&t&&(r+=e),t>>=1,e+=e;return r+e}function De(e,t,r,s){const n=t.href,i=t.title?$e(t.title):null,o=e[1].replace(/\\([\[\]])/g,"$1");if("!"!==e[0].charAt(0)){s.state.inLink=!0;const e={type:"link",raw:r,href:n,title:i,text:o,tokens:s.inlineTokens(o)};return s.state.inLink=!1,e}return{type:"image",raw:r,href:n,title:i,text:$e(o)}}class Be{constructor(e){this.options=e||fe}space(e){const t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:"space",raw:t[0]}}code(e){const t=this.rules.block.code.exec(e);if(t){const e=t[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?e:Me(e,"\n")}}}fences(e){const t=this.rules.block.fences.exec(e);if(t){const e=t[0],r=function(e,t){const r=e.match(/^(\s+)(?:```)/);if(null===r)return t;const s=r[1];return t.split("\n").map((e=>{const t=e.match(/^\s+/);if(null===t)return e;const[r]=t;return r.length>=s.length?e.slice(s.length):e})).join("\n")}(e,t[3]||"");return{type:"code",raw:e,lang:t[2]?t[2].trim().replace(this.rules.inline._escapes,"$1"):t[2],text:r}}}heading(e){const t=this.rules.block.heading.exec(e);if(t){let e=t[2].trim();if(/#$/.test(e)){const t=Me(e,"#");this.options.pedantic?e=t.trim():t&&!/ $/.test(t)||(e=t.trim())}return{type:"heading",raw:t[0],depth:t[1].length,text:e,tokens:this.lexer.inline(e)}}}hr(e){const t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:t[0]}}blockquote(e){const t=this.rules.block.blockquote.exec(e);if(t){const e=t[0].replace(/^ *>[ \t]?/gm,""),r=this.lexer.state.top;this.lexer.state.top=!0;const s=this.lexer.blockTokens(e);return this.lexer.state.top=r,{type:"blockquote",raw:t[0],tokens:s,text:e}}}list(e){let t=this.rules.block.list.exec(e);if(t){let r,s,n,i,o,a,l,c,p,u,d,h,m=t[1].trim();const f=m.length>1,g={type:"list",raw:"",ordered:f,start:f?+m.slice(0,-1):"",loose:!1,items:[]};m=f?`\\d{1,9}\\${m.slice(-1)}`:`\\${m}`,this.options.pedantic&&(m=f?m:"[*+-]");const y=new RegExp(`^( {0,3}${m})((?:[\t ][^\\n]*)?(?:\\n|$))`);for(;e&&(h=!1,t=y.exec(e))&&!this.rules.block.hr.test(e);){if(r=t[0],e=e.substring(r.length),c=t[2].split("\n",1)[0].replace(/^\t+/,(e=>" ".repeat(3*e.length))),p=e.split("\n",1)[0],this.options.pedantic?(i=2,d=c.trimLeft()):(i=t[2].search(/[^ ]/),i=i>4?1:i,d=c.slice(i),i+=t[1].length),a=!1,!c&&/^ *$/.test(p)&&(r+=p+"\n",e=e.substring(p.length+1),h=!0),!h){const t=new RegExp(`^ {0,${Math.min(3,i-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))`),s=new RegExp(`^ {0,${Math.min(3,i-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),n=new RegExp(`^ {0,${Math.min(3,i-1)}}(?:\`\`\`|~~~)`),o=new RegExp(`^ {0,${Math.min(3,i-1)}}#`);for(;e&&(u=e.split("\n",1)[0],p=u,this.options.pedantic&&(p=p.replace(/^ {1,4}(?=( {4})*[^ ])/g," ")),!n.test(p))&&!o.test(p)&&!t.test(p)&&!s.test(e);){if(p.search(/[^ ]/)>=i||!p.trim())d+="\n"+p.slice(i);else{if(a)break;if(c.search(/[^ ]/)>=4)break;if(n.test(c))break;if(o.test(c))break;if(s.test(c))break;d+="\n"+p}a||p.trim()||(a=!0),r+=u+"\n",e=e.substring(u.length+1),c=p.slice(i)}}g.loose||(l?g.loose=!0:/\n *\n *$/.test(r)&&(l=!0)),this.options.gfm&&(s=/^\[[ xX]\] /.exec(d),s&&(n="[ ] "!==s[0],d=d.replace(/^\[[ xX]\] +/,""))),g.items.push({type:"list_item",raw:r,task:!!s,checked:n,loose:!1,text:d}),g.raw+=r}g.items[g.items.length-1].raw=r.trimRight(),g.items[g.items.length-1].text=d.trimRight(),g.raw=g.raw.trimRight();const v=g.items.length;for(o=0;o"space"===e.type)),t=e.length>0&&e.some((e=>/\n.*\n/.test(e.raw)));g.loose=t}if(g.loose)for(o=0;o$/,"$1").replace(this.rules.inline._escapes,"$1"):"",s=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline._escapes,"$1"):t[3];return{type:"def",tag:e,raw:t[0],href:r,title:s}}}table(e){const t=this.rules.block.table.exec(e);if(t){const e={type:"table",header:Fe(t[1]).map((e=>({text:e}))),align:t[2].replace(/^ *|\| *$/g,"").split(/ *\| */),rows:t[3]&&t[3].trim()?t[3].replace(/\n[ \t]*$/,"").split("\n"):[]};if(e.header.length===e.align.length){e.raw=t[0];let r,s,n,i,o=e.align.length;for(r=0;r({text:e})));for(o=e.header.length,s=0;s/i.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:this.options.sanitize?"text":"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(t[0]):$e(t[0]):t[0]}}link(e){const t=this.rules.inline.link.exec(e);if(t){const e=t[2].trim();if(!this.options.pedantic&&/^$/.test(e))return;const t=Me(e.slice(0,-1),"\\");if((e.length-t.length)%2==0)return}else{const e=function(e,t){if(-1===e.indexOf(t[1]))return-1;const r=e.length;let s=0,n=0;for(;n-1){const r=(0===t[0].indexOf("!")?5:4)+t[1].length+e;t[2]=t[2].substring(0,e),t[0]=t[0].substring(0,r).trim(),t[3]=""}}let r=t[2],s="";if(this.options.pedantic){const e=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(r);e&&(r=e[1],s=e[3])}else s=t[3]?t[3].slice(1,-1):"";return r=r.trim(),/^$/.test(e)?r.slice(1):r.slice(1,-1)),De(t,{href:r?r.replace(this.rules.inline._escapes,"$1"):r,title:s?s.replace(this.rules.inline._escapes,"$1"):s},t[0],this.lexer)}}reflink(e,t){let r;if((r=this.rules.inline.reflink.exec(e))||(r=this.rules.inline.nolink.exec(e))){let e=(r[2]||r[1]).replace(/\s+/g," ");if(e=t[e.toLowerCase()],!e){const e=r[0].charAt(0);return{type:"text",raw:e,text:e}}return De(r,e,r[0],this.lexer)}}emStrong(e,t,r=""){let s=this.rules.inline.emStrong.lDelim.exec(e);if(!s)return;if(s[3]&&r.match(/[\p{L}\p{N}]/u))return;const n=s[1]||s[2]||"";if(!n||n&&(""===r||this.rules.inline.punctuation.exec(r))){const r=s[0].length-1;let n,i,o=r,a=0;const l="*"===s[0][0]?this.rules.inline.emStrong.rDelimAst:this.rules.inline.emStrong.rDelimUnd;for(l.lastIndex=0,t=t.slice(-1*e.length+r);null!=(s=l.exec(t));){if(n=s[1]||s[2]||s[3]||s[4]||s[5]||s[6],!n)continue;if(i=n.length,s[3]||s[4]){o+=i;continue}if((s[5]||s[6])&&r%3&&!((r+i)%3)){a+=i;continue}if(o-=i,o>0)continue;i=Math.min(i,i+o+a);const t=e.slice(0,r+s.index+(s[0].length-n.length)+i);if(Math.min(r,i)%2){const e=t.slice(1,-1);return{type:"em",raw:t,text:e,tokens:this.lexer.inlineTokens(e)}}const l=t.slice(2,-2);return{type:"strong",raw:t,text:l,tokens:this.lexer.inlineTokens(l)}}}}codespan(e){const t=this.rules.inline.code.exec(e);if(t){let e=t[2].replace(/\n/g," ");const r=/[^ ]/.test(e),s=/^ /.test(e)&&/ $/.test(e);return r&&s&&(e=e.substring(1,e.length-1)),e=$e(e,!0),{type:"codespan",raw:t[0],text:e}}}br(e){const t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}}del(e){const t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2])}}autolink(e,t){const r=this.rules.inline.autolink.exec(e);if(r){let e,s;return"@"===r[2]?(e=$e(this.options.mangle?t(r[1]):r[1]),s="mailto:"+e):(e=$e(r[1]),s=e),{type:"link",raw:r[0],text:e,href:s,tokens:[{type:"text",raw:e,text:e}]}}}url(e,t){let r;if(r=this.rules.inline.url.exec(e)){let e,s;if("@"===r[2])e=$e(this.options.mangle?t(r[0]):r[0]),s="mailto:"+e;else{let t;do{t=r[0],r[0]=this.rules.inline._backpedal.exec(r[0])[0]}while(t!==r[0]);e=$e(r[0]),s="www."===r[1]?"http://"+r[0]:r[0]}return{type:"link",raw:r[0],text:e,href:s,tokens:[{type:"text",raw:e,text:e}]}}}inlineText(e,t){const r=this.rules.inline.text.exec(e);if(r){let e;return e=this.lexer.state.inRawBlock?this.options.sanitize?this.options.sanitizer?this.options.sanitizer(r[0]):$e(r[0]):r[0]:$e(this.options.smartypants?t(r[0]):r[0]),{type:"text",raw:r[0],text:e}}}}const qe={newline:/^(?: *(?:\n|$))+/,code:/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,hr:/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/,html:"^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))",def:/^ {0,3}\[(label)\]: *(?:\n *)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/,table:Re,lheading:/^((?:.|\n(?!\n))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,text:/^[^\n]+/,_label:/(?!\s*\])(?:\\.|[^\[\]\\])+/,_title:/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/};qe.def=Ae(qe.def).replace("label",qe._label).replace("title",qe._title).getRegex(),qe.bullet=/(?:[*+-]|\d{1,9}[.)])/,qe.listItemStart=Ae(/^( *)(bull) */).replace("bull",qe.bullet).getRegex(),qe.list=Ae(qe.list).replace(/bull/g,qe.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+qe.def.source+")").getRegex(),qe._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",qe._comment=/|$)/,qe.html=Ae(qe.html,"i").replace("comment",qe._comment).replace("tag",qe._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),qe.paragraph=Ae(qe._paragraph).replace("hr",qe.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",qe._tag).getRegex(),qe.blockquote=Ae(qe.blockquote).replace("paragraph",qe.paragraph).getRegex(),qe.normal={...qe},qe.gfm={...qe.normal,table:"^ *([^\\n ].*\\|.*)\\n {0,3}(?:\\| *)?(:?-+:? *(?:\\| *:?-+:? *)*)(?:\\| *)?(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"},qe.gfm.table=Ae(qe.gfm.table).replace("hr",qe.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",qe._tag).getRegex(),qe.gfm.paragraph=Ae(qe._paragraph).replace("hr",qe.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("table",qe.gfm.table).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",qe._tag).getRegex(),qe.pedantic={...qe.normal,html:Ae("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",qe._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:Re,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:Ae(qe.normal._paragraph).replace("hr",qe.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",qe.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()};const Ne={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:Re,tag:"^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(ref)\]/,nolink:/^!?\[(ref)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",emStrong:{lDelim:/^(?:\*+(?:([punct_])|[^\s*]))|^_+(?:([punct*])|([^\s_]))/,rDelimAst:/^(?:[^_*\\]|\\.)*?\_\_(?:[^_*\\]|\\.)*?\*(?:[^_*\\]|\\.)*?(?=\_\_)|(?:[^*\\]|\\.)+(?=[^*])|[punct_](\*+)(?=[\s]|$)|(?:[^punct*_\s\\]|\\.)(\*+)(?=[punct_\s]|$)|[punct_\s](\*+)(?=[^punct*_\s])|[\s](\*+)(?=[punct_])|[punct_](\*+)(?=[punct_])|(?:[^punct*_\s\\]|\\.)(\*+)(?=[^punct*_\s])/,rDelimUnd:/^(?:[^_*\\]|\\.)*?\*\*(?:[^_*\\]|\\.)*?\_(?:[^_*\\]|\\.)*?(?=\*\*)|(?:[^_\\]|\\.)+(?=[^_])|[punct*](\_+)(?=[\s]|$)|(?:[^punct*_\s\\]|\\.)(\_+)(?=[punct*\s]|$)|[punct*\s](\_+)(?=[^punct*_\s])|[\s](\_+)(?=[punct*])|[punct*](\_+)(?=[punct*])/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:Re,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\.5&&(r="x"+r.toString(16)),s+="&#"+r+";";return s}Ne._punctuation="!\"#$%&'()+\\-.,/:;<=>?@\\[\\]`^{|}~",Ne.punctuation=Ae(Ne.punctuation).replace(/punctuation/g,Ne._punctuation).getRegex(),Ne.blockSkip=/\[[^\]]*?\]\([^\)]*?\)|`[^`]*?`|<[^>]*?>/g,Ne.escapedEmSt=/(?:^|[^\\])(?:\\\\)*\\[*_]/g,Ne._comment=Ae(qe._comment).replace("(?:--\x3e|$)","--\x3e").getRegex(),Ne.emStrong.lDelim=Ae(Ne.emStrong.lDelim).replace(/punct/g,Ne._punctuation).getRegex(),Ne.emStrong.rDelimAst=Ae(Ne.emStrong.rDelimAst,"g").replace(/punct/g,Ne._punctuation).getRegex(),Ne.emStrong.rDelimUnd=Ae(Ne.emStrong.rDelimUnd,"g").replace(/punct/g,Ne._punctuation).getRegex(),Ne._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,Ne._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,Ne._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,Ne.autolink=Ae(Ne.autolink).replace("scheme",Ne._scheme).replace("email",Ne._email).getRegex(),Ne._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,Ne.tag=Ae(Ne.tag).replace("comment",Ne._comment).replace("attribute",Ne._attribute).getRegex(),Ne._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,Ne._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/,Ne._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,Ne.link=Ae(Ne.link).replace("label",Ne._label).replace("href",Ne._href).replace("title",Ne._title).getRegex(),Ne.reflink=Ae(Ne.reflink).replace("label",Ne._label).replace("ref",qe._label).getRegex(),Ne.nolink=Ae(Ne.nolink).replace("ref",qe._label).getRegex(),Ne.reflinkSearch=Ae(Ne.reflinkSearch,"g").replace("reflink",Ne.reflink).replace("nolink",Ne.nolink).getRegex(),Ne.normal={...Ne},Ne.pedantic={...Ne.normal,strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:Ae(/^!?\[(label)\]\((.*?)\)/).replace("label",Ne._label).getRegex(),reflink:Ae(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Ne._label).getRegex()},Ne.gfm={...Ne.normal,escape:Ae(Ne.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\t+" ".repeat(r.length)));e;)if(!(this.options.extensions&&this.options.extensions.block&&this.options.extensions.block.some((s=>!!(r=s.call({lexer:this},e,t))&&(e=e.substring(r.raw.length),t.push(r),!0)))))if(r=this.tokenizer.space(e))e=e.substring(r.raw.length),1===r.raw.length&&t.length>0?t[t.length-1].raw+="\n":t.push(r);else if(r=this.tokenizer.code(e))e=e.substring(r.raw.length),s=t[t.length-1],!s||"paragraph"!==s.type&&"text"!==s.type?t.push(r):(s.raw+="\n"+r.raw,s.text+="\n"+r.text,this.inlineQueue[this.inlineQueue.length-1].src=s.text);else if(r=this.tokenizer.fences(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.heading(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.hr(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.blockquote(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.list(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.html(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.def(e))e=e.substring(r.raw.length),s=t[t.length-1],!s||"paragraph"!==s.type&&"text"!==s.type?this.tokens.links[r.tag]||(this.tokens.links[r.tag]={href:r.href,title:r.title}):(s.raw+="\n"+r.raw,s.text+="\n"+r.raw,this.inlineQueue[this.inlineQueue.length-1].src=s.text);else if(r=this.tokenizer.table(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.lheading(e))e=e.substring(r.raw.length),t.push(r);else{if(n=e,this.options.extensions&&this.options.extensions.startBlock){let t=1/0;const r=e.slice(1);let s;this.options.extensions.startBlock.forEach((function(e){s=e.call({lexer:this},r),"number"==typeof s&&s>=0&&(t=Math.min(t,s))})),t<1/0&&t>=0&&(n=e.substring(0,t+1))}if(this.state.top&&(r=this.tokenizer.paragraph(n)))s=t[t.length-1],i&&"paragraph"===s.type?(s.raw+="\n"+r.raw,s.text+="\n"+r.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=s.text):t.push(r),i=n.length!==e.length,e=e.substring(r.raw.length);else if(r=this.tokenizer.text(e))e=e.substring(r.raw.length),s=t[t.length-1],s&&"text"===s.type?(s.raw+="\n"+r.raw,s.text+="\n"+r.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=s.text):t.push(r);else if(e){const t="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(t);break}throw new Error(t)}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(e,t=[]){let r,s,n,i,o,a,l=e;if(this.tokens.links){const e=Object.keys(this.tokens.links);if(e.length>0)for(;null!=(i=this.tokenizer.rules.inline.reflinkSearch.exec(l));)e.includes(i[0].slice(i[0].lastIndexOf("[")+1,-1))&&(l=l.slice(0,i.index)+"["+Le("a",i[0].length-2)+"]"+l.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!=(i=this.tokenizer.rules.inline.blockSkip.exec(l));)l=l.slice(0,i.index)+"["+Le("a",i[0].length-2)+"]"+l.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;null!=(i=this.tokenizer.rules.inline.escapedEmSt.exec(l));)l=l.slice(0,i.index+i[0].length-2)+"++"+l.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex),this.tokenizer.rules.inline.escapedEmSt.lastIndex--;for(;e;)if(o||(a=""),o=!1,!(this.options.extensions&&this.options.extensions.inline&&this.options.extensions.inline.some((s=>!!(r=s.call({lexer:this},e,t))&&(e=e.substring(r.raw.length),t.push(r),!0)))))if(r=this.tokenizer.escape(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.tag(e))e=e.substring(r.raw.length),s=t[t.length-1],s&&"text"===r.type&&"text"===s.type?(s.raw+=r.raw,s.text+=r.text):t.push(r);else if(r=this.tokenizer.link(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.reflink(e,this.tokens.links))e=e.substring(r.raw.length),s=t[t.length-1],s&&"text"===r.type&&"text"===s.type?(s.raw+=r.raw,s.text+=r.text):t.push(r);else if(r=this.tokenizer.emStrong(e,l,a))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.codespan(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.br(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.del(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.autolink(e,ze))e=e.substring(r.raw.length),t.push(r);else if(this.state.inLink||!(r=this.tokenizer.url(e,ze))){if(n=e,this.options.extensions&&this.options.extensions.startInline){let t=1/0;const r=e.slice(1);let s;this.options.extensions.startInline.forEach((function(e){s=e.call({lexer:this},r),"number"==typeof s&&s>=0&&(t=Math.min(t,s))})),t<1/0&&t>=0&&(n=e.substring(0,t+1))}if(r=this.tokenizer.inlineText(n,Ue))e=e.substring(r.raw.length),"_"!==r.raw.slice(-1)&&(a=r.raw.slice(-1)),o=!0,s=t[t.length-1],s&&"text"===s.type?(s.raw+=r.raw,s.text+=r.text):t.push(r);else if(e){const t="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(t);break}throw new Error(t)}}else e=e.substring(r.raw.length),t.push(r);return t}}class Ve{constructor(e){this.options=e||fe}code(e,t,r){const s=(t||"").match(/\S*/)[0];if(this.options.highlight){const t=this.options.highlight(e,s);null!=t&&t!==e&&(r=!0,e=t)}return e=e.replace(/\n$/,"")+"\n",s?'
'+(r?e:$e(e,!0))+"
\n":"
"+(r?e:$e(e,!0))+"
\n"}blockquote(e){return`
\n${e}
\n`}html(e){return e}heading(e,t,r,s){if(this.options.headerIds){return`${e}\n`}return`${e}\n`}hr(){return this.options.xhtml?"
\n":"
\n"}list(e,t,r){const s=t?"ol":"ul";return"<"+s+(t&&1!==r?' start="'+r+'"':"")+">\n"+e+"\n"}listitem(e){return`
  • ${e}
  • \n`}checkbox(e){return" "}paragraph(e){return`

    ${e}

    \n`}table(e,t){return t&&(t=`${t}`),"\n\n"+e+"\n"+t+"
    \n"}tablerow(e){return`\n${e}\n`}tablecell(e,t){const r=t.header?"th":"td";return(t.align?`<${r} align="${t.align}">`:`<${r}>`)+e+`\n`}strong(e){return`${e}`}em(e){return`${e}`}codespan(e){return`${e}`}br(){return this.options.xhtml?"
    ":"
    "}del(e){return`${e}`}link(e,t,r){if(null===(e=Te(this.options.sanitize,this.options.baseUrl,e)))return r;let s='",s}image(e,t,r){if(null===(e=Te(this.options.sanitize,this.options.baseUrl,e)))return r;let s=`${r}":">",s}text(e){return e}}class We{strong(e){return e}em(e){return e}codespan(e){return e}del(e){return e}html(e){return e}text(e){return e}link(e,t,r){return""+r}image(e,t,r){return""+r}br(){return""}}class Ge{constructor(){this.seen={}}serialize(e){return e.toLowerCase().trim().replace(/<[!\/a-z].*?>/gi,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")}getNextSafeSlug(e,t){let r=e,s=0;if(this.seen.hasOwnProperty(r)){s=this.seen[e];do{s++,r=e+"-"+s}while(this.seen.hasOwnProperty(r))}return t||(this.seen[e]=s,this.seen[r]=0),r}slug(e,t={}){const r=this.serialize(e);return this.getNextSafeSlug(r,t.dryrun)}}class Je{constructor(e){this.options=e||fe,this.options.renderer=this.options.renderer||new Ve,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new We,this.slugger=new Ge}static parse(e,t){return new Je(t).parse(e)}static parseInline(e,t){return new Je(t).parseInline(e)}parse(e,t=!0){let r,s,n,i,o,a,l,c,p,u,d,h,m,f,g,y,v,b,x,w="";const $=e.length;for(r=0;r<$;r++)if(u=e[r],this.options.extensions&&this.options.extensions.renderers&&this.options.extensions.renderers[u.type]&&(x=this.options.extensions.renderers[u.type].call({parser:this},u),!1!==x||!["space","hr","heading","code","table","blockquote","list","html","paragraph","text"].includes(u.type)))w+=x||"";else switch(u.type){case"space":continue;case"hr":w+=this.renderer.hr();continue;case"heading":w+=this.renderer.heading(this.parseInline(u.tokens),u.depth,Ee(this.parseInline(u.tokens,this.textRenderer)),this.slugger);continue;case"code":w+=this.renderer.code(u.text,u.lang,u.escaped);continue;case"table":for(c="",l="",i=u.header.length,s=0;s0&&"paragraph"===g.tokens[0].type?(g.tokens[0].text=b+" "+g.tokens[0].text,g.tokens[0].tokens&&g.tokens[0].tokens.length>0&&"text"===g.tokens[0].tokens[0].type&&(g.tokens[0].tokens[0].text=b+" "+g.tokens[0].tokens[0].text)):g.tokens.unshift({type:"text",text:b}):f+=b),f+=this.parse(g.tokens,m),p+=this.renderer.listitem(f,v,y);w+=this.renderer.list(p,d,h);continue;case"html":w+=this.renderer.html(u.text);continue;case"paragraph":w+=this.renderer.paragraph(this.parseInline(u.tokens));continue;case"text":for(p=u.tokens?this.parseInline(u.tokens):u.text;r+1<$&&"text"===e[r+1].type;)u=e[++r],p+="\n"+(u.tokens?this.parseInline(u.tokens):u.text);w+=t?this.renderer.paragraph(p):p;continue;default:{const e='Token with "'+u.type+'" type was not found.';if(this.options.silent)return void console.error(e);throw new Error(e)}}return w}parseInline(e,t){t=t||this.renderer;let r,s,n,i="";const o=e.length;for(r=0;r{"function"==typeof s&&(n=s,s=null);const i={...s},o=function(e,t,r){return s=>{if(s.message+="\nPlease report this to https://github.com/markedjs/marked.",e){const e="

    An error occurred:

    "+$e(s.message+"",!0)+"
    ";return t?Promise.resolve(e):r?void r(null,e):e}if(t)return Promise.reject(s);if(!r)throw s;r(s)}}((s={...Xe.defaults,...i}).silent,s.async,n);if(null==r)return o(new Error("marked(): input parameter is undefined or null"));if("string"!=typeof r)return o(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(r)+", string expected"));if(function(e){e&&e.sanitize&&!e.silent&&console.warn("marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options")}(s),s.hooks&&(s.hooks.options=s),n){const i=s.highlight;let a;try{s.hooks&&(r=s.hooks.preprocess(r)),a=e(r,s)}catch(e){return o(e)}const l=function(e){let r;if(!e)try{s.walkTokens&&Xe.walkTokens(a,s.walkTokens),r=t(a,s),s.hooks&&(r=s.hooks.postprocess(r))}catch(t){e=t}return s.highlight=i,e?o(e):n(null,r)};if(!i||i.length<3)return l();if(delete s.highlight,!a.length)return l();let c=0;return Xe.walkTokens(a,(function(e){"code"===e.type&&(c++,setTimeout((()=>{i(e.text,e.lang,(function(t,r){if(t)return l(t);null!=r&&r!==e.text&&(e.text=r,e.escaped=!0),c--,0===c&&l()}))}),0))})),void(0===c&&l())}if(s.async)return Promise.resolve(s.hooks?s.hooks.preprocess(r):r).then((t=>e(t,s))).then((e=>s.walkTokens?Promise.all(Xe.walkTokens(e,s.walkTokens)).then((()=>e)):e)).then((e=>t(e,s))).then((e=>s.hooks?s.hooks.postprocess(e):e)).catch(o);try{s.hooks&&(r=s.hooks.preprocess(r));const n=e(r,s);s.walkTokens&&Xe.walkTokens(n,s.walkTokens);let i=t(n,s);return s.hooks&&(i=s.hooks.postprocess(i)),i}catch(e){return o(e)}}}function Xe(e,t,r){return Ye(He.lex,Je.parse)(e,t,r)}Xe.options=Xe.setOptions=function(e){var t;return Xe.defaults={...Xe.defaults,...e},t=Xe.defaults,fe=t,Xe},Xe.getDefaults=me,Xe.defaults=fe,Xe.use=function(...e){const t=Xe.defaults.extensions||{renderers:{},childTokens:{}};e.forEach((e=>{const r={...e};if(r.async=Xe.defaults.async||r.async||!1,e.extensions&&(e.extensions.forEach((e=>{if(!e.name)throw new Error("extension name required");if(e.renderer){const r=t.renderers[e.name];t.renderers[e.name]=r?function(...t){let s=e.renderer.apply(this,t);return!1===s&&(s=r.apply(this,t)),s}:e.renderer}if(e.tokenizer){if(!e.level||"block"!==e.level&&"inline"!==e.level)throw new Error("extension level must be 'block' or 'inline'");t[e.level]?t[e.level].unshift(e.tokenizer):t[e.level]=[e.tokenizer],e.start&&("block"===e.level?t.startBlock?t.startBlock.push(e.start):t.startBlock=[e.start]:"inline"===e.level&&(t.startInline?t.startInline.push(e.start):t.startInline=[e.start]))}e.childTokens&&(t.childTokens[e.name]=e.childTokens)})),r.extensions=t),e.renderer){const t=Xe.defaults.renderer||new Ve;for(const r in e.renderer){const s=t[r];t[r]=(...n)=>{let i=e.renderer[r].apply(t,n);return!1===i&&(i=s.apply(t,n)),i}}r.renderer=t}if(e.tokenizer){const t=Xe.defaults.tokenizer||new Be;for(const r in e.tokenizer){const s=t[r];t[r]=(...n)=>{let i=e.tokenizer[r].apply(t,n);return!1===i&&(i=s.apply(t,n)),i}}r.tokenizer=t}if(e.hooks){const t=Xe.defaults.hooks||new Ke;for(const r in e.hooks){const s=t[r];Ke.passThroughHooks.has(r)?t[r]=n=>{if(Xe.defaults.async)return Promise.resolve(e.hooks[r].call(t,n)).then((e=>s.call(t,e)));const i=e.hooks[r].call(t,n);return s.call(t,i)}:t[r]=(...n)=>{let i=e.hooks[r].apply(t,n);return!1===i&&(i=s.apply(t,n)),i}}r.hooks=t}if(e.walkTokens){const t=Xe.defaults.walkTokens;r.walkTokens=function(r){let s=[];return s.push(e.walkTokens.call(this,r)),t&&(s=s.concat(t.call(this,r))),s}}Xe.setOptions(r)}))},Xe.walkTokens=function(e,t){let r=[];for(const s of e)switch(r=r.concat(t.call(Xe,s)),s.type){case"table":for(const e of s.header)r=r.concat(Xe.walkTokens(e.tokens,t));for(const e of s.rows)for(const s of e)r=r.concat(Xe.walkTokens(s.tokens,t));break;case"list":r=r.concat(Xe.walkTokens(s.items,t));break;default:Xe.defaults.extensions&&Xe.defaults.extensions.childTokens&&Xe.defaults.extensions.childTokens[s.type]?Xe.defaults.extensions.childTokens[s.type].forEach((function(e){r=r.concat(Xe.walkTokens(s[e],t))})):s.tokens&&(r=r.concat(Xe.walkTokens(s.tokens,t)))}return r},Xe.parseInline=Ye(He.lexInline,Je.parseInline),Xe.Parser=Je,Xe.parser=Je.parse,Xe.Renderer=Ve,Xe.TextRenderer=We,Xe.Lexer=He,Xe.lexer=He.lex,Xe.Tokenizer=Be,Xe.Slugger=Ge,Xe.Hooks=Ke,Xe.parse=Xe;Xe.options,Xe.setOptions,Xe.use,Xe.walkTokens,Xe.parseInline,Je.parse,He.lex;var Ze=r(848),Qe=r.n(Ze);r(113),r(83),r(378),r(976),r(514),r(22),r(342),r(784),r(651);const et=c` - .hover-bg:hover { - background: var(--bg3); - } - ::selection { - background: var(--selection-bg); - color: var(--selection-fg); - } - .regular-font { - font-family:var(--font-regular); - } - .mono-font { - font-family:var(--font-mono); - } - .title { - font-size: calc(var(--font-size-small) + 18px); - font-weight: normal - } - .sub-title{ font-size: 20px; } - .req-res-title { - font-family: var(--font-regular); - font-size: calc(var(--font-size-small) + 4px); - font-weight:bold; - margin-bottom:8px; - text-align:left; - } - .tiny-title { - font-size:calc(var(--font-size-small) + 1px); - font-weight:bold; - } - .regular-font-size { font-size: var(--font-size-regular); } - .small-font-size { font-size: var(--font-size-small); } - .upper { text-transform: uppercase; } - .primary-text { color: var(--primary-color); } - .bold-text { font-weight:bold; } - .gray-text { color: var(--light-fg); } - .red-text { color: var(--red) } - .blue-text { color: var(--blue) } - .multiline { - overflow: scroll; - max-height: var(--resp-area-height, 400px); - color: var(--fg3); - } - .method-fg.put { color: var(--orange); } - .method-fg.post { color: var(--green); } - .method-fg.get { color: var(--blue); } - .method-fg.delete { color: var(--red); } - .method-fg.options, - .method-fg.head, - .method-fg.patch { - color: var(--yellow); - } - - h1 { font-family:var(--font-regular); font-size:28px; padding-top: 10px; letter-spacing:normal; font-weight:normal; } - h2 { font-family:var(--font-regular); font-size:24px; padding-top: 10px; letter-spacing:normal; font-weight:normal; } - h3 { font-family:var(--font-regular); font-size:18px; padding-top: 10px; letter-spacing:normal; font-weight:normal; } - h4 { font-family:var(--font-regular); font-size:16px; padding-top: 10px; letter-spacing:normal; font-weight:normal; } - h5 { font-family:var(--font-regular); font-size:14px; padding-top: 10px; letter-spacing:normal; font-weight:normal; } - h6 { font-family:var(--font-regular); font-size:14px; padding-top: 10px; letter-spacing:normal; font-weight:normal; } - - h1,h2,h3,h4,h5,h5 { - margin-block-end: 0.2em; - } - p { margin-block-start: 0.5em; } - a { color: var(--blue); cursor:pointer; } - a.inactive-link { - color:var(--fg); - text-decoration: none; - cursor:text; - } - - code, - pre { - margin: 0px; - font-family: var(--font-mono); - font-size: calc(var(--font-size-mono) - 1px); - } - - .m-markdown, - .m-markdown-small { - display:block; - } - - .m-markdown p, - .m-markdown span { - font-size: var(--font-size-regular); - line-height:calc(var(--font-size-regular) + 8px); - } - .m-markdown li { - font-size: var(--font-size-regular); - line-height:calc(var(--font-size-regular) + 10px); - } - - .m-markdown-small p, - .m-markdown-small span, - .m-markdown-small li { - font-size: var(--font-size-small); - line-height: calc(var(--font-size-small) + 6px); - } - .m-markdown-small li { - line-height: calc(var(--font-size-small) + 8px); - } - - .m-markdown p:not(:first-child) { - margin-block-start: 24px; - } - - .m-markdown-small p:not(:first-child) { - margin-block-start: 12px; - } - .m-markdown-small p:first-child { - margin-block-start: 0; - } - - .m-markdown p, - .m-markdown-small p { - margin-block-end: 0 - } - - .m-markdown code span { - font-size:var(--font-size-mono); - } - - .m-markdown-small code, - .m-markdown code { - padding: 1px 6px; - border-radius: 2px; - color: var(--inline-code-fg); - background-color: var(--bg3); - font-size: calc(var(--font-size-mono)); - line-height: 1.2; - } - - .m-markdown-small code { - font-size: calc(var(--font-size-mono) - 1px); - } - - .m-markdown-small pre, - .m-markdown pre { - white-space: pre-wrap; - overflow-x: auto; - line-height: normal; - border-radius: 2px; - border: 1px solid var(--code-border-color); - } - - .m-markdown pre { - padding: 12px; - background-color: var(--code-bg); - color:var(--code-fg); - } - - .m-markdown-small pre { - margin-top: 4px; - padding: 2px 4px; - background-color: var(--bg3); - color: var(--fg2); - } - - .m-markdown-small pre code, - .m-markdown pre code { - border:none; - padding:0; - } - - .m-markdown pre code { - color: var(--code-fg); - background-color: var(--code-bg); - background-color: transparent; - } - - .m-markdown-small pre code { - color: var(--fg2); - background-color: var(--bg3); - } - - .m-markdown ul, - .m-markdown ol { - padding-inline-start: 30px; - } - - .m-markdown-small ul, - .m-markdown-small ol { - padding-inline-start: 20px; - } - - .m-markdown-small a, - .m-markdown a { - color:var(--blue); - } - - .m-markdown-small img, - .m-markdown img { - max-width: 100%; - } - - /* Markdown table */ - - .m-markdown-small table, - .m-markdown table { - border-spacing: 0; - margin: 10px 0; - border-collapse: separate; - border: 1px solid var(--border-color); - border-radius: var(--border-radius); - font-size: calc(var(--font-size-small) + 1px); - line-height: calc(var(--font-size-small) + 4px); - max-width: 100%; - } - - .m-markdown-small table { - font-size: var(--font-size-small); - line-height: calc(var(--font-size-small) + 2px); - margin: 8px 0; - } - - .m-markdown-small td, - .m-markdown-small th, - .m-markdown td, - .m-markdown th { - vertical-align: top; - border-top: 1px solid var(--border-color); - line-height: calc(var(--font-size-small) + 4px); - } - - .m-markdown-small tr:first-child th, - .m-markdown tr:first-child th { - border-top: 0 none; - } - - .m-markdown th, - .m-markdown td { - padding: 10px 12px; - } - - .m-markdown-small th, - .m-markdown-small td { - padding: 8px 8px; - } - - .m-markdown th, - .m-markdown-small th { - font-weight: 600; - background-color: var(--bg2); - vertical-align: middle; - } - - .m-markdown-small table code { - font-size: calc(var(--font-size-mono) - 2px); - } - - .m-markdown table code { - font-size: calc(var(--font-size-mono) - 1px); - } - - .m-markdown blockquote, - .m-markdown-small blockquote { - margin-inline-start: 0; - margin-inline-end: 0; - border-left: 3px solid var(--border-color); - padding: 6px 0 6px 6px; - } - .m-markdown hr{ - border: 1px solid var(--border-color); - } -`,tt=c` -/* Button */ -.m-btn { - border-radius: var(--border-radius); - font-weight: 600; - display: inline-block; - padding: 6px 16px; - font-size: var(--font-size-small); - outline: 0; - line-height: 1; - text-align: center; - white-space: nowrap; - border: 2px solid var(--primary-color); - background-color:transparent; - user-select: none; - cursor: pointer; - box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24); - transition-duration: 0.75s; -} -.m-btn.primary { - background-color: var(--primary-color); - color: var(--primary-color-invert); -} -.m-btn.thin-border { border-width: 1px; } -.m-btn.large { padding:8px 14px; } -.m-btn.small { padding:5px 12px; } -.m-btn.tiny { padding:5px 6px; } -.m-btn.circle { border-radius: 50%; } -.m-btn:hover { - background-color: var(--primary-color); - color: var(--primary-color-invert); -} -.m-btn.nav { border: 2px solid var(--nav-accent-color); } -.m-btn.nav:hover { - background-color: var(--nav-accent-color); -} -.m-btn:disabled { - background-color: var(--bg3); - color: var(--fg3); - border-color: var(--fg3); - cursor: not-allowed; - opacity: 0.4; -} -.m-btn:active { - filter: brightness(75%); - transform: scale(0.95); - transition:scale 0s; -} -.toolbar-btn { - cursor: pointer; - padding: 4px; - margin:0 2px; - font-size: var(--font-size-small); - min-width: 50px; - color: var(--primary-color-invert); - border-radius: 2px; - border: none; - background-color: var(--primary-color); -} - -input, textarea, select, button, pre { - color:var(--fg); - outline: none; - background-color: var(--input-bg); - border: 1px solid var(--border-color); - border-radius: var(--border-radius); -} -button { - font-family: var(--font-regular); -} - -/* Form Inputs */ -pre, -select, -textarea, -input[type="file"], -input[type="text"], -input[type="password"] { - font-family: var(--font-mono); - font-weight: 400; - font-size: var(--font-size-small); - transition: border .2s; - padding: 6px 5px; -} - -select { - font-family: var(--font-regular); - padding: 5px 30px 5px 5px; - background-image: url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2212%22%20height%3D%2212%22%3E%3Cpath%20d%3D%22M10.3%203.3L6%207.6%201.7%203.3A1%201%200%2000.3%204.7l5%205a1%201%200%20001.4%200l5-5a1%201%200%2010-1.4-1.4z%22%20fill%3D%22%23777777%22%2F%3E%3C%2Fsvg%3E"); - background-position: calc(100% - 5px) center; - background-repeat: no-repeat; - background-size: 10px; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - cursor: pointer; -} - -select:hover { - border-color: var(--primary-color); -} - -textarea::placeholder, -input[type="text"]::placeholder, -input[type="password"]::placeholder { - color: var(--placeholder-color); - opacity:1; -} - - -input[type="file"]{ - font-family: var(--font-regular); - padding:2px; - cursor:pointer; - border: 1px solid var(--primary-color); - min-height: calc(var(--font-size-small) + 18px); -} - -input[type="file"]::-webkit-file-upload-button { - font-family: var(--font-regular); - font-size: var(--font-size-small); - outline: none; - cursor:pointer; - padding: 3px 8px; - border: 1px solid var(--primary-color); - background-color: var(--primary-color); - color: var(--primary-color-invert); - border-radius: var(--border-radius);; - -webkit-appearance: none; -} - -pre, -textarea { - scrollbar-width: thin; - scrollbar-color: var(--border-color) var(--input-bg); -} - -pre::-webkit-scrollbar, -textarea::-webkit-scrollbar { - width: 8px; - height: 8px; -} - -pre::-webkit-scrollbar-track, -textarea::-webkit-scrollbar-track { - background:var(--input-bg); -} - -pre::-webkit-scrollbar-thumb, -textarea::-webkit-scrollbar-thumb { - border-radius: 2px; - background-color: var(--border-color); -} - -.link { - font-size:var(--font-size-small); - text-decoration: underline; - color:var(--blue); - font-family:var(--font-mono); - margin-bottom:2px; -} - -/* Toggle Body */ -input[type="checkbox"] { - appearance: none; - display: inline-block; - background-color: var(--light-bg); - border: 1px solid var(--light-bg); - border-radius: 9px; - cursor: pointer; - height: 18px; - position: relative; - transition: border .25s .15s, box-shadow .25s .3s, padding .25s; - min-width: 36px; - width: 36px; - vertical-align: top; -} -/* Toggle Thumb */ -input[type="checkbox"]:after { - position: absolute; - background-color: var(--bg); - border: 1px solid var(--light-bg); - border-radius: 8px; - content: ''; - top: 0px; - left: 0px; - right: 16px; - display: block; - height: 16px; - transition: border .25s .15s, left .25s .1s, right .15s .175s; -} - -/* Toggle Body - Checked */ -input[type="checkbox"]:checked { - background-color: var(--green); - border-color: var(--green); -} -/* Toggle Thumb - Checked*/ -input[type="checkbox"]:checked:after { - border: 1px solid var(--green); - left: 16px; - right: 1px; - transition: border .25s, left .15s .25s, right .25s .175s; -}`,rt=c` -.row, .col { - display:flex; -} -.row { - align-items:center; - flex-direction: row; -} -.col { - align-items:stretch; - flex-direction: column; -} -`,st=c` -.m-table { - border-spacing: 0; - border-collapse: separate; - border: 1px solid var(--light-border-color); - border-radius: var(--border-radius); - margin: 0; - max-width: 100%; - direction: ltr; -} -.m-table tr:first-child td, -.m-table tr:first-child th { - border-top: 0 none; -} -.m-table td, -.m-table th { - font-size: var(--font-size-small); - line-height: calc(var(--font-size-small) + 4px); - padding: 4px 5px 4px; - vertical-align: top; -} - -.m-table.padded-12 td, -.m-table.padded-12 th { - padding: 12px; -} - -.m-table td:not([align]), -.m-table th:not([align]) { - text-align: left; -} - -.m-table th { - color: var(--fg2); - font-size: var(--font-size-small); - line-height: calc(var(--font-size-small) + 18px); - font-weight: 600; - letter-spacing: normal; - background-color: var(--bg2); - vertical-align: bottom; - border-bottom: 1px solid var(--light-border-color); -} - -.m-table > tbody > tr > td, -.m-table > tr > td { - border-top: 1px solid var(--light-border-color); - text-overflow: ellipsis; - overflow: hidden; -} -.table-title { - font-size:var(--font-size-small); - font-weight:bold; - vertical-align: middle; - margin: 12px 0 4px 0; -} -`,nt=c` -:host { - container-type: inline-size; -} -.only-large-screen { display:none; } -.endpoint-head .path { - display: flex; - font-family:var(--font-mono); - font-size: var(--font-size-small); - align-items: center; - overflow-wrap: break-word; - word-break: break-all; -} - -.endpoint-head .descr { - font-size: var(--font-size-small); - color:var(--light-fg); - font-weight:400; - align-items: center; - overflow-wrap: break-word; - word-break: break-all; - display:none; -} - -.m-endpoint.expanded { margin-bottom:16px; } -.m-endpoint > .endpoint-head{ - border-width:1px 1px 1px 5px; - border-style:solid; - border-color:transparent; - border-top-color:var(--light-border-color); - display:flex; - padding:6px 16px; - align-items: center; - cursor: pointer; -} -.m-endpoint > .endpoint-head.put:hover, -.m-endpoint > .endpoint-head.put.expanded { - border-color:var(--orange); - background-color:var(--light-orange); -} -.m-endpoint > .endpoint-head.post:hover, -.m-endpoint > .endpoint-head.post.expanded { - border-color:var(--green); - background-color:var(--light-green); -} -.m-endpoint > .endpoint-head.get:hover, -.m-endpoint > .endpoint-head.get.expanded { - border-color:var(--blue); - background-color:var(--light-blue); -} -.m-endpoint > .endpoint-head.delete:hover, -.m-endpoint > .endpoint-head.delete.expanded { - border-color:var(--red); - background-color:var(--light-red); -} - -.m-endpoint > .endpoint-head.head:hover, -.m-endpoint > .endpoint-head.head.expanded, -.m-endpoint > .endpoint-head.patch:hover, -.m-endpoint > .endpoint-head.patch.expanded, -.m-endpoint > .endpoint-head.options:hover, -.m-endpoint > .endpoint-head.options.expanded { - border-color:var(--yellow); - background-color:var(--light-yellow); -} - -.m-endpoint > .endpoint-head.deprecated:hover, -.m-endpoint > .endpoint-head.deprecated.expanded { - border-color:var(--border-color); - filter:opacity(0.6); -} - -.m-endpoint .endpoint-body { - flex-wrap:wrap; - padding:16px 0px 0 0px; - border-width:0px 1px 1px 5px; - border-style:solid; - box-shadow: 0px 4px 3px -3px rgba(0, 0, 0, 0.15); -} -.m-endpoint .endpoint-body.delete{ border-color:var(--red); } -.m-endpoint .endpoint-body.put{ border-color:var(--orange); } -.m-endpoint .endpoint-body.post { border-color:var(--green); } -.m-endpoint .endpoint-body.get { border-color:var(--blue); } -.m-endpoint .endpoint-body.head, -.m-endpoint .endpoint-body.patch, -.m-endpoint .endpoint-body.options { - border-color:var(--yellow); -} - -.m-endpoint .endpoint-body.deprecated { - border-color:var(--border-color); - filter:opacity(0.6); -} - -.endpoint-head .deprecated { - color: var(--light-fg); - filter:opacity(0.6); -} - -.summary{ - padding:8px 8px; -} -.summary .title { - font-size:calc(var(--font-size-regular) + 2px); - margin-bottom: 6px; - word-break: break-all; -} - -.endpoint-head .method { - padding:2px 5px; - vertical-align: middle; - font-size:var(--font-size-small); - height: calc(var(--font-size-small) + 16px); - line-height: calc(var(--font-size-small) + 8px); - width: 60px; - border-radius: 2px; - display:inline-block; - text-align: center; - font-weight: bold; - text-transform:uppercase; - margin-right:5px; -} -.endpoint-head .method.delete{ border: 2px solid var(--red);} -.endpoint-head .method.put{ border: 2px solid var(--orange); } -.endpoint-head .method.post{ border: 2px solid var(--green); } -.endpoint-head .method.get{ border: 2px solid var(--blue); } -.endpoint-head .method.get.deprecated{ border: 2px solid var(--border-color); } -.endpoint-head .method.head, -.endpoint-head .method.patch, -.endpoint-head .method.options { - border: 2px solid var(--yellow); -} - -.req-resp-container { - display: flex; - margin-top:16px; - align-items: stretch; - flex-wrap: wrap; - flex-direction: column; - border-top:1px solid var(--light-border-color); -} - -.view-mode-request, -api-response.view-mode { - flex:1; - min-height:100px; - padding:16px 8px; - overflow:hidden; -} -.view-mode-request { - border-width:0 0 1px 0; - border-style:dashed; -} - -.head .view-mode-request, -.patch .view-mode-request, -.options .view-mode-request { - border-color:var(--yellow); -} -.put .view-mode-request { - border-color:var(--orange); -} -.post .view-mode-request { - border-color:var(--green); -} -.get .view-mode-request { - border-color:var(--blue); -} -.delete .view-mode-request { - border-color:var(--red); -} - -@container (min-width: 1024px) { - .only-large-screen { display:block; } - .endpoint-head .path{ - font-size: var(--font-size-regular); - } - .endpoint-head .descr{ - display: flex; - } - .endpoint-head .m-markdown-small, - .descr .m-markdown-small{ - display:block; - } - .req-resp-container{ - flex-direction: var(--layout, row); - flex-wrap: nowrap; - } - api-response.view-mode { - padding:16px; - } - .view-mode-request.row-layout { - border-width:0 1px 0 0; - padding:16px; - } - .summary{ - padding:8px 16px; - } -} -`,it=c` -code[class*="language-"], -pre[class*="language-"] { - text-align: left; - white-space: pre; - word-spacing: normal; - word-break: normal; - word-wrap: normal; - line-height: 1.5; - tab-size: 2; - - -webkit-hyphens: none; - -moz-hyphens: none; - -ms-hyphens: none; - hyphens: none; -} - -/* Code blocks */ -pre[class*="language-"] { - padding: 1em; - margin: .5em 0; - overflow: auto; -} - -/* Inline code */ -:not(pre) > code[class*="language-"] { - white-space: normal; -} - -.token.comment, -.token.block-comment, -.token.prolog, -.token.doctype, -.token.cdata { - color: var(--light-fg) -} - -.token.punctuation { - color: var(--fg); -} - -.token.tag, -.token.attr-name, -.token.namespace, -.token.deleted { - color:var(--pink); -} - -.token.function-name { - color: var(--blue); -} - -.token.boolean, -.token.number, -.token.function { - color: var(--red); -} - -.token.property, -.token.class-name, -.token.constant, -.token.symbol { - color: var(--code-property-color); -} - -.token.selector, -.token.important, -.token.atrule, -.token.keyword, -.token.builtin { - color: var(--code-keyword-color); -} - -.token.string, -.token.char, -.token.attr-value, -.token.regex, -.token.variable { - color: var(--green); -} - -.token.operator, -.token.entity, -.token.url { - color: var(--code-operator-color); -} - -.token.important, -.token.bold { - font-weight: bold; -} -.token.italic { - font-style: italic; -} - -.token.entity { - cursor: help; -} - -.token.inserted { - color: green; -} -`,ot=c` -.tab-panel { - border: none; -} -.tab-buttons { - height:30px; - padding: 4px 4px 0 4px; - border-bottom: 1px solid var(--light-border-color) ; - align-items: stretch; - overflow-y: hidden; - overflow-x: auto; - scrollbar-width: thin; -} -.tab-buttons::-webkit-scrollbar { - height: 1px; - background-color: var(--border-color); -} -.tab-btn { - border: none; - border-bottom: 3px solid transparent; - color: var(--light-fg); - background-color: transparent; - white-space: nowrap; - cursor:pointer; - outline:none; - font-family:var(--font-regular); - font-size:var(--font-size-small); - margin-right:16px; - padding:1px; -} -.tab-btn.active { - border-bottom: 3px solid var(--primary-color); - font-weight:bold; - color:var(--primary-color); -} - -.tab-btn:hover { - color:var(--primary-color); -} -.tab-content { - margin:-1px 0 0 0; - position:relative; - min-height: 50px; -} -`,at=c` -.nav-bar-info:focus-visible, -.nav-bar-tag:focus-visible, -.nav-bar-path:focus-visible { - outline: 1px solid; - box-shadow: none; - outline-offset: -4px; -} -.nav-bar-expand-all:focus-visible, -.nav-bar-collapse-all:focus-visible, -.nav-bar-tag-icon:focus-visible { - outline: 1px solid; - box-shadow: none; - outline-offset: 2px; -} -.nav-bar { - width:0; - height:100%; - overflow: hidden; - color:var(--nav-text-color); - background-color: var(--nav-bg-color); - background-blend-mode: multiply; - line-height: calc(var(--font-size-small) + 4px); - display:none; - position:relative; - flex-direction:column; - flex-wrap:nowrap; - word-break:break-word; -} -::slotted([slot=nav-logo]) { - padding:16px 16px 0 16px; -} -.nav-scroll { - overflow-x: hidden; - overflow-y: auto; - overflow-y: overlay; - scrollbar-width: thin; - scrollbar-color: var(--nav-hover-bg-color) transparent; -} - -.nav-bar-tag { - display: flex; - align-items: center; - justify-content: space-between; - flex-direction: row; -} -.nav-bar.read .nav-bar-tag-icon { - display:none; -} -.nav-bar-paths-under-tag { - overflow:hidden; - transition: max-height .2s ease-out, visibility .3s; -} -.collapsed .nav-bar-paths-under-tag { - visibility: hidden; -} - -.nav-bar-expand-all { - transform: rotate(90deg); - cursor:pointer; - margin-right:10px; -} -.nav-bar-collapse-all { - transform: rotate(270deg); - cursor:pointer; -} -.nav-bar-expand-all:hover, .nav-bar-collapse-all:hover { - color: var(--primary-color); -} - -.nav-bar-tag-icon { - color: var(--nav-text-color); - font-size: 20px; -} -.nav-bar-tag-icon:hover { - color:var(--nav-hover-text-color); -} -.nav-bar.focused .nav-bar-tag-and-paths.collapsed .nav-bar-tag-icon::after { - content: '⌵'; - width:16px; - height:16px; - text-align: center; - display: inline-block; - transform: rotate(-90deg); - transition: transform 0.2s ease-out 0s; -} -.nav-bar.focused .nav-bar-tag-and-paths.expanded .nav-bar-tag-icon::after { - content: '⌵'; - width:16px; - height:16px; - text-align: center; - display: inline-block; - transition: transform 0.2s ease-out 0s; -} -.nav-scroll::-webkit-scrollbar { - width: var(--scroll-bar-width, 8px); -} -.nav-scroll::-webkit-scrollbar-track { - background:transparent; -} -.nav-scroll::-webkit-scrollbar-thumb { - background-color: var(--nav-hover-bg-color); -} - -.nav-bar-tag { - font-size: var(--font-size-regular); - color: var(--nav-accent-color); - border-left:4px solid transparent; - font-weight:bold; - padding: 15px 15px 15px 10px; - text-transform: capitalize; -} - -.nav-bar-components, -.nav-bar-h1, -.nav-bar-h2, -.nav-bar-info, -.nav-bar-tag, -.nav-bar-path { - display:flex; - cursor: pointer; - width: 100%; - border: none; - border-radius:4px; - color: var(--nav-text-color); - background: transparent; - border-left:4px solid transparent; -} - -.nav-bar-h1, -.nav-bar-h2, -.nav-bar-path { - font-size: calc(var(--font-size-small) + 1px); - padding: var(--nav-item-padding); -} -.nav-bar-path.small-font { - font-size: var(--font-size-small); -} - -.nav-bar-info { - font-size: var(--font-size-regular); - padding: 16px 10px; - font-weight:bold; -} -.nav-bar-section { - display: flex; - flex-direction: row; - justify-content: space-between; - font-size: var(--font-size-small); - color: var(--nav-text-color); - padding: var(--nav-item-padding); - font-weight:bold; -} -.nav-bar-section.operations { - cursor:pointer; -} -.nav-bar-section.operations:hover { - color:var(--nav-hover-text-color); - background-color:var(--nav-hover-bg-color); -} - -.nav-bar-section:first-child { - display: none; -} -.nav-bar-h2 {margin-left:12px;} - -.nav-bar-h1.left-bar.active, -.nav-bar-h2.left-bar.active, -.nav-bar-info.left-bar.active, -.nav-bar-tag.left-bar.active, -.nav-bar-path.left-bar.active, -.nav-bar-section.left-bar.operations.active { - border-left:4px solid var(--nav-accent-color); - color:var(--nav-hover-text-color); -} - -.nav-bar-h1.colored-block.active, -.nav-bar-h2.colored-block.active, -.nav-bar-info.colored-block.active, -.nav-bar-tag.colored-block.active, -.nav-bar-path.colored-block.active, -.nav-bar-section.colored-block.operations.active { - background-color: var(--nav-accent-color); - color: var(--nav-accent-text-color); - border-radius: 0; -} - -.nav-bar-h1:hover, -.nav-bar-h2:hover, -.nav-bar-info:hover, -.nav-bar-tag:hover, -.nav-bar-path:hover { - color:var(--nav-hover-text-color); - background-color:var(--nav-hover-bg-color); -} -`,lt=c` -#api-info { - font-size: calc(var(--font-size-regular) - 1px); - margin-top: 8px; - margin-left: -15px; -} - -#api-info span:before { - content: "|"; - display: inline-block; - opacity: 0.5; - width: 15px; - text-align: center; -} -#api-info span:first-child:before { - content: ""; - width: 0px; -} -`,ct=c` - -`;const pt=/[\s#:?&={}]/g,ut="_rapidoc_api_key";function dt(e){return new Promise((t=>setTimeout(t,e)))}function ht(e,t){const r=t.target,s=document.createElement("textarea");s.value=e,s.style.position="fixed",document.body.appendChild(s),s.focus(),s.select();try{document.execCommand("copy"),r.innerText="Copied",setTimeout((()=>{r.innerText="Copy"}),5e3)}catch(e){console.error("Unable to copy",e)}document.body.removeChild(s)}function mt(e,t,r=""){return`${t.method} ${t.path} ${t.summary||""} ${t.description||""} ${t.operationId||""} ${r}`.toLowerCase().includes(e.toLowerCase())}function ft(e,t=new Set){return e?(Object.keys(e).forEach((r=>{var s;if(t.add(r),e[r].properties)ft(e[r].properties,t);else if(null!==(s=e[r].items)&&void 0!==s&&s.properties){var n;ft(null===(n=e[r].items)||void 0===n?void 0:n.properties,t)}})),t):t}function gt(e,t){if(e){const r=document.createElement("a");document.body.appendChild(r),r.style="display: none",r.href=e,r.download=t,r.click(),r.remove()}}function yt(e){if(e){const t=document.createElement("a");document.body.appendChild(t),t.style="display: none",t.href=e,t.target="_blank",t.click(),t.remove()}}const vt=Object.freeze({url:"/"}),{fetch:bt,Response:xt,Headers:wt,Request:$t,FormData:St,File:Et,Blob:kt}=globalThis;function At(e,t){return t||"undefined"==typeof navigator||(t=navigator),t&&"ReactNative"===t.product?!(!e||"object"!=typeof e||"string"!=typeof e.uri):"undefined"!=typeof File&&e instanceof File||"undefined"!=typeof Blob&&e instanceof Blob||!!ArrayBuffer.isView(e)||null!==e&&"object"==typeof e&&"function"==typeof e.pipe}function Ot(e,t){return Array.isArray(e)&&e.some((e=>At(e,t)))}void 0===globalThis.fetch&&(globalThis.fetch=bt),void 0===globalThis.Headers&&(globalThis.Headers=wt),void 0===globalThis.Request&&(globalThis.Request=$t),void 0===globalThis.Response&&(globalThis.Response=xt),void 0===globalThis.FormData&&(globalThis.FormData=St),void 0===globalThis.File&&(globalThis.File=Et),void 0===globalThis.Blob&&(globalThis.Blob=kt);class jt extends File{constructor(e,t="",r={}){super([e],t,r),this.data=e}valueOf(){return this.data}toString(){return this.valueOf()}}function Tt(e,t="reserved"){return[...e].map((e=>{if((e=>/^[a-z0-9\-._~]+$/i.test(e))(e))return e;if((e=>":/?#[]@!$&'()*+,;=".indexOf(e)>-1)(e)&&"unsafe"===t)return e;const r=new TextEncoder;return Array.from(r.encode(e)).map((e=>`0${e.toString(16).toUpperCase()}`.slice(-2))).map((e=>`%${e}`)).join("")})).join("")}function Pt(e){const{value:t}=e;return Array.isArray(t)?function({key:e,value:t,style:r,explode:s,escape:n}){if("simple"===r)return t.map((e=>Ct(e,n))).join(",");if("label"===r)return`.${t.map((e=>Ct(e,n))).join(".")}`;if("matrix"===r)return t.map((e=>Ct(e,n))).reduce(((t,r)=>!t||s?`${t||""};${e}=${r}`:`${t},${r}`),"");if("form"===r){const r=s?`&${e}=`:",";return t.map((e=>Ct(e,n))).join(r)}if("spaceDelimited"===r){const r=s?`${e}=`:"";return t.map((e=>Ct(e,n))).join(` ${r}`)}if("pipeDelimited"===r){const r=s?`${e}=`:"";return t.map((e=>Ct(e,n))).join(`|${r}`)}}(e):"object"==typeof t?function({key:e,value:t,style:r,explode:s,escape:n}){const i=Object.keys(t);return"simple"===r?i.reduce(((e,r)=>{const i=Ct(t[r],n);return`${e?`${e},`:""}${r}${s?"=":","}${i}`}),""):"label"===r?i.reduce(((e,r)=>{const i=Ct(t[r],n);return`${e?`${e}.`:"."}${r}${s?"=":"."}${i}`}),""):"matrix"===r&&s?i.reduce(((e,r)=>`${e?`${e};`:";"}${r}=${Ct(t[r],n)}`),""):"matrix"===r?i.reduce(((r,s)=>{const i=Ct(t[s],n);return`${r?`${r},`:`;${e}=`}${s},${i}`}),""):"form"===r?i.reduce(((e,r)=>{const i=Ct(t[r],n);return`${e?`${e}${s?"&":","}`:""}${r}${s?"=":","}${i}`}),""):void 0}(e):function({key:e,value:t,style:r,escape:s}){return"simple"===r?Ct(t,s):"label"===r?`.${Ct(t,s)}`:"matrix"===r?`;${e}=${Ct(t,s)}`:"form"===r||"deepObject"===r?Ct(t,s):void 0}(e)}function Ct(e,t=!1){return Array.isArray(e)||null!==e&&"object"==typeof e?e=JSON.stringify(e):"number"!=typeof e&&"boolean"!=typeof e||(e=String(e)),t&&e.length>0?Tt(e,t):e}const It={form:",",spaceDelimited:"%20",pipeDelimited:"|"},_t={csv:",",ssv:"%20",tsv:"%09",pipes:"|"};function Rt(e,t,r=!1){const{collectionFormat:s,allowEmptyValue:n,serializationOption:i,encoding:o}=t,a="object"!=typeof t||Array.isArray(t)?t:t.value,l=r?e=>e.toString():e=>encodeURIComponent(e),c=l(e);if(void 0===a&&n)return[[c,""]];if(At(a)||Ot(a))return[[c,a]];if(i)return Ft(e,a,r,i);if(o){if([typeof o.style,typeof o.explode,typeof o.allowReserved].some((e=>"undefined"!==e))){const{style:t,explode:s,allowReserved:n}=o;return Ft(e,a,r,{style:t,explode:s,allowReserved:n})}if("string"==typeof o.contentType){if(o.contentType.startsWith("application/json")){const e=l("string"==typeof a?a:JSON.stringify(a));return[[c,new jt(e,"blob",{type:o.contentType})]]}const e=l(String(a));return[[c,new jt(e,"blob",{type:o.contentType})]]}return"object"!=typeof a?[[c,l(a)]]:Array.isArray(a)&&a.every((e=>"object"!=typeof e))?[[c,a.map(l).join(",")]]:[[c,l(JSON.stringify(a))]]}return"object"!=typeof a?[[c,l(a)]]:Array.isArray(a)?"multi"===s?[[c,a.map(l)]]:[[c,a.map(l).join(_t[s||"csv"])]]:[[c,""]]}function Ft(e,t,r,s){const n=s.style||"form",i=void 0===s.explode?"form"===n:s.explode,o=!r&&(s&&s.allowReserved?"unsafe":"reserved"),a=e=>Ct(e,o),l=r?e=>e:e=>a(e);return"object"!=typeof t?[[l(e),a(t)]]:Array.isArray(t)?i?[[l(e),t.map(a)]]:[[l(e),t.map(a).join(It[n])]]:"deepObject"===n?Object.keys(t).map((r=>[l(`${e}[${r}]`),a(t[r])])):i?Object.keys(t).map((e=>[l(e),a(t[e])])):[[l(e),Object.keys(t).map((e=>[`${l(e)},${a(t[e])}`])).join(",")]]}function Mt(e){return((e,{encode:t=!0}={})=>{const r=(e,t,s)=>(null==s?e.append(t,""):Array.isArray(s)?s.reduce(((s,n)=>r(e,t,n)),e):s instanceof Date?e.append(t,s.toISOString()):"object"==typeof s?Object.entries(s).reduce(((s,[n,i])=>r(e,`${t}[${n}]`,i)),e):e.append(t,s),e),s=Object.entries(e).reduce(((e,[t,s])=>r(e,t,s)),new URLSearchParams),n=String(s);return t?n:decodeURIComponent(n)})(Object.keys(e).reduce(((t,r)=>{for(const[s,n]of Rt(r,e[r]))t[s]=n instanceof jt?n.valueOf():n;return t}),{}),{encode:!1})}function Lt(e={}){const{url:t="",query:r,form:s}=e;if(s){const t=Object.keys(s).some((e=>{const{value:t}=s[e];return At(t)||Ot(t)})),r=e.headers["content-type"]||e.headers["Content-Type"];if(t||/multipart\/form-data/i.test(r)){const t=(n=e.form,Object.entries(n).reduce(((e,[t,r])=>{for(const[s,n]of Rt(t,r,!0))if(Array.isArray(n))for(const t of n)if(ArrayBuffer.isView(t)){const r=new Blob([t]);e.append(s,r)}else e.append(s,t);else if(ArrayBuffer.isView(n)){const t=new Blob([n]);e.append(s,t)}else e.append(s,n);return e}),new FormData));e.formdata=t,e.body=t}else e.body=Mt(s);delete e.form}var n;if(r){const[s,n]=t.split("?");let i="";if(n){const e=new URLSearchParams(n);Object.keys(r).forEach((t=>e.delete(t))),i=String(e)}const o=((...e)=>{const t=e.filter((e=>e)).join("&");return t?`?${t}`:""})(i,Mt(r));e.url=s+o,delete e.query}return e}function Dt(e){return null==e}var Bt={isNothing:Dt,isObject:function(e){return"object"==typeof e&&null!==e},toArray:function(e){return Array.isArray(e)?e:Dt(e)?[]:[e]},repeat:function(e,t){var r,s="";for(r=0;ra&&(t=s-a+(i=" ... ").length),r-s>a&&(r=s+a-(o=" ...").length),{str:i+e.slice(t,r).replace(/\t/g,"→")+o,pos:s-t+i.length}}function Ht(e,t){return Bt.repeat(" ",t-e.length)+e}var Vt=function(e,t){if(t=Object.create(t||null),!e.buffer)return null;t.maxLength||(t.maxLength=79),"number"!=typeof t.indent&&(t.indent=1),"number"!=typeof t.linesBefore&&(t.linesBefore=3),"number"!=typeof t.linesAfter&&(t.linesAfter=2);for(var r,s=/\r?\n|\r|\0/g,n=[0],i=[],o=-1;r=s.exec(e.buffer);)i.push(r.index),n.push(r.index+r[0].length),e.position<=r.index&&o<0&&(o=n.length-2);o<0&&(o=n.length-1);var a,l,c="",p=Math.min(e.line+t.linesAfter,i.length).toString().length,u=t.maxLength-(t.indent+p+3);for(a=1;a<=t.linesBefore&&!(o-a<0);a++)l=zt(e.buffer,n[o-a],i[o-a],e.position-(n[o]-n[o-a]),u),c=Bt.repeat(" ",t.indent)+Ht((e.line-a+1).toString(),p)+" | "+l.str+"\n"+c;for(l=zt(e.buffer,n[o],i[o],e.position,u),c+=Bt.repeat(" ",t.indent)+Ht((e.line+1).toString(),p)+" | "+l.str+"\n",c+=Bt.repeat("-",t.indent+p+3+l.pos)+"^\n",a=1;a<=t.linesAfter&&!(o+a>=i.length);a++)l=zt(e.buffer,n[o+a],i[o+a],e.position-(n[o]-n[o+a]),u),c+=Bt.repeat(" ",t.indent)+Ht((e.line+a+1).toString(),p)+" | "+l.str+"\n";return c.replace(/\n$/,"")},Wt=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],Gt=["scalar","sequence","mapping"],Jt=function(e,t){if(t=t||{},Object.keys(t).forEach((function(t){if(-1===Wt.indexOf(t))throw new Ut('Unknown option "'+t+'" is met in definition of "'+e+'" YAML type.')})),this.options=t,this.tag=e,this.kind=t.kind||null,this.resolve=t.resolve||function(){return!0},this.construct=t.construct||function(e){return e},this.instanceOf=t.instanceOf||null,this.predicate=t.predicate||null,this.represent=t.represent||null,this.representName=t.representName||null,this.defaultStyle=t.defaultStyle||null,this.multi=t.multi||!1,this.styleAliases=function(e){var t={};return null!==e&&Object.keys(e).forEach((function(r){e[r].forEach((function(e){t[String(e)]=r}))})),t}(t.styleAliases||null),-1===Gt.indexOf(this.kind))throw new Ut('Unknown kind "'+this.kind+'" is specified for "'+e+'" YAML type.')};function Kt(e,t){var r=[];return e[t].forEach((function(e){var t=r.length;r.forEach((function(r,s){r.tag===e.tag&&r.kind===e.kind&&r.multi===e.multi&&(t=s)})),r[t]=e})),r}function Yt(e){return this.extend(e)}Yt.prototype.extend=function(e){var t=[],r=[];if(e instanceof Jt)r.push(e);else if(Array.isArray(e))r=r.concat(e);else{if(!e||!Array.isArray(e.implicit)&&!Array.isArray(e.explicit))throw new Ut("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");e.implicit&&(t=t.concat(e.implicit)),e.explicit&&(r=r.concat(e.explicit))}t.forEach((function(e){if(!(e instanceof Jt))throw new Ut("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(e.loadKind&&"scalar"!==e.loadKind)throw new Ut("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(e.multi)throw new Ut("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")})),r.forEach((function(e){if(!(e instanceof Jt))throw new Ut("Specified list of YAML types (or a single Type object) contains a non-Type object.")}));var s=Object.create(Yt.prototype);return s.implicit=(this.implicit||[]).concat(t),s.explicit=(this.explicit||[]).concat(r),s.compiledImplicit=Kt(s,"implicit"),s.compiledExplicit=Kt(s,"explicit"),s.compiledTypeMap=function(){var e,t,r={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}};function s(e){e.multi?(r.multi[e.kind].push(e),r.multi.fallback.push(e)):r[e.kind][e.tag]=r.fallback[e.tag]=e}for(e=0,t=arguments.length;e=0?"0b"+e.toString(2):"-0b"+e.toString(2).slice(1)},octal:function(e){return e>=0?"0o"+e.toString(8):"-0o"+e.toString(8).slice(1)},decimal:function(e){return e.toString(10)},hexadecimal:function(e){return e>=0?"0x"+e.toString(16).toUpperCase():"-0x"+e.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),ar=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$"),lr=/^[-+]?[0-9]+e/,cr=new Jt("tag:yaml.org,2002:float",{kind:"scalar",resolve:function(e){return null!==e&&!(!ar.test(e)||"_"===e[e.length-1])},construct:function(e){var t,r;return r="-"===(t=e.replace(/_/g,"").toLowerCase())[0]?-1:1,"+-".indexOf(t[0])>=0&&(t=t.slice(1)),".inf"===t?1===r?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===t?NaN:r*parseFloat(t,10)},predicate:function(e){return"[object Number]"===Object.prototype.toString.call(e)&&(e%1!=0||Bt.isNegativeZero(e))},represent:function(e,t){var r;if(isNaN(e))switch(t){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===e)switch(t){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===e)switch(t){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(Bt.isNegativeZero(e))return"-0.0";return r=e.toString(10),lr.test(r)?r.replace("e",".e"):r},defaultStyle:"lowercase"}),pr=tr.extend({implicit:[rr,sr,or,cr]}),ur=pr,dr=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),hr=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$"),mr=new Jt("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:function(e){return null!==e&&(null!==dr.exec(e)||null!==hr.exec(e))},construct:function(e){var t,r,s,n,i,o,a,l,c=0,p=null;if(null===(t=dr.exec(e))&&(t=hr.exec(e)),null===t)throw new Error("Date resolve error");if(r=+t[1],s=+t[2]-1,n=+t[3],!t[4])return new Date(Date.UTC(r,s,n));if(i=+t[4],o=+t[5],a=+t[6],t[7]){for(c=t[7].slice(0,3);c.length<3;)c+="0";c=+c}return t[9]&&(p=6e4*(60*+t[10]+ +(t[11]||0)),"-"===t[9]&&(p=-p)),l=new Date(Date.UTC(r,s,n,i,o,a,c)),p&&l.setTime(l.getTime()-p),l},instanceOf:Date,represent:function(e){return e.toISOString()}}),fr=new Jt("tag:yaml.org,2002:merge",{kind:"scalar",resolve:function(e){return"<<"===e||null===e}}),gr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r",yr=new Jt("tag:yaml.org,2002:binary",{kind:"scalar",resolve:function(e){if(null===e)return!1;var t,r,s=0,n=e.length,i=gr;for(r=0;r64)){if(t<0)return!1;s+=6}return s%8==0},construct:function(e){var t,r,s=e.replace(/[\r\n=]/g,""),n=s.length,i=gr,o=0,a=[];for(t=0;t>16&255),a.push(o>>8&255),a.push(255&o)),o=o<<6|i.indexOf(s.charAt(t));return 0==(r=n%4*6)?(a.push(o>>16&255),a.push(o>>8&255),a.push(255&o)):18===r?(a.push(o>>10&255),a.push(o>>2&255)):12===r&&a.push(o>>4&255),new Uint8Array(a)},predicate:function(e){return"[object Uint8Array]"===Object.prototype.toString.call(e)},represent:function(e){var t,r,s="",n=0,i=e.length,o=gr;for(t=0;t>18&63],s+=o[n>>12&63],s+=o[n>>6&63],s+=o[63&n]),n=(n<<8)+e[t];return 0==(r=i%3)?(s+=o[n>>18&63],s+=o[n>>12&63],s+=o[n>>6&63],s+=o[63&n]):2===r?(s+=o[n>>10&63],s+=o[n>>4&63],s+=o[n<<2&63],s+=o[64]):1===r&&(s+=o[n>>2&63],s+=o[n<<4&63],s+=o[64],s+=o[64]),s}}),vr=Object.prototype.hasOwnProperty,br=Object.prototype.toString,xr=new Jt("tag:yaml.org,2002:omap",{kind:"sequence",resolve:function(e){if(null===e)return!0;var t,r,s,n,i,o=[],a=e;for(t=0,r=a.length;t>10),56320+(e-65536&1023))}for(var qr=new Array(256),Nr=new Array(256),Ur=0;Ur<256;Ur++)qr[Ur]=Dr(Ur)?1:0,Nr[Ur]=Dr(Ur);function zr(e,t){this.input=e,this.filename=t.filename||null,this.schema=t.schema||kr,this.onWarning=t.onWarning||null,this.legacy=t.legacy||!1,this.json=t.json||!1,this.listener=t.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=e.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function Hr(e,t){var r={name:e.filename,buffer:e.input.slice(0,-1),position:e.position,line:e.line,column:e.position-e.lineStart};return r.snippet=Vt(r),new Ut(t,r)}function Vr(e,t){throw Hr(e,t)}function Wr(e,t){e.onWarning&&e.onWarning.call(null,Hr(e,t))}var Gr={YAML:function(e,t,r){var s,n,i;null!==e.version&&Vr(e,"duplication of %YAML directive"),1!==r.length&&Vr(e,"YAML directive accepts exactly one argument"),null===(s=/^([0-9]+)\.([0-9]+)$/.exec(r[0]))&&Vr(e,"ill-formed argument of the YAML directive"),n=parseInt(s[1],10),i=parseInt(s[2],10),1!==n&&Vr(e,"unacceptable YAML version of the document"),e.version=r[0],e.checkLineBreaks=i<2,1!==i&&2!==i&&Wr(e,"unsupported YAML version of the document")},TAG:function(e,t,r){var s,n;2!==r.length&&Vr(e,"TAG directive accepts exactly two arguments"),s=r[0],n=r[1],Pr.test(s)||Vr(e,"ill-formed tag handle (first argument) of the TAG directive"),Ar.call(e.tagMap,s)&&Vr(e,'there is a previously declared suffix for "'+s+'" tag handle'),Cr.test(n)||Vr(e,"ill-formed tag prefix (second argument) of the TAG directive");try{n=decodeURIComponent(n)}catch(t){Vr(e,"tag prefix is malformed: "+n)}e.tagMap[s]=n}};function Jr(e,t,r,s){var n,i,o,a;if(t1&&(e.result+=Bt.repeat("\n",t-1))}function ts(e,t){var r,s,n=e.tag,i=e.anchor,o=[],a=!1;if(-1!==e.firstTabInLine)return!1;for(null!==e.anchor&&(e.anchorMap[e.anchor]=o),s=e.input.charCodeAt(e.position);0!==s&&(-1!==e.firstTabInLine&&(e.position=e.firstTabInLine,Vr(e,"tab characters must not be used in indentation")),45===s)&&Fr(e.input.charCodeAt(e.position+1));)if(a=!0,e.position++,Zr(e,!0,-1)&&e.lineIndent<=t)o.push(null),s=e.input.charCodeAt(e.position);else if(r=e.line,ns(e,t,3,!1,!0),o.push(e.result),Zr(e,!0,-1),s=e.input.charCodeAt(e.position),(e.line===r||e.lineIndent>t)&&0!==s)Vr(e,"bad indentation of a sequence entry");else if(e.lineIndentt?m=1:e.lineIndent===t?m=0:e.lineIndentt?m=1:e.lineIndent===t?m=0:e.lineIndentt)&&(y&&(o=e.line,a=e.lineStart,l=e.position),ns(e,t,4,!0,n)&&(y?f=e.result:g=e.result),y||(Yr(e,d,h,m,f,g,o,a,l),m=f=g=null),Zr(e,!0,-1),c=e.input.charCodeAt(e.position)),(e.line===i||e.lineIndent>t)&&0!==c)Vr(e,"bad indentation of a mapping entry");else if(e.lineIndent=0))break;0===n?Vr(e,"bad explicit indentation width of a block scalar; it cannot be less than one"):c?Vr(e,"repeat of an indentation width identifier"):(p=t+n-1,c=!0)}if(Rr(i)){do{i=e.input.charCodeAt(++e.position)}while(Rr(i));if(35===i)do{i=e.input.charCodeAt(++e.position)}while(!_r(i)&&0!==i)}for(;0!==i;){for(Xr(e),e.lineIndent=0,i=e.input.charCodeAt(e.position);(!c||e.lineIndentp&&(p=e.lineIndent),_r(i))u++;else{if(e.lineIndent0){for(n=o,i=0;n>0;n--)(o=Lr(a=e.input.charCodeAt(++e.position)))>=0?i=(i<<4)+o:Vr(e,"expected hexadecimal character");e.result+=Br(i),e.position++}else Vr(e,"unknown escape sequence");r=s=e.position}else _r(a)?(Jr(e,r,s,!0),es(e,Zr(e,!1,t)),r=s=e.position):e.position===e.lineStart&&Qr(e)?Vr(e,"unexpected end of the document within a double quoted scalar"):(e.position++,s=e.position)}Vr(e,"unexpected end of the stream within a double quoted scalar")}(e,d)?g=!0:function(e){var t,r,s;if(42!==(s=e.input.charCodeAt(e.position)))return!1;for(s=e.input.charCodeAt(++e.position),t=e.position;0!==s&&!Fr(s)&&!Mr(s);)s=e.input.charCodeAt(++e.position);return e.position===t&&Vr(e,"name of an alias node must contain at least one character"),r=e.input.slice(t,e.position),Ar.call(e.anchorMap,r)||Vr(e,'unidentified alias "'+r+'"'),e.result=e.anchorMap[r],Zr(e,!0,-1),!0}(e)?(g=!0,null===e.tag&&null===e.anchor||Vr(e,"alias node should not have any properties")):function(e,t,r){var s,n,i,o,a,l,c,p,u=e.kind,d=e.result;if(Fr(p=e.input.charCodeAt(e.position))||Mr(p)||35===p||38===p||42===p||33===p||124===p||62===p||39===p||34===p||37===p||64===p||96===p)return!1;if((63===p||45===p)&&(Fr(s=e.input.charCodeAt(e.position+1))||r&&Mr(s)))return!1;for(e.kind="scalar",e.result="",n=i=e.position,o=!1;0!==p;){if(58===p){if(Fr(s=e.input.charCodeAt(e.position+1))||r&&Mr(s))break}else if(35===p){if(Fr(e.input.charCodeAt(e.position-1)))break}else{if(e.position===e.lineStart&&Qr(e)||r&&Mr(p))break;if(_r(p)){if(a=e.line,l=e.lineStart,c=e.lineIndent,Zr(e,!1,-1),e.lineIndent>=t){o=!0,p=e.input.charCodeAt(e.position);continue}e.position=i,e.line=a,e.lineStart=l,e.lineIndent=c;break}}o&&(Jr(e,n,i,!1),es(e,e.line-a),n=i=e.position,o=!1),Rr(p)||(i=e.position+1),p=e.input.charCodeAt(++e.position)}return Jr(e,n,i,!1),!!e.result||(e.kind=u,e.result=d,!1)}(e,d,1===r)&&(g=!0,null===e.tag&&(e.tag="?")),null!==e.anchor&&(e.anchorMap[e.anchor]=e.result)):0===m&&(g=a&&ts(e,h))),null===e.tag)null!==e.anchor&&(e.anchorMap[e.anchor]=e.result);else if("?"===e.tag){for(null!==e.result&&"scalar"!==e.kind&&Vr(e,'unacceptable node kind for ! tag; it should be "scalar", not "'+e.kind+'"'),l=0,c=e.implicitTypes.length;l"),null!==e.result&&u.kind!==e.kind&&Vr(e,"unacceptable node kind for !<"+e.tag+'> tag; it should be "'+u.kind+'", not "'+e.kind+'"'),u.resolve(e.result,e.tag)?(e.result=u.construct(e.result,e.tag),null!==e.anchor&&(e.anchorMap[e.anchor]=e.result)):Vr(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")}return null!==e.listener&&e.listener("close",e),null!==e.tag||null!==e.anchor||g}function is(e){var t,r,s,n,i=e.position,o=!1;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap=Object.create(null),e.anchorMap=Object.create(null);0!==(n=e.input.charCodeAt(e.position))&&(Zr(e,!0,-1),n=e.input.charCodeAt(e.position),!(e.lineIndent>0||37!==n));){for(o=!0,n=e.input.charCodeAt(++e.position),t=e.position;0!==n&&!Fr(n);)n=e.input.charCodeAt(++e.position);for(s=[],(r=e.input.slice(t,e.position)).length<1&&Vr(e,"directive name must not be less than one character in length");0!==n;){for(;Rr(n);)n=e.input.charCodeAt(++e.position);if(35===n){do{n=e.input.charCodeAt(++e.position)}while(0!==n&&!_r(n));break}if(_r(n))break;for(t=e.position;0!==n&&!Fr(n);)n=e.input.charCodeAt(++e.position);s.push(e.input.slice(t,e.position))}0!==n&&Xr(e),Ar.call(Gr,r)?Gr[r](e,r,s):Wr(e,'unknown document directive "'+r+'"')}Zr(e,!0,-1),0===e.lineIndent&&45===e.input.charCodeAt(e.position)&&45===e.input.charCodeAt(e.position+1)&&45===e.input.charCodeAt(e.position+2)?(e.position+=3,Zr(e,!0,-1)):o&&Vr(e,"directives end mark is expected"),ns(e,e.lineIndent-1,4,!1,!0),Zr(e,!0,-1),e.checkLineBreaks&&jr.test(e.input.slice(i,e.position))&&Wr(e,"non-ASCII line breaks are interpreted as content"),e.documents.push(e.result),e.position===e.lineStart&&Qr(e)?46===e.input.charCodeAt(e.position)&&(e.position+=3,Zr(e,!0,-1)):e.position=55296&&s<=56319&&t+1=56320&&r<=57343?1024*(s-55296)+r-56320+65536:s}function Ss(e){return/^\n* /.test(e)}function Es(e,t,r,s,n){e.dump=function(){if(0===t.length)return 2===e.quotingType?'""':"''";if(!e.noCompatMode&&(-1!==ds.indexOf(t)||hs.test(t)))return 2===e.quotingType?'"'+t+'"':"'"+t+"'";var i=e.indent*Math.max(1,r),o=-1===e.lineWidth?-1:Math.max(Math.min(e.lineWidth,40),e.lineWidth-i),a=s||e.flowLevel>-1&&r>=e.flowLevel;switch(function(e,t,r,s,n,i,o,a){var l,c,p=0,u=null,d=!1,h=!1,m=-1!==s,f=-1,g=bs(c=$s(e,0))&&65279!==c&&!vs(c)&&45!==c&&63!==c&&58!==c&&44!==c&&91!==c&&93!==c&&123!==c&&125!==c&&35!==c&&38!==c&&42!==c&&33!==c&&124!==c&&61!==c&&62!==c&&39!==c&&34!==c&&37!==c&&64!==c&&96!==c&&function(e){return!vs(e)&&58!==e}($s(e,e.length-1));if(t||o)for(l=0;l=65536?l+=2:l++){if(!bs(p=$s(e,l)))return 5;g=g&&ws(p,u,a),u=p}else{for(l=0;l=65536?l+=2:l++){if(10===(p=$s(e,l)))d=!0,m&&(h=h||l-f-1>s&&" "!==e[f+1],f=l);else if(!bs(p))return 5;g=g&&ws(p,u,a),u=p}h=h||m&&l-f-1>s&&" "!==e[f+1]}return d||h?r>9&&Ss(e)?5:o?2===i?5:2:h?4:3:!g||o||n(e)?2===i?5:2:1}(t,a,e.indent,o,(function(t){return function(e,t){var r,s;for(r=0,s=e.implicitTypes.length;r"+ks(t,e.indent)+As(gs(function(e,t){for(var r,s,n,i=/(\n+)([^\n]*)/g,o=(n=-1!==(n=e.indexOf("\n"))?n:e.length,i.lastIndex=n,Os(e.slice(0,n),t)),a="\n"===e[0]||" "===e[0];s=i.exec(e);){var l=s[1],c=s[2];r=" "===c[0],o+=l+(a||r||""===c?"":"\n")+Os(c,t),a=r}return o}(t,o),i));case 5:return'"'+function(e){for(var t,r="",s=0,n=0;n=65536?n+=2:n++)s=$s(e,n),!(t=us[s])&&bs(s)?(r+=e[n],s>=65536&&(r+=e[n+1])):r+=t||ms(s);return r}(t)+'"';default:throw new Ut("impossible error: invalid scalar style")}}()}function ks(e,t){var r=Ss(e)?String(t):"",s="\n"===e[e.length-1];return r+(!s||"\n"!==e[e.length-2]&&"\n"!==e?s?"":"-":"+")+"\n"}function As(e){return"\n"===e[e.length-1]?e.slice(0,-1):e}function Os(e,t){if(""===e||" "===e[0])return e;for(var r,s,n=/ [^ ]/g,i=0,o=0,a=0,l="";r=n.exec(e);)(a=r.index)-i>t&&(s=o>i?o:a,l+="\n"+e.slice(i,s),i=s+1),o=a;return l+="\n",e.length-i>t&&o>i?l+=e.slice(i,o)+"\n"+e.slice(o+1):l+=e.slice(i),l.slice(1)}function js(e,t,r,s){var n,i,o,a="",l=e.tag;for(n=0,i=r.length;n tag resolver accepts not "'+l+'" style');s=a.represent[l](t,l)}e.dump=s}return!0}return!1}function Ps(e,t,r,s,n,i,o){e.tag=null,e.dump=r,Ts(e,r,!1)||Ts(e,r,!0);var a,l=cs.call(e.dump),c=s;s&&(s=e.flowLevel<0||e.flowLevel>t);var p,u,d="[object Object]"===l||"[object Array]"===l;if(d&&(u=-1!==(p=e.duplicates.indexOf(r))),(null!==e.tag&&"?"!==e.tag||u||2!==e.indent&&t>0)&&(n=!1),u&&e.usedDuplicates[p])e.dump="*ref_"+p;else{if(d&&u&&!e.usedDuplicates[p]&&(e.usedDuplicates[p]=!0),"[object Object]"===l)s&&0!==Object.keys(e.dump).length?(function(e,t,r,s){var n,i,o,a,l,c,p="",u=e.tag,d=Object.keys(r);if(!0===e.sortKeys)d.sort();else if("function"==typeof e.sortKeys)d.sort(e.sortKeys);else if(e.sortKeys)throw new Ut("sortKeys must be a boolean or a function");for(n=0,i=d.length;n1024)&&(e.dump&&10===e.dump.charCodeAt(0)?c+="?":c+="? "),c+=e.dump,l&&(c+=ys(e,t)),Ps(e,t+1,a,!0,l)&&(e.dump&&10===e.dump.charCodeAt(0)?c+=":":c+=": ",p+=c+=e.dump));e.tag=u,e.dump=p||"{}"}(e,t,e.dump,n),u&&(e.dump="&ref_"+p+e.dump)):(function(e,t,r){var s,n,i,o,a,l="",c=e.tag,p=Object.keys(r);for(s=0,n=p.length;s1024&&(a+="? "),a+=e.dump+(e.condenseFlow?'"':"")+":"+(e.condenseFlow?"":" "),Ps(e,t,o,!1,!1)&&(l+=a+=e.dump));e.tag=c,e.dump="{"+l+"}"}(e,t,e.dump),u&&(e.dump="&ref_"+p+" "+e.dump));else if("[object Array]"===l)s&&0!==e.dump.length?(e.noArrayIndent&&!o&&t>0?js(e,t-1,e.dump,n):js(e,t,e.dump,n),u&&(e.dump="&ref_"+p+e.dump)):(function(e,t,r){var s,n,i,o="",a=e.tag;for(s=0,n=r.length;s",e.dump=a+" "+e.dump)}return!0}function Cs(e,t){var r,s,n=[],i=[];for(Is(e,n,i),r=0,s=i.length;r(e[t]=function(e){return e.includes(", ")?e.split(", "):e}(r),e)),{})}function Ys(e,t,{loadSpec:r=!1}={}){const s={ok:e.ok,url:e.url||t,status:e.status,statusText:e.statusText,headers:Ks(e.headers)},n=s.headers["content-type"],i=r||((e="")=>/(json|xml|yaml|text)\b/.test(e))(n);return(i?e.text:e.blob||e.buffer).call(e).then((e=>{if(s.text=e,s.data=e,i)try{const t=function(e,t){return t&&(0===t.indexOf("application/json")||t.indexOf("+json")>0)?JSON.parse(e):Js.load(e)}(e,n);s.body=t,s.obj=t}catch(e){s.parseError=e}return s}))}async function Xs(e,t={}){"object"==typeof e&&(e=(t=e).url),t.headers=t.headers||{},(t=Lt(t)).headers&&Object.keys(t.headers).forEach((e=>{const r=t.headers[e];"string"==typeof r&&(t.headers[e]=r.replace(/\n+/g," "))})),t.requestInterceptor&&(t=await t.requestInterceptor(t)||t);const r=t.headers["content-type"]||t.headers["Content-Type"];let s;/multipart\/form-data/i.test(r)&&(delete t.headers["content-type"],delete t.headers["Content-Type"]);try{s=await(t.userFetch||fetch)(t.url,t),s=await Ys(s,e,t),t.responseInterceptor&&(s=await t.responseInterceptor(s)||s)}catch(e){if(!s)throw e;const t=new Error(s.statusText||`response status is ${s.status}`);throw t.status=s.status,t.statusCode=s.status,t.responseError=e,t}if(!s.ok){const e=new Error(s.statusText||`response status is ${s.status}`);throw e.status=s.status,e.statusCode=s.status,e.response=s,e}return s}function Zs(e,t={}){const{requestInterceptor:r,responseInterceptor:s}=t,n=e.withCredentials?"include":"same-origin";return t=>e({url:t,loadSpec:!0,requestInterceptor:r,responseInterceptor:s,headers:{Accept:"application/json, application/yaml"},credentials:n}).then((e=>e.body))}const Qs=e=>{var t,r;const{baseDoc:s,url:n}=e,i=null!==(t=null!=s?s:n)&&void 0!==t?t:"";return"string"==typeof(null===(r=globalThis.document)||void 0===r?void 0:r.baseURI)?String(new URL(i,globalThis.document.baseURI)):i},en=e=>{const{fetch:t,http:r}=e;return t||r||Xs};var tn,rn=(tn=function(e,t){return tn=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])},tn(e,t)},function(e,t){function r(){this.constructor=e}tn(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),sn=Object.prototype.hasOwnProperty;function nn(e,t){return sn.call(e,t)}function on(e){if(Array.isArray(e)){for(var t=new Array(e.length),r=0;r=48&&t<=57))return!1;r++}return!0}function cn(e){return-1===e.indexOf("/")&&-1===e.indexOf("~")?e:e.replace(/~/g,"~0").replace(/\//g,"~1")}function pn(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}function un(e){if(void 0===e)return!0;if(e)if(Array.isArray(e)){for(var t=0,r=e.length;t0&&"constructor"==a[c-1]))throw new TypeError("JSON-Patch: modifying `__proto__` or `constructor/prototype` prop is banned for security reasons, if this was on purpose, please set `banPrototypeModifications` flag false and pass it to this function. More info in fast-json-patch README");if(r&&void 0===u&&(void 0===l[d]?u=a.slice(0,c).join("/"):c==p-1&&(u=t.path),void 0!==u&&h(t,0,e,u)),c++,Array.isArray(l)){if("-"===d)d=l.length;else{if(r&&!ln(d))throw new mn("Expected an unsigned base-10 integer value, making the new referenced value the array element with the zero-based index","OPERATION_PATH_ILLEGAL_ARRAY_INDEX",i,t,e);ln(d)&&(d=~~d)}if(c>=p){if(r&&"add"===t.op&&d>l.length)throw new mn("The specified index MUST NOT be greater than the number of elements in the array","OPERATION_VALUE_OUT_OF_BOUNDS",i,t,e);if(!1===(o=yn[t.op].call(t,l,d,e)).test)throw new mn("Test operation failed","TEST_OPERATION_FAILED",i,t,e);return o}}else if(c>=p){if(!1===(o=gn[t.op].call(t,l,d,e)).test)throw new mn("Test operation failed","TEST_OPERATION_FAILED",i,t,e);return o}if(l=l[d],r&&c0)throw new mn('Operation `path` property must start with "/"',"OPERATION_PATH_INVALID",t,e,r);if(("move"===e.op||"copy"===e.op)&&"string"!=typeof e.from)throw new mn("Operation `from` property is not present (applicable in `move` and `copy` operations)","OPERATION_FROM_REQUIRED",t,e,r);if(("add"===e.op||"replace"===e.op||"test"===e.op)&&void 0===e.value)throw new mn("Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)","OPERATION_VALUE_REQUIRED",t,e,r);if(("add"===e.op||"replace"===e.op||"test"===e.op)&&un(e.value))throw new mn("Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)","OPERATION_VALUE_CANNOT_CONTAIN_UNDEFINED",t,e,r);if(r)if("add"==e.op){var n=e.path.split("/").length,i=s.split("/").length;if(n!==i+1&&n!==i)throw new mn("Cannot perform an `add` operation at the desired path","OPERATION_PATH_CANNOT_ADD",t,e,r)}else if("replace"===e.op||"remove"===e.op||"_get"===e.op){if(e.path!==s)throw new mn("Cannot perform the operation at a path that does not exist","OPERATION_PATH_UNRESOLVABLE",t,e,r)}else if("move"===e.op||"copy"===e.op){var o=$n([{op:"_get",path:e.from,value:void 0}],r);if(o&&"OPERATION_PATH_UNRESOLVABLE"===o.name)throw new mn("Cannot perform the operation from a path that does not exist","OPERATION_FROM_UNRESOLVABLE",t,e,r)}}function $n(e,t,r){try{if(!Array.isArray(e))throw new mn("Patch sequence must be an array","SEQUENCE_NOT_AN_ARRAY");if(t)xn(an(t),an(e),r||!0);else{r=r||wn;for(var s=0;s0&&(e.patches=[],e.callback&&e.callback(s)),s}function Tn(e,t,r,s,n){if(t!==e){"function"==typeof t.toJSON&&(t=t.toJSON());for(var i=on(t),o=on(e),a=!1,l=o.length-1;l>=0;l--){var c=e[u=o[l]];if(!nn(t,u)||void 0===t[u]&&void 0!==c&&!1===Array.isArray(t))Array.isArray(e)===Array.isArray(t)?(n&&r.push({op:"test",path:s+"/"+cn(u),value:an(c)}),r.push({op:"remove",path:s+"/"+cn(u)}),a=!0):(n&&r.push({op:"test",path:s,value:e}),r.push({op:"replace",path:s,value:t}));else{var p=t[u];"object"==typeof c&&null!=c&&"object"==typeof p&&null!=p&&Array.isArray(c)===Array.isArray(p)?Tn(c,p,r,s+"/"+cn(u),n):c!==p&&(n&&r.push({op:"test",path:s+"/"+cn(u),value:an(c)}),r.push({op:"replace",path:s+"/"+cn(u),value:an(p)}))}}if(a||i.length!=o.length)for(l=0;lvoid 0!==t&&e?e[t]:e),e)},applyPatch:function(e,t,r){if(r=r||{},"merge"===(t={...t,path:t.path&&Nn(t.path)}).op){const r=ti(e,t.path);Object.assign(r,t.value),xn(e,[Un(t.path,r)])}else if("mergeDeep"===t.op){const r=ti(e,t.path),s=Bn(r,t.value);e=xn(e,[Un(t.path,s)]).newDocument}else if("add"===t.op&&""===t.path&&Kn(t.value)){const r=Object.keys(t.value).reduce(((e,r)=>(e.push({op:"add",path:`/${Nn(r)}`,value:t.value[r]}),e)),[]);xn(e,r)}else if("replace"===t.op&&""===t.path){let{value:s}=t;r.allowMetaPatches&&t.meta&&Qn(t)&&(Array.isArray(t.value)||Kn(t.value))&&(s={...s,...t.meta}),e=s}else if(xn(e,[t]),r.allowMetaPatches&&t.meta&&Qn(t)&&(Array.isArray(t.value)||Kn(t.value))){const r={...ti(e,t.path),...t.meta};xn(e,[Un(t.path,r)])}return e},parentPathMatch:function(e,t){if(!Array.isArray(t))return!1;for(let r=0,s=t.length;r(e+"").replace(/~/g,"~0").replace(/\//g,"~1"))).join("/")}`:e}function Un(e,t,r){return{op:"replace",path:e,value:t,meta:r}}function zn(e,t,r){return Jn(Gn(e.filter(Qn).map((e=>t(e.value,r,e.path)))||[]))}function Hn(e,t,r){return r=r||[],Array.isArray(e)?e.map(((e,s)=>Hn(e,t,r.concat(s)))):Kn(e)?Object.keys(e).map((s=>Hn(e[s],t,r.concat(s)))):t(e,r[r.length-1],r)}function Vn(e,t,r){let s=[];if((r=r||[]).length>0){const n=t(e,r[r.length-1],r);n&&(s=s.concat(n))}if(Array.isArray(e)){const n=e.map(((e,s)=>Vn(e,t,r.concat(s))));n&&(s=s.concat(n))}else if(Kn(e)){const n=Object.keys(e).map((s=>Vn(e[s],t,r.concat(s))));n&&(s=s.concat(n))}return s=Gn(s),s}function Wn(e){return Array.isArray(e)?e:[e]}function Gn(e){return[].concat(...e.map((e=>Array.isArray(e)?Gn(e):e)))}function Jn(e){return e.filter((e=>void 0!==e))}function Kn(e){return e&&"object"==typeof e}function Yn(e){return e&&"function"==typeof e}function Xn(e){if(ei(e)){const{op:t}=e;return"add"===t||"remove"===t||"replace"===t}return!1}function Zn(e){return Xn(e)||ei(e)&&"mutation"===e.type}function Qn(e){return Zn(e)&&("add"===e.op||"replace"===e.op||"merge"===e.op||"mergeDeep"===e.op)}function ei(e){return e&&"object"==typeof e}function ti(e,t){try{return vn(e,t)}catch(e){return console.error(e),{}}}var ri=function(e){return e&&e.Math===Math&&e},si=ri("object"==typeof globalThis&&globalThis)||ri("object"==typeof window&&window)||ri("object"==typeof self&&self)||ri("object"==typeof global&&global)||ri(!1)||function(){return this}()||Function("return this")(),ni=function(e){try{return!!e()}catch(e){return!0}},ii=!ni((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")})),oi=ii,ai=Function.prototype,li=ai.apply,ci=ai.call,pi="object"==typeof Reflect&&Reflect.apply||(oi?ci.bind(li):function(){return ci.apply(li,arguments)}),ui=ii,di=Function.prototype,hi=di.call,mi=ui&&di.bind.bind(hi,hi),fi=ui?mi:function(e){return function(){return hi.apply(e,arguments)}},gi=fi,yi=gi({}.toString),vi=gi("".slice),bi=function(e){return vi(yi(e),8,-1)},xi=bi,wi=fi,$i=function(e){if("Function"===xi(e))return wi(e)},Si="object"==typeof document&&document.all,Ei=void 0===Si&&void 0!==Si?function(e){return"function"==typeof e||e===Si}:function(e){return"function"==typeof e},ki={},Ai=!ni((function(){return 7!==Object.defineProperty({},1,{get:function(){return 7}})[1]})),Oi=ii,ji=Function.prototype.call,Ti=Oi?ji.bind(ji):function(){return ji.apply(ji,arguments)},Pi={},Ci={}.propertyIsEnumerable,Ii=Object.getOwnPropertyDescriptor,_i=Ii&&!Ci.call({1:2},1);Pi.f=_i?function(e){var t=Ii(this,e);return!!t&&t.enumerable}:Ci;var Ri,Fi,Mi=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},Li=ni,Di=bi,Bi=Object,qi=fi("".split),Ni=Li((function(){return!Bi("z").propertyIsEnumerable(0)}))?function(e){return"String"===Di(e)?qi(e,""):Bi(e)}:Bi,Ui=function(e){return null==e},zi=Ui,Hi=TypeError,Vi=function(e){if(zi(e))throw new Hi("Can't call method on "+e);return e},Wi=Ni,Gi=Vi,Ji=function(e){return Wi(Gi(e))},Ki=Ei,Yi=function(e){return"object"==typeof e?null!==e:Ki(e)},Xi={},Zi=Xi,Qi=si,eo=Ei,to=function(e){return eo(e)?e:void 0},ro=function(e,t){return arguments.length<2?to(Zi[e])||to(Qi[e]):Zi[e]&&Zi[e][t]||Qi[e]&&Qi[e][t]},so=fi({}.isPrototypeOf),no=si.navigator,io=no&&no.userAgent,oo=si,ao=io?String(io):"",lo=oo.process,co=oo.Deno,po=lo&&lo.versions||co&&co.version,uo=po&&po.v8;uo&&(Fi=(Ri=uo.split("."))[0]>0&&Ri[0]<4?1:+(Ri[0]+Ri[1])),!Fi&&ao&&(!(Ri=ao.match(/Edge\/(\d+)/))||Ri[1]>=74)&&(Ri=ao.match(/Chrome\/(\d+)/))&&(Fi=+Ri[1]);var ho=Fi,mo=ni,fo=si.String,go=!!Object.getOwnPropertySymbols&&!mo((function(){var e=Symbol("symbol detection");return!fo(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&ho&&ho<41})),yo=go&&!Symbol.sham&&"symbol"==typeof Symbol.iterator,vo=ro,bo=Ei,xo=so,wo=Object,$o=yo?function(e){return"symbol"==typeof e}:function(e){var t=vo("Symbol");return bo(t)&&xo(t.prototype,wo(e))},So=String,Eo=function(e){try{return So(e)}catch(e){return"Object"}},ko=Ei,Ao=Eo,Oo=TypeError,jo=function(e){if(ko(e))return e;throw new Oo(Ao(e)+" is not a function")},To=jo,Po=Ui,Co=function(e,t){var r=e[t];return Po(r)?void 0:To(r)},Io=Ti,_o=Ei,Ro=Yi,Fo=TypeError,Mo={exports:{}},Lo=si,Do=Object.defineProperty,Bo=si,qo=Mo.exports=Bo.o||function(e,t){try{Do(Lo,e,{value:t,configurable:!0,writable:!0})}catch(r){Lo[e]=t}return t}("__core-js_shared__",{});(qo.versions||(qo.versions=[])).push({version:"3.38.1",mode:"pure",copyright:"© 2014-2024 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.38.1/LICENSE",source:"https://github.com/zloirock/core-js"});var No=Mo.exports,Uo=No,zo=function(e,t){return Uo[e]||(Uo[e]=t||{})},Ho=Vi,Vo=Object,Wo=function(e){return Vo(Ho(e))},Go=Wo,Jo=fi({}.hasOwnProperty),Ko=Object.hasOwn||function(e,t){return Jo(Go(e),t)},Yo=fi,Xo=0,Zo=Math.random(),Qo=Yo(1..toString),ea=function(e){return"Symbol("+(void 0===e?"":e)+")_"+Qo(++Xo+Zo,36)},ta=zo,ra=Ko,sa=ea,na=go,ia=yo,oa=si.Symbol,aa=ta("wks"),la=ia?oa.for||oa:oa&&oa.withoutSetter||sa,ca=function(e){return ra(aa,e)||(aa[e]=na&&ra(oa,e)?oa[e]:la("Symbol."+e)),aa[e]},pa=Ti,ua=Yi,da=$o,ha=Co,ma=TypeError,fa=ca("toPrimitive"),ga=function(e,t){if(!ua(e)||da(e))return e;var r,s=ha(e,fa);if(s){if(void 0===t&&(t="default"),r=pa(s,e,t),!ua(r)||da(r))return r;throw new ma("Can't convert object to primitive value")}return void 0===t&&(t="number"),function(e,t){var r,s;if("string"===t&&_o(r=e.toString)&&!Ro(s=Io(r,e)))return s;if(_o(r=e.valueOf)&&!Ro(s=Io(r,e)))return s;if("string"!==t&&_o(r=e.toString)&&!Ro(s=Io(r,e)))return s;throw new Fo("Can't convert object to primitive value")}(e,t)},ya=$o,va=function(e){var t=ga(e,"string");return ya(t)?t:t+""},ba=Yi,xa=si.document,wa=ba(xa)&&ba(xa.createElement),$a=function(e){return wa?xa.createElement(e):{}},Sa=$a,Ea=!Ai&&!ni((function(){return 7!==Object.defineProperty(Sa("div"),"a",{get:function(){return 7}}).a})),ka=Ai,Aa=Ti,Oa=Pi,ja=Mi,Ta=Ji,Pa=va,Ca=Ko,Ia=Ea,_a=Object.getOwnPropertyDescriptor;ki.f=ka?_a:function(e,t){if(e=Ta(e),t=Pa(t),Ia)try{return _a(e,t)}catch(e){}if(Ca(e,t))return ja(!Aa(Oa.f,e,t),e[t])};var Ra=ni,Fa=Ei,Ma=/#|\.prototype\./,La=function(e,t){var r=Ba[Da(e)];return r===Na||r!==qa&&(Fa(t)?Ra(t):!!t)},Da=La.normalize=function(e){return String(e).replace(Ma,".").toLowerCase()},Ba=La.data={},qa=La.NATIVE="N",Na=La.POLYFILL="P",Ua=La,za=jo,Ha=ii,Va=$i($i.bind),Wa=function(e,t){return za(e),void 0===t?e:Ha?Va(e,t):function(){return e.apply(t,arguments)}},Ga={},Ja=Ai&&ni((function(){return 42!==Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype})),Ka=Yi,Ya=String,Xa=TypeError,Za=function(e){if(Ka(e))return e;throw new Xa(Ya(e)+" is not an object")},Qa=Ai,el=Ea,tl=Ja,rl=Za,sl=va,nl=TypeError,il=Object.defineProperty,ol=Object.getOwnPropertyDescriptor;Ga.f=Qa?tl?function(e,t,r){if(rl(e),t=sl(t),rl(r),"function"==typeof e&&"prototype"===t&&"value"in r&&"writable"in r&&!r.writable){var s=ol(e,t);s&&s.writable&&(e[t]=r.value,r={configurable:"configurable"in r?r.configurable:s.configurable,enumerable:"enumerable"in r?r.enumerable:s.enumerable,writable:!1})}return il(e,t,r)}:il:function(e,t,r){if(rl(e),t=sl(t),rl(r),el)try{return il(e,t,r)}catch(e){}if("get"in r||"set"in r)throw new nl("Accessors not supported");return"value"in r&&(e[t]=r.value),e};var al=Ga,ll=Mi,cl=Ai?function(e,t,r){return al.f(e,t,ll(1,r))}:function(e,t,r){return e[t]=r,e},pl=si,ul=pi,dl=$i,hl=Ei,ml=ki.f,fl=Ua,gl=Xi,yl=Wa,vl=cl,bl=Ko,xl=function(e){var t=function(r,s,n){if(this instanceof t){switch(arguments.length){case 0:return new e;case 1:return new e(r);case 2:return new e(r,s)}return new e(r,s,n)}return ul(e,this,arguments)};return t.prototype=e.prototype,t},wl=function(e,t){var r,s,n,i,o,a,l,c,p,u=e.target,d=e.global,h=e.stat,m=e.proto,f=d?pl:h?pl[u]:pl[u]&&pl[u].prototype,g=d?gl:gl[u]||vl(gl,u,{})[u],y=g.prototype;for(i in t)s=!(r=fl(d?i:u+(h?".":"#")+i,e.forced))&&f&&bl(f,i),a=g[i],s&&(l=e.dontCallGetSet?(p=ml(f,i))&&p.value:f[i]),o=s&&l?l:t[i],(r||m||typeof a!=typeof o)&&(c=e.bind&&s?yl(o,pl):e.wrap&&s?xl(o):m&&hl(o)?dl(o):o,(e.sham||o&&o.sham||a&&a.sham)&&vl(c,"sham",!0),vl(g,i,c),m&&(bl(gl,n=u+"Prototype")||vl(gl,n,{}),vl(gl[n],i,o),e.real&&y&&(r||!y[i])&&vl(y,i,o)))},$l=ea,Sl=zo("keys"),El=function(e){return Sl[e]||(Sl[e]=$l(e))},kl=!ni((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype})),Al=Ko,Ol=Ei,jl=Wo,Tl=kl,Pl=El("IE_PROTO"),Cl=Object,Il=Cl.prototype,_l=Tl?Cl.getPrototypeOf:function(e){var t=jl(e);if(Al(t,Pl))return t[Pl];var r=t.constructor;return Ol(r)&&t instanceof r?r.prototype:t instanceof Cl?Il:null},Rl=fi,Fl=jo,Ml=Yi,Ll=String,Dl=TypeError,Bl=Yi,ql=Vi,Nl=function(e){if(function(e){return Ml(e)||null===e}(e))return e;throw new Dl("Can't set "+Ll(e)+" as a prototype")},Ul=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,r={};try{(e=function(e,t,r){try{return Rl(Fl(Object.getOwnPropertyDescriptor(e,t)[r]))}catch(e){}}(Object.prototype,"__proto__","set"))(r,[]),t=r instanceof Array}catch(e){}return function(r,s){return ql(r),Nl(s),Bl(r)?(t?e(r,s):r.__proto__=s,r):r}}():void 0),zl={},Hl=Math.ceil,Vl=Math.floor,Wl=Math.trunc||function(e){var t=+e;return(t>0?Vl:Hl)(t)},Gl=function(e){var t=+e;return t!=t||0===t?0:Wl(t)},Jl=Gl,Kl=Math.max,Yl=Math.min,Xl=Gl,Zl=Math.min,Ql=function(e){return function(e){var t=Xl(e);return t>0?Zl(t,9007199254740991):0}(e.length)},ec=Ji,tc=Ql,rc=function(e){return function(t,r,s){var n=ec(t),i=tc(n);if(0===i)return!e&&-1;var o,a=function(e,t){var r=Jl(e);return r<0?Kl(r+t,0):Yl(r,t)}(s,i);if(e&&r!=r){for(;i>a;)if((o=n[a++])!=o)return!0}else for(;i>a;a++)if((e||a in n)&&n[a]===r)return e||a||0;return!e&&-1}},sc={includes:rc(!0),indexOf:rc(!1)},nc={},ic=Ko,oc=Ji,ac=sc.indexOf,lc=nc,cc=fi([].push),pc=function(e,t){var r,s=oc(e),n=0,i=[];for(r in s)!ic(lc,r)&&ic(s,r)&&cc(i,r);for(;t.length>n;)ic(s,r=t[n++])&&(~ac(i,r)||cc(i,r));return i},uc=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],dc=pc,hc=uc.concat("length","prototype");zl.f=Object.getOwnPropertyNames||function(e){return dc(e,hc)};var mc={};mc.f=Object.getOwnPropertySymbols;var fc=ro,gc=zl,yc=mc,vc=Za,bc=fi([].concat),xc=fc("Reflect","ownKeys")||function(e){var t=gc.f(vc(e)),r=yc.f;return r?bc(t,r(e)):t},wc=Ko,$c=xc,Sc=ki,Ec=Ga,kc=function(e,t,r){for(var s=$c(t),n=Ec.f,i=Sc.f,o=0;oo;)Ic.f(e,r=n[o++],s[r]);return e};var Mc,Lc=ro("document","documentElement"),Dc=Za,Bc=Ac,qc=uc,Nc=nc,Uc=Lc,zc=$a,Hc=El("IE_PROTO"),Vc=function(){},Wc=function(e){return" - - - - - -
    - - - \ No newline at end of file diff --git a/docs/examples-theme/cssparts-btn.html b/docs/examples-theme/cssparts-btn.html deleted file mode 100644 index f5077bf97..000000000 --- a/docs/examples-theme/cssparts-btn.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/examples-theme/cssparts-nav1.html b/docs/examples-theme/cssparts-nav1.html deleted file mode 100644 index a13d11765..000000000 --- a/docs/examples-theme/cssparts-nav1.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/examples-theme/cssparts-nav2.html b/docs/examples-theme/cssparts-nav2.html deleted file mode 100644 index f355360f0..000000000 --- a/docs/examples-theme/cssparts-nav2.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/examples-theme/cssparts-servers.html b/docs/examples-theme/cssparts-servers.html deleted file mode 100644 index 2e01a2647..000000000 --- a/docs/examples-theme/cssparts-servers.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/examples-theme/load-rapidoc-and-other-common-scripts.js b/docs/examples-theme/load-rapidoc-and-other-common-scripts.js deleted file mode 100644 index 89de33442..000000000 --- a/docs/examples-theme/load-rapidoc-and-other-common-scripts.js +++ /dev/null @@ -1,34 +0,0 @@ -(function loadRapidocAndOtherCommonScripts() { - // Google Analytics - const gaScript = document.createElement('script'); - gaScript.async = true; - gaScript.src = 'https://www.googletagmanager.com/gtag/js?id=UA-132775238-1'; - document.head.appendChild(gaScript); - - window.dataLayer = window.dataLayer || []; - function gtag() { - // eslint-disable-next-line prefer-rest-params - window.dataLayer.push(arguments); - } - gtag('js', new Date()); - gtag('config', 'UA-132775238-1'); - - // Include common StyleSheet used in all the examples - const linkStylesheet = document.createElement('link'); - linkStylesheet.setAttribute('href', '../index.css'); - linkStylesheet.setAttribute('rel', 'stylesheet'); - document.head.appendChild(linkStylesheet); - - // Load RapiDoc based on Mode (In local host load ) - const isDev = window.location.hostname === 'localhost' || window.location.hostname === '127.0.0.1'; - const script = document.createElement('script'); - script.type = 'module'; - - if (isDev) { - script.src = '../rapidoc-min.js'; - } else { - // In production, use the built file - script.src = '../rapidoc-min.js'; - } - document.head.appendChild(script); -}()); diff --git a/docs/examples/OA-3.1.html b/docs/examples/OA-3.1.html deleted file mode 100644 index 20f18b53b..000000000 --- a/docs/examples/OA-3.1.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - -
    -
    -
    Allow TRY
    -
    - - -
    - -
    Schema Style
    -
    - - -
    -
    -
    -
    - - diff --git a/docs/examples/additional-props.html b/docs/examples/additional-props.html deleted file mode 100644 index dcdaaf86a..000000000 --- a/docs/examples/additional-props.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/docs/examples/allof.html b/docs/examples/allof.html deleted file mode 100644 index 8325d298a..000000000 --- a/docs/examples/allof.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/docs/examples/anyof.html b/docs/examples/anyof.html deleted file mode 100644 index 20ba33ea7..000000000 --- a/docs/examples/anyof.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/docs/examples/api-demo.html b/docs/examples/api-demo.html deleted file mode 100644 index 8c99ddf97..000000000 --- a/docs/examples/api-demo.html +++ /dev/null @@ -1,283 +0,0 @@ - - - - - - - - - - - -
    -
    - - - - - -
    - - diff --git a/docs/examples/api-key.html b/docs/examples/api-key.html deleted file mode 100644 index a47107472..000000000 --- a/docs/examples/api-key.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - -
    - - - -
    -
    - - \ No newline at end of file diff --git a/docs/examples/arrange-by-tags.html b/docs/examples/arrange-by-tags.html deleted file mode 100644 index d0e47da81..000000000 --- a/docs/examples/arrange-by-tags.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/docs/examples/array-and-object-nesting.html b/docs/examples/array-and-object-nesting.html deleted file mode 100644 index 94bca2882..000000000 --- a/docs/examples/array-and-object-nesting.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - -
    - - -
    -
    - - \ No newline at end of file diff --git a/docs/examples/auth-test1.html b/docs/examples/auth-test1.html deleted file mode 100644 index 83b918f74..000000000 --- a/docs/examples/auth-test1.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - - - - - - -
    -
    - - - - - - - - - - - - -
    HTTP Basic - - - - -
    API Key - - - -
    -
    -
    -
    - - - - \ No newline at end of file diff --git a/docs/examples/auth.html b/docs/examples/auth.html deleted file mode 100644 index b4faf0c36..000000000 --- a/docs/examples/auth.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - - - - -
    -
    -
    Allow TRY
    -
    - - -
    -
    -
    - -
    -
    -

    Programmatically Applying Security and Setting a API Server

    -
    - *This section is not RapiDoc generated. It is user injected HTML/JS into a <slot> element to demonstrate how to programatically apply security keys -
    - -
    - RapiDoc provides you with two helper methods which you can use to supply security keys programatically. You can use one of these method based on the security scheme type -
    - - - - -
    SCHEME-TYPEMETHOD USED TO UPDATE
    basicsetHttpUserNameAndPassword('http-basic', 'newUserName', 'newPassword')
    other than basicsetApiKey('api_key1', 'newApiToken')
    - -
    - The table below list all the scurity schemes included in this spec. Check the corrosponding method that can be used to supply an access-token -
    - - - - - - - - - - - -
    SECURITY SCHEMESCHEME TYPEMETHOD USED TO UPDATE
    http-basic basic setHttpUserNameAndPassword('http-basic', 'newUserName', 'newPassword')
    http-bearer (not-specified) setApiKey('http-bearer-a', 'newToken')
    http-bearer (not-specified) setApiKey('http-bearer-b', 'newToken')
    api_key1 (not-specified) setApiKey('api_key1', 'newToken')
    api_key2 (not-specified) setApiKey('api_key2', 'newToken')
    ms-oauth (not-specified) setApiKey('ms-oauth', 'newToken')
    api_key_cookie (not-specified) (wont work as this scheme sends api-key in a cookie, and rapidoc dont create/read cookies)
    - -
    - Below form is used for taking user input and apply the security key using javascipt -
    - - - - - - - - - - - - -
    HTTP Basic - - - - -
    HTTP Bearer / API Key - - - - -
    -
    -
    - Below form is used for programmatically setting the API server -
    -
    Use setApiServer(serverUrl) methode to set the API Server
    - - - - - - -
    API Server Url - -
    -
    -
    -
    - - - - \ No newline at end of file diff --git a/docs/examples/badges.html b/docs/examples/badges.html deleted file mode 100644 index dade30be7..000000000 --- a/docs/examples/badges.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - -
    - - -
    -
    - - diff --git a/docs/examples/binary-response.html b/docs/examples/binary-response.html deleted file mode 100644 index c076221ee..000000000 --- a/docs/examples/binary-response.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/examples/callback.html b/docs/examples/callback.html deleted file mode 100644 index 0243a4999..000000000 --- a/docs/examples/callback.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - -
    -
    Render Style
    - - -
    -
    - - \ No newline at end of file diff --git a/docs/examples/circular.html b/docs/examples/circular.html deleted file mode 100644 index e4bd0ab95..000000000 --- a/docs/examples/circular.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/docs/examples/code-highlight.html b/docs/examples/code-highlight.html deleted file mode 100644 index c5cee3260..000000000 --- a/docs/examples/code-highlight.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - -
    - - -
    -
    - - \ No newline at end of file diff --git a/docs/examples/code-samples.html b/docs/examples/code-samples.html deleted file mode 100644 index c92798490..000000000 --- a/docs/examples/code-samples.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - diff --git a/docs/examples/collapsable-focused.html b/docs/examples/collapsable-focused.html deleted file mode 100644 index 06ee63d98..000000000 --- a/docs/examples/collapsable-focused.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - -
    - Use scrollToPath(path:string) method to goto : -
    -
    - - - -
    -
    - - \ No newline at end of file diff --git a/docs/examples/collapsable.html b/docs/examples/collapsable.html deleted file mode 100644 index feaa19fe5..000000000 --- a/docs/examples/collapsable.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - -
    - Use scrollToPath(path:string) method to goto : - - - -
    -
    - - \ No newline at end of file diff --git a/docs/examples/components.html b/docs/examples/components.html deleted file mode 100644 index 8c04964ab..000000000 --- a/docs/examples/components.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/docs/examples/data-types-simple.html b/docs/examples/data-types-simple.html deleted file mode 100644 index 0a7ccde24..000000000 --- a/docs/examples/data-types-simple.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/docs/examples/data-types.html b/docs/examples/data-types.html deleted file mode 100644 index 4b49b2236..000000000 --- a/docs/examples/data-types.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - -
    -
    -
    Allow TRY
    -
    - - -
    - -
    Schema Style
    -
    - - -
    -
    -
    -
    - - \ No newline at end of file diff --git a/docs/examples/deprecated-test.html b/docs/examples/deprecated-test.html deleted file mode 100644 index 6a299e1c5..000000000 --- a/docs/examples/deprecated-test.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
    -
    Schema Display Style
    -
    - - -
    -
    -
    - - \ No newline at end of file diff --git a/docs/examples/dynamic-form-params.html b/docs/examples/dynamic-form-params.html deleted file mode 100644 index 026af1d33..000000000 --- a/docs/examples/dynamic-form-params.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/docs/examples/dynamic-query-params.html b/docs/examples/dynamic-query-params.html deleted file mode 100644 index da8b0a364..000000000 --- a/docs/examples/dynamic-query-params.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/docs/examples/events.html b/docs/examples/events.html deleted file mode 100644 index 9352bf49f..000000000 --- a/docs/examples/events.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/examples/example-with-nested-refs.html b/docs/examples/example-with-nested-refs.html deleted file mode 100644 index ab5a9efa9..000000000 --- a/docs/examples/example-with-nested-refs.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/docs/examples/example1.html b/docs/examples/example1.html deleted file mode 100644 index d4440fda9..000000000 --- a/docs/examples/example1.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/docs/examples/example100.html b/docs/examples/example100.html deleted file mode 100644 index 9dcd89d2b..000000000 --- a/docs/examples/example100.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - -
    -
    - - \ No newline at end of file diff --git a/docs/examples/example2.html b/docs/examples/example2.html deleted file mode 100644 index 20765b324..000000000 --- a/docs/examples/example2.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/docs/examples/example3.html b/docs/examples/example3.html deleted file mode 100644 index 0f44044b8..000000000 --- a/docs/examples/example3.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/docs/examples/example4.html b/docs/examples/example4.html deleted file mode 100644 index e34bd4526..000000000 --- a/docs/examples/example4.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - -
    -

    The quick brown fox jumps over the lazy dog.

    -

    The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.

    -
    -
    -
    -

    The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.

    -

    The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.

    -

    The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.

    -

    The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.

    -
    - - -
    - - \ No newline at end of file diff --git a/docs/examples/example8.html b/docs/examples/example8.html deleted file mode 100644 index 2abed5329..000000000 --- a/docs/examples/example8.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - -
    - - - -
    -
    - - \ No newline at end of file diff --git a/docs/examples/example9.html b/docs/examples/example9.html deleted file mode 100644 index 81561f701..000000000 --- a/docs/examples/example9.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/examples/examples-multiple.html b/docs/examples/examples-multiple.html deleted file mode 100644 index 292d1595d..000000000 --- a/docs/examples/examples-multiple.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/docs/examples/external-refs.html b/docs/examples/external-refs.html deleted file mode 100644 index dcae9fc08..000000000 --- a/docs/examples/external-refs.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/docs/examples/file-upload.html b/docs/examples/file-upload.html deleted file mode 100644 index 0525e5c25..000000000 --- a/docs/examples/file-upload.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/docs/examples/file.md b/docs/examples/file.md deleted file mode 100644 index 0ed9104e6..000000000 --- a/docs/examples/file.md +++ /dev/null @@ -1,6 +0,0 @@ -description: | - # Heading 1 - Some text - - # Heading 2 - Some text \ No newline at end of file diff --git a/docs/examples/fill-example-test.html b/docs/examples/fill-example-test.html deleted file mode 100644 index 9071fe491..000000000 --- a/docs/examples/fill-example-test.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/docs/examples/focused-mode.html b/docs/examples/focused-mode.html deleted file mode 100644 index 03ec54cf9..000000000 --- a/docs/examples/focused-mode.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/docs/examples/font-size.html b/docs/examples/font-size.html deleted file mode 100644 index f3ae9548f..000000000 --- a/docs/examples/font-size.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
    -
    -
    Font Size
    -
    - - - -
    -
    -
    -
    - - \ No newline at end of file diff --git a/docs/examples/font.html b/docs/examples/font.html deleted file mode 100644 index c4c9d0d92..000000000 --- a/docs/examples/font.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - -
    -
    -
    Font
    -
    - - -
    -
    -
    -
    - - \ No newline at end of file diff --git a/docs/examples/header-as-object.html b/docs/examples/header-as-object.html deleted file mode 100644 index d7db447f0..000000000 --- a/docs/examples/header-as-object.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/docs/examples/hide-read-only-write-only.html b/docs/examples/hide-read-only-write-only.html deleted file mode 100644 index f7337cc0f..000000000 --- a/docs/examples/hide-read-only-write-only.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - - - -
    - -
    -
    - Hide ReadOnly properties: -
    - - - - -
    -
    - -
    - Hide WriteOnly properties: -
    - -
    -
    -
    - - diff --git a/docs/examples/links.html b/docs/examples/links.html deleted file mode 100644 index 7d01e3cb4..000000000 --- a/docs/examples/links.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - -
    -
    -
    - RapiDoc  |  - Get Users -
    -
    -
    - - - - - \ No newline at end of file diff --git a/docs/examples/load-rapidoc-and-other-common-scripts.js b/docs/examples/load-rapidoc-and-other-common-scripts.js deleted file mode 100644 index 89de33442..000000000 --- a/docs/examples/load-rapidoc-and-other-common-scripts.js +++ /dev/null @@ -1,34 +0,0 @@ -(function loadRapidocAndOtherCommonScripts() { - // Google Analytics - const gaScript = document.createElement('script'); - gaScript.async = true; - gaScript.src = 'https://www.googletagmanager.com/gtag/js?id=UA-132775238-1'; - document.head.appendChild(gaScript); - - window.dataLayer = window.dataLayer || []; - function gtag() { - // eslint-disable-next-line prefer-rest-params - window.dataLayer.push(arguments); - } - gtag('js', new Date()); - gtag('config', 'UA-132775238-1'); - - // Include common StyleSheet used in all the examples - const linkStylesheet = document.createElement('link'); - linkStylesheet.setAttribute('href', '../index.css'); - linkStylesheet.setAttribute('rel', 'stylesheet'); - document.head.appendChild(linkStylesheet); - - // Load RapiDoc based on Mode (In local host load ) - const isDev = window.location.hostname === 'localhost' || window.location.hostname === '127.0.0.1'; - const script = document.createElement('script'); - script.type = 'module'; - - if (isDev) { - script.src = '../rapidoc-min.js'; - } else { - // In production, use the built file - script.src = '../rapidoc-min.js'; - } - document.head.appendChild(script); -}()); diff --git a/docs/examples/logo.html b/docs/examples/logo.html deleted file mode 100644 index 4a77c741b..000000000 --- a/docs/examples/logo.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - -
    - nav-logo slot -
    -
    - - \ No newline at end of file diff --git a/docs/examples/markdown-headings.html b/docs/examples/markdown-headings.html deleted file mode 100644 index 948e3c65d..000000000 --- a/docs/examples/markdown-headings.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/docs/examples/markdown.html b/docs/examples/markdown.html deleted file mode 100644 index 84d001209..000000000 --- a/docs/examples/markdown.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - -
    -
    - - -
    -
    - - - -
    -
    -
    - - \ No newline at end of file diff --git a/docs/examples/mix-html.html b/docs/examples/mix-html.html deleted file mode 100644 index b386de2a6..000000000 --- a/docs/examples/mix-html.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - -
    -
    -
    Awesome APIs
    -
    -

    Example demonstrating how to mix your own HTML content. You may add any HTML content such as

    -
      -
    • Table
    • -
    • Text
    • -
    • Images
    • -
    • Links
    • -
    • Buttons and other UI elements
    • -
    -

    Scroll to bottom to see the footer content

    -
    -
    -
    - -
    - - -

    - This is an external html content -

    -
    - - \ No newline at end of file diff --git a/docs/examples/mock.html b/docs/examples/mock.html deleted file mode 100644 index 95b73f689..000000000 --- a/docs/examples/mock.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/examples/mongo.html b/docs/examples/mongo.html deleted file mode 100644 index c4fd1beae..000000000 --- a/docs/examples/mongo.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/examples/multi-datatypes-test.html b/docs/examples/multi-datatypes-test.html deleted file mode 100644 index 6d13ea9da..000000000 --- a/docs/examples/multi-datatypes-test.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - -
    -
    - Schema Style - - -
    -
    -
    - - \ No newline at end of file diff --git a/docs/examples/multi-datatypes.html b/docs/examples/multi-datatypes.html deleted file mode 100644 index b1d0be880..000000000 --- a/docs/examples/multi-datatypes.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - -
    - - -
    -
    - - \ No newline at end of file diff --git a/docs/examples/multipart-formdata.html b/docs/examples/multipart-formdata.html deleted file mode 100644 index 522544418..000000000 --- a/docs/examples/multipart-formdata.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - -
    -
    - - -
    -
    -
    - - \ No newline at end of file diff --git a/docs/examples/multiple-oneof.html b/docs/examples/multiple-oneof.html deleted file mode 100644 index ca685ebf8..000000000 --- a/docs/examples/multiple-oneof.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/docs/examples/nav-bg-color.html b/docs/examples/nav-bg-color.html deleted file mode 100644 index c284fbdbc..000000000 --- a/docs/examples/nav-bg-color.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/docs/examples/nav-bg-image.html b/docs/examples/nav-bg-image.html deleted file mode 100644 index 0af3a1c38..000000000 --- a/docs/examples/nav-bg-image.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/docs/examples/nav-item-as-path.html b/docs/examples/nav-item-as-path.html deleted file mode 100644 index 5a3fde659..000000000 --- a/docs/examples/nav-item-as-path.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - -
    -
    Navigation Item Text
    -
    - - -
    -
    -
    - - diff --git a/docs/examples/nav-item-with-method.html b/docs/examples/nav-item-with-method.html deleted file mode 100644 index 51728afdc..000000000 --- a/docs/examples/nav-item-with-method.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - -
    -
    Navigation Item Text
    -
    - - -
    -
    Display Method on NavBar as
    -
    - - - - -
    - -
    Nav Item Active Marker style
    -
    - - -
    -
    -
    - - diff --git a/docs/examples/navbar-spacing.html b/docs/examples/navbar-spacing.html deleted file mode 100644 index 87eb1aba7..000000000 --- a/docs/examples/navbar-spacing.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - -
    -
    Navigation Item Spacing
    -
    - - - -
    -
    - -
    - - \ No newline at end of file diff --git a/docs/examples/no-server.html b/docs/examples/no-server.html deleted file mode 100644 index 38ca7487f..000000000 --- a/docs/examples/no-server.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/docs/examples/oauth-demo.html b/docs/examples/oauth-demo.html deleted file mode 100644 index 221c70ed4..000000000 --- a/docs/examples/oauth-demo.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/docs/examples/oauth-o365.html b/docs/examples/oauth-o365.html deleted file mode 100644 index d4d73c0c9..000000000 --- a/docs/examples/oauth-o365.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/docs/examples/oauth-receiver.html b/docs/examples/oauth-receiver.html deleted file mode 100644 index df6741093..000000000 --- a/docs/examples/oauth-receiver.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/docs/examples/oauth-vendor-extension.html b/docs/examples/oauth-vendor-extension.html deleted file mode 100644 index d7279aac0..000000000 --- a/docs/examples/oauth-vendor-extension.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - diff --git a/docs/examples/oneof-combinations.html b/docs/examples/oneof-combinations.html deleted file mode 100644 index f8c7b0ede..000000000 --- a/docs/examples/oneof-combinations.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - -
    -
    Schema Display Style
    -
    - - -
    -
    -
    - - \ No newline at end of file diff --git a/docs/examples/oneof-titles.html b/docs/examples/oneof-titles.html deleted file mode 100644 index ba6acda49..000000000 --- a/docs/examples/oneof-titles.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - -
    - -
    -
    - - diff --git a/docs/examples/oneof-with-refs.html b/docs/examples/oneof-with-refs.html deleted file mode 100644 index 7bbc9c9a3..000000000 --- a/docs/examples/oneof-with-refs.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - -
    -
    - -
    -
    -
    - - \ No newline at end of file diff --git a/docs/examples/oneof.html b/docs/examples/oneof.html deleted file mode 100644 index ae64e5d56..000000000 --- a/docs/examples/oneof.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - -
    -
    - -
    -
    -
    - - \ No newline at end of file diff --git a/docs/examples/open-api-3-1.html b/docs/examples/open-api-3-1.html deleted file mode 100644 index 8c298f30e..000000000 --- a/docs/examples/open-api-3-1.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/examples/override-descriptions-from-refs.html b/docs/examples/override-descriptions-from-refs.html deleted file mode 100644 index d9e9672be..000000000 --- a/docs/examples/override-descriptions-from-refs.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/docs/examples/parameters.html b/docs/examples/parameters.html deleted file mode 100644 index 4003efa50..000000000 --- a/docs/examples/parameters.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - -
    -
    -
    Allow TRY
    -
    - - -
    -
    -
    -
    - - \ No newline at end of file diff --git a/docs/examples/petstore-extended.html b/docs/examples/petstore-extended.html deleted file mode 100644 index 2656daabf..000000000 --- a/docs/examples/petstore-extended.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/docs/examples/predefined-example.html b/docs/examples/predefined-example.html deleted file mode 100644 index 7a8792ac1..000000000 --- a/docs/examples/predefined-example.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/examples/rapidoc-regular.woff2 b/docs/examples/rapidoc-regular.woff2 deleted file mode 100644 index 40417bff0..000000000 Binary files a/docs/examples/rapidoc-regular.woff2 and /dev/null differ diff --git a/docs/examples/rapidoc-semi-bold.woff2 b/docs/examples/rapidoc-semi-bold.woff2 deleted file mode 100644 index 2ad1a7e00..000000000 Binary files a/docs/examples/rapidoc-semi-bold.woff2 and /dev/null differ diff --git a/docs/examples/read-mode-dark.html b/docs/examples/read-mode-dark.html deleted file mode 100644 index db709157b..000000000 --- a/docs/examples/read-mode-dark.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/docs/examples/read-mode.html b/docs/examples/read-mode.html deleted file mode 100644 index eb069fe96..000000000 --- a/docs/examples/read-mode.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/docs/examples/readwrite.html b/docs/examples/readwrite.html deleted file mode 100644 index 4e44638e5..000000000 --- a/docs/examples/readwrite.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
    -
    - - -
    -
    -
    - - \ No newline at end of file diff --git a/docs/examples/request-body-multiple.html b/docs/examples/request-body-multiple.html deleted file mode 100644 index f6d8565bf..000000000 --- a/docs/examples/request-body-multiple.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - -
    -
    -
    Allow TRY
    -
    - - -
    -
    -
    -
    - - \ No newline at end of file diff --git a/docs/examples/roboto-mono-bold.woff2 b/docs/examples/roboto-mono-bold.woff2 deleted file mode 100644 index 125f09836..000000000 Binary files a/docs/examples/roboto-mono-bold.woff2 and /dev/null differ diff --git a/docs/examples/roboto-mono-regular.woff2 b/docs/examples/roboto-mono-regular.woff2 deleted file mode 100644 index 6163de7b0..000000000 Binary files a/docs/examples/roboto-mono-regular.woff2 and /dev/null differ diff --git a/docs/examples/schema-expand-level.html b/docs/examples/schema-expand-level.html deleted file mode 100644 index f71b9ad32..000000000 --- a/docs/examples/schema-expand-level.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - -
    -
    Default Schema expand level
    -
    - - - -
    -
    - - -
    -
    -
    - - \ No newline at end of file diff --git a/docs/examples/schema-read-and-write-only.html b/docs/examples/schema-read-and-write-only.html deleted file mode 100644 index 103b900dd..000000000 --- a/docs/examples/schema-read-and-write-only.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - - - - - - - - -
    -
    -
    - SCHEMA
    -
    -              
    -                {
    -                  user: {
    -                    type      : "object",
    -                    properties: {
    -                      id       : { type: "string", readOnly: true },
    -                      name     : { type: "string" },
    -                      password : { type: "string", writeOnly: true}
    -                    }
    -                  }
    -                }             
    -              
    -            
    -
    -
    - ATTRIBUTES
    - - - - - - - - - - - - - -
    schema-hide-read-only - - - - -
    - - - - -
    By default -
      -
    • If a schema is used in Request all the read-only properties are hidden
    • -
    • If a schema is used in Response all the write-only properties are hidden
    • -
    • In Case of WEBHOOKS and CALLBACKS the behavior is opposite
    • -
    • You may use the attributes on the left to define alternative behavior
    • -
    -
    schema-hide-write-only - - - - -
    - - - - -
    - -
    -
    -
    -
    -
    -
    - - diff --git a/docs/examples/schema-tab-default.html b/docs/examples/schema-tab-default.html deleted file mode 100644 index ff7a41d98..000000000 --- a/docs/examples/schema-tab-default.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - -
    -
    Default Schema Tab
    -
    - - -
    -
    -
    - - \ No newline at end of file diff --git a/docs/examples/schema-table.html b/docs/examples/schema-table.html deleted file mode 100644 index c8c1f32cb..000000000 --- a/docs/examples/schema-table.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - -
    -
    Schema Display Style
    -
    - - -
    - -
    Font Size
    -
    - - - -
    -
    -
    - - \ No newline at end of file diff --git a/docs/examples/schema-title-and-descriptions.html b/docs/examples/schema-title-and-descriptions.html deleted file mode 100644 index e6bb5cd01..000000000 --- a/docs/examples/schema-title-and-descriptions.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - -
    -
    Schema Display Style
    -
    - - -
    - -
    Font Size
    -
    - - - -
    -
    -
    - - \ No newline at end of file diff --git a/docs/examples/search-by-params.html b/docs/examples/search-by-params.html deleted file mode 100644 index a3fd38e36..000000000 --- a/docs/examples/search-by-params.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - -
    -
    - Search   - - - -
    -
    -
    - - diff --git a/docs/examples/server-override.html b/docs/examples/server-override.html deleted file mode 100644 index bada3b0bd..000000000 --- a/docs/examples/server-override.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/docs/examples/server-vars.html b/docs/examples/server-vars.html deleted file mode 100644 index c2b3cb678..000000000 --- a/docs/examples/server-vars.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/docs/examples/show-curl-before-try.html b/docs/examples/show-curl-before-try.html deleted file mode 100644 index fafb90ae9..000000000 --- a/docs/examples/show-curl-before-try.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/docs/examples/side-nav-hidden.html b/docs/examples/side-nav-hidden.html deleted file mode 100644 index da46f9157..000000000 --- a/docs/examples/side-nav-hidden.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/examples/slots.html b/docs/examples/slots.html deleted file mode 100644 index 02a8e7c4d..000000000 --- a/docs/examples/slots.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - - - - - - -

    - default slot | A good place to provide internal and external links, Sign In buttons etc -

    - - -

    - overview slot | good for business flow explenation -

    -
    -
    Provide explenations, diagrams and other HTML controls. You may also style them to your needs
    - -
    -
    - -

    - servers slot| good for describing about the API gateways, load balancers application servers etc -

    - - -

    - auth slot | good for describing authentication system -

    -
    -
    - graph TB - API-Gateway --> Authentication-Server - Authentication-Server-->A[fa:fa-ban Invalid Token] - Authentication-Server-->B[fa:fa-ban Valid Token] - A --> 401[401 Response Status] - B --> 200[200 response Status
    with JSON payload] -
    -
    - You may even introduce some JS based functionality - For instance, the digram on the left is generated by a flowchart markup rederer mermaid - You can change them dynamically using scrpts -

    - You may also provide HTML buttons and attach scripts to them to perform automatic authentication for your visitors. -
    -
    -
    - - -

    - overview slot | Good for contents that applies to all operations/api -

    -
    - - -

    - tag--user slot -

    - -

    - tag--Create-User slot -

    - -

    - post-/users slot | Inject HTML content specific to a path if needed -

    - -

    - footer slot | may provide copyright info and other links -

    - -
    - nav-logo slot -
    - -
    - - - - - \ No newline at end of file diff --git a/docs/examples/swagger-v2.html b/docs/examples/swagger-v2.html deleted file mode 100644 index 86b2539ac..000000000 --- a/docs/examples/swagger-v2.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/examples/tag-displayname.html b/docs/examples/tag-displayname.html deleted file mode 100644 index 19760dd09..000000000 --- a/docs/examples/tag-displayname.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - diff --git a/docs/examples/tag-focused-mode.html b/docs/examples/tag-focused-mode.html deleted file mode 100644 index 60d59c9ae..000000000 --- a/docs/examples/tag-focused-mode.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - -
    -
    Tag Click
    - - -
    -
    - - \ No newline at end of file diff --git a/docs/examples/themes.html b/docs/examples/themes.html deleted file mode 100644 index 9d7b95f3b..000000000 --- a/docs/examples/themes.html +++ /dev/null @@ -1,218 +0,0 @@ - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - - \ No newline at end of file diff --git a/docs/examples/try.html b/docs/examples/try.html deleted file mode 100644 index 781ee7b9c..000000000 --- a/docs/examples/try.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - -
    -
    Enable/Disable TRY
    -
    - - -
    -
    -
    - - \ No newline at end of file diff --git a/docs/examples/xml.html b/docs/examples/xml.html deleted file mode 100644 index b76984887..000000000 --- a/docs/examples/xml.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/examples/xxx-of-nesting-with-expand-level.html b/docs/examples/xxx-of-nesting-with-expand-level.html deleted file mode 100644 index 011a2e1d2..000000000 --- a/docs/examples/xxx-of-nesting-with-expand-level.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - -
    -
    Default Schema expand level
    -
    - - - -
    -
    - - -
    -
    -
    - - \ No newline at end of file diff --git a/docs/generated-docs/404.html b/docs/generated-docs/404.html new file mode 100644 index 000000000..1b699f699 --- /dev/null +++ b/docs/generated-docs/404.html @@ -0,0 +1,8 @@ + RapiDoc Example

    Documentation Not Found

    The requested API documentation page could not be found.

    Return to Home \ No newline at end of file diff --git a/docs/generated-docs/api.html b/docs/generated-docs/api.html new file mode 100644 index 000000000..3351c4241 --- /dev/null +++ b/docs/generated-docs/api.html @@ -0,0 +1,174 @@ + RapiDoc Example

    RapiDoc API Reference

    Explore all Rapidoc Internals: Attributes, Methods, Events, Slots and Vendor Extentions.

    Attributes

    General Attributes

    +
    Attribute Name Description Default
    spec-url
    URL of the OpenAPI spec to view. +
    (empty)
    update-route
    Allowed : true | false
    Setting true will update the URL on the browser's location whenever a new section is visited either by scrolling or clicking.
    true
    route-prefix
    Allows adding a custom prefix to routes to support third-party routing needs.
    #
    sort-tags
    Allowed : true | false
    To list tags in alphabetic order, otherwise tags will be ordered based on how it is specified under the tags section in the spec. +
    false
    sort-schemas
    Allowed : true | false
    To list schemas in alphabetic order, otherwise schemas will be ordered based on how it is specified under the schemas section in the spec. Note :Only has an effect if render-style=focused and show-components=true +
    false
    sort-endpoints-by
    Allowed : path | method | summary | none
    Sort endpoints within each tag by path, method, or summary. 'none' leaves the sort order unmodified.
    + ⓘ This is a static attribute. It won't have any effect if changed using JavaScript after the spec is rendered +
    Example
    path
    heading-text
    Heading text on the top-left corner.
    (empty)
    goto-path
    Initial location on the document (identified by method and path) where you want to go after the spec is loaded. goto-path should be in the form of {method}-{path} for instance you want the user to land on GET /user/login path you should provide the location as get-/user/login +
    (empty)
    fill-request-fields-with-example
    Allowed : true | false
    Request fields will be filled with example values (if provided in spec).
    true
    persist-auth
    Allowed : true | false
    Authentication will be persisted to localStorage.
    false

    UI Colors and Fonts Attributes

    +
    Attribute Name Description Default
    theme
    Allowed : light | dark
    Is the base theme, which is used for calculating colors for various UI components. theme, bg-color and text-color are the base attributes for generating a custom theme +
    dark
    bg-color
    Hex color code for the main background.
      +
    • Dark Theme : #333
    • +
    • Light Theme : #fff
    • +
    +
    text-color
    Hex color code for text.
      +
    • Dark Theme : #bbb
    • +
    • Light Theme : #444
    • +
    +
    header-color
    Hex color code for the header's background.
    #444444
    primary-color
    Hex color code used for controls such as buttons and tabs.
    #FF791A
    load-fonts
    Allowed : true | false
    RapiDoc will attempt to load fonts from CDN. Set to false if not intended.
    true
    regular-font
    Font name(s) for regular text.
    Open Sans, Avenir, Segoe UI, Arial, sans-serif +
    mono-font
    Font name(s) for mono-spaced text.
    Monaco, 'Andale Mono', 'Roboto Mono', 'Consolas' monospace +
    font-size
    Allowed : default | large | largest
    Sets the relative font sizes for the document.
    Example
    default

    Navigation bar settings Attributes

    +
    Attribute Name Description Default
    show-method-in-nav-bar
    Allowed : false | as-plain-text | as-colored-text | as-colored-block
    shows API Method names in the navigation bar (if you customized nav-background make sure there is a proper contrast)
    Example
    false
    use-path-in-nav-bar
    Allowed : true | false
    Show API paths in the navigation bar instead of summary/description.
    + NOTE: + Setting this value to true wont automatically display the API Method in the path
    + If you like to show the API method as well then use show-method-in-nav-bar attribute +
    +
    Example
    false
    on-nav-tag-click
    Allowed : expand-collapse | show-description
    Determines the behavior of clicking on a tag in the navigation bar. It can either expand-collapse the tag or take you to the tag's description page.
    Note: applies only to render-style = focused +
    expand-collapse

    UI Layout and Placement Attributes

    +
    Attribute Name Description Default
    layout
    Allowed : row | column
    Layout helps in placement of request/response sections. In column layout, request & response sections are placed one below the other, In row layout they are placed side by side. This attribute is applicable only when the device width is more than 768px and the render-style is 'view'. +
    row
    render-style
    Allowed : read | view | focused
    determines display of api-docs. Currently there are three modes supported.
      +
    • + view friendly for quick exploring (expand/collapse the section of your interest) | + Example +
    • +
    • + read suitable for reading (like a continuous web-page) | + Example +
    • +
    • + focused similar to read but focuses on a single endpoint at a time (good for large specs) | + Example +
    • +
    +
    read
    response-area-height
    Allowed: valid CSS height value such as 400px, 50%, 60vh etc
    Controls the height of the response textarea. +
    300px

    Hide and Show Attributes

    +
    Attribute Name Description Default
    show-info
    Allowed : true | false
    show/hide the documents info section Info section contains information about the spec, such as the title and description of the spec, the version, terms of services etc. In certain situation you may not need to show this section. For instance you are embedding this element inside a another help document. Chances are, the help doc may already have this info, in that case you may want to hide this section. +
    true
    info-description-headings-in-navbar
    Allowed : true | false
    Include headers from info -> description section to the Navigation bar (applies to read mode only) Will get the headers from the markdown in info - description (h1 and h2) into the menu on the left (in read mode) along with links to them. This option allows users to add navigation bar items using Markdown +
    Example
    false
    match-paths
    if you want to show only few selected APIs based on the target audience, you may use this attribute to define which paths should be rendered. The filter can be a simple substring match for a path or can be a complex regex expression. Wheather to use substring match or regex match is specified through match-type attribute +
    Example
    (empty)
    match-type
    Allowed : includes | regex
    Defines how match-paths is used for filtering
    includes
    remove-endpoints-with-badge-label-as
    Comma separated badge labels to be removed from the spec. You may use vendor-extension x-badges to assign badges to endpoints. This attributes helps in removing the endpoints which matches a badge label +
    Example
    show-components
    Allowed : true | false
    show/hide the components section both in document and menu (available only in focused render-style) Will show the components section containing schemas, responses, examples, requestBodies, headers, securitySchemes, links and callbacks +
    false
    show-header
    Allowed : true | false
    show/hide the header. If you do not want your user to open any other api spec, other than the current one, then set this attribute to false +
    true
    allow-authentication
    Allowed : true | false
    Authentication feature, allows the user to select one of the authentication mechanism thats available in the spec. It can be http-basic, http-bearer or api-key. If you do not want your users to go through the authentication process, instead want them to use a pre-generated api-key then you may hide authentication section by setting this attribute to false and provide the api-key details using various api-key-???? attributes. +
    true
    allow-spec-url-load
    Allowed : true | false
    If set to false, user will not be able to load any spec url from the UI.
    true
    allow-spec-file-load
    Allowed : true | false
    If set to false, user will not be able to load any spec file from the local drive. This attribute is applicable only when the device width is more than 768px, else this feature is not available
    true
    allow-spec-file-download
    Allowed : true | false
    If set to true, it provide buttons in the overview section to download the spec or open it in a new tab.
    false
    allow-try
    Allowed : true | false
    The 'TRY' feature allows you to make REST calls to the API server. To disable this feature, set it to false.
    Example
    true
    show-curl-before-try
    Allowed : true | false
    If set to true, the cURL snippet is displayed between the request and the response without clicking on TRY
    Example
    false
    allow-server-selection
    Allowed : true | false
    Allow users to switch between different servers defined in the OpenAPI spec.
    true
    allow-schema-description-expand-toggle
    Allowed : true | false
    allow or hide the ability to expand/collapse field descriptions in the schema
    true

    Schema Section Attributes

    +
    Attribute Name Description Default
    schema-style
    Allowed : tree | table
    Two different ways to display object-schemas in the responses and request bodies
    Example
    tree
    schema-expand-level
    Schemas are expanded by default, use this attribute to control how many levels in the schema should be expanded
    Example
    999
    schema-description-expanded
    Allowed : true | false
    Constraint and descriptions information of fields in the schema are collapsed to show only the first line. Set it to true if you want them to fully expanded +
    false
    schema-hide-read-only
    Allowed : default | never
    default will show read-only schema attributes in Responses, and in Requests of Webhook / Callback If you do not want to hide read-only fields in schema then you may set it to 'never' Note:This do not effect example generation. +
    Example
    default
    schema-hide-write-only
    Allowed : default | never
    default will show write-only schema attributes in Requests, and in Responses of Webhook / Callback If you do not want to hide write-only fields in schema then you may set it to 'never' Note: This do not effect example generation. +
    Example
    default
    default-schema-tab
    Allowed : schema | example
    The schemas are displayed in two tabs - Model and Example. This option allows you to pick the default tab that you would like to be active +
    schema

    API Server Atrributes

    +
    Attribute Name Description Default
    server-url
    OpenAPI spec has a provision for providing the server url. The UI will list all the server URLs provided in the spec. The user can then select one URL to which he or she intends to send API calls while trying out the apis. However, if you want to provide an API server of your own which is not listed in the spec, you can use this property to provide one. It is helpful in the cases where the same spec is shared between multiple environment say Dev and Test and each have their own API server. +
    (empty)
    default-api-server
    If you have multiple api-server listed in the spec, use this attribute to select the default API server, where all the API calls will goto. This can be changed later from the UI +
    (empty)
    api-key-name
    Name of the API key that will be send while trying out the APIs
    (empty)
    api-key-location
    Allowed : schema | example
    determines how you want to send the api-key.
    (empty)
    api-key-value
    Value of the API key that will be send while trying out the APIs. This can also be provided/overwritten from UI.
    (empty)
    fetch-credentials
    Allowed : header | query
    Enables passing credentials/cookies in cross domain calls, as defined in the Fetch standard, in CORS requests that are sent by the browser +
    (empty)

    Methods

    Method Name Description
    loadSpec() To programmatically load spec. The method takes either a string containing the url of the specs or a JSON object representing a valid spec +
    https://github.com/rapi-doc/RapiDoc/blob/master/docs/examples/example9.html
    scrollToPath(path) To programmatically scroll to a section (identified by combination method and path). path should be provided in the format of {method}-{path} for instance you want to scroll to GET /user/login you should provide the location as get-/user/login +
    examples/collapsable-focused.html
    setHttpUserNameAndPassword (securitySchemeId, username, password) To programmatically provide username and password. securitySchemeId should be a valid securityScheme which you have defined in the spec +
    setApiKey(securitySchemeId, token) To programmatically provide api-key. securitySchemeId should be a valid securityScheme which you have defined in the spec +
    setApiServer(apiServerUrl) To programmatically set API Server. apiServerUrl should be a valid server url which you have defined in the spec +
     <html>
    +  ...
    +  <rapi-doc id="the-doc" spec-url = "https://.../spec.yaml"> </rapi-doc>
    +  <script>
    +    window.addEventListener('DOMContentLoaded', (event) => {
    +      const rapidocEl = document.getElementById('the-doc');
    +      rapidocEl.addEventListener('spec-loaded', (e) => {
    +        rapidocEl.setApiServer(globalThis.origin + "/api");
    +        // Sets the server to http://localhost:8080/api
    +        // you must have defined this server in your spec
    +      });
    +    });
    +  </script>
    +  ...
    +</html>
    + 

    Events

    Below is an example on how to handle events using plain JS
     
    +          
    +            
    +            <html>
    +              ...
    +                <rapi-doc id="the-doc" spec-url = "https://.../spec.yaml"> </rapi-doc>
    +
    +                <script>
    +                  window.addEventListener('DOMContentLoaded', (event) => {
    +                    /*
    +                      Ensure that the DOM is loaded, then add the event listener.
    +                      here we are listenig to 'before-try' event which fires when the user clicks
    +                      on TRY, it then modifies the POST requests by adding a custom header
    +                    */
    +                    const rapidocEl = document.getElementById('the-doc');
    +                    rapidocEl.addEventListener('before-try', (e) => {
    +                      if (e.detail.request.method === 'POST') {
    +                        e.detail.request.headers.append('custom-token', 'AAA.BBB.CCC');
    +                      }
    +                    });
    +                  });
    +                </script>
    +              ...
    +            </html>
    +            
    +          
    +        
    Event Name Description
    before-render fired before rendering, provides spec object which can be modified and the changes will be reflected in rendering
    spec-loaded fired after the spec is parsed, and rendered. Provides an object representing the spec.
    spec-loaded fired before user clicks try. Provides a Request like object that can be modified before making the final call to the API. Also you get an AbortController object which can be used for aborting a request

    Example: To add a custom header before making a try call
    
    +  rapidocEl.addEventListener('before-try', (e) => {
    +    if (e.detail.request.method === 'POST') {
    +      e.detail.request.headers.append('my-header', 'XYX');
    +    }
    +  });
    +
    + + Example: Add a query-string param to all GET request
    
    +  rapidocEl.addEventListener('before-try', (e) => {
    +    if (e.detail.request.method === 'GET') {
    +      const url = new URL( e.detail.request.url);
    +      url.searchParams.append('delay', '3');
    +      e.detail.request.url = url.searchParams.toString();
    +    }
    +  });
    +
    + Example: To abort a (Try)request - Below example aborts all DELETE calls
    
    +  rapidocEl.addEventListener('before-try', (e) => {
    +    if (e.detail.request.method === 'DELETE') {
    +      e.detail.controller.abort();
    +    }
    +  });
    +
    +
    after-try fired after try (API-call) is completed and provides a request and response object In case of an error it will provide an request and err object +
    request-aborted fired when user aborts the request
    api-server-change fires when you change the API server
    For further information refer to this Example of Event Handling In RapiDoc

    Slots

    slots are predefined placeholders inside a RapiDoc component. + You can use these slots to place your custom html in certain desired locations inside RapiDoc. + Below is an example on how to inject HTML/CSS/JS at various locations in RapiDoc +
     
    +          
    +            
    +            <html>
    +              ...
    +              <rapi-doc spec-url = "https://petstore.swagger.io/v2/swagger.json">
    +                <div> <!-- HTML Elements without slot attribute goes into default location-->
    +                  <h1> My HTML Heading  </h1>
    +                </div>
    +
    +                <!-- provide slot attribute to place an element at desired location -->
    +                <img slot="nav-logo" src="https://via.placeholder.com/100" style="width:50px; height:50px"/>
    +
    +              </rapi-doc>
    +              ...
    +            </html>
    +            
    +          
    +        
    Slot Name Description
    (default) any content placed inside tag, will be shown immediately under the header and above the info section
    overview contents appear at overview section - top of the document. You can link to this section using #overview +
    servers contents appear at server section which is under the overview slot. You can link to this section using #servers +
    auth contents appear at authentication section which is under the overview > servers slot. You can link to this section using #auth +
    operations-top contents appear at the top of all the operations but below overview > servers > auth section. Use this section to provide content that applies to all the operations. You can link this section using #operations-top +
    tag--{tag-name} each tag is identified by a name, this slot can be used to insert HTML content under various tags
    {method}-{path} each path is identified by an id. which is in the format of {method}-{path}, and certain invalid characters such as {, }, \#, space is replaced by hyphen (-). Use this slot to insert HTML content into a specifi tag +
    +For further information refer to these examples +Logo slot | +All Slots

    Supported vendor extensions

    Extension Name Description
    x-code-sample
    Use this vendor-extension to provide code samples in various languages
    x-codeSample
    x-badges
    Use this vendor-extension to annotate end-points with short color coded lables. You can also assign badges to endpoints and then use them with remove-endpoints-with-badge-label-as attribute to remove them from your API documentation. This allows you to show the same API spec to different groups of audiences. Like you want to hide internal APIs for your customers but show then to your developers +
    x-tag-expanded
    Use this vendor-extension to expand or collapse paths under a tag (applies only in view and focused render-style) +
    x-fill-example
    Allowed : yes | no
    Use this vendor-extension for each request parameter to indicate if the provided example is auto populated on the UI if this behaviour needs to be applied for all the examples then see fill-request-fields-with-example +
    x-example-show-value
    Allowed : true | false
    Use this vendor-extension for each request parameter to indicate if the provided example is displayed on the UI
    x-client-id
    Use this vendor-extensions to pre fill client-id in RapiDoc UI
    x-client-secret
    Use this vendor-extensions to pre fill client-secret in RapiDoc UI
    x-default-scopes
    Use this vendor-extensions to pre fill default-scopes in RapiDoc UI
    x-receive-token-in
    This is to define where the token is received in RapiDOc UI (header or request-body)
    x-pkce-only
    Allowed : true | false
    when true, client-secret wont be send from RapiDoc UI
    \ No newline at end of file diff --git a/docs/specs/1e0e8cc-white-logo.png b/docs/generated-docs/assets/images/1e0e8cc-white-logo.png similarity index 100% rename from docs/specs/1e0e8cc-white-logo.png rename to docs/generated-docs/assets/images/1e0e8cc-white-logo.png diff --git a/docs/images/arch.png b/docs/generated-docs/assets/images/arch.png similarity index 100% rename from docs/images/arch.png rename to docs/generated-docs/assets/images/arch.png diff --git a/docs/generated-docs/assets/images/badge.png b/docs/generated-docs/assets/images/badge.png new file mode 100644 index 000000000..2230c0b0c Binary files /dev/null and b/docs/generated-docs/assets/images/badge.png differ diff --git a/docs/images/bg-shape1.svg b/docs/generated-docs/assets/images/bg-shape1.svg similarity index 100% rename from docs/images/bg-shape1.svg rename to docs/generated-docs/assets/images/bg-shape1.svg diff --git a/docs/images/bg-texture4.gif b/docs/generated-docs/assets/images/bg-texture4.gif similarity index 100% rename from docs/images/bg-texture4.gif rename to docs/generated-docs/assets/images/bg-texture4.gif diff --git a/docs/images/callback.png b/docs/generated-docs/assets/images/callback.png similarity index 100% rename from docs/images/callback.png rename to docs/generated-docs/assets/images/callback.png diff --git a/docs/generated-docs/assets/images/card_bg1.png b/docs/generated-docs/assets/images/card_bg1.png new file mode 100644 index 000000000..b17e3f9b1 Binary files /dev/null and b/docs/generated-docs/assets/images/card_bg1.png differ diff --git a/docs/generated-docs/assets/images/code-highlight.png b/docs/generated-docs/assets/images/code-highlight.png new file mode 100644 index 000000000..f07f3fbde Binary files /dev/null and b/docs/generated-docs/assets/images/code-highlight.png differ diff --git a/docs/generated-docs/assets/images/code-highlight.svg b/docs/generated-docs/assets/images/code-highlight.svg new file mode 100644 index 000000000..d2aef1d0f --- /dev/null +++ b/docs/generated-docs/assets/images/code-highlight.svg @@ -0,0 +1,11 @@ + + + + + + + + + + \ No newline at end of file diff --git a/docs/generated-docs/assets/images/color-circle.png b/docs/generated-docs/assets/images/color-circle.png new file mode 100644 index 000000000..98f97a8c0 Binary files /dev/null and b/docs/generated-docs/assets/images/color-circle.png differ diff --git a/docs/generated-docs/assets/images/configure.png b/docs/generated-docs/assets/images/configure.png new file mode 100644 index 000000000..639ea6d03 Binary files /dev/null and b/docs/generated-docs/assets/images/configure.png differ diff --git a/docs/images/console.svg b/docs/generated-docs/assets/images/console.svg similarity index 100% rename from docs/images/console.svg rename to docs/generated-docs/assets/images/console.svg diff --git a/docs/generated-docs/assets/images/dark-n-light.png b/docs/generated-docs/assets/images/dark-n-light.png new file mode 100644 index 000000000..aad1c247b Binary files /dev/null and b/docs/generated-docs/assets/images/dark-n-light.png differ diff --git a/docs/images/dark_ss.png b/docs/generated-docs/assets/images/dark_ss.png similarity index 100% rename from docs/images/dark_ss.png rename to docs/generated-docs/assets/images/dark_ss.png diff --git a/docs/images/divider1.png b/docs/generated-docs/assets/images/divider1.png similarity index 100% rename from docs/images/divider1.png rename to docs/generated-docs/assets/images/divider1.png diff --git a/docs/images/doc-illustration.svg b/docs/generated-docs/assets/images/doc-illustration.svg similarity index 100% rename from docs/images/doc-illustration.svg rename to docs/generated-docs/assets/images/doc-illustration.svg diff --git a/docs/images/doc-read-mode.svg b/docs/generated-docs/assets/images/doc-read-mode.svg similarity index 100% rename from docs/images/doc-read-mode.svg rename to docs/generated-docs/assets/images/doc-read-mode.svg diff --git a/docs/images/dog.png b/docs/generated-docs/assets/images/dog.png similarity index 100% rename from docs/images/dog.png rename to docs/generated-docs/assets/images/dog.png diff --git a/docs/images/easy.svg b/docs/generated-docs/assets/images/easy.svg similarity index 100% rename from docs/images/easy.svg rename to docs/generated-docs/assets/images/easy.svg diff --git a/docs/images/example-ss-brand1.png b/docs/generated-docs/assets/images/example-ss-brand1.png similarity index 100% rename from docs/images/example-ss-brand1.png rename to docs/generated-docs/assets/images/example-ss-brand1.png diff --git a/docs/images/example-ss-brand2.png b/docs/generated-docs/assets/images/example-ss-brand2.png similarity index 100% rename from docs/images/example-ss-brand2.png rename to docs/generated-docs/assets/images/example-ss-brand2.png diff --git a/docs/images/example-ss-nav1.png b/docs/generated-docs/assets/images/example-ss-nav1.png similarity index 100% rename from docs/images/example-ss-nav1.png rename to docs/generated-docs/assets/images/example-ss-nav1.png diff --git a/docs/images/example-ss-nav2.png b/docs/generated-docs/assets/images/example-ss-nav2.png similarity index 100% rename from docs/images/example-ss-nav2.png rename to docs/generated-docs/assets/images/example-ss-nav2.png diff --git a/docs/images/example1.html b/docs/generated-docs/assets/images/example1.html similarity index 100% rename from docs/images/example1.html rename to docs/generated-docs/assets/images/example1.html diff --git a/docs/images/example1_files/analytics.js b/docs/generated-docs/assets/images/example1_files/analytics.js similarity index 100% rename from docs/images/example1_files/analytics.js rename to docs/generated-docs/assets/images/example1_files/analytics.js diff --git a/docs/images/example1_files/css b/docs/generated-docs/assets/images/example1_files/css similarity index 100% rename from docs/images/example1_files/css rename to docs/generated-docs/assets/images/example1_files/css diff --git a/docs/images/example1_files/js b/docs/generated-docs/assets/images/example1_files/js similarity index 100% rename from docs/images/example1_files/js rename to docs/generated-docs/assets/images/example1_files/js diff --git a/docs/images/example1_files/rapidoc-min.js b/docs/generated-docs/assets/images/example1_files/rapidoc-min.js similarity index 100% rename from docs/images/example1_files/rapidoc-min.js rename to docs/generated-docs/assets/images/example1_files/rapidoc-min.js diff --git a/docs/images/fast.svg b/docs/generated-docs/assets/images/fast.svg similarity index 100% rename from docs/images/fast.svg rename to docs/generated-docs/assets/images/fast.svg diff --git a/docs/images/file-content.png b/docs/generated-docs/assets/images/file-content.png similarity index 100% rename from docs/images/file-content.png rename to docs/generated-docs/assets/images/file-content.png diff --git a/docs/images/files.png b/docs/generated-docs/assets/images/files.png similarity index 100% rename from docs/images/files.png rename to docs/generated-docs/assets/images/files.png diff --git a/docs/images/font.png b/docs/generated-docs/assets/images/font.png similarity index 100% rename from docs/images/font.png rename to docs/generated-docs/assets/images/font.png diff --git a/docs/images/gears.svg b/docs/generated-docs/assets/images/gears.svg similarity index 100% rename from docs/images/gears.svg rename to docs/generated-docs/assets/images/gears.svg diff --git a/docs/generated-docs/assets/images/guide.png b/docs/generated-docs/assets/images/guide.png new file mode 100644 index 000000000..727e17842 Binary files /dev/null and b/docs/generated-docs/assets/images/guide.png differ diff --git a/docs/images/header.png b/docs/generated-docs/assets/images/header.png similarity index 100% rename from docs/images/header.png rename to docs/generated-docs/assets/images/header.png diff --git a/docs/generated-docs/assets/images/home-bg1.png b/docs/generated-docs/assets/images/home-bg1.png new file mode 100644 index 000000000..aed513c26 Binary files /dev/null and b/docs/generated-docs/assets/images/home-bg1.png differ diff --git a/docs/images/html5-logo.png b/docs/generated-docs/assets/images/html5-logo.png similarity index 100% rename from docs/images/html5-logo.png rename to docs/generated-docs/assets/images/html5-logo.png diff --git a/docs/generated-docs/assets/images/info.png b/docs/generated-docs/assets/images/info.png new file mode 100644 index 000000000..f45bec5e2 Binary files /dev/null and b/docs/generated-docs/assets/images/info.png differ diff --git a/docs/generated-docs/assets/images/info2.png b/docs/generated-docs/assets/images/info2.png new file mode 100644 index 000000000..5b52ad4a0 Binary files /dev/null and b/docs/generated-docs/assets/images/info2.png differ diff --git a/docs/images/join_on-discord.svg b/docs/generated-docs/assets/images/join_on-discord.svg similarity index 100% rename from docs/images/join_on-discord.svg rename to docs/generated-docs/assets/images/join_on-discord.svg diff --git a/docs/images/light_ss.png b/docs/generated-docs/assets/images/light_ss.png similarity index 100% rename from docs/images/light_ss.png rename to docs/generated-docs/assets/images/light_ss.png diff --git a/docs/generated-docs/assets/images/link.png b/docs/generated-docs/assets/images/link.png new file mode 100644 index 000000000..ad9c6a601 Binary files /dev/null and b/docs/generated-docs/assets/images/link.png differ diff --git a/docs/images/logo-outline.png b/docs/generated-docs/assets/images/logo-outline.png similarity index 100% rename from docs/images/logo-outline.png rename to docs/generated-docs/assets/images/logo-outline.png diff --git a/docs/images/logo-outline.svg b/docs/generated-docs/assets/images/logo-outline.svg similarity index 100% rename from docs/images/logo-outline.svg rename to docs/generated-docs/assets/images/logo-outline.svg diff --git a/docs/images/logo.png b/docs/generated-docs/assets/images/logo.png similarity index 100% rename from docs/images/logo.png rename to docs/generated-docs/assets/images/logo.png diff --git a/docs/images/love.svg b/docs/generated-docs/assets/images/love.svg similarity index 100% rename from docs/images/love.svg rename to docs/generated-docs/assets/images/love.svg diff --git a/docs/images/markdown.png b/docs/generated-docs/assets/images/markdown.png similarity index 100% rename from docs/images/markdown.png rename to docs/generated-docs/assets/images/markdown.png diff --git a/docs/images/mask.svg b/docs/generated-docs/assets/images/mask.svg similarity index 100% rename from docs/images/mask.svg rename to docs/generated-docs/assets/images/mask.svg diff --git a/docs/images/maximize-2.svg b/docs/generated-docs/assets/images/maximize-2.svg similarity index 100% rename from docs/images/maximize-2.svg rename to docs/generated-docs/assets/images/maximize-2.svg diff --git a/docs/images/minimize-2.svg b/docs/generated-docs/assets/images/minimize-2.svg similarity index 100% rename from docs/images/minimize-2.svg rename to docs/generated-docs/assets/images/minimize-2.svg diff --git a/docs/images/mode-focused.png b/docs/generated-docs/assets/images/mode-focused.png similarity index 100% rename from docs/images/mode-focused.png rename to docs/generated-docs/assets/images/mode-focused.png diff --git a/docs/images/mode-read.png b/docs/generated-docs/assets/images/mode-read.png similarity index 100% rename from docs/images/mode-read.png rename to docs/generated-docs/assets/images/mode-read.png diff --git a/docs/images/mode-view.png b/docs/generated-docs/assets/images/mode-view.png similarity index 100% rename from docs/images/mode-view.png rename to docs/generated-docs/assets/images/mode-view.png diff --git a/docs/images/mouse.svg b/docs/generated-docs/assets/images/mouse.svg similarity index 100% rename from docs/images/mouse.svg rename to docs/generated-docs/assets/images/mouse.svg diff --git a/docs/generated-docs/assets/images/multifile.png b/docs/generated-docs/assets/images/multifile.png new file mode 100644 index 000000000..23738f877 Binary files /dev/null and b/docs/generated-docs/assets/images/multifile.png differ diff --git a/docs/images/multiple-layer.png b/docs/generated-docs/assets/images/multiple-layer.png similarity index 100% rename from docs/images/multiple-layer.png rename to docs/generated-docs/assets/images/multiple-layer.png diff --git a/docs/images/multiple.png b/docs/generated-docs/assets/images/multiple.png similarity index 100% rename from docs/images/multiple.png rename to docs/generated-docs/assets/images/multiple.png diff --git a/docs/images/nav_bg_1.png b/docs/generated-docs/assets/images/nav_bg_1.png similarity index 100% rename from docs/images/nav_bg_1.png rename to docs/generated-docs/assets/images/nav_bg_1.png diff --git a/docs/images/nav_bg_2.png b/docs/generated-docs/assets/images/nav_bg_2.png similarity index 100% rename from docs/images/nav_bg_2.png rename to docs/generated-docs/assets/images/nav_bg_2.png diff --git a/docs/generated-docs/assets/images/navbar.png b/docs/generated-docs/assets/images/navbar.png new file mode 100644 index 000000000..3566ab09c Binary files /dev/null and b/docs/generated-docs/assets/images/navbar.png differ diff --git a/docs/images/oauth-auth-code.png b/docs/generated-docs/assets/images/oauth-auth-code.png similarity index 100% rename from docs/images/oauth-auth-code.png rename to docs/generated-docs/assets/images/oauth-auth-code.png diff --git a/docs/images/oauth.png b/docs/generated-docs/assets/images/oauth.png similarity index 100% rename from docs/images/oauth.png rename to docs/generated-docs/assets/images/oauth.png diff --git a/docs/images/org.png b/docs/generated-docs/assets/images/org.png similarity index 100% rename from docs/images/org.png rename to docs/generated-docs/assets/images/org.png diff --git a/docs/images/paint.png b/docs/generated-docs/assets/images/paint.png similarity index 100% rename from docs/images/paint.png rename to docs/generated-docs/assets/images/paint.png diff --git a/docs/images/petlogo.jpg b/docs/generated-docs/assets/images/petlogo.jpg similarity index 100% rename from docs/images/petlogo.jpg rename to docs/generated-docs/assets/images/petlogo.jpg diff --git a/docs/images/petlogo.png b/docs/generated-docs/assets/images/petlogo.png similarity index 100% rename from docs/images/petlogo.png rename to docs/generated-docs/assets/images/petlogo.png diff --git a/docs/images/pets.png b/docs/generated-docs/assets/images/pets.png similarity index 100% rename from docs/images/pets.png rename to docs/generated-docs/assets/images/pets.png diff --git a/docs/images/playground.png b/docs/generated-docs/assets/images/playground.png similarity index 100% rename from docs/images/playground.png rename to docs/generated-docs/assets/images/playground.png diff --git a/docs/images/plugin.png b/docs/generated-docs/assets/images/plugin.png similarity index 100% rename from docs/images/plugin.png rename to docs/generated-docs/assets/images/plugin.png diff --git a/docs/images/prism.js b/docs/generated-docs/assets/images/prism.js similarity index 100% rename from docs/images/prism.js rename to docs/generated-docs/assets/images/prism.js diff --git a/docs/images/rapi-brand.png b/docs/generated-docs/assets/images/rapi-brand.png similarity index 100% rename from docs/images/rapi-brand.png rename to docs/generated-docs/assets/images/rapi-brand.png diff --git a/docs/images/rapi-markdown.png b/docs/generated-docs/assets/images/rapi-markdown.png similarity index 100% rename from docs/images/rapi-markdown.png rename to docs/generated-docs/assets/images/rapi-markdown.png diff --git a/docs/images/rapi-mode-read.png b/docs/generated-docs/assets/images/rapi-mode-read.png similarity index 100% rename from docs/images/rapi-mode-read.png rename to docs/generated-docs/assets/images/rapi-mode-read.png diff --git a/docs/images/rapi-mode-view.png b/docs/generated-docs/assets/images/rapi-mode-view.png similarity index 100% rename from docs/images/rapi-mode-view.png rename to docs/generated-docs/assets/images/rapi-mode-view.png diff --git a/docs/images/rapi-schema-table.png b/docs/generated-docs/assets/images/rapi-schema-table.png similarity index 100% rename from docs/images/rapi-schema-table.png rename to docs/generated-docs/assets/images/rapi-schema-table.png diff --git a/docs/images/rapi-schema-tree.png b/docs/generated-docs/assets/images/rapi-schema-tree.png similarity index 100% rename from docs/images/rapi-schema-tree.png rename to docs/generated-docs/assets/images/rapi-schema-tree.png diff --git a/docs/images/rapidoc_oauth_process.png b/docs/generated-docs/assets/images/rapidoc_oauth_process.png similarity index 100% rename from docs/images/rapidoc_oauth_process.png rename to docs/generated-docs/assets/images/rapidoc_oauth_process.png diff --git a/docs/images/react-logo.png b/docs/generated-docs/assets/images/react-logo.png similarity index 100% rename from docs/images/react-logo.png rename to docs/generated-docs/assets/images/react-logo.png diff --git a/docs/images/read-style.png b/docs/generated-docs/assets/images/read-style.png similarity index 100% rename from docs/images/read-style.png rename to docs/generated-docs/assets/images/read-style.png diff --git a/docs/images/refs.png b/docs/generated-docs/assets/images/refs.png similarity index 100% rename from docs/images/refs.png rename to docs/generated-docs/assets/images/refs.png diff --git a/docs/images/refs2.png b/docs/generated-docs/assets/images/refs2.png similarity index 100% rename from docs/images/refs2.png rename to docs/generated-docs/assets/images/refs2.png diff --git a/docs/images/schema-expand.png b/docs/generated-docs/assets/images/schema-expand.png similarity index 100% rename from docs/images/schema-expand.png rename to docs/generated-docs/assets/images/schema-expand.png diff --git a/docs/generated-docs/assets/images/schema-style.png b/docs/generated-docs/assets/images/schema-style.png new file mode 100644 index 000000000..17c7a0ebd Binary files /dev/null and b/docs/generated-docs/assets/images/schema-style.png differ diff --git a/docs/images/schema-table.png b/docs/generated-docs/assets/images/schema-table.png similarity index 100% rename from docs/images/schema-table.png rename to docs/generated-docs/assets/images/schema-table.png diff --git a/docs/images/schema-tree.png b/docs/generated-docs/assets/images/schema-tree.png similarity index 100% rename from docs/images/schema-tree.png rename to docs/generated-docs/assets/images/schema-tree.png diff --git a/docs/images/settings.png b/docs/generated-docs/assets/images/settings.png similarity index 100% rename from docs/images/settings.png rename to docs/generated-docs/assets/images/settings.png diff --git a/docs/images/sidebar-bg1.png b/docs/generated-docs/assets/images/sidebar-bg1.png similarity index 100% rename from docs/images/sidebar-bg1.png rename to docs/generated-docs/assets/images/sidebar-bg1.png diff --git a/docs/generated-docs/assets/images/slot.png b/docs/generated-docs/assets/images/slot.png new file mode 100644 index 000000000..a6dddacce Binary files /dev/null and b/docs/generated-docs/assets/images/slot.png differ diff --git a/docs/images/sort.png b/docs/generated-docs/assets/images/sort.png similarity index 100% rename from docs/images/sort.png rename to docs/generated-docs/assets/images/sort.png diff --git a/docs/images/sponsored_by_zuplo.svg b/docs/generated-docs/assets/images/sponsored_by_zuplo.svg similarity index 100% rename from docs/images/sponsored_by_zuplo.svg rename to docs/generated-docs/assets/images/sponsored_by_zuplo.svg diff --git a/docs/generated-docs/assets/images/style.png b/docs/generated-docs/assets/images/style.png new file mode 100644 index 000000000..ad56bf655 Binary files /dev/null and b/docs/generated-docs/assets/images/style.png differ diff --git a/docs/images/swagger.json b/docs/generated-docs/assets/images/swagger.json similarity index 100% rename from docs/images/swagger.json rename to docs/generated-docs/assets/images/swagger.json diff --git a/docs/images/syntax-highlight.png b/docs/generated-docs/assets/images/syntax-highlight.png similarity index 100% rename from docs/images/syntax-highlight.png rename to docs/generated-docs/assets/images/syntax-highlight.png diff --git a/docs/generated-docs/assets/images/terminal.png b/docs/generated-docs/assets/images/terminal.png new file mode 100644 index 000000000..a1f2ccaab Binary files /dev/null and b/docs/generated-docs/assets/images/terminal.png differ diff --git a/docs/generated-docs/assets/images/theme.png b/docs/generated-docs/assets/images/theme.png new file mode 100644 index 000000000..51c26fc82 Binary files /dev/null and b/docs/generated-docs/assets/images/theme.png differ diff --git a/docs/examples-theme/rapidoc-csspart-btn.png b/docs/generated-docs/assets/images/theme/rapidoc-csspart-btn.png similarity index 100% rename from docs/examples-theme/rapidoc-csspart-btn.png rename to docs/generated-docs/assets/images/theme/rapidoc-csspart-btn.png diff --git a/docs/examples-theme/rapidoc-csspart-nav.png b/docs/generated-docs/assets/images/theme/rapidoc-csspart-nav.png similarity index 100% rename from docs/examples-theme/rapidoc-csspart-nav.png rename to docs/generated-docs/assets/images/theme/rapidoc-csspart-nav.png diff --git a/docs/examples-theme/rapidoc-csspart-server.png b/docs/generated-docs/assets/images/theme/rapidoc-csspart-server.png similarity index 100% rename from docs/examples-theme/rapidoc-csspart-server.png rename to docs/generated-docs/assets/images/theme/rapidoc-csspart-server.png diff --git a/docs/images/upload.png b/docs/generated-docs/assets/images/upload.png similarity index 100% rename from docs/images/upload.png rename to docs/generated-docs/assets/images/upload.png diff --git a/docs/images/vue-logo.png b/docs/generated-docs/assets/images/vue-logo.png similarity index 100% rename from docs/images/vue-logo.png rename to docs/generated-docs/assets/images/vue-logo.png diff --git a/docs/images/webcomponent.svg b/docs/generated-docs/assets/images/webcomponent.svg similarity index 100% rename from docs/images/webcomponent.svg rename to docs/generated-docs/assets/images/webcomponent.svg diff --git a/docs/images/webhook.png b/docs/generated-docs/assets/images/webhook.png similarity index 100% rename from docs/images/webhook.png rename to docs/generated-docs/assets/images/webhook.png diff --git a/docs/images/woman-coding.svg b/docs/generated-docs/assets/images/woman-coding.svg similarity index 100% rename from docs/images/woman-coding.svg rename to docs/generated-docs/assets/images/woman-coding.svg diff --git a/docs/images/woman.svg b/docs/generated-docs/assets/images/woman.svg similarity index 100% rename from docs/images/woman.svg rename to docs/generated-docs/assets/images/woman.svg diff --git a/docs/images/zuplo_wordmark.svg b/docs/generated-docs/assets/images/zuplo_wordmark.svg similarity index 100% rename from docs/images/zuplo_wordmark.svg rename to docs/generated-docs/assets/images/zuplo_wordmark.svg diff --git a/docs/prismjs/prism.css b/docs/generated-docs/assets/prismjs/prism.css similarity index 100% rename from docs/prismjs/prism.css rename to docs/generated-docs/assets/prismjs/prism.css diff --git a/docs/prismjs/prism.js b/docs/generated-docs/assets/prismjs/prism.js similarity index 100% rename from docs/prismjs/prism.js rename to docs/generated-docs/assets/prismjs/prism.js diff --git a/docs/slider/BeerSlider.css b/docs/generated-docs/assets/slider/BeerSlider.css similarity index 100% rename from docs/slider/BeerSlider.css rename to docs/generated-docs/assets/slider/BeerSlider.css diff --git a/docs/slider/BeerSlider.js b/docs/generated-docs/assets/slider/BeerSlider.js similarity index 100% rename from docs/slider/BeerSlider.js rename to docs/generated-docs/assets/slider/BeerSlider.js diff --git a/docs/generated-docs/examples.html b/docs/generated-docs/examples.html new file mode 100644 index 000000000..f46b4f27e --- /dev/null +++ b/docs/generated-docs/examples.html @@ -0,0 +1,191 @@ + RapiDoc Example

    Examples & Demos


    List of all examples

    Basic (DEMO)

    +Just copy the below code and save it in an html file. Then open it using a browser +
    
    +      
    +        <!doctype html> <!-- Important: must specify -->
    +        <html>
    +          <head>
    +            <meta charset="utf-8"> <!-- Important: rapi-doc uses utf8 characters -->
    +            <script type="module" src = "https://unpkg.com/rapidoc/dist/rapidoc-min.js" ></script>
    +          </head>
    +          <body>
    +            <rapi-doc 
    +              spec-url = "https://raw.githubusercontent.com/mrin9/RapiDoc/master/docs/specs/petstore.yaml" 
    +            > </rapi-doc>
    +          </body> 
    +        </html>
    +        
    +    

    Light Theme (DEMO)

    
    +    
    +      <rapi-doc 
    +        spec-url = "https://raw.githubusercontent.com/mrin9/RapiDoc/master/docs/specs/petstore.yaml"
    +        theme = "light"
    +      > 
    +      </rapi-doc>
    +      
    +  

    Read Mode (DEMO)

    
    +    
    +      <rapi-doc 
    +        spec-url = "https://raw.githubusercontent.com/mrin9/RapiDoc/master/docs/specs/petstore.yaml"
    +        render-style = "read"
    +      > 
    +      </rapi-doc>
    +     
    +  

    Schema Style: Tabular (DEMO)

    
    +    
    +      <rapi-doc 
    +        spec-url = "https://raw.githubusercontent.com/mrin9/RapiDoc/master/docs/specs/petstore.yaml"
    +        schema-style = "table"
    +      > 
    +      </rapi-doc>
    +      
    +  

    Change Header and Primary Color (DEMO)

    
    +    
    +      <rapi-doc 
    +        spec-url = "https://raw.githubusercontent.com/mrin9/RapiDoc/master/docs/specs/petstore.yaml"
    +        header-color = "#2d87e2" 
    +        primary-color = "#2d87e2" 
    +      > 
    +      </rapi-doc>
    +      
    +  

    +Integrate with other HTML document - No <iframe> (DEMO) +

    
    +    
    +      <rapi-doc 
    +        spec-url = "https://raw.githubusercontent.com/mrin9/RapiDoc/master/docs/specs/petstore.yaml"
    +        render-style = "read"
    +        show-header = "false"
    +        show-info = "false"
    +        allow-authentication = "false"
    +        allow-server-selection = "false"
    +        allow-api-list-style-selection = "false"
    +      > 
    +      </rapi-doc>
    +      
    +  

    Change Font (DEMO)

    
    +    
    +      <head>
    +        <link href = "https://fonts.googleapis.com/css?family=Nunito" rel = "stylesheet">
    +      </head>
    +
    +      <body>
    +        <rapi-doc 
    +          spec-url = "https://raw.githubusercontent.com/mrin9/RapiDoc/master/docs/specs/petstore.yaml"
    +          regular-font = "Nunito"
    +          render-style = "read"
    +        > 
    +        </rapi-doc>
    +      </body>
    +      
    +  

    Change Logo (DEMO)

    
    +    
    +      <rapi-doc
    +        spec-url = spec-url = "https://raw.githubusercontent.com/mrin9/RapiDoc/master/docs/specs/petstore.yaml"
    +        render-style = "read"
    +      >  
    +        <img 
    +          slot = "nav-logo" "/assets/images/dog.png"
    +          src = "https://raw.githubusercontent.com/mrin9/RapiDoc/master/docs/assets/images/dog.png"
    +        />
    +      </rapi-doc>
    +      
    +  

    Add HTML content inside the spec (DEMO)

    
    +    
    +      <rapi-doc spec-url="https://petstore.swagger.io/v2/swagger.json">
    +
    +        <!-- content at the top -->
    +        <p> This is an example of adding external HTML content. </li>
    +        <p> You may add: </li>
    +        <ul>
    +          <li> Tables </li>
    +          <li> Text </li>
    +          <li> Images </li>
    +          <li> Links </li>
    +          <li> Any HTML content </li>
    +        </ul>  
    +
    +        <!-- content at the bottom -->
    +        <p slot="footer"> This content will apear at the bottom </p>
    +
    +      </rapi-doc>
    +      
    +  

    Mix your own HTML (DEMO)

    +The below example adds a single click authorization functionality to swagger's petstore spec.
    +(Look for the blue button and the text-box on the header which is added by the below html) +
    
    +    
    +      <!doctype html>
    +      <html>
    +      <head>
    +      <meta charset="utf-8">
    +
    +      <style>
    +        .btn{
    +          width: 90px;
    +          height: 32px;
    +          font-size:13px;
    +          background-color: #47AFE8;
    +          color: #fff;
    +          border: none;
    +          margin: 0 2px;
    +          border-radius: 2px;
    +          cursor:pointer;
    +          outline:none;
    +        }
    +        .txt{
    +          width: 100px;
    +          height: 30px;
    +          font-size:13px;
    +          background-color: transparent;
    +          border: 1px solid #47AFE8;
    +          color: #fff;
    +          padding:0 8px;
    +          margin: 0 2px;
    +          border-radius: 2px;
    +          outline:none;
    +        }
    +        rapi-doc{
    +          width:100%;
    +        }
    +      </style>
    +
    +      <script type="module" src="https://unpkg.com/rapidoc/dist/rapidoc-min.js"></script>
    +      <script>
    +        function setApiKey(){
    +          const docEl = document.getElementById('thedoc');
    +          const keyInputEl = document.getElementById('key-val-input');
    +          docEl.setAttribute('api-key-name','api_key');
    +          docEl.setAttribute('api-key-location','header');
    +          docEl.setAttribute('api-key-value',keyInputEl.value);
    +        }
    +      </script>
    +      </head>
    +      <body>
    +
    +      <rapi-doc 
    +        spec-url="https://petstore.swagger.io/v2/swagger.json" 
    +        allow-authentication ="false"
    +      >
    +        <!-- 
    +          below html is custom html that adds an input field and a button in header
    +          on clicking the button the 'api-key-value' is set to the value in input box
    +        -->
    +        <div slot='header' style='display:flex; margin:0 16px;'> 
    +          <input class='txt' id='key' type='text' >
    +          <button class='btn' onclick='setApiKey()' > Login </button >
    +        </div>
    +      </rapi-doc>
    +
    +      </body> 
    +      </html>
    +      
    +  
    Playground - change attributes using JavaScript   DEMO
    \ No newline at end of file diff --git a/docs/generated-docs/examples/additional-props.html b/docs/generated-docs/examples/additional-props.html new file mode 100644 index 000000000..1160bc009 --- /dev/null +++ b/docs/generated-docs/examples/additional-props.html @@ -0,0 +1,8 @@ + RapiDoc Example \ No newline at end of file diff --git a/docs/generated-docs/examples/allof.html b/docs/generated-docs/examples/allof.html new file mode 100644 index 000000000..91bf9944f --- /dev/null +++ b/docs/generated-docs/examples/allof.html @@ -0,0 +1,8 @@ + RapiDoc Example \ No newline at end of file diff --git a/docs/generated-docs/examples/anyof.html b/docs/generated-docs/examples/anyof.html new file mode 100644 index 000000000..e7362f5b9 --- /dev/null +++ b/docs/generated-docs/examples/anyof.html @@ -0,0 +1,8 @@ + RapiDoc Example \ No newline at end of file diff --git a/docs/generated-docs/examples/api-key.html b/docs/generated-docs/examples/api-key.html new file mode 100644 index 000000000..df0d39aac --- /dev/null +++ b/docs/generated-docs/examples/api-key.html @@ -0,0 +1,22 @@ + RapiDoc Example
    \ No newline at end of file diff --git a/docs/generated-docs/examples/arrange-by-tags.html b/docs/generated-docs/examples/arrange-by-tags.html new file mode 100644 index 000000000..c2919f193 --- /dev/null +++ b/docs/generated-docs/examples/arrange-by-tags.html @@ -0,0 +1,58 @@ + RapiDoc Example
    • Tags are sorted based on tags section in the OpenAPI Spec
    • +Paths within each tag is sorted using the summary. + This is done using RapiDocs attribure sort-endpoints-by +and the available options to sort them are by summary | path | method | none
    +Navigation Text: +
    \ No newline at end of file diff --git a/docs/generated-docs/examples/auth-test1.html b/docs/generated-docs/examples/auth-test1.html new file mode 100644 index 000000000..ad3533870 --- /dev/null +++ b/docs/generated-docs/examples/auth-test1.html @@ -0,0 +1,93 @@ + RapiDoc Example
    HTTP Basic
    API Key
    \ No newline at end of file diff --git a/docs/generated-docs/examples/auth.html b/docs/generated-docs/examples/auth.html new file mode 100644 index 000000000..be4cbba57 --- /dev/null +++ b/docs/generated-docs/examples/auth.html @@ -0,0 +1,107 @@ + RapiDoc Example

    Programmatically Applying Security and Setting a API Server

    +*This section is not RapiDoc generated. It is user injected HTML/JS into a <slot> element to demonstrate how to programatically apply security keys +
    +RapiDoc provides you with two helper methods which you can use to supply security keys programatically. You can use one of these method based on the security scheme type +
    SCHEME-TYPEMETHOD USED TO UPDATE
    basicsetHttpUserNameAndPassword('http-basic', 'newUserName', 'newPassword')
    other than basicsetApiKey('api_key1', 'newApiToken')
    +The table below list all the scurity schemes included in this spec. Check the corrosponding method that can be used to supply an access-token +
    SECURITY SCHEMESCHEME TYPEMETHOD USED TO UPDATE
    http-basic basic setHttpUserNameAndPassword('http-basic', 'newUserName', 'newPassword')
    http-bearer (not-specified) setApiKey('http-bearer-a', 'newToken')
    http-bearer (not-specified) setApiKey('http-bearer-b', 'newToken')
    api_key1 (not-specified) setApiKey('api_key1', 'newToken')
    api_key2 (not-specified) setApiKey('api_key2', 'newToken')
    ms-oauth (not-specified) setApiKey('ms-oauth', 'newToken')
    api_key_cookie (not-specified) (wont work as this scheme sends api-key in a cookie, and rapidoc dont create/read cookies)
    +Below form is used for taking user input and apply the security key using javascipt +
    HTTP Basic
    HTTP Bearer / API Key
    +Below form is used for programmatically setting the API server +
    Use setApiServer(serverUrl) methode to set the API Server
    API Server Url
    \ No newline at end of file diff --git a/docs/generated-docs/examples/badges.html b/docs/generated-docs/examples/badges.html new file mode 100644 index 000000000..75c477141 --- /dev/null +++ b/docs/generated-docs/examples/badges.html @@ -0,0 +1,52 @@ + RapiDoc Example
    \ No newline at end of file diff --git a/docs/generated-docs/examples/basic.html b/docs/generated-docs/examples/basic.html new file mode 100644 index 000000000..0f7a03a98 --- /dev/null +++ b/docs/generated-docs/examples/basic.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/generated-docs/examples/binary-response.html b/docs/generated-docs/examples/binary-response.html new file mode 100644 index 000000000..c5f360ea7 --- /dev/null +++ b/docs/generated-docs/examples/binary-response.html @@ -0,0 +1,52 @@ + RapiDoc Example \ No newline at end of file diff --git a/docs/generated-docs/examples/callback.html b/docs/generated-docs/examples/callback.html new file mode 100644 index 000000000..5a04f2893 --- /dev/null +++ b/docs/generated-docs/examples/callback.html @@ -0,0 +1,52 @@ + RapiDoc Example \ No newline at end of file diff --git a/docs/generated-docs/examples/code-highlight.html b/docs/generated-docs/examples/code-highlight.html new file mode 100644 index 000000000..4f4ca2890 --- /dev/null +++ b/docs/generated-docs/examples/code-highlight.html @@ -0,0 +1,52 @@ + RapiDoc Example
    \ No newline at end of file diff --git a/docs/generated-docs/examples/code-samples.html b/docs/generated-docs/examples/code-samples.html new file mode 100644 index 000000000..0deb9e72a --- /dev/null +++ b/docs/generated-docs/examples/code-samples.html @@ -0,0 +1,52 @@ + RapiDoc Example \ No newline at end of file diff --git a/docs/generated-docs/examples/collapsable.html b/docs/generated-docs/examples/collapsable.html new file mode 100644 index 000000000..d95183d06 --- /dev/null +++ b/docs/generated-docs/examples/collapsable.html @@ -0,0 +1,52 @@ + RapiDoc Example
    Use scrollToPath(path:string) method to goto :
    \ No newline at end of file diff --git a/docs/generated-docs/examples/cssparts-btn.html b/docs/generated-docs/examples/cssparts-btn.html new file mode 100644 index 000000000..a9ee25b9b --- /dev/null +++ b/docs/generated-docs/examples/cssparts-btn.html @@ -0,0 +1,53 @@ + RapiDoc Example \ No newline at end of file diff --git a/docs/generated-docs/examples/cssparts-nav.html b/docs/generated-docs/examples/cssparts-nav.html new file mode 100644 index 000000000..625a311a2 --- /dev/null +++ b/docs/generated-docs/examples/cssparts-nav.html @@ -0,0 +1,53 @@ + RapiDoc Example \ No newline at end of file diff --git a/docs/generated-docs/examples/cssparts-servers.html b/docs/generated-docs/examples/cssparts-servers.html new file mode 100644 index 000000000..deccd2ff7 --- /dev/null +++ b/docs/generated-docs/examples/cssparts-servers.html @@ -0,0 +1,53 @@ + RapiDoc Example \ No newline at end of file diff --git a/docs/generated-docs/examples/data-types-simple.html b/docs/generated-docs/examples/data-types-simple.html new file mode 100644 index 000000000..2120787ae --- /dev/null +++ b/docs/generated-docs/examples/data-types-simple.html @@ -0,0 +1,52 @@ + RapiDoc Example \ No newline at end of file diff --git a/docs/generated-docs/examples/dynamic-form-params.html b/docs/generated-docs/examples/dynamic-form-params.html new file mode 100644 index 000000000..c43541624 --- /dev/null +++ b/docs/generated-docs/examples/dynamic-form-params.html @@ -0,0 +1,52 @@ + RapiDoc Example \ No newline at end of file diff --git a/docs/generated-docs/examples/dynamic-query-params.html b/docs/generated-docs/examples/dynamic-query-params.html new file mode 100644 index 000000000..190780186 --- /dev/null +++ b/docs/generated-docs/examples/dynamic-query-params.html @@ -0,0 +1,52 @@ + RapiDoc Example \ No newline at end of file diff --git a/docs/generated-docs/examples/embed-rapidoc-in-html.html b/docs/generated-docs/examples/embed-rapidoc-in-html.html new file mode 100644 index 000000000..c8d235909 --- /dev/null +++ b/docs/generated-docs/examples/embed-rapidoc-in-html.html @@ -0,0 +1,52 @@ + RapiDoc Example

    The quick brown fox jumps over the lazy dog.

    The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.

    The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.

    The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.

    The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.

    The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.

    \ No newline at end of file diff --git a/docs/generated-docs/examples/events.html b/docs/generated-docs/examples/events.html new file mode 100644 index 000000000..7c6f79764 --- /dev/null +++ b/docs/generated-docs/examples/events.html @@ -0,0 +1,52 @@ + RapiDoc Example \ No newline at end of file diff --git a/docs/generated-docs/examples/example1.html b/docs/generated-docs/examples/example1.html new file mode 100644 index 000000000..0e5a504d6 --- /dev/null +++ b/docs/generated-docs/examples/example1.html @@ -0,0 +1,8 @@ + RapiDoc Example \ No newline at end of file diff --git a/docs/generated-docs/examples/example100.html b/docs/generated-docs/examples/example100.html new file mode 100644 index 000000000..66a136dfc --- /dev/null +++ b/docs/generated-docs/examples/example100.html @@ -0,0 +1,108 @@ + RapiDoc Example
    \ No newline at end of file diff --git a/docs/generated-docs/examples/example2.html b/docs/generated-docs/examples/example2.html new file mode 100644 index 000000000..01642f9bd --- /dev/null +++ b/docs/generated-docs/examples/example2.html @@ -0,0 +1,8 @@ + RapiDoc Example \ No newline at end of file diff --git a/docs/generated-docs/examples/example3.html b/docs/generated-docs/examples/example3.html new file mode 100644 index 000000000..c5c31ab47 --- /dev/null +++ b/docs/generated-docs/examples/example3.html @@ -0,0 +1,8 @@ + RapiDoc Example \ No newline at end of file diff --git a/docs/generated-docs/examples/example4.html b/docs/generated-docs/examples/example4.html new file mode 100644 index 000000000..0015eec03 --- /dev/null +++ b/docs/generated-docs/examples/example4.html @@ -0,0 +1,8 @@ + RapiDoc Example

    The quick brown fox jumps over the lazy dog.

    The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.

    The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.

    The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.

    The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.

    The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.

    \ No newline at end of file diff --git a/docs/generated-docs/examples/example6.html b/docs/generated-docs/examples/example6.html new file mode 100644 index 000000000..dc5a073d8 --- /dev/null +++ b/docs/generated-docs/examples/example6.html @@ -0,0 +1,33 @@ + RapiDoc Example \ No newline at end of file diff --git a/docs/generated-docs/examples/example8.html b/docs/generated-docs/examples/example8.html new file mode 100644 index 000000000..93f9a8260 --- /dev/null +++ b/docs/generated-docs/examples/example8.html @@ -0,0 +1,21 @@ + RapiDoc Example
    \ No newline at end of file diff --git a/docs/generated-docs/examples/example9.html b/docs/generated-docs/examples/example9.html new file mode 100644 index 000000000..f661b578f --- /dev/null +++ b/docs/generated-docs/examples/example9.html @@ -0,0 +1,51 @@ + RapiDoc Example \ No newline at end of file diff --git a/docs/generated-docs/examples/examples-multiple.html b/docs/generated-docs/examples/examples-multiple.html new file mode 100644 index 000000000..9f97ed3c6 --- /dev/null +++ b/docs/generated-docs/examples/examples-multiple.html @@ -0,0 +1,52 @@ + RapiDoc Example \ No newline at end of file diff --git a/docs/generated-docs/examples/external-refs.html b/docs/generated-docs/examples/external-refs.html new file mode 100644 index 000000000..6854daac4 --- /dev/null +++ b/docs/generated-docs/examples/external-refs.html @@ -0,0 +1,52 @@ + RapiDoc Example \ No newline at end of file diff --git a/docs/generated-docs/examples/file-upload.html b/docs/generated-docs/examples/file-upload.html new file mode 100644 index 000000000..cf635b0cc --- /dev/null +++ b/docs/generated-docs/examples/file-upload.html @@ -0,0 +1,52 @@ + RapiDoc Example \ No newline at end of file diff --git a/docs/generated-docs/examples/font-size.html b/docs/generated-docs/examples/font-size.html new file mode 100644 index 000000000..59fc4c4e5 --- /dev/null +++ b/docs/generated-docs/examples/font-size.html @@ -0,0 +1,52 @@ + RapiDoc Example
    Font Size
    \ No newline at end of file diff --git a/docs/generated-docs/examples/font.html b/docs/generated-docs/examples/font.html new file mode 100644 index 000000000..8561c6137 --- /dev/null +++ b/docs/generated-docs/examples/font.html @@ -0,0 +1,61 @@ + RapiDoc Example
    \ No newline at end of file diff --git a/docs/generated-docs/examples/header-color.html b/docs/generated-docs/examples/header-color.html new file mode 100644 index 000000000..6cdeb02a5 --- /dev/null +++ b/docs/generated-docs/examples/header-color.html @@ -0,0 +1,52 @@ + RapiDoc Example \ No newline at end of file diff --git a/docs/generated-docs/examples/hello.html b/docs/generated-docs/examples/hello.html new file mode 100644 index 000000000..f929e00a9 --- /dev/null +++ b/docs/generated-docs/examples/hello.html @@ -0,0 +1,8 @@ + RapiDoc Example \ No newline at end of file diff --git a/docs/generated-docs/examples/hide-read-only-write-only.html b/docs/generated-docs/examples/hide-read-only-write-only.html new file mode 100644 index 000000000..db8765459 --- /dev/null +++ b/docs/generated-docs/examples/hide-read-only-write-only.html @@ -0,0 +1,95 @@ + RapiDoc Example
    Hide ReadOnly Properties
    Hide WriteOnly Properties
    \ No newline at end of file diff --git a/docs/generated-docs/examples/links.html b/docs/generated-docs/examples/links.html new file mode 100644 index 000000000..0b3c1038f --- /dev/null +++ b/docs/generated-docs/examples/links.html @@ -0,0 +1,53 @@ + RapiDoc Example \ No newline at end of file diff --git a/docs/generated-docs/examples/logo-youtube.html b/docs/generated-docs/examples/logo-youtube.html new file mode 100644 index 000000000..c62639428 --- /dev/null +++ b/docs/generated-docs/examples/logo-youtube.html @@ -0,0 +1,77 @@ + RapiDoc Example \ No newline at end of file diff --git a/docs/generated-docs/examples/logo.html b/docs/generated-docs/examples/logo.html new file mode 100644 index 000000000..bd7350d18 --- /dev/null +++ b/docs/generated-docs/examples/logo.html @@ -0,0 +1,53 @@ + RapiDoc Example
    nav-logo slot +
    \ No newline at end of file diff --git a/docs/generated-docs/examples/markdown-headings.html b/docs/generated-docs/examples/markdown-headings.html new file mode 100644 index 000000000..3b98e8fb8 --- /dev/null +++ b/docs/generated-docs/examples/markdown-headings.html @@ -0,0 +1,52 @@ + RapiDoc Example \ No newline at end of file diff --git a/docs/generated-docs/examples/markdown.html b/docs/generated-docs/examples/markdown.html new file mode 100644 index 000000000..abd073d2b --- /dev/null +++ b/docs/generated-docs/examples/markdown.html @@ -0,0 +1,52 @@ + RapiDoc Example
    Font Size
    \ No newline at end of file diff --git a/docs/generated-docs/examples/mock.html b/docs/generated-docs/examples/mock.html new file mode 100644 index 000000000..c4bb74265 --- /dev/null +++ b/docs/generated-docs/examples/mock.html @@ -0,0 +1,77 @@ + RapiDoc Example \ No newline at end of file diff --git a/docs/generated-docs/examples/mongo.html b/docs/generated-docs/examples/mongo.html new file mode 100644 index 000000000..285a27056 --- /dev/null +++ b/docs/generated-docs/examples/mongo.html @@ -0,0 +1,52 @@ + RapiDoc Example \ No newline at end of file diff --git a/docs/generated-docs/examples/multi-datatypes-test.html b/docs/generated-docs/examples/multi-datatypes-test.html new file mode 100644 index 000000000..7f4a1be34 --- /dev/null +++ b/docs/generated-docs/examples/multi-datatypes-test.html @@ -0,0 +1,52 @@ + RapiDoc Example
    \ No newline at end of file diff --git a/docs/generated-docs/examples/multi-datatypes.html b/docs/generated-docs/examples/multi-datatypes.html new file mode 100644 index 000000000..13680ecbc --- /dev/null +++ b/docs/generated-docs/examples/multi-datatypes.html @@ -0,0 +1,52 @@ + RapiDoc Example
    \ No newline at end of file diff --git a/docs/generated-docs/examples/multipart-formdata.html b/docs/generated-docs/examples/multipart-formdata.html new file mode 100644 index 000000000..e6bee1de3 --- /dev/null +++ b/docs/generated-docs/examples/multipart-formdata.html @@ -0,0 +1,52 @@ + RapiDoc Example \ No newline at end of file diff --git a/docs/generated-docs/examples/multiple-oneof.html b/docs/generated-docs/examples/multiple-oneof.html new file mode 100644 index 000000000..6d9bae0db --- /dev/null +++ b/docs/generated-docs/examples/multiple-oneof.html @@ -0,0 +1,52 @@ + RapiDoc Example
    \ No newline at end of file diff --git a/docs/generated-docs/examples/nav-styles.html b/docs/generated-docs/examples/nav-styles.html new file mode 100644 index 000000000..ce29bc856 --- /dev/null +++ b/docs/generated-docs/examples/nav-styles.html @@ -0,0 +1,52 @@ + RapiDoc Example
    Navigation Item Text
    Display Method on NavBar as
    Active Nav Item Marker
    \ No newline at end of file diff --git a/docs/generated-docs/examples/no-server.html b/docs/generated-docs/examples/no-server.html new file mode 100644 index 000000000..31839c336 --- /dev/null +++ b/docs/generated-docs/examples/no-server.html @@ -0,0 +1,52 @@ + RapiDoc Example \ No newline at end of file diff --git a/docs/generated-docs/examples/oauth-demo.html b/docs/generated-docs/examples/oauth-demo.html new file mode 100644 index 000000000..663f916e7 --- /dev/null +++ b/docs/generated-docs/examples/oauth-demo.html @@ -0,0 +1,52 @@ + RapiDoc Example \ No newline at end of file diff --git a/docs/generated-docs/examples/oauth-o365.html b/docs/generated-docs/examples/oauth-o365.html new file mode 100644 index 000000000..db71748d3 --- /dev/null +++ b/docs/generated-docs/examples/oauth-o365.html @@ -0,0 +1,52 @@ + RapiDoc Example \ No newline at end of file diff --git a/docs/generated-docs/examples/oauth-receiver.html b/docs/generated-docs/examples/oauth-receiver.html new file mode 100644 index 000000000..d5d95eac8 --- /dev/null +++ b/docs/generated-docs/examples/oauth-receiver.html @@ -0,0 +1,52 @@ + RapiDoc Example \ No newline at end of file diff --git a/docs/generated-docs/examples/oauth-vendor-extension.html b/docs/generated-docs/examples/oauth-vendor-extension.html new file mode 100644 index 000000000..e17078020 --- /dev/null +++ b/docs/generated-docs/examples/oauth-vendor-extension.html @@ -0,0 +1,52 @@ + RapiDoc Example \ No newline at end of file diff --git a/docs/generated-docs/examples/oneof.html b/docs/generated-docs/examples/oneof.html new file mode 100644 index 000000000..e0386f324 --- /dev/null +++ b/docs/generated-docs/examples/oneof.html @@ -0,0 +1,52 @@ + RapiDoc Example
    \ No newline at end of file diff --git a/docs/generated-docs/examples/open-api-3-1.html b/docs/generated-docs/examples/open-api-3-1.html new file mode 100644 index 000000000..f7e82d47a --- /dev/null +++ b/docs/generated-docs/examples/open-api-3-1.html @@ -0,0 +1,52 @@ + RapiDoc Example \ No newline at end of file diff --git a/docs/generated-docs/examples/override-descriptions-from-refs.html b/docs/generated-docs/examples/override-descriptions-from-refs.html new file mode 100644 index 000000000..f936ba076 --- /dev/null +++ b/docs/generated-docs/examples/override-descriptions-from-refs.html @@ -0,0 +1,52 @@ + RapiDoc Example \ No newline at end of file diff --git a/docs/generated-docs/examples/petstore.html b/docs/generated-docs/examples/petstore.html new file mode 100644 index 000000000..59f83c03a --- /dev/null +++ b/docs/generated-docs/examples/petstore.html @@ -0,0 +1,52 @@ + RapiDoc Example \ No newline at end of file diff --git a/docs/generated-docs/examples/predefined-example.html b/docs/generated-docs/examples/predefined-example.html new file mode 100644 index 000000000..07ec24b24 --- /dev/null +++ b/docs/generated-docs/examples/predefined-example.html @@ -0,0 +1,52 @@ + RapiDoc Example \ No newline at end of file diff --git a/docs/generated-docs/examples/rapidoc-demo.html b/docs/generated-docs/examples/rapidoc-demo.html new file mode 100644 index 000000000..bd0f86058 --- /dev/null +++ b/docs/generated-docs/examples/rapidoc-demo.html @@ -0,0 +1,199 @@ + RapiDoc Example
    \ No newline at end of file diff --git a/docs/generated-docs/examples/render-focused-light.html b/docs/generated-docs/examples/render-focused-light.html new file mode 100644 index 000000000..6e87280aa --- /dev/null +++ b/docs/generated-docs/examples/render-focused-light.html @@ -0,0 +1,52 @@ + RapiDoc Example
    \ No newline at end of file diff --git a/docs/generated-docs/examples/render-focused.html b/docs/generated-docs/examples/render-focused.html new file mode 100644 index 000000000..887a73095 --- /dev/null +++ b/docs/generated-docs/examples/render-focused.html @@ -0,0 +1,52 @@ + RapiDoc Example \ No newline at end of file diff --git a/docs/generated-docs/examples/render-read-light.html b/docs/generated-docs/examples/render-read-light.html new file mode 100644 index 000000000..b8d953e02 --- /dev/null +++ b/docs/generated-docs/examples/render-read-light.html @@ -0,0 +1,52 @@ + RapiDoc Example
    \ No newline at end of file diff --git a/docs/generated-docs/examples/render-read.html b/docs/generated-docs/examples/render-read.html new file mode 100644 index 000000000..4e6945c85 --- /dev/null +++ b/docs/generated-docs/examples/render-read.html @@ -0,0 +1,52 @@ + RapiDoc Example \ No newline at end of file diff --git a/docs/generated-docs/examples/render-view-light.html b/docs/generated-docs/examples/render-view-light.html new file mode 100644 index 000000000..37f2beb36 --- /dev/null +++ b/docs/generated-docs/examples/render-view-light.html @@ -0,0 +1,52 @@ + RapiDoc Example
    \ No newline at end of file diff --git a/docs/generated-docs/examples/render-view.html b/docs/generated-docs/examples/render-view.html new file mode 100644 index 000000000..2cc5f71bf --- /dev/null +++ b/docs/generated-docs/examples/render-view.html @@ -0,0 +1,52 @@ + RapiDoc Example \ No newline at end of file diff --git a/docs/generated-docs/examples/request-body-multiple.html b/docs/generated-docs/examples/request-body-multiple.html new file mode 100644 index 000000000..4b3eaf713 --- /dev/null +++ b/docs/generated-docs/examples/request-body-multiple.html @@ -0,0 +1,52 @@ + RapiDoc Example
    \ No newline at end of file diff --git a/docs/generated-docs/examples/schema-expand-level.html b/docs/generated-docs/examples/schema-expand-level.html new file mode 100644 index 000000000..b7e658c6d --- /dev/null +++ b/docs/generated-docs/examples/schema-expand-level.html @@ -0,0 +1,52 @@ + RapiDoc Example
    Schema Expand Level
    \ No newline at end of file diff --git a/docs/generated-docs/examples/schema-tab-default.html b/docs/generated-docs/examples/schema-tab-default.html new file mode 100644 index 000000000..fe8b20513 --- /dev/null +++ b/docs/generated-docs/examples/schema-tab-default.html @@ -0,0 +1,61 @@ + RapiDoc Example
    \ No newline at end of file diff --git a/docs/generated-docs/examples/schema-table.html b/docs/generated-docs/examples/schema-table.html new file mode 100644 index 000000000..26d492e5b --- /dev/null +++ b/docs/generated-docs/examples/schema-table.html @@ -0,0 +1,52 @@ + RapiDoc Example
    Font Size
    \ No newline at end of file diff --git a/docs/generated-docs/examples/search-by-params.html b/docs/generated-docs/examples/search-by-params.html new file mode 100644 index 000000000..8986f6a9e --- /dev/null +++ b/docs/generated-docs/examples/search-by-params.html @@ -0,0 +1,66 @@ + RapiDoc Example
    Search:
    \ No newline at end of file diff --git a/docs/generated-docs/examples/server-override.html b/docs/generated-docs/examples/server-override.html new file mode 100644 index 000000000..c903d9a44 --- /dev/null +++ b/docs/generated-docs/examples/server-override.html @@ -0,0 +1,52 @@ + RapiDoc Example \ No newline at end of file diff --git a/docs/generated-docs/examples/server-vars.html b/docs/generated-docs/examples/server-vars.html new file mode 100644 index 000000000..e3d6226ae --- /dev/null +++ b/docs/generated-docs/examples/server-vars.html @@ -0,0 +1,52 @@ + RapiDoc Example \ No newline at end of file diff --git a/docs/generated-docs/examples/show-components.html b/docs/generated-docs/examples/show-components.html new file mode 100644 index 000000000..1f674debd --- /dev/null +++ b/docs/generated-docs/examples/show-components.html @@ -0,0 +1,52 @@ + RapiDoc Example \ No newline at end of file diff --git a/docs/generated-docs/examples/show-curl-before-try.html b/docs/generated-docs/examples/show-curl-before-try.html new file mode 100644 index 000000000..3742fbc77 --- /dev/null +++ b/docs/generated-docs/examples/show-curl-before-try.html @@ -0,0 +1,52 @@ + RapiDoc Example \ No newline at end of file diff --git a/docs/generated-docs/examples/slots.html b/docs/generated-docs/examples/slots.html new file mode 100644 index 000000000..58f3d3fe0 --- /dev/null +++ b/docs/generated-docs/examples/slots.html @@ -0,0 +1,81 @@ + RapiDoc Example

    fixed-header slot| Good place for contents that you always want to be visible. will not scroll out of view

    default slot | A good place to provide internal and external links, Sign In buttons etc

    overview slot | good for business flow explenation

    Provide explenations, diagrams and other HTML controls. You may also style them to your needs

    servers slot| good for describing about the API gateways, load balancers application servers etc

    auth slot | good for describing authentication system

    + graph TB + API-Gateway --> Authentication-Server + Authentication-Server-->A[fa:fa-ban Invalid Token] + Authentication-Server-->B[fa:fa-ban Valid Token] + A --> 401[401 Response Status] + B --> 200[200 response Status<br/> with JSON payload] +
    +You may even introduce some JS based functionality + For instance, the digram on the left is generated by a flowchart markup rederer mermaid +You can change them dynamically using scrpts +

    +You may also provide HTML buttons and attach scripts to them to perform automatic authentication for your visitors. +

    overview slot | Good for contents that applies to all operations/api

    dynamic slot | + +The slot is created using tag name defined in the spec using the format: tag--{tag-name}
    +This slot name is tag--user

    dynamic slot | + +The slot is created using tag name defined in the spec using the format: tag--{tag-name}
    +This slot name is tag--Create-User

    dynamic slot | + +The slot is created using method and path defined in the spec.
    +This slot name is post-/users

    footer slot | may provide copyright info and other links

    nav-logo slot
    \ No newline at end of file diff --git a/docs/generated-docs/examples/tag-displayname.html b/docs/generated-docs/examples/tag-displayname.html new file mode 100644 index 000000000..75108fe75 --- /dev/null +++ b/docs/generated-docs/examples/tag-displayname.html @@ -0,0 +1,52 @@ + RapiDoc Example \ No newline at end of file diff --git a/docs/generated-docs/examples/tag-focused-mode.html b/docs/generated-docs/examples/tag-focused-mode.html new file mode 100644 index 000000000..31cfbf3d3 --- /dev/null +++ b/docs/generated-docs/examples/tag-focused-mode.html @@ -0,0 +1,52 @@ + RapiDoc Example \ No newline at end of file diff --git a/docs/generated-docs/examples/themes.html b/docs/generated-docs/examples/themes.html new file mode 100644 index 000000000..e244a3fc8 --- /dev/null +++ b/docs/generated-docs/examples/themes.html @@ -0,0 +1,154 @@ + RapiDoc Example
    \ No newline at end of file diff --git a/docs/generated-docs/examples/try.html b/docs/generated-docs/examples/try.html new file mode 100644 index 000000000..f08416e70 --- /dev/null +++ b/docs/generated-docs/examples/try.html @@ -0,0 +1,8 @@ + RapiDoc Example
    Enable/Disable TRY
    \ No newline at end of file diff --git a/docs/generated-docs/examples/xml.html b/docs/generated-docs/examples/xml.html new file mode 100644 index 000000000..16c4f97a9 --- /dev/null +++ b/docs/generated-docs/examples/xml.html @@ -0,0 +1,52 @@ + RapiDoc Example \ No newline at end of file diff --git a/docs/generated-docs/index.html b/docs/generated-docs/index.html new file mode 100644 index 000000000..5dac149bf --- /dev/null +++ b/docs/generated-docs/index.html @@ -0,0 +1,67 @@ + RapiDoc Example
    Web Component Standard
    +Free of any frameworks, setups, configs, build steps or packaging. + Can be used with any framework or just with vanilla javascript +
    Easy Usage
    +Use It just like any other HTML Tag, Change its attribute using JavaScript and see + it react to those changes. Basic knowledge of HTML is all that's required +
    Fully Customizable
    +Style it to your heart's content. Change font, logo, colors and theme. + Inject external HTML or embed into another HTML document. +
    Small And Fast
    +Minimal dependencies, no runtime and no virtual DOM ensures lowest memory consumption, + Just native and raw speed of modern browser. +
    Seamlessly interoperable
    +Loved by tech writers, designers, dev-ops, testers and developers alike, + due to its simplicity, interoperability and powerful features. + No special build-steps, runtime or framework required +
    Integrated Console
    +Comes with built in console to Try out the APIs. Supports authentication mechanism. + No validation ensures, you can test negative cases. +
    Better Usability
    +Browse the spec with minimal clicks. All models & examples are expanded by default, eliminates the need to click and reveal. + Requests and Responses are pre-populated with sample data. +

    Match Your Brand

    Put your own Logo, Change Header Color, Fonts, Button and Text Colors to match your Brand, + in an extremely easy way without writing any css/js/html. + You can also control them using JavaScript to dynamically change +

    Multiple Rendering Styles

    While the default rendering style (view mode) is loved by programmers for quick exploration, + RapiDoc also gives you an option to present API documentation to external audience which is more suitable to read like an Wiki +

    Supports Markdown

    +Comes with a builtin markdown rendering engine, + Enhance your API documentation even more by including markdown syntax. + Add tables, lists, code-snippets, and many other formatting options. +

    Two beautiful ways to show object models

    +RapiDocs ability to show object models is loved by many. + Allows two distinctive styles, tabular and tree, both are suited for + large and small schemas representation that allows object/array folding. +

    Quickstart (DEMO)

    +Just copy the below code and save it in an html file. Then open it using a browser +
            
    +          
    +          !doctype html> <!-- Important: must specify -->
    +          <html>
    +          <head>
    +            <meta charset="utf-8"> <!-- Important: rapi-doc uses utf8 characters -->
    +            <script type="module" src="https://unpkg.com/rapidoc/dist/rapidoc-min.js"></script>
    +          </head>
    +          <body>
    +            <rapi-doc
    +              spec-url="https://raw.githubusercontent.com/mrin9/RapiDoc/master/docs/specs/petstore.yaml"
    +            > </rapi-doc>
    +          </body>
    +          </html>
    +          
    +        
    +      
    \ No newline at end of file diff --git a/docs/generated-docs/list.html b/docs/generated-docs/list.html new file mode 100644 index 000000000..d670eb4cd --- /dev/null +++ b/docs/generated-docs/list.html @@ -0,0 +1,18 @@ + RapiDoc Example

    List of Examples and Documentation


    How to Use
    RapiDoc usage with vanila HTML, React and Vue
    A Pet-Store Example
    An example showing how RapiDoc renders an sample Pet-Store OpenAPI spec
    Rendering Modes
    3 different rendering styles to choose
    Built In Console
    Call and Test APIs from RapiDoc
    Dark & Light Themes
    Support for light and Dark theme.
    Theme With Colors
    Apply colors to various parts of documentation to match your brand
    Fonts
    Easily change font and sizes
    Logo
    Provide your own logo
    Header Style
    Change Header color
    Advance Styling
    Documentation on how to style beyond themes and colors
    Schema Display
    Two beautiful schema display option
    Tree | Table
    Schema & Example Views
    Define your default view Schema or Example
    Show Components
    Apart from the Main Spec you can also display Components definitions. (Available only in focused mode) +
    Navigation Styles
    Define content and styling of Navigation with ease +
    Slots - HTML Injection
    Inject custom HTML content at various locations of your document
    Markdown
    Supports markdown syntax.
    Markdown Headings in Navigation
    Convert headings in Markdown to links on navigation bar
    Tags with Focused mode
    Tags in focused mode expand/collapse navigation section
    Performance Tips
    Tips to improve Performance
    Links
    Provide External and Internal links to varius sections of document.
    Syntax Highlighting
    Supports syntax highlighting in markdown for several languages
    Code Samples
    Support for x-code-samples (vendor extension) in endpoint definition +
    Endpoint Badges
    Annotate endpoints with short color coded labels using x-badges vendor extension +
    Add Your Examples
    Provide multiple request and response examples for your APIs
    File Upload
    APIs accepting binary data
    Binary Response
    APIs responding with binary data
    Multipart Formdata
    Submit mixed content such as file(binary) and plain-text using multipart-formdata
    Multiple Request Body
    APIs accepting multiple request bodies
    Arrange Enpoints Using Tags
    Tags can be used to arrange navigation section
    Dynamic Parameters
    Parameters need not be predefined in the Spec. They can be dynamic as well.
    Advanced Search
    Take control of searching by enabeling/disabeling advanced search feature
    OAuth
    Basic demonstration of OAuth support in RapiDoc
    OAuth Setup
    How to setup OAuth with RapiDoc
    OAuth Extensions
    Pre fill client-id & client-secret with vendor extension x-client-id and x-client-secret, and pre select desired scopes with vendor extension x-default-scopes +
    Authentication (Multiple)
    Demonstrate various and complex authentication setup for APIs
    API Key as RapiDoc Attribute
    Declaratively provide API Key as RapiDoc Attribute, Which can further be programatically altered
    Additional Properties
    Apart from fixed predefined properties, schema can contain additional properties
    Embed RapiDoc In HTML
    <rapi-doc> element can co-exist with other HTML content
    JSON Object as OpenAPI Spec
    Programmatically load a JSON object *should not contain external JSON refs +
    Define API server using template
    Define API server using templates and variables, to dynamically connect to different servers
    Callback
    Sample API with CALLBACK definition
    Webhook
    Sample API with WEBHOOK definition
    Multiple DataTypes
    OpenAPI 3.1.0 allows each field to have multiple data-types in accordance to JSON schema standard
    Spec split into multiple files
    Large specs split into multiple files referring each other with JSON refs
    RapiDoc Mini
    Pluck selected APIs from OpenAPI Spec and integrate into your own blogs and documentations
    Schema Composition
    Compose complex schema using the following
    Mock API
    Using a Mocking API service performing realtime request and response
    Playground
    Demo showing various RapiDoc configuration options
    \ No newline at end of file diff --git a/docs/generated-docs/mix-html.html b/docs/generated-docs/mix-html.html new file mode 100644 index 000000000..344af4ed8 --- /dev/null +++ b/docs/generated-docs/mix-html.html @@ -0,0 +1,40 @@ + RapiDoc Example

    Mix HTML


    To mix your own HTML, just place it in between the <rapidoc> +and you should see the content appearing at the top of the main section +

          
    +        
    +        <rapi-doc spec-url = "/specs/petstore.yaml">
    +          <h1> Hello World !!!  </h1>
    +        </rapi-doc>
    +        
    +      
    +    

    Placing HTML Content

    +The above code will place your HTML content just at the start of the main content area (below the header), + but what if you want to place your HTML in a different location. SLOT +is your friend here, It allows you to place your custom HTML content in certain strategic locations +

    +For instance the below code will place the HTML content at the bottom of the very bottom of the API doc. + (check slot="footer" attribute of the div) +

          
    +      
    +        <rapi-doc spec-url = "https://petstore.swagger.io/v2/swagger.json">
    +          <div slot="footer"> The End  </div>
    +        </rapi-doc>
    +      
    +      
    +    

    Slots

    Slot Name Description
    (default) +any content placed inside <rapidoc> tag, + will be shown immediately under the header and above the info section
    logo use this slot to replace the logo
    header The contents of this slot will appear at the header after the spec-url input
    footer The contents of this slot will appear at the bottom of the spec
    nav-logo The contents of this slot will appear on Side navigation bar (only available in read-mode)

    Examples

    Embed HTML In RapiDoc
    +Add html content in various slots +
    \ No newline at end of file diff --git a/docs/generated-docs/oauth-setup.html b/docs/generated-docs/oauth-setup.html new file mode 100644 index 000000000..f0c2b36e7 --- /dev/null +++ b/docs/generated-docs/oauth-setup.html @@ -0,0 +1,130 @@ + RapiDoc Example

    Setting up OAuth with RapiDoc


    Demo

    • Here is a minimal sample spec containing OAuth Authentication schemes ( view )
    • Here is how it is rendered in RapiDoc ( view )

    Short Version

    • Register your app with an Authorization Provider such as Microsoft Active Directory
    • Create index.html containing <rapi-doc> element ( view )
    • Create another html and name it oauth-receiver.html containing <oauth-receiver> element ( view )
    +You are all set !!! +

    The Long story

    Overall flow (Authorization Code)

    Register client with Authorization Server

    • +For this demo I am going to use IdentityServer as the OAuth provider. + This is a demo Identity provider which is pre-configured with some users and supports various oAuth authentication flows +
    • Register OAuth Client with identity Provider: Normally you need to register your client application with the Identity provider which will provide you with a client-id and client-secret +but in our case we donot need to do so because our demo identity server is pre-configured with some sample client-id and secret +

    Setup RapiDoc

    +Below are the two files that you need to have
    • index.html (I am using the name index.html but you are free to use any name, it is the html that contain <rapi-doc> element)
    • oauth-receiver.html (It is important that you name this file exactly as oauth-receiver.html and place in the same location where the above file is)

    index.html +(This is our main file that contains the <rapi-doc> element ) +
          
    +      
    +      <!doctype html>
    +      <head>
    +        <script type="module" src="https://unpkg.com/rapidoc/dist/rapidoc-min.js"></script>
    +      </head>
    +      <body>
    +        <rapi-doc spec-url = "https://mrin9.github.io/RapiDoc/specs/oauth.yaml" >
    +        </rapi-doc>
    +      </body>
    +      
    +      
    +    

    oauth-receiver.html
    +the <oauth-receiver> custom element in this file, + requests for an Authorization Code from Authorization Server by providing client_id and redirect URL. + Upon receiving a valid auth-code, it passes to <rapi-doc> element. + RapiDoc, then uses this Auth-Code to request for the Access Token . +
          
    +      
    +      <!doctype html>
    +      <head>
    +        <script type="module" src="https://unpkg.com/rapidoc/dist/rapidoc-min.js"></script>
    +      </head>
    +
    +      <body>
    +        <oauth-receiver> </oauth-receiver>
    +      </body>
    +      
    +      
    +    

    The OpenAPI spec

    +Our demo Identity server provides few sample APIs for testing. +
    +Below is the OpenAPI spec which contains couple of APIs protected with identity server. + You can check out how these are rendered through RapiDoc and how rapidoc exchanges oAuth tokens with the demo IdentityServer + | Demo
          
    +      
    +        openapi: 3.0.0
    +        info:
    +          title: Identity 4 Server
    +          description: Test case for oAuth flows
    +          version: "1.0"
    +        servers:
    +        - url:  https://demo.duendesoftware.com
    +        paths:
    +          /api/test:
    +            get:
    +              summary: Test API
    +              security:
    +                - short-lived-oauth:
    +                - long-lived-oauth:
    +              responses:
    +                '200':
    +                  description: Successful operation
    +          /connect/userinfo:
    +            get:
    +              summary: Get User Info
    +              security:
    +                - short-lived-oauth:
    +                  - openid
    +                  - email
    +                  - profile
    +                - long-lived-oauth:
    +                  - openid
    +                  - email
    +                  - profile
    +              responses:
    +                '200':
    +                  description: Successful operation
    +        components:
    +          securitySchemes:
    +            short-lived-oauth:
    +              type: oauth2
    +              description: Provides OAuth token valid for short duration ~75 seconds
    +              
    +              # pre filling client-id, secret and scopes for (ALL flows)
    +              x-client-id: interactive.confidential.short
    +              x-client-secret: secret
    +              x-default-scopes:
    +                openid
    +
    +              flows:
    +                authorizationCode:
    +                  authorizationUrl: https://demo.duendesoftware.com/connect/authorize
    +                  tokenUrl: https://demo.identityserver.io/connect/token
    +                  scopes:
    +                    openid: OpenID
    +                    email: Email 
    +                    profile: Profile 
    +            long-lived-oauth:
    +              type: oauth2
    +              description: Provides an OAuth token thats valid for long durations
    +              flows:
    +                authorizationCode:
    +                  authorizationUrl: https://demo.duendesoftware.com/connect/authorize
    +                  tokenUrl: https://demo.identityserver.io/connect/token
    +                  scopes:
    +                    openid: OpenID
    +                    email: Email 
    +                    profile: Profile 
    +
    +                  # pre filling client-id, secret and scopes for (SPECIFIC flow)
    +                  x-client-id: interactive.confidential
    +                  x-client-secret: secret
    +                  x-default-scopes:
    +                    openid
    +                  # when x-pkce-only=true, it will not allow to provide or send client_secret through the UI  
    +                  x-pkce-only: true
    +                  
    +      
    +    
    \ No newline at end of file diff --git a/docs/generated-docs/performance.html b/docs/generated-docs/performance.html new file mode 100644 index 000000000..bcc507ad3 --- /dev/null +++ b/docs/generated-docs/performance.html @@ -0,0 +1,23 @@ + RapiDoc Example

    Performance Tips

    RapiDoc is fast enough to parse and render OpenAPI spec, but if used in a wrong manner it may lag a bit when dealing with large specs

    How Large is a Large Spec ?

    +There are many factors thats responsible to call a spec a large spec, such as +

    • size
    • number of schemas and operations defined
    • number of references to a schema etc
    +There isn't any clear way to declare a spec large. + For instance a large sized spec ( ~ 6 mb) containing lot of description text is not considered large for parsing and rendering on the other + hand a medium sized spec which has containing many operations/paths all of which are referring to a single schema can lead to a very large output due to the repeated use of schema. +

    Performance Tips

    Below are some general tips that you can apply when you are dealing with slow rendering +

    • If you are using version 2 of OpenAPI spec (swagger 2.0), then pre convert it to OpenAPI 3.x. + When you provide a swagger 2.0 spec to RapiDoc, it attempts to convert it into OpenAPI 3.x which is a very high resource consuming operation. +
    • Use render-style as "view" or "focused" +these rendering styles are very fast as they use lazy rendering of the views +
    A large spec is used for the below performance test cases
    Swagger 2.0 (Slow Performance) Most of the time is taken by swagger 2 to OpenAPI conversion
    OpenAPI 3.0 - Read Mode (okay performance) The above spec pre-converted to OpenAPI 3 - read-mode renders everything in one large page, resulting into very large DOM, the user interactions like expand collapse are not much snappier
    OpenAPI 3.0 - View Mode (fast) initial load is quick and user interaction is snappy, DOM is a bit larger than focused mode but very small compared to read mode
    OpenAPI 3.0 - Focused Mode (fastest) loads only the section that user is viewing, resulting into a small DOM footprint and snappier interactions
    \ No newline at end of file diff --git a/docs/generated-docs/quickstart.html b/docs/generated-docs/quickstart.html new file mode 100644 index 000000000..44149fdc8 --- /dev/null +++ b/docs/generated-docs/quickstart.html @@ -0,0 +1,61 @@ + RapiDoc Example

    Quickstart


    Vanilla HTML

    +Just copy the below code and save it in an html file. Then open it using a browser (you do not need any server) +
    +https://codesandbox.io/s/vanilla-js-template-98gc2?file=/index.html +
    
    +      
    +      <!doctype html> <!-- Important: must specify -->
    +      <html>
    +        <head>
    +          <meta charset="utf-8"> <!-- Important: rapi-doc uses utf8 characters -->
    +          <script type="module" src="https://unpkg.com/rapidoc/dist/rapidoc-min.js"></script>
    +        </head>
    +        <body>
    +          <rapi-doc spec-url = "https://petstore.swagger.io/v2/swagger.json"> </rapi-doc>
    +        </body>
    +      </html>
    +      
    +    
    If you do not want to depend on the CDN, just download it from there and store it in a place that you can access

    In JavaScript Apps (integration with other frameworks)

    Install RapiDoc

    
    +      npm install rapidoc
    +      // (feel free to use yarn)
    +    
    You can now use the Web Components like any other HTML tag. (Just do an import for it to be recognized by the browser)

    Usage in React

    https://codesandbox.io/s/upbeat-sea-4tfo7?file=/src/App.js
     
    +      
    +        import React, { Component } from 'react';
    +        import 'rapidoc'; // <-- import rapidoc
    +
    +        export class MyApiDoc extends Component {
    +          render() {
    +            return &lt;rapi-doc 
    +              spec-url = "https://petstore.swagger.io/v2/swagger.json" 
    +              render-style = "read"
    +              style = {{ height: "100vh", width: "100%" }}
    +            &gt;
    +            &lt;/rapi-doc&gt;
    +          }
    +        }
    +      
    +    

    Usage in Vue

    https://codesandbox.io/s/nostalgic-sky-jlts7?file=/src/App.vue
    
    +      
    +      <template>
    +        <rapi-doc
    +          spec-url = "https://petstore.swagger.io/v2/swagger.json"
    +          render-style = "read"
    +          style = "height:100vh; width:100%"
    +        > </rapi-doc>
    +      </template>
    +
    +      <script>
    +        import 'rapidoc';
    +      </script>
    +      
    +    
    \ No newline at end of file diff --git a/docs/generated-docs/rapidoc-mini.html b/docs/generated-docs/rapidoc-mini.html new file mode 100644 index 000000000..13dfe582f --- /dev/null +++ b/docs/generated-docs/rapidoc-mini.html @@ -0,0 +1,76 @@ + RapiDoc Example

    Rapidoc Mini


    <rapi-doc-mini> +a unique way to expose your API documentation which can seamlesly integrate with any HTML based documetation. +

    +There are various styles and needs how one would like to document their APIs. + such as +

    • +All the APIs are documented in one central place. This is where <rapi-doc> fits in. + However for the rest of bullets listed below <rapi-doc-mini> is your friend +
    • +Expose just a few important APIs such as authentication etc as a part of a blog, to provide an initial understanding to your audience +
    • +A step by step tutorial where in each step shows you a few APIs +
    • +Or you are explaining a business case which uses microservices, + where each microservice has its own APIs and the ask is to pick few APIs from each of theses microservice show how they work together in a single document +

    Usage in a blog style writing

    +It is fairly common to write specifically about few APIs to provide an initial understanding to your users. + However in those cases you run the risk of your writeup getting outdated when the actual API changes its shape. +

    <rapi-doc-mini> +gives you this amazing capability to extract and expose any part of you Open-API spec including a built in API console to try out. + As an example shown below is how I am exposing a set of APIs in this writeup. + It is a very powerful and yet very easy to use tool that comes with many advantages, + inluding syntax highlighting, built-in console, markdown support and many others. +
    Below is the markup that you will put in your html

    <rapi-doc-mini
    +  spec-url = "https://petstore.swagger.io/v2/swagger.json"
    +  paths-expanded = "false"
    +  theme = "dark"
    +  bg-color = "#1a1a1a"
    +> </rapi-doc-mini>
    +Above HTML snippet will result in generating an API doc as shown below. Notice how it blends seamlessly with this writeup as if its a part of this page. + Go ahead and play with the below APIs, make live request and watch the responses, all from this very blog. +

    Placement, Resize and Style

    +If needed it can be resized to fit the layout needs. + Just like how you would use an <img> tag, in the same way you can use <rapi-doc-mini> +and place and style per your needs.
    +like shown below, I reduced its width, applied a thick border and attached some shadow +




    Pick only specific APIs from OpenAPI spec

    +Instead of showing entire open-api spec you can just extract and choose to show what you need to show. This is done using match-paths attribute. +
    Example below uses the same OpenAPI spec as we used above, but showing only the paths that we intend to +
    <rapi-doc-mini
    +  style = "width:600px; border:1px solid tomato; border-radius:8px; padding:8px"
    +  spec-url = "../specs/mock.yaml"
    +  theme = "dark"
    +  bg-color = "#1a1a1a"
    +  paths-expanded = "false"
    +  match-paths = "post /users"
    +> </rapi-doc-mini>


    More complex RegEx based filtering of API is possible too (match-paths & match-type)

    +Here we are using regular RegEx to select the paths which is either + get /users/{userId}   or   + post /users
     <rapi-doc-mini
    +  style= "width:600px; border:1px solid #444;"
    +  spec-url = "./specs/mock.yaml"
    +  theme = "dark"
    +  bg-color = "#1a1a1a"
    +  schema-style = 'table'
    +  paths-expanded = "false"
    +  match-paths = "^get /users/{userId}$|^post /users$"
    +  match-type = "regex"
    +> </rapi-doc-mini>

    Show it Minimzed or Expanded

    +If expand/collapse is not your style, then have it always expanded and make it more natural and integrated part of your writeup. +
    Use the attribute paths-expanded = "true" to achive this

    Include APIs from multiple specs

    +Pretty common with micro services, where you like to explain a business flow by consuming APIs from multiple services. + Each of these services may be having their own OpenAPI spec. + The ask is to pluk some APIs from different services and makeup a story.
    +Do not rewrite the API specific functionality again, make use of the existing OpenAPI spec and Use <rapi-doc-mini> to pluck and document APIs from differenct specs +

    Use a different theme

    Handling non available specs

    \ No newline at end of file diff --git a/docs/generated-docs/rapidoc/rapidoc-min.js b/docs/generated-docs/rapidoc/rapidoc-min.js new file mode 100644 index 000000000..e7a0aa463 --- /dev/null +++ b/docs/generated-docs/rapidoc/rapidoc-min.js @@ -0,0 +1,648 @@ +/*! + * @license + * rapidoc v9.3.9-beta + * (c) 2024 Mrinmoy Majumdar + * SPDX-License-Identifier: MIT + */ +var G0=Object.defineProperty,cd=e=>{throw TypeError(e)},K0=(e,t,r)=>t in e?G0(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,P=(e,t,r)=>K0(e,typeof t!="symbol"?t+"":t,r),pd=(e,t,r)=>t.has(e)||cd("Cannot "+r),ud=(e,t,r)=>(pd(e,t,"read from private field"),r?r.call(e):t.get(e)),Y0=(e,t,r)=>t.has(e)?cd("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,r),dd=(e,t,r,s)=>(pd(e,t,"write to private field"),s?s.call(e,r):t.set(e,r),r);/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */const Ui=globalThis,Sl=Ui.ShadowRoot&&(Ui.ShadyCSS===void 0||Ui.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,kl=Symbol(),hd=new WeakMap;let md=class{constructor(e,t,r){if(this._$cssResult$=!0,r!==kl)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=t}get styleSheet(){let e=this.o;const t=this.t;if(Sl&&e===void 0){const r=t!==void 0&&t.length===1;r&&(e=hd.get(t)),e===void 0&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),r&&hd.set(t,e))}return e}toString(){return this.cssText}};const fd=e=>new md(typeof e=="string"?e:e+"",void 0,kl),we=(e,...t)=>{const r=e.length===1?e[0]:t.reduce((s,n,i)=>s+(a=>{if(a._$cssResult$===!0)return a.cssText;if(typeof a=="number")return a;throw Error("Value passed to 'css' function must be a 'css' function result: "+a+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(n)+e[i+1],e[0]);return new md(r,e,kl)},Z0=(e,t)=>{if(Sl)e.adoptedStyleSheets=t.map(r=>r instanceof CSSStyleSheet?r:r.styleSheet);else for(const r of t){const s=document.createElement("style"),n=Ui.litNonce;n!==void 0&&s.setAttribute("nonce",n),s.textContent=r.cssText,e.appendChild(s)}},gd=Sl?e=>e:e=>e instanceof CSSStyleSheet?(t=>{let r="";for(const s of t.cssRules)r+=s.cssText;return fd(r)})(e):e;/** + * @license + * Copyright 2017 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */const{is:X0,defineProperty:Q0,getOwnPropertyDescriptor:ew,getOwnPropertyNames:tw,getOwnPropertySymbols:rw,getPrototypeOf:sw}=Object,ds=globalThis,yd=ds.trustedTypes,nw=yd?yd.emptyScript:"",vd=ds.reactiveElementPolyfillSupport,pn=(e,t)=>e,El={toAttribute(e,t){switch(t){case Boolean:e=e?nw:null;break;case Object:case Array:e=e==null?e:JSON.stringify(e)}return e},fromAttribute(e,t){let r=e;switch(t){case Boolean:r=e!==null;break;case Number:r=e===null?null:Number(e);break;case Object:case Array:try{r=JSON.parse(e)}catch{r=null}}return r}},bd=(e,t)=>!X0(e,t),xd={attribute:!0,type:String,converter:El,reflect:!1,hasChanged:bd};Symbol.metadata??(Symbol.metadata=Symbol("metadata")),ds.litPropertyMetadata??(ds.litPropertyMetadata=new WeakMap);let hs=class extends HTMLElement{static addInitializer(e){this._$Ei(),(this.l??(this.l=[])).push(e)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(e,t=xd){if(t.state&&(t.attribute=!1),this._$Ei(),this.elementProperties.set(e,t),!t.noAccessor){const r=Symbol(),s=this.getPropertyDescriptor(e,r,t);s!==void 0&&Q0(this.prototype,e,s)}}static getPropertyDescriptor(e,t,r){const{get:s,set:n}=ew(this.prototype,e)??{get(){return this[t]},set(i){this[t]=i}};return{get(){return s?.call(this)},set(i){const a=s?.call(this);n.call(this,i),this.requestUpdate(e,a,r)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??xd}static _$Ei(){if(this.hasOwnProperty(pn("elementProperties")))return;const e=sw(this);e.finalize(),e.l!==void 0&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty(pn("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(pn("properties"))){const t=this.properties,r=[...tw(t),...rw(t)];for(const s of r)this.createProperty(s,t[s])}const e=this[Symbol.metadata];if(e!==null){const t=litPropertyMetadata.get(e);if(t!==void 0)for(const[r,s]of t)this.elementProperties.set(r,s)}this._$Eh=new Map;for(const[t,r]of this.elementProperties){const s=this._$Eu(t,r);s!==void 0&&this._$Eh.set(s,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(e){const t=[];if(Array.isArray(e)){const r=new Set(e.flat(1/0).reverse());for(const s of r)t.unshift(gd(s))}else e!==void 0&&t.push(gd(e));return t}static _$Eu(e,t){const r=t.attribute;return r===!1?void 0:typeof r=="string"?r:typeof e=="string"?e.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){var e;this._$ES=new Promise(t=>this.enableUpdating=t),this._$AL=new Map,this._$E_(),this.requestUpdate(),(e=this.constructor.l)==null||e.forEach(t=>t(this))}addController(e){var t;(this._$EO??(this._$EO=new Set)).add(e),this.renderRoot!==void 0&&this.isConnected&&((t=e.hostConnected)==null||t.call(e))}removeController(e){var t;(t=this._$EO)==null||t.delete(e)}_$E_(){const e=new Map,t=this.constructor.elementProperties;for(const r of t.keys())this.hasOwnProperty(r)&&(e.set(r,this[r]),delete this[r]);e.size>0&&(this._$Ep=e)}createRenderRoot(){const e=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return Z0(e,this.constructor.elementStyles),e}connectedCallback(){var e;this.renderRoot??(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),(e=this._$EO)==null||e.forEach(t=>{var r;return(r=t.hostConnected)==null?void 0:r.call(t)})}enableUpdating(e){}disconnectedCallback(){var e;(e=this._$EO)==null||e.forEach(t=>{var r;return(r=t.hostDisconnected)==null?void 0:r.call(t)})}attributeChangedCallback(e,t,r){this._$AK(e,r)}_$EC(e,t){var r;const s=this.constructor.elementProperties.get(e),n=this.constructor._$Eu(e,s);if(n!==void 0&&s.reflect===!0){const i=(((r=s.converter)==null?void 0:r.toAttribute)!==void 0?s.converter:El).toAttribute(t,s.type);this._$Em=e,i==null?this.removeAttribute(n):this.setAttribute(n,i),this._$Em=null}}_$AK(e,t){var r;const s=this.constructor,n=s._$Eh.get(e);if(n!==void 0&&this._$Em!==n){const i=s.getPropertyOptions(n),a=typeof i.converter=="function"?{fromAttribute:i.converter}:((r=i.converter)==null?void 0:r.fromAttribute)!==void 0?i.converter:El;this._$Em=n,this[n]=a.fromAttribute(t,i.type),this._$Em=null}}requestUpdate(e,t,r){if(e!==void 0){if(r??(r=this.constructor.getPropertyOptions(e)),!(r.hasChanged??bd)(this[e],t))return;this.P(e,t,r)}this.isUpdatePending===!1&&(this._$ES=this._$ET())}P(e,t,r){this._$AL.has(e)||this._$AL.set(e,t),r.reflect===!0&&this._$Em!==e&&(this._$Ej??(this._$Ej=new Set)).add(e)}async _$ET(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const e=this.scheduleUpdate();return e!=null&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var e;if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??(this.renderRoot=this.createRenderRoot()),this._$Ep){for(const[n,i]of this._$Ep)this[n]=i;this._$Ep=void 0}const s=this.constructor.elementProperties;if(s.size>0)for(const[n,i]of s)i.wrapped!==!0||this._$AL.has(n)||this[n]===void 0||this.P(n,this[n],i)}let t=!1;const r=this._$AL;try{t=this.shouldUpdate(r),t?(this.willUpdate(r),(e=this._$EO)==null||e.forEach(s=>{var n;return(n=s.hostUpdate)==null?void 0:n.call(s)}),this.update(r)):this._$EU()}catch(s){throw t=!1,this._$EU(),s}t&&this._$AE(r)}willUpdate(e){}_$AE(e){var t;(t=this._$EO)==null||t.forEach(r=>{var s;return(s=r.hostUpdated)==null?void 0:s.call(r)}),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(e){return!0}update(e){this._$Ej&&(this._$Ej=this._$Ej.forEach(t=>this._$EC(t,this[t]))),this._$EU()}updated(e){}firstUpdated(e){}};hs.elementStyles=[],hs.shadowRootOptions={mode:"open"},hs[pn("elementProperties")]=new Map,hs[pn("finalized")]=new Map,vd?.({ReactiveElement:hs}),(ds.reactiveElementVersions??(ds.reactiveElementVersions=[])).push("2.0.4");/** + * @license + * Copyright 2017 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */const Hi=globalThis,Vi=Hi.trustedTypes,wd=Vi?Vi.createPolicy("lit-html",{createHTML:e=>e}):void 0,$d="$lit$",pr=`lit$${Math.random().toFixed(9).slice(2)}$`,Sd="?"+pr,iw=`<${Sd}>`,Cr=document,un=()=>Cr.createComment(""),dn=e=>e===null||typeof e!="object"&&typeof e!="function",Al=Array.isArray,aw=e=>Al(e)||typeof e?.[Symbol.iterator]=="function",Ol=`[ +\f\r]`,hn=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,kd=/-->/g,Ed=/>/g,Rr=RegExp(`>|${Ol}(?:([^\\s"'>=/]+)(${Ol}*=${Ol}*(?:[^ +\f\r"'\`<>=]|("|')|))|$)`,"g"),Ad=/'/g,Od=/"/g,jd=/^(?:script|style|textarea|title)$/i,ow=e=>(t,...r)=>({_$litType$:e,strings:t,values:r}),b=ow(1),it=Symbol.for("lit-noChange"),$e=Symbol.for("lit-nothing"),Td=new WeakMap,Ir=Cr.createTreeWalker(Cr,129);function Pd(e,t){if(!Al(e)||!e.hasOwnProperty("raw"))throw Error("invalid template strings array");return wd!==void 0?wd.createHTML(t):t}const lw=(e,t)=>{const r=e.length-1,s=[];let n,i=t===2?"":t===3?"":"",a=hn;for(let o=0;o"?(a=n??hn,p=-1):d[1]===void 0?p=-2:(p=a.lastIndex-d[2].length,c=d[1],a=d[3]===void 0?Rr:d[3]==='"'?Od:Ad):a===Od||a===Ad?a=Rr:a===kd||a===Ed?a=hn:(a=Rr,n=void 0);const h=a===Rr&&e[o+1].startsWith("/>")?" ":"";i+=a===hn?l+iw:p>=0?(s.push(c),l.slice(0,p)+$d+l.slice(p)+pr+h):l+pr+(p===-2?o:h)}return[Pd(e,i+(e[r]||"")+(t===2?"":t===3?"":"")),s]};let jl=class a0{constructor({strings:t,_$litType$:r},s){let n;this.parts=[];let i=0,a=0;const o=t.length-1,l=this.parts,[c,d]=lw(t,r);if(this.el=a0.createElement(c,s),Ir.currentNode=this.el.content,r===2||r===3){const p=this.el.content.firstChild;p.replaceWith(...p.childNodes)}for(;(n=Ir.nextNode())!==null&&l.length0){n.textContent=Vi?Vi.emptyScript:"";for(let h=0;h2||r[0]!==""||r[1]!==""?(this._$AH=Array(r.length-1).fill(new String),this.strings=r):this._$AH=$e}_$AI(e,t=this,r,s){const n=this.strings;let i=!1;if(n===void 0)e=ms(this,e,t,0),i=!dn(e)||e!==this._$AH&&e!==it,i&&(this._$AH=e);else{const a=e;let o,l;for(e=n[0],o=0;o{const s=r?.renderBefore??t;let n=s._$litPart$;if(n===void 0){const i=r?.renderBefore??null;s._$litPart$=n=new Tl(t.insertBefore(un(),i),i,void 0,r??{})}return n._$AI(e),n};/** + * @license + * Copyright 2017 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */let Ye=class extends hs{constructor(){super(...arguments),this.renderOptions={host:this},this.o=void 0}createRenderRoot(){var e;const t=super.createRenderRoot();return(e=this.renderOptions).renderBefore??(e.renderBefore=t.firstChild),t}update(e){const t=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this.o=mw(t,this.renderRoot,this.renderOptions)}connectedCallback(){var e;super.connectedCallback(),(e=this.o)==null||e.setConnected(!0)}disconnectedCallback(){var e;super.disconnectedCallback(),(e=this.o)==null||e.setConnected(!1)}render(){return it}};var Rd;Ye._$litElement$=!0,Ye.finalized=!0,(Rd=globalThis.litElementHydrateSupport)==null||Rd.call(globalThis,{LitElement:Ye});const Id=globalThis.litElementPolyfillSupport;Id?.({LitElement:Ye}),(globalThis.litElementVersions??(globalThis.litElementVersions=[])).push("4.1.0");function _d(){return{async:!1,baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,hooks:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1}}let _r=_d();function fw(e){_r=e}const Fd=/[&<>"']/,gw=new RegExp(Fd.source,"g"),Md=/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,yw=new RegExp(Md.source,"g"),vw={"&":"&","<":"<",">":">",'"':""","'":"'"},Ld=e=>vw[e];function qe(e,t){if(t){if(Fd.test(e))return e.replace(gw,Ld)}else if(Md.test(e))return e.replace(yw,Ld);return e}const bw=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig;function Dd(e){return e.replace(bw,(t,r)=>(r=r.toLowerCase(),r==="colon"?":":r.charAt(0)==="#"?r.charAt(1)==="x"?String.fromCharCode(parseInt(r.substring(2),16)):String.fromCharCode(+r.substring(1)):""))}const xw=/(^|[^\[])\^/g;function fe(e,t){e=typeof e=="string"?e:e.source,t=t||"";const r={replace:(s,n)=>(n=n.source||n,n=n.replace(xw,"$1"),e=e.replace(s,n),r),getRegex:()=>new RegExp(e,t)};return r}const ww=/[^\w:]/g,$w=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;function qd(e,t,r){if(e){let s;try{s=decodeURIComponent(Dd(r)).replace(ww,"").toLowerCase()}catch{return null}if(s.indexOf("javascript:")===0||s.indexOf("vbscript:")===0||s.indexOf("data:")===0)return null}t&&!$w.test(r)&&(r=Aw(t,r));try{r=encodeURI(r).replace(/%25/g,"%")}catch{return null}return r}const Ji={},Sw=/^[^:]+:\/*[^/]*$/,kw=/^([^:]+:)[\s\S]*$/,Ew=/^([^:]+:\/*[^/]*)[\s\S]*$/;function Aw(e,t){Ji[" "+e]||(Sw.test(e)?Ji[" "+e]=e+"/":Ji[" "+e]=Ki(e,"/",!0)),e=Ji[" "+e];const r=e.indexOf(":")===-1;return t.substring(0,2)==="//"?r?t:e.replace(kw,"$1")+t:t.charAt(0)==="/"?r?t:e.replace(Ew,"$1")+t:e+t}const Gi={exec:function(){}};function Nd(e,t){const r=e.replace(/\|/g,(i,a,o)=>{let l=!1,c=a;for(;--c>=0&&o[c]==="\\";)l=!l;return l?"|":" |"}),s=r.split(/ \|/);let n=0;if(s[0].trim()||s.shift(),s.length>0&&!s[s.length-1].trim()&&s.pop(),s.length>t)s.splice(t);else for(;s.length1;)t&1&&(r+=e),t>>=1,e+=e;return r+e}function zd(e,t,r,s){const n=t.href,i=t.title?qe(t.title):null,a=e[1].replace(/\\([\[\]])/g,"$1");if(e[0].charAt(0)!=="!"){s.state.inLink=!0;const o={type:"link",raw:r,href:n,title:i,text:a,tokens:s.inlineTokens(a)};return s.state.inLink=!1,o}return{type:"image",raw:r,href:n,title:i,text:qe(a)}}function Tw(e,t){const r=e.match(/^(\s+)(?:```)/);if(r===null)return t;const s=r[1];return t.split(` +`).map(n=>{const i=n.match(/^\s+/);if(i===null)return n;const[a]=i;return a.length>=s.length?n.slice(s.length):n}).join(` +`)}class Pl{constructor(t){this.options=t||_r}space(t){const r=this.rules.block.newline.exec(t);if(r&&r[0].length>0)return{type:"space",raw:r[0]}}code(t){const r=this.rules.block.code.exec(t);if(r){const s=r[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:r[0],codeBlockStyle:"indented",text:this.options.pedantic?s:Ki(s,` +`)}}}fences(t){const r=this.rules.block.fences.exec(t);if(r){const s=r[0],n=Tw(s,r[3]||"");return{type:"code",raw:s,lang:r[2]?r[2].trim().replace(this.rules.inline._escapes,"$1"):r[2],text:n}}}heading(t){const r=this.rules.block.heading.exec(t);if(r){let s=r[2].trim();if(/#$/.test(s)){const n=Ki(s,"#");(this.options.pedantic||!n||/ $/.test(n))&&(s=n.trim())}return{type:"heading",raw:r[0],depth:r[1].length,text:s,tokens:this.lexer.inline(s)}}}hr(t){const r=this.rules.block.hr.exec(t);if(r)return{type:"hr",raw:r[0]}}blockquote(t){const r=this.rules.block.blockquote.exec(t);if(r){const s=r[0].replace(/^ *>[ \t]?/gm,""),n=this.lexer.state.top;this.lexer.state.top=!0;const i=this.lexer.blockTokens(s);return this.lexer.state.top=n,{type:"blockquote",raw:r[0],tokens:i,text:s}}}list(t){let r=this.rules.block.list.exec(t);if(r){let s,n,i,a,o,l,c,d,p,m,h,x,g=r[1].trim();const f=g.length>1,u={type:"list",raw:"",ordered:f,start:f?+g.slice(0,-1):"",loose:!1,items:[]};g=f?`\\d{1,9}\\${g.slice(-1)}`:`\\${g}`,this.options.pedantic&&(g=f?g:"[*+-]");const y=new RegExp(`^( {0,3}${g})((?:[ ][^\\n]*)?(?:\\n|$))`);for(;t&&(x=!1,!(!(r=y.exec(t))||this.rules.block.hr.test(t)));){if(s=r[0],t=t.substring(s.length),d=r[2].split(` +`,1)[0].replace(/^\t+/,w=>" ".repeat(3*w.length)),p=t.split(` +`,1)[0],this.options.pedantic?(a=2,h=d.trimLeft()):(a=r[2].search(/[^ ]/),a=a>4?1:a,h=d.slice(a),a+=r[1].length),l=!1,!d&&/^ *$/.test(p)&&(s+=p+` +`,t=t.substring(p.length+1),x=!0),!x){const w=new RegExp(`^ {0,${Math.min(3,a-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),S=new RegExp(`^ {0,${Math.min(3,a-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),$=new RegExp(`^ {0,${Math.min(3,a-1)}}(?:\`\`\`|~~~)`),k=new RegExp(`^ {0,${Math.min(3,a-1)}}#`);for(;t&&(m=t.split(` +`,1)[0],p=m,this.options.pedantic&&(p=p.replace(/^ {1,4}(?=( {4})*[^ ])/g," ")),!($.test(p)||k.test(p)||w.test(p)||S.test(t)));){if(p.search(/[^ ]/)>=a||!p.trim())h+=` +`+p.slice(a);else{if(l||d.search(/[^ ]/)>=4||$.test(d)||k.test(d)||S.test(d))break;h+=` +`+p}!l&&!p.trim()&&(l=!0),s+=m+` +`,t=t.substring(m.length+1),d=p.slice(a)}}u.loose||(c?u.loose=!0:/\n *\n *$/.test(s)&&(c=!0)),this.options.gfm&&(n=/^\[[ xX]\] /.exec(h),n&&(i=n[0]!=="[ ] ",h=h.replace(/^\[[ xX]\] +/,""))),u.items.push({type:"list_item",raw:s,task:!!n,checked:i,loose:!1,text:h}),u.raw+=s}u.items[u.items.length-1].raw=s.trimRight(),u.items[u.items.length-1].text=h.trimRight(),u.raw=u.raw.trimRight();const v=u.items.length;for(o=0;o$.type==="space"),S=w.length>0&&w.some($=>/\n.*\n/.test($.raw));u.loose=S}if(u.loose)for(o=0;o$/,"$1").replace(this.rules.inline._escapes,"$1"):"",i=r[3]?r[3].substring(1,r[3].length-1).replace(this.rules.inline._escapes,"$1"):r[3];return{type:"def",tag:s,raw:r[0],href:n,title:i}}}table(t){const r=this.rules.block.table.exec(t);if(r){const s={type:"table",header:Nd(r[1]).map(n=>({text:n})),align:r[2].replace(/^ *|\| *$/g,"").split(/ *\| */),rows:r[3]&&r[3].trim()?r[3].replace(/\n[ \t]*$/,"").split(` +`):[]};if(s.header.length===s.align.length){s.raw=r[0];let n=s.align.length,i,a,o,l;for(i=0;i({text:c}));for(n=s.header.length,a=0;a/i.test(r[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(r[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(r[0])&&(this.lexer.state.inRawBlock=!1),{type:this.options.sanitize?"text":"html",raw:r[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(r[0]):qe(r[0]):r[0]}}link(t){const r=this.rules.inline.link.exec(t);if(r){const s=r[2].trim();if(!this.options.pedantic&&/^$/.test(s))return;const a=Ki(s.slice(0,-1),"\\");if((s.length-a.length)%2===0)return}else{const a=Ow(r[2],"()");if(a>-1){const o=(r[0].indexOf("!")===0?5:4)+r[1].length+a;r[2]=r[2].substring(0,a),r[0]=r[0].substring(0,o).trim(),r[3]=""}}let n=r[2],i="";if(this.options.pedantic){const a=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(n);a&&(n=a[1],i=a[3])}else i=r[3]?r[3].slice(1,-1):"";return n=n.trim(),/^$/.test(s)?n=n.slice(1):n=n.slice(1,-1)),zd(r,{href:n&&n.replace(this.rules.inline._escapes,"$1"),title:i&&i.replace(this.rules.inline._escapes,"$1")},r[0],this.lexer)}}reflink(t,r){let s;if((s=this.rules.inline.reflink.exec(t))||(s=this.rules.inline.nolink.exec(t))){let n=(s[2]||s[1]).replace(/\s+/g," ");if(n=r[n.toLowerCase()],!n){const i=s[0].charAt(0);return{type:"text",raw:i,text:i}}return zd(s,n,s[0],this.lexer)}}emStrong(t,r,s=""){let n=this.rules.inline.emStrong.lDelim.exec(t);if(!n||n[3]&&s.match(/[\p{L}\p{N}]/u))return;const i=n[1]||n[2]||"";if(!i||i&&(s===""||this.rules.inline.punctuation.exec(s))){const a=n[0].length-1;let o,l,c=a,d=0;const p=n[0][0]==="*"?this.rules.inline.emStrong.rDelimAst:this.rules.inline.emStrong.rDelimUnd;for(p.lastIndex=0,r=r.slice(-1*t.length+a);(n=p.exec(r))!=null;){if(o=n[1]||n[2]||n[3]||n[4]||n[5]||n[6],!o)continue;if(l=o.length,n[3]||n[4]){c+=l;continue}else if((n[5]||n[6])&&a%3&&!((a+l)%3)){d+=l;continue}if(c-=l,c>0)continue;l=Math.min(l,l+c+d);const m=t.slice(0,a+n.index+(n[0].length-o.length)+l);if(Math.min(a,l)%2){const x=m.slice(1,-1);return{type:"em",raw:m,text:x,tokens:this.lexer.inlineTokens(x)}}const h=m.slice(2,-2);return{type:"strong",raw:m,text:h,tokens:this.lexer.inlineTokens(h)}}}}codespan(t){const r=this.rules.inline.code.exec(t);if(r){let s=r[2].replace(/\n/g," ");const n=/[^ ]/.test(s),i=/^ /.test(s)&&/ $/.test(s);return n&&i&&(s=s.substring(1,s.length-1)),s=qe(s,!0),{type:"codespan",raw:r[0],text:s}}}br(t){const r=this.rules.inline.br.exec(t);if(r)return{type:"br",raw:r[0]}}del(t){const r=this.rules.inline.del.exec(t);if(r)return{type:"del",raw:r[0],text:r[2],tokens:this.lexer.inlineTokens(r[2])}}autolink(t,r){const s=this.rules.inline.autolink.exec(t);if(s){let n,i;return s[2]==="@"?(n=qe(this.options.mangle?r(s[1]):s[1]),i="mailto:"+n):(n=qe(s[1]),i=n),{type:"link",raw:s[0],text:n,href:i,tokens:[{type:"text",raw:n,text:n}]}}}url(t,r){let s;if(s=this.rules.inline.url.exec(t)){let n,i;if(s[2]==="@")n=qe(this.options.mangle?r(s[0]):s[0]),i="mailto:"+n;else{let a;do a=s[0],s[0]=this.rules.inline._backpedal.exec(s[0])[0];while(a!==s[0]);n=qe(s[0]),s[1]==="www."?i="http://"+s[0]:i=s[0]}return{type:"link",raw:s[0],text:n,href:i,tokens:[{type:"text",raw:n,text:n}]}}}inlineText(t,r){const s=this.rules.inline.text.exec(t);if(s){let n;return this.lexer.state.inRawBlock?n=this.options.sanitize?this.options.sanitizer?this.options.sanitizer(s[0]):qe(s[0]):s[0]:n=qe(this.options.smartypants?r(s[0]):s[0]),{type:"text",raw:s[0],text:n}}}}const V={newline:/^(?: *(?:\n|$))+/,code:/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,hr:/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/,html:"^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))",def:/^ {0,3}\[(label)\]: *(?:\n *)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/,table:Gi,lheading:/^((?:.|\n(?!\n))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,text:/^[^\n]+/};V._label=/(?!\s*\])(?:\\.|[^\[\]\\])+/,V._title=/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/,V.def=fe(V.def).replace("label",V._label).replace("title",V._title).getRegex(),V.bullet=/(?:[*+-]|\d{1,9}[.)])/,V.listItemStart=fe(/^( *)(bull) */).replace("bull",V.bullet).getRegex(),V.list=fe(V.list).replace(/bull/g,V.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+V.def.source+")").getRegex(),V._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",V._comment=/|$)/,V.html=fe(V.html,"i").replace("comment",V._comment).replace("tag",V._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),V.paragraph=fe(V._paragraph).replace("hr",V.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",V._tag).getRegex(),V.blockquote=fe(V.blockquote).replace("paragraph",V.paragraph).getRegex(),V.normal={...V},V.gfm={...V.normal,table:"^ *([^\\n ].*\\|.*)\\n {0,3}(?:\\| *)?(:?-+:? *(?:\\| *:?-+:? *)*)(?:\\| *)?(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"},V.gfm.table=fe(V.gfm.table).replace("hr",V.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",V._tag).getRegex(),V.gfm.paragraph=fe(V._paragraph).replace("hr",V.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("table",V.gfm.table).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",V._tag).getRegex(),V.pedantic={...V.normal,html:fe(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",V._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:Gi,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:fe(V.normal._paragraph).replace("hr",V.hr).replace("heading",` *#{1,6} *[^ +]`).replace("lheading",V.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()};const B={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:Gi,tag:"^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(ref)\]/,nolink:/^!?\[(ref)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",emStrong:{lDelim:/^(?:\*+(?:([punct_])|[^\s*]))|^_+(?:([punct*])|([^\s_]))/,rDelimAst:/^(?:[^_*\\]|\\.)*?\_\_(?:[^_*\\]|\\.)*?\*(?:[^_*\\]|\\.)*?(?=\_\_)|(?:[^*\\]|\\.)+(?=[^*])|[punct_](\*+)(?=[\s]|$)|(?:[^punct*_\s\\]|\\.)(\*+)(?=[punct_\s]|$)|[punct_\s](\*+)(?=[^punct*_\s])|[\s](\*+)(?=[punct_])|[punct_](\*+)(?=[punct_])|(?:[^punct*_\s\\]|\\.)(\*+)(?=[^punct*_\s])/,rDelimUnd:/^(?:[^_*\\]|\\.)*?\*\*(?:[^_*\\]|\\.)*?\_(?:[^_*\\]|\\.)*?(?=\*\*)|(?:[^_\\]|\\.)+(?=[^_])|[punct*](\_+)(?=[\s]|$)|(?:[^punct*_\s\\]|\\.)(\_+)(?=[punct*\s]|$)|[punct*\s](\_+)(?=[^punct*_\s])|[\s](\_+)(?=[punct*])|[punct*](\_+)(?=[punct*])/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:Gi,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\?@\\[\\]`^{|}~",B.punctuation=fe(B.punctuation).replace(/punctuation/g,B._punctuation).getRegex(),B.blockSkip=/\[[^\]]*?\]\([^\)]*?\)|`[^`]*?`|<[^>]*?>/g,B.escapedEmSt=/(?:^|[^\\])(?:\\\\)*\\[*_]/g,B._comment=fe(V._comment).replace("(?:-->|$)","-->").getRegex(),B.emStrong.lDelim=fe(B.emStrong.lDelim).replace(/punct/g,B._punctuation).getRegex(),B.emStrong.rDelimAst=fe(B.emStrong.rDelimAst,"g").replace(/punct/g,B._punctuation).getRegex(),B.emStrong.rDelimUnd=fe(B.emStrong.rDelimUnd,"g").replace(/punct/g,B._punctuation).getRegex(),B._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,B._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,B._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,B.autolink=fe(B.autolink).replace("scheme",B._scheme).replace("email",B._email).getRegex(),B._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,B.tag=fe(B.tag).replace("comment",B._comment).replace("attribute",B._attribute).getRegex(),B._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,B._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/,B._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,B.link=fe(B.link).replace("label",B._label).replace("href",B._href).replace("title",B._title).getRegex(),B.reflink=fe(B.reflink).replace("label",B._label).replace("ref",V._label).getRegex(),B.nolink=fe(B.nolink).replace("ref",V._label).getRegex(),B.reflinkSearch=fe(B.reflinkSearch,"g").replace("reflink",B.reflink).replace("nolink",B.nolink).getRegex(),B.normal={...B},B.pedantic={...B.normal,strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:fe(/^!?\[(label)\]\((.*?)\)/).replace("label",B._label).getRegex(),reflink:fe(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",B._label).getRegex()},B.gfm={...B.normal,escape:fe(B.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\.5&&(s="x"+s.toString(16)),t+="&#"+s+";";return t}class Tr{constructor(t){this.tokens=[],this.tokens.links=Object.create(null),this.options=t||_r,this.options.tokenizer=this.options.tokenizer||new Pl,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};const r={block:V.normal,inline:B.normal};this.options.pedantic?(r.block=V.pedantic,r.inline=B.pedantic):this.options.gfm&&(r.block=V.gfm,this.options.breaks?r.inline=B.breaks:r.inline=B.gfm),this.tokenizer.rules=r}static get rules(){return{block:V,inline:B}}static lex(t,r){return new Tr(r).lex(t)}static lexInline(t,r){return new Tr(r).inlineTokens(t)}lex(t){t=t.replace(/\r\n|\r/g,` +`),this.blockTokens(t,this.tokens);let r;for(;r=this.inlineQueue.shift();)this.inlineTokens(r.src,r.tokens);return this.tokens}blockTokens(t,r=[]){this.options.pedantic?t=t.replace(/\t/g," ").replace(/^ +$/gm,""):t=t.replace(/^( *)(\t+)/gm,(o,l,c)=>l+" ".repeat(c.length));let s,n,i,a;for(;t;)if(!(this.options.extensions&&this.options.extensions.block&&this.options.extensions.block.some(o=>(s=o.call({lexer:this},t,r))?(t=t.substring(s.raw.length),r.push(s),!0):!1))){if(s=this.tokenizer.space(t)){t=t.substring(s.raw.length),s.raw.length===1&&r.length>0?r[r.length-1].raw+=` +`:r.push(s);continue}if(s=this.tokenizer.code(t)){t=t.substring(s.raw.length),n=r[r.length-1],n&&(n.type==="paragraph"||n.type==="text")?(n.raw+=` +`+s.raw,n.text+=` +`+s.text,this.inlineQueue[this.inlineQueue.length-1].src=n.text):r.push(s);continue}if(s=this.tokenizer.fences(t)){t=t.substring(s.raw.length),r.push(s);continue}if(s=this.tokenizer.heading(t)){t=t.substring(s.raw.length),r.push(s);continue}if(s=this.tokenizer.hr(t)){t=t.substring(s.raw.length),r.push(s);continue}if(s=this.tokenizer.blockquote(t)){t=t.substring(s.raw.length),r.push(s);continue}if(s=this.tokenizer.list(t)){t=t.substring(s.raw.length),r.push(s);continue}if(s=this.tokenizer.html(t)){t=t.substring(s.raw.length),r.push(s);continue}if(s=this.tokenizer.def(t)){t=t.substring(s.raw.length),n=r[r.length-1],n&&(n.type==="paragraph"||n.type==="text")?(n.raw+=` +`+s.raw,n.text+=` +`+s.raw,this.inlineQueue[this.inlineQueue.length-1].src=n.text):this.tokens.links[s.tag]||(this.tokens.links[s.tag]={href:s.href,title:s.title});continue}if(s=this.tokenizer.table(t)){t=t.substring(s.raw.length),r.push(s);continue}if(s=this.tokenizer.lheading(t)){t=t.substring(s.raw.length),r.push(s);continue}if(i=t,this.options.extensions&&this.options.extensions.startBlock){let o=1/0;const l=t.slice(1);let c;this.options.extensions.startBlock.forEach(function(d){c=d.call({lexer:this},l),typeof c=="number"&&c>=0&&(o=Math.min(o,c))}),o<1/0&&o>=0&&(i=t.substring(0,o+1))}if(this.state.top&&(s=this.tokenizer.paragraph(i))){n=r[r.length-1],a&&n.type==="paragraph"?(n.raw+=` +`+s.raw,n.text+=` +`+s.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=n.text):r.push(s),a=i.length!==t.length,t=t.substring(s.raw.length);continue}if(s=this.tokenizer.text(t)){t=t.substring(s.raw.length),n=r[r.length-1],n&&n.type==="text"?(n.raw+=` +`+s.raw,n.text+=` +`+s.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=n.text):r.push(s);continue}if(t){const o="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent)break;throw new Error(o)}}return this.state.top=!0,r}inline(t,r=[]){return this.inlineQueue.push({src:t,tokens:r}),r}inlineTokens(t,r=[]){let s,n,i,a=t,o,l,c;if(this.tokens.links){const d=Object.keys(this.tokens.links);if(d.length>0)for(;(o=this.tokenizer.rules.inline.reflinkSearch.exec(a))!=null;)d.includes(o[0].slice(o[0].lastIndexOf("[")+1,-1))&&(a=a.slice(0,o.index)+"["+Bd("a",o[0].length-2)+"]"+a.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(o=this.tokenizer.rules.inline.blockSkip.exec(a))!=null;)a=a.slice(0,o.index)+"["+Bd("a",o[0].length-2)+"]"+a.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;(o=this.tokenizer.rules.inline.escapedEmSt.exec(a))!=null;)a=a.slice(0,o.index+o[0].length-2)+"++"+a.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex),this.tokenizer.rules.inline.escapedEmSt.lastIndex--;for(;t;)if(l||(c=""),l=!1,!(this.options.extensions&&this.options.extensions.inline&&this.options.extensions.inline.some(d=>(s=d.call({lexer:this},t,r))?(t=t.substring(s.raw.length),r.push(s),!0):!1))){if(s=this.tokenizer.escape(t)){t=t.substring(s.raw.length),r.push(s);continue}if(s=this.tokenizer.tag(t)){t=t.substring(s.raw.length),n=r[r.length-1],n&&s.type==="text"&&n.type==="text"?(n.raw+=s.raw,n.text+=s.text):r.push(s);continue}if(s=this.tokenizer.link(t)){t=t.substring(s.raw.length),r.push(s);continue}if(s=this.tokenizer.reflink(t,this.tokens.links)){t=t.substring(s.raw.length),n=r[r.length-1],n&&s.type==="text"&&n.type==="text"?(n.raw+=s.raw,n.text+=s.text):r.push(s);continue}if(s=this.tokenizer.emStrong(t,a,c)){t=t.substring(s.raw.length),r.push(s);continue}if(s=this.tokenizer.codespan(t)){t=t.substring(s.raw.length),r.push(s);continue}if(s=this.tokenizer.br(t)){t=t.substring(s.raw.length),r.push(s);continue}if(s=this.tokenizer.del(t)){t=t.substring(s.raw.length),r.push(s);continue}if(s=this.tokenizer.autolink(t,Ud)){t=t.substring(s.raw.length),r.push(s);continue}if(!this.state.inLink&&(s=this.tokenizer.url(t,Ud))){t=t.substring(s.raw.length),r.push(s);continue}if(i=t,this.options.extensions&&this.options.extensions.startInline){let d=1/0;const p=t.slice(1);let m;this.options.extensions.startInline.forEach(function(h){m=h.call({lexer:this},p),typeof m=="number"&&m>=0&&(d=Math.min(d,m))}),d<1/0&&d>=0&&(i=t.substring(0,d+1))}if(s=this.tokenizer.inlineText(i,Pw)){t=t.substring(s.raw.length),s.raw.slice(-1)!=="_"&&(c=s.raw.slice(-1)),l=!0,n=r[r.length-1],n&&n.type==="text"?(n.raw+=s.raw,n.text+=s.text):r.push(s);continue}if(t){const d="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent)break;throw new Error(d)}}return r}}class Cl{constructor(t){this.options=t||_r}code(t,r,s){const n=(r||"").match(/\S*/)[0];if(this.options.highlight){const i=this.options.highlight(t,n);i!=null&&i!==t&&(s=!0,t=i)}return t=t.replace(/\n$/,"")+` +`,n?'
    '+(s?t:qe(t,!0))+`
    +`:"
    "+(s?t:qe(t,!0))+`
    +`}blockquote(t){return`
    +${t}
    +`}html(t){return t}heading(t,r,s,n){if(this.options.headerIds){const i=this.options.headerPrefix+n.slug(s);return`${t} +`}return`${t} +`}hr(){return this.options.xhtml?`
    +`:`
    +`}list(t,r,s){const n=r?"ol":"ul",i=r&&s!==1?' start="'+s+'"':"";return"<"+n+i+`> +`+t+" +`}listitem(t){return`
  • ${t}
  • +`}checkbox(t){return" "}paragraph(t){return`

    ${t}

    +`}table(t,r){return r&&(r=`${r}`),` + +`+t+` +`+r+`
    +`}tablerow(t){return` +${t} +`}tablecell(t,r){const s=r.header?"th":"td";return(r.align?`<${s} align="${r.align}">`:`<${s}>`)+t+` +`}strong(t){return`${t}`}em(t){return`${t}`}codespan(t){return`${t}`}br(){return this.options.xhtml?"
    ":"
    "}del(t){return`${t}`}link(t,r,s){if(t=qd(this.options.sanitize,this.options.baseUrl,t),t===null)return s;let n='",n}image(t,r,s){if(t=qd(this.options.sanitize,this.options.baseUrl,t),t===null)return s;let n=`${s}":">",n}text(t){return t}}class Hd{strong(t){return t}em(t){return t}codespan(t){return t}del(t){return t}html(t){return t}text(t){return t}link(t,r,s){return""+s}image(t,r,s){return""+s}br(){return""}}class Vd{constructor(){this.seen={}}serialize(t){return t.toLowerCase().trim().replace(/<[!\/a-z].*?>/ig,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")}getNextSafeSlug(t,r){let s=t,n=0;if(this.seen.hasOwnProperty(s)){n=this.seen[t];do n++,s=t+"-"+n;while(this.seen.hasOwnProperty(s))}return r||(this.seen[t]=n,this.seen[s]=0),s}slug(t,r={}){const s=this.serialize(t);return this.getNextSafeSlug(s,r.dryrun)}}class Pr{constructor(t){this.options=t||_r,this.options.renderer=this.options.renderer||new Cl,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new Hd,this.slugger=new Vd}static parse(t,r){return new Pr(r).parse(t)}static parseInline(t,r){return new Pr(r).parseInline(t)}parse(t,r=!0){let s="",n,i,a,o,l,c,d,p,m,h,x,g,f,u,y,v,w,S,$;const k=t.length;for(n=0;n0&&y.tokens[0].type==="paragraph"?(y.tokens[0].text=S+" "+y.tokens[0].text,y.tokens[0].tokens&&y.tokens[0].tokens.length>0&&y.tokens[0].tokens[0].type==="text"&&(y.tokens[0].tokens[0].text=S+" "+y.tokens[0].tokens[0].text)):y.tokens.unshift({type:"text",text:S}):u+=S),u+=this.parse(y.tokens,f),m+=this.renderer.listitem(u,w,v);s+=this.renderer.list(m,x,g);continue}case"html":{s+=this.renderer.html(h.text);continue}case"paragraph":{s+=this.renderer.paragraph(this.parseInline(h.tokens));continue}case"text":{for(m=h.tokens?this.parseInline(h.tokens):h.text;n+1{if(s.message+=` +Please report this to https://github.com/markedjs/marked.`,e){const n="

    An error occurred:

    "+qe(s.message+"",!0)+"
    ";if(t)return Promise.resolve(n);if(r){r(null,n);return}return n}if(t)return Promise.reject(s);if(r){r(s);return}throw s}}function Wd(e,t){return(r,s,n)=>{typeof s=="function"&&(n=s,s=null);const i={...s};s={...F.defaults,...i};const a=Cw(s.silent,s.async,n);if(typeof r>"u"||r===null)return a(new Error("marked(): input parameter is undefined or null"));if(typeof r!="string")return a(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(r)+", string expected"));if(jw(s),s.hooks&&(s.hooks.options=s),n){const o=s.highlight;let l;try{s.hooks&&(r=s.hooks.preprocess(r)),l=e(r,s)}catch(p){return a(p)}const c=function(p){let m;if(!p)try{s.walkTokens&&F.walkTokens(l,s.walkTokens),m=t(l,s),s.hooks&&(m=s.hooks.postprocess(m))}catch(h){p=h}return s.highlight=o,p?a(p):n(null,m)};if(!o||o.length<3||(delete s.highlight,!l.length))return c();let d=0;F.walkTokens(l,function(p){p.type==="code"&&(d++,setTimeout(()=>{o(p.text,p.lang,function(m,h){if(m)return c(m);h!=null&&h!==p.text&&(p.text=h,p.escaped=!0),d--,d===0&&c()})},0))}),d===0&&c();return}if(s.async)return Promise.resolve(s.hooks?s.hooks.preprocess(r):r).then(o=>e(o,s)).then(o=>s.walkTokens?Promise.all(F.walkTokens(o,s.walkTokens)).then(()=>o):o).then(o=>t(o,s)).then(o=>s.hooks?s.hooks.postprocess(o):o).catch(a);try{s.hooks&&(r=s.hooks.preprocess(r));const o=e(r,s);s.walkTokens&&F.walkTokens(o,s.walkTokens);let l=t(o,s);return s.hooks&&(l=s.hooks.postprocess(l)),l}catch(o){return a(o)}}}function F(e,t,r){return Wd(Tr.lex,Pr.parse)(e,t,r)}F.options=F.setOptions=function(e){return F.defaults={...F.defaults,...e},fw(F.defaults),F},F.getDefaults=_d,F.defaults=_r,F.use=function(...e){const t=F.defaults.extensions||{renderers:{},childTokens:{}};e.forEach(r=>{const s={...r};if(s.async=F.defaults.async||s.async||!1,r.extensions&&(r.extensions.forEach(n=>{if(!n.name)throw new Error("extension name required");if(n.renderer){const i=t.renderers[n.name];i?t.renderers[n.name]=function(...a){let o=n.renderer.apply(this,a);return o===!1&&(o=i.apply(this,a)),o}:t.renderers[n.name]=n.renderer}if(n.tokenizer){if(!n.level||n.level!=="block"&&n.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");t[n.level]?t[n.level].unshift(n.tokenizer):t[n.level]=[n.tokenizer],n.start&&(n.level==="block"?t.startBlock?t.startBlock.push(n.start):t.startBlock=[n.start]:n.level==="inline"&&(t.startInline?t.startInline.push(n.start):t.startInline=[n.start]))}n.childTokens&&(t.childTokens[n.name]=n.childTokens)}),s.extensions=t),r.renderer){const n=F.defaults.renderer||new Cl;for(const i in r.renderer){const a=n[i];n[i]=(...o)=>{let l=r.renderer[i].apply(n,o);return l===!1&&(l=a.apply(n,o)),l}}s.renderer=n}if(r.tokenizer){const n=F.defaults.tokenizer||new Pl;for(const i in r.tokenizer){const a=n[i];n[i]=(...o)=>{let l=r.tokenizer[i].apply(n,o);return l===!1&&(l=a.apply(n,o)),l}}s.tokenizer=n}if(r.hooks){const n=F.defaults.hooks||new Yi;for(const i in r.hooks){const a=n[i];Yi.passThroughHooks.has(i)?n[i]=o=>{if(F.defaults.async)return Promise.resolve(r.hooks[i].call(n,o)).then(c=>a.call(n,c));const l=r.hooks[i].call(n,o);return a.call(n,l)}:n[i]=(...o)=>{let l=r.hooks[i].apply(n,o);return l===!1&&(l=a.apply(n,o)),l}}s.hooks=n}if(r.walkTokens){const n=F.defaults.walkTokens;s.walkTokens=function(i){let a=[];return a.push(r.walkTokens.call(this,i)),n&&(a=a.concat(n.call(this,i))),a}}F.setOptions(s)})},F.walkTokens=function(e,t){let r=[];for(const s of e)switch(r=r.concat(t.call(F,s)),s.type){case"table":{for(const n of s.header)r=r.concat(F.walkTokens(n.tokens,t));for(const n of s.rows)for(const i of n)r=r.concat(F.walkTokens(i.tokens,t));break}case"list":{r=r.concat(F.walkTokens(s.items,t));break}default:F.defaults.extensions&&F.defaults.extensions.childTokens&&F.defaults.extensions.childTokens[s.type]?F.defaults.extensions.childTokens[s.type].forEach(function(n){r=r.concat(F.walkTokens(s[n],t))}):s.tokens&&(r=r.concat(F.walkTokens(s.tokens,t)))}return r},F.parseInline=Wd(Tr.lexInline,Pr.parseInline),F.Parser=Pr,F.parser=Pr.parse,F.Renderer=Cl,F.TextRenderer=Hd,F.Lexer=Tr,F.lexer=Tr.lex,F.Tokenizer=Pl,F.Slugger=Vd,F.Hooks=Yi,F.parse=F,F.options,F.setOptions,F.use,F.walkTokens,F.parseInline,Pr.parse,Tr.lex;var Jd=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Rl(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Gd={exports:{}};(function(e){var t=typeof window<"u"?window:typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope?self:{};/** + * Prism: Lightweight, robust, elegant syntax highlighting + * + * @license MIT + * @author Lea Verou + * @namespace + * @public + */var r=function(s){var n=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,i=0,a={},o={manual:s.Prism&&s.Prism.manual,disableWorkerMessageHandler:s.Prism&&s.Prism.disableWorkerMessageHandler,util:{encode:function y(v){return v instanceof l?new l(v.type,y(v.content),v.alias):Array.isArray(v)?v.map(y):v.replace(/&/g,"&").replace(/"u")return null;if("currentScript"in document)return document.currentScript;try{throw new Error}catch(S){var y=(/at [^(\r\n]*\((.*):[^:]+:[^:]+\)$/i.exec(S.stack)||[])[1];if(y){var v=document.getElementsByTagName("script");for(var w in v)if(v[w].src==y)return v[w]}return null}},isActive:function(y,v,w){for(var S="no-"+v;y;){var $=y.classList;if($.contains(v))return!0;if($.contains(S))return!1;y=y.parentElement}return!!w}},languages:{plain:a,plaintext:a,text:a,txt:a,extend:function(y,v){var w=o.util.clone(o.languages[y]);for(var S in v)w[S]=v[S];return w},insertBefore:function(y,v,w,S){S=S||o.languages;var $=S[y],k={};for(var E in $)if($.hasOwnProperty(E)){if(E==v)for(var j in w)w.hasOwnProperty(j)&&(k[j]=w[j]);w.hasOwnProperty(E)||(k[E]=$[E])}var O=S[y];return S[y]=k,o.languages.DFS(o.languages,function(A,T){T===O&&A!=y&&(this[A]=k)}),k},DFS:function y(v,w,S,$){$=$||{};var k=o.util.objId;for(var E in v)if(v.hasOwnProperty(E)){w.call(v,E,v[E],S||E);var j=v[E],O=o.util.type(j);O==="Object"&&!$[k(j)]?($[k(j)]=!0,y(j,w,null,$)):O==="Array"&&!$[k(j)]&&($[k(j)]=!0,y(j,w,E,$))}}},plugins:{},highlightAll:function(y,v){o.highlightAllUnder(document,y,v)},highlightAllUnder:function(y,v,w){var S={callback:w,container:y,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};o.hooks.run("before-highlightall",S),S.elements=Array.prototype.slice.apply(S.container.querySelectorAll(S.selector)),o.hooks.run("before-all-elements-highlight",S);for(var $=0,k;k=S.elements[$++];)o.highlightElement(k,v===!0,S.callback)},highlightElement:function(y,v,w){var S=o.util.getLanguage(y),$=o.languages[S];o.util.setLanguage(y,S);var k=y.parentElement;k&&k.nodeName.toLowerCase()==="pre"&&o.util.setLanguage(k,S);var E=y.textContent,j={element:y,language:S,grammar:$,code:E};function O(T){j.highlightedCode=T,o.hooks.run("before-insert",j),j.element.innerHTML=j.highlightedCode,o.hooks.run("after-highlight",j),o.hooks.run("complete",j),w&&w.call(j.element)}if(o.hooks.run("before-sanity-check",j),k=j.element.parentElement,k&&k.nodeName.toLowerCase()==="pre"&&!k.hasAttribute("tabindex")&&k.setAttribute("tabindex","0"),!j.code){o.hooks.run("complete",j),w&&w.call(j.element);return}if(o.hooks.run("before-highlight",j),!j.grammar){O(o.util.encode(j.code));return}if(v&&s.Worker){var A=new Worker(o.filename);A.onmessage=function(T){O(T.data)},A.postMessage(JSON.stringify({language:j.language,code:j.code,immediateClose:!0}))}else O(o.highlight(j.code,j.grammar,j.language))},highlight:function(y,v,w){var S={code:y,grammar:v,language:w};if(o.hooks.run("before-tokenize",S),!S.grammar)throw new Error('The language "'+S.language+'" has no grammar.');return S.tokens=o.tokenize(S.code,S.grammar),o.hooks.run("after-tokenize",S),l.stringify(o.util.encode(S.tokens),S.language)},tokenize:function(y,v){var w=v.rest;if(w){for(var S in w)v[S]=w[S];delete v.rest}var $=new p;return m($,$.head,y),d(y,$,v,$.head,0),x($)},hooks:{all:{},add:function(y,v){var w=o.hooks.all;w[y]=w[y]||[],w[y].push(v)},run:function(y,v){var w=o.hooks.all[y];if(!(!w||!w.length))for(var S=0,$;$=w[S++];)$(v)}},Token:l};s.Prism=o;function l(y,v,w,S){this.type=y,this.content=v,this.alias=w,this.length=(S||"").length|0}l.stringify=function y(v,w){if(typeof v=="string")return v;if(Array.isArray(v)){var S="";return v.forEach(function(O){S+=y(O,w)}),S}var $={type:v.type,content:y(v.content,w),tag:"span",classes:["token",v.type],attributes:{},language:w},k=v.alias;k&&(Array.isArray(k)?Array.prototype.push.apply($.classes,k):$.classes.push(k)),o.hooks.run("wrap",$);var E="";for(var j in $.attributes)E+=" "+j+'="'+($.attributes[j]||"").replace(/"/g,""")+'"';return"<"+$.tag+' class="'+$.classes.join(" ")+'"'+E+">"+$.content+""};function c(y,v,w,S){y.lastIndex=v;var $=y.exec(w);if($&&S&&$[1]){var k=$[1].length;$.index+=k,$[0]=$[0].slice(k)}return $}function d(y,v,w,S,$,k){for(var E in w)if(!(!w.hasOwnProperty(E)||!w[E])){var j=w[E];j=Array.isArray(j)?j:[j];for(var O=0;O=k.reach);oe+=ee.value.length,ee=ee.next){var Ke=ee.value;if(v.length>y.length)return;if(!(Ke instanceof l)){var Lt=1,nt;if(_){if(nt=c(J,oe,y,R),!nt||nt.index>=y.length)break;var Ni=nt.index,W0=nt.index+nt[0].length,cr=oe;for(cr+=ee.value.length;Ni>=cr;)ee=ee.next,cr+=ee.value.length;if(cr-=ee.value.length,oe=cr,ee.value instanceof l)continue;for(var cn=ee;cn!==v.tail&&(crk.reach&&(k.reach=wl);var zi=ee.prev;xl&&(zi=m(v,zi,xl),oe+=xl.length),h(v,zi,Lt);var J0=new l(E,T?o.tokenize(Bi,T):Bi,z,Bi);if(ee=m(v,zi,J0),ld&&m(v,ee,ld),Lt>1){var $l={cause:E+","+O,reach:wl};d(y,v,w,ee.prev,oe,$l),k&&$l.reach>k.reach&&(k.reach=$l.reach)}}}}}}function p(){var y={value:null,prev:null,next:null},v={value:null,prev:y,next:null};y.next=v,this.head=y,this.tail=v,this.length=0}function m(y,v,w){var S=v.next,$={value:w,prev:v,next:S};return v.next=$,S.prev=$,y.length++,$}function h(y,v,w){for(var S=v.next,$=0;$/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},r.languages.markup.tag.inside["attr-value"].inside.entity=r.languages.markup.entity,r.languages.markup.doctype.inside["internal-subset"].inside=r.languages.markup,r.hooks.add("wrap",function(s){s.type==="entity"&&(s.attributes.title=s.content.replace(/&/,"&"))}),Object.defineProperty(r.languages.markup.tag,"addInlined",{value:function(s,n){var i={};i["language-"+n]={pattern:/(^$)/i,lookbehind:!0,inside:r.languages[n]},i.cdata=/^$/i;var a={"included-cdata":{pattern://i,inside:i}};a["language-"+n]={pattern:/[\s\S]+/,inside:r.languages[n]};var o={};o[s]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,function(){return s}),"i"),lookbehind:!0,greedy:!0,inside:a},r.languages.insertBefore("markup","cdata",o)}}),Object.defineProperty(r.languages.markup.tag,"addAttribute",{value:function(s,n){r.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+s+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[n,"language-"+n],inside:r.languages[n]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),r.languages.html=r.languages.markup,r.languages.mathml=r.languages.markup,r.languages.svg=r.languages.markup,r.languages.xml=r.languages.extend("markup",{}),r.languages.ssml=r.languages.xml,r.languages.atom=r.languages.xml,r.languages.rss=r.languages.xml,function(s){var n=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;s.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+n.source+")*?"+/(?:;|(?=\s*\{))/.source),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+n.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+n.source+"$"),alias:"url"}}},selector:{pattern:RegExp(`(^|[{}\\s])[^{}\\s](?:[^{};"'\\s]|\\s+(?![\\s{])|`+n.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:n,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},s.languages.css.atrule.inside.rest=s.languages.css;var i=s.languages.markup;i&&(i.tag.addInlined("style","css"),i.tag.addAttribute("style","css"))}(r),r.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},r.languages.javascript=r.languages.extend("clike",{"class-name":[r.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+(/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source)+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),r.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,r.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:r.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:r.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:r.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:r.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:r.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),r.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:r.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),r.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),r.languages.markup&&(r.languages.markup.tag.addInlined("script","javascript"),r.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),r.languages.js=r.languages.javascript,function(){if(typeof r>"u"||typeof document>"u")return;Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector);var s="Loading\u2026",n=function(g,f){return"\u2716 Error "+g+" while fetching file: "+f},i="\u2716 Error: File does not exist or is empty",a={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"},o="data-src-status",l="loading",c="loaded",d="failed",p="pre[data-src]:not(["+o+'="'+c+'"]):not(['+o+'="'+l+'"])';function m(g,f,u){var y=new XMLHttpRequest;y.open("GET",g,!0),y.onreadystatechange=function(){y.readyState==4&&(y.status<400&&y.responseText?f(y.responseText):y.status>=400?u(n(y.status,y.statusText)):u(i))},y.send(null)}function h(g){var f=/^\s*(\d+)\s*(?:(,)\s*(?:(\d+)\s*)?)?$/.exec(g||"");if(f){var u=Number(f[1]),y=f[2],v=f[3];return y?v?[u,Number(v)]:[u,void 0]:[u,u]}}r.hooks.add("before-highlightall",function(g){g.selector+=", "+p}),r.hooks.add("before-sanity-check",function(g){var f=g.element;if(f.matches(p)){g.code="",f.setAttribute(o,l);var u=f.appendChild(document.createElement("CODE"));u.textContent=s;var y=f.getAttribute("data-src"),v=g.language;if(v==="none"){var w=(/\.(\w+)$/.exec(y)||[,"none"])[1];v=a[w]||w}r.util.setLanguage(u,v),r.util.setLanguage(f,v);var S=r.plugins.autoloader;S&&S.loadLanguages(v),m(y,function($){f.setAttribute(o,c);var k=h(f.getAttribute("data-range"));if(k){var E=$.split(/\r\n?|\n/g),j=k[0],O=k[1]==null?E.length:k[1];j<0&&(j+=E.length),j=Math.max(0,Math.min(j-1,E.length)),O<0&&(O+=E.length),O=Math.max(0,Math.min(O,E.length)),$=E.slice(j,O).join(` +`),f.hasAttribute("data-start")||f.setAttribute("data-start",String(j+1))}u.textContent=$,r.highlightElement(u)},function($){f.setAttribute(o,d),u.textContent=$})}}),r.plugins.fileHighlight={highlight:function(g){for(var f=(g||document).querySelectorAll(p),u=0,y;y=f[u++];)r.highlightElement(y)}};var x=!1;r.fileHighlight=function(){x||(x=!0),r.plugins.fileHighlight.highlight.apply(this,arguments)}}()})(Gd);var Rw=Gd.exports;const Se=Rl(Rw);(function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+t.source+")*?"+/(?:;|(?=\s*\{))/.source),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp(`(^|[{}\\s])[^{}\\s](?:[^{};"'\\s]|\\s+(?![\\s{])|`+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var r=e.languages.markup;r&&(r.tag.addInlined("style","css"),r.tag.addAttribute("style","css"))})(Prism),function(e){var t=/[*&][^\s[\]{},]+/,r=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,s="(?:"+r.source+"(?:[ ]+"+t.source+")?|"+t.source+"(?:[ ]+"+r.source+")?)",n=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-])(?:[ \t]*(?:(?![#:])|:))*/.source.replace(//g,function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source}),i=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function a(o,l){l=(l||"").replace(/m/g,"")+"m";var c=/([:\-,[{]\s*(?:\s<>[ \t]+)?)(?:<>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<>/g,function(){return s}).replace(/<>/g,function(){return o});return RegExp(c,l)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<>/g,function(){return s})),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<>[ \t]+)?)<>(?=\s*:\s)/.source.replace(/<>/g,function(){return s}).replace(/<>/g,function(){return"(?:"+n+"|"+i+")"})),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:a(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:a(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:a(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:a(i),lookbehind:!0,greedy:!0},number:{pattern:a(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:r,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(Prism),Prism.languages.go=Prism.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),Prism.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete Prism.languages.go["class-name"],function(e){var t=/\b(?:abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|exports|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|module|native|new|non-sealed|null|open|opens|package|permits|private|protected|provides|public|record(?!\s*[(){}[\]<>=%~.:,;?+\-*/&|^])|requires|return|sealed|short|static|strictfp|super|switch|synchronized|this|throw|throws|to|transient|transitive|try|uses|var|void|volatile|while|with|yield)\b/,r=/(?:[a-z]\w*\s*\.\s*)*(?:[A-Z]\w*\s*\.\s*)*/.source,s={pattern:RegExp(/(^|[^\w.])/.source+r+/[A-Z](?:[\d_A-Z]*[a-z]\w*)?\b/.source),lookbehind:!0,inside:{namespace:{pattern:/^[a-z]\w*(?:\s*\.\s*[a-z]\w*)*(?:\s*\.)?/,inside:{punctuation:/\./}},punctuation:/\./}};e.languages.java=e.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"/,lookbehind:!0,greedy:!0},"class-name":[s,{pattern:RegExp(/(^|[^\w.])/.source+r+/[A-Z]\w*(?=\s+\w+\s*[;,=()]|\s*(?:\[[\s,]*\]\s*)?::\s*new\b)/.source),lookbehind:!0,inside:s.inside},{pattern:RegExp(/(\b(?:class|enum|extends|implements|instanceof|interface|new|record|throws)\s+)/.source+r+/[A-Z]\w*\b/.source),lookbehind:!0,inside:s.inside}],keyword:t,function:[e.languages.clike.function,{pattern:/(::\s*)[a-z_]\w*/,lookbehind:!0}],number:/\b0b[01][01_]*L?\b|\b0x(?:\.[\da-f_p+-]+|[\da-f_]+(?:\.[\da-f_p+-]+)?)\b|(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?\d[\d_]*)?[dfl]?/i,operator:{pattern:/(^|[^.])(?:<<=?|>>>?=?|->|--|\+\+|&&|\|\||::|[?:~]|[-+*/%&|^!=<>]=?)/m,lookbehind:!0},constant:/\b[A-Z][A-Z_\d]+\b/}),e.languages.insertBefore("java","string",{"triple-quoted-string":{pattern:/"""[ \t]*[\r\n](?:(?:"|"")?(?:\\.|[^"\\]))*"""/,greedy:!0,alias:"string"},char:{pattern:/'(?:\\.|[^'\\\r\n]){1,6}'/,greedy:!0}}),e.languages.insertBefore("java","class-name",{annotation:{pattern:/(^|[^.])@\w+(?:\s*\.\s*\w+)*/,lookbehind:!0,alias:"punctuation"},generics:{pattern:/<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&))*>)*>)*>)*>/,inside:{"class-name":s,keyword:t,punctuation:/[<>(),.:]/,operator:/[?&|]/}},import:[{pattern:RegExp(/(\bimport\s+)/.source+r+/(?:[A-Z]\w*|\*)(?=\s*;)/.source),lookbehind:!0,inside:{namespace:s.inside.namespace,punctuation:/\./,operator:/\*/,"class-name":/\w+/}},{pattern:RegExp(/(\bimport\s+static\s+)/.source+r+/(?:\w+|\*)(?=\s*;)/.source),lookbehind:!0,alias:"static",inside:{namespace:s.inside.namespace,static:/\b\w+$/,punctuation:/\./,operator:/\*/,"class-name":/\w+/}}],namespace:{pattern:RegExp(/(\b(?:exports|import(?:\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\s+)(?!)[a-z]\w*(?:\.[a-z]\w*)*\.?/.source.replace(//g,function(){return t.source})),lookbehind:!0,inside:{punctuation:/\./}}})}(Prism),Prism.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},Prism.languages.webmanifest=Prism.languages.json,function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",r={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},s={bash:r,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?:\.\w+)*(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},parameter:{pattern:/(^|\s)-{1,2}(?:\w+:[+-]?)?\w+(?:\.\w+)*(?=[=\s]|$)/,alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:s},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:r}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:s},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:s.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:s.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},r.inside=e.languages.bash;for(var n=["comment","function-name","for-or-select","assign-left","parameter","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],i=s.variable[1].inside,a=0;a]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},Prism.languages.python["string-interpolation"].inside.interpolation.inside.rest=Prism.languages.python,Prism.languages.py=Prism.languages.python,function(e){function t(c){return RegExp("(^(?:"+c+"):[ ]*(?![ ]))[^]+","i")}e.languages.http={"request-line":{pattern:/^(?:CONNECT|DELETE|GET|HEAD|OPTIONS|PATCH|POST|PRI|PUT|SEARCH|TRACE)\s(?:https?:\/\/|\/)\S*\sHTTP\/[\d.]+/m,inside:{method:{pattern:/^[A-Z]+\b/,alias:"property"},"request-target":{pattern:/^(\s)(?:https?:\/\/|\/)\S*(?=\s)/,lookbehind:!0,alias:"url",inside:e.languages.uri},"http-version":{pattern:/^(\s)HTTP\/[\d.]+/,lookbehind:!0,alias:"property"}}},"response-status":{pattern:/^HTTP\/[\d.]+ \d+ .+/m,inside:{"http-version":{pattern:/^HTTP\/[\d.]+/,alias:"property"},"status-code":{pattern:/^(\s)\d+(?=\s)/,lookbehind:!0,alias:"number"},"reason-phrase":{pattern:/^(\s).+/,lookbehind:!0,alias:"string"}}},header:{pattern:/^[\w-]+:.+(?:(?:\r\n?|\n)[ \t].+)*/m,inside:{"header-value":[{pattern:t(/Content-Security-Policy/.source),lookbehind:!0,alias:["csp","languages-csp"],inside:e.languages.csp},{pattern:t(/Public-Key-Pins(?:-Report-Only)?/.source),lookbehind:!0,alias:["hpkp","languages-hpkp"],inside:e.languages.hpkp},{pattern:t(/Strict-Transport-Security/.source),lookbehind:!0,alias:["hsts","languages-hsts"],inside:e.languages.hsts},{pattern:t(/[^:]+/.source),lookbehind:!0}],"header-name":{pattern:/^[^:]+/,alias:"keyword"},punctuation:/^:/}}};var r=e.languages,s={"application/javascript":r.javascript,"application/json":r.json||r.javascript,"application/xml":r.xml,"text/xml":r.xml,"text/html":r.html,"text/css":r.css,"text/plain":r.plain},n={"application/json":!0,"application/xml":!0};function i(c){var d=c.replace(/^[a-z]+\//,""),p="\\w+/(?:[\\w.-]+\\+)+"+d+"(?![+\\w.-])";return"(?:"+c+"|"+p+")"}var a;for(var o in s)if(s[o]){a=a||{};var l=n[o]?i(o):o;a[o.replace(/\//g,"-")]={pattern:RegExp("("+/content-type:\s*/.source+l+/(?:(?:\r\n?|\n)[\w-].*)*(?:\r(?:\n|(?!\n))|\n)/.source+")"+/[^ \t\w-][\s\S]*/.source,"i"),lookbehind:!0,inside:s[o]}}a&&e.languages.insertBefore("http","header",a)}(Prism),function(e){function t(oe,Ke){return oe.replace(/<<(\d+)>>/g,function(Lt,nt){return"(?:"+Ke[+nt]+")"})}function r(oe,Ke,Lt){return RegExp(t(oe,Ke),"")}function s(oe,Ke){for(var Lt=0;Lt>/g,function(){return"(?:"+oe+")"});return oe.replace(/<>/g,"[^\\s\\S]")}var n={type:"bool byte char decimal double dynamic float int long object sbyte short string uint ulong ushort var void",typeDeclaration:"class enum interface record struct",contextual:"add alias and ascending async await by descending from(?=\\s*(?:\\w|$)) get global group into init(?=\\s*;) join let nameof not notnull on or orderby partial remove select set unmanaged value when where with(?=\\s*{)",other:"abstract as base break case catch checked const continue default delegate do else event explicit extern finally fixed for foreach goto if implicit in internal is lock namespace new null operator out override params private protected public readonly ref return sealed sizeof stackalloc static switch this throw try typeof unchecked unsafe using virtual volatile while yield"};function i(oe){return"\\b(?:"+oe.trim().replace(/ /g,"|")+")\\b"}var a=i(n.typeDeclaration),o=RegExp(i(n.type+" "+n.typeDeclaration+" "+n.contextual+" "+n.other)),l=i(n.typeDeclaration+" "+n.contextual+" "+n.other),c=i(n.type+" "+n.typeDeclaration+" "+n.other),d=s(/<(?:[^<>;=+\-*/%&|^]|<>)*>/.source,2),p=s(/\((?:[^()]|<>)*\)/.source,2),m=/@?\b[A-Za-z_]\w*\b/.source,h=t(/<<0>>(?:\s*<<1>>)?/.source,[m,d]),x=t(/(?!<<0>>)<<1>>(?:\s*\.\s*<<1>>)*/.source,[l,h]),g=/\[\s*(?:,\s*)*\]/.source,f=t(/<<0>>(?:\s*(?:\?\s*)?<<1>>)*(?:\s*\?)?/.source,[x,g]),u=t(/[^,()<>[\];=+\-*/%&|^]|<<0>>|<<1>>|<<2>>/.source,[d,p,g]),y=t(/\(<<0>>+(?:,<<0>>+)+\)/.source,[u]),v=t(/(?:<<0>>|<<1>>)(?:\s*(?:\?\s*)?<<2>>)*(?:\s*\?)?/.source,[y,x,g]),w={keyword:o,punctuation:/[<>()?,.:[\]]/},S=/'(?:[^\r\n'\\]|\\.|\\[Uux][\da-fA-F]{1,8})'/.source,$=/"(?:\\.|[^\\"\r\n])*"/.source,k=/@"(?:""|\\[\s\S]|[^\\"])*"(?!")/.source;e.languages.csharp=e.languages.extend("clike",{string:[{pattern:r(/(^|[^$\\])<<0>>/.source,[k]),lookbehind:!0,greedy:!0},{pattern:r(/(^|[^@$\\])<<0>>/.source,[$]),lookbehind:!0,greedy:!0}],"class-name":[{pattern:r(/(\busing\s+static\s+)<<0>>(?=\s*;)/.source,[x]),lookbehind:!0,inside:w},{pattern:r(/(\busing\s+<<0>>\s*=\s*)<<1>>(?=\s*;)/.source,[m,v]),lookbehind:!0,inside:w},{pattern:r(/(\busing\s+)<<0>>(?=\s*=)/.source,[m]),lookbehind:!0},{pattern:r(/(\b<<0>>\s+)<<1>>/.source,[a,h]),lookbehind:!0,inside:w},{pattern:r(/(\bcatch\s*\(\s*)<<0>>/.source,[x]),lookbehind:!0,inside:w},{pattern:r(/(\bwhere\s+)<<0>>/.source,[m]),lookbehind:!0},{pattern:r(/(\b(?:is(?:\s+not)?|as)\s+)<<0>>/.source,[f]),lookbehind:!0,inside:w},{pattern:r(/\b<<0>>(?=\s+(?!<<1>>|with\s*\{)<<2>>(?:\s*[=,;:{)\]]|\s+(?:in|when)\b))/.source,[v,c,m]),inside:w}],keyword:o,number:/(?:\b0(?:x[\da-f_]*[\da-f]|b[01_]*[01])|(?:\B\.\d+(?:_+\d+)*|\b\d+(?:_+\d+)*(?:\.\d+(?:_+\d+)*)?)(?:e[-+]?\d+(?:_+\d+)*)?)(?:[dflmu]|lu|ul)?\b/i,operator:/>>=?|<<=?|[-=]>|([-+&|])\1|~|\?\?=?|[-+*/%&|^!=<>]=?/,punctuation:/\?\.?|::|[{}[\];(),.:]/}),e.languages.insertBefore("csharp","number",{range:{pattern:/\.\./,alias:"operator"}}),e.languages.insertBefore("csharp","punctuation",{"named-parameter":{pattern:r(/([(,]\s*)<<0>>(?=\s*:)/.source,[m]),lookbehind:!0,alias:"punctuation"}}),e.languages.insertBefore("csharp","class-name",{namespace:{pattern:r(/(\b(?:namespace|using)\s+)<<0>>(?:\s*\.\s*<<0>>)*(?=\s*[;{])/.source,[m]),lookbehind:!0,inside:{punctuation:/\./}},"type-expression":{pattern:r(/(\b(?:default|sizeof|typeof)\s*\(\s*(?!\s))(?:[^()\s]|\s(?!\s)|<<0>>)*(?=\s*\))/.source,[p]),lookbehind:!0,alias:"class-name",inside:w},"return-type":{pattern:r(/<<0>>(?=\s+(?:<<1>>\s*(?:=>|[({]|\.\s*this\s*\[)|this\s*\[))/.source,[v,x]),inside:w,alias:"class-name"},"constructor-invocation":{pattern:r(/(\bnew\s+)<<0>>(?=\s*[[({])/.source,[v]),lookbehind:!0,inside:w,alias:"class-name"},"generic-method":{pattern:r(/<<0>>\s*<<1>>(?=\s*\()/.source,[m,d]),inside:{function:r(/^<<0>>/.source,[m]),generic:{pattern:RegExp(d),alias:"class-name",inside:w}}},"type-list":{pattern:r(/\b((?:<<0>>\s+<<1>>|record\s+<<1>>\s*<<5>>|where\s+<<2>>)\s*:\s*)(?:<<3>>|<<4>>|<<1>>\s*<<5>>|<<6>>)(?:\s*,\s*(?:<<3>>|<<4>>|<<6>>))*(?=\s*(?:where|[{;]|=>|$))/.source,[a,h,m,v,o.source,p,/\bnew\s*\(\s*\)/.source]),lookbehind:!0,inside:{"record-arguments":{pattern:r(/(^(?!new\s*\()<<0>>\s*)<<1>>/.source,[h,p]),lookbehind:!0,greedy:!0,inside:e.languages.csharp},keyword:o,"class-name":{pattern:RegExp(v),greedy:!0,inside:w},punctuation:/[,()]/}},preprocessor:{pattern:/(^[\t ]*)#.*/m,lookbehind:!0,alias:"property",inside:{directive:{pattern:/(#)\b(?:define|elif|else|endif|endregion|error|if|line|nullable|pragma|region|undef|warning)\b/,lookbehind:!0,alias:"keyword"}}}});var E=$+"|"+S,j=t(/\/(?![*/])|\/\/[^\r\n]*[\r\n]|\/\*(?:[^*]|\*(?!\/))*\*\/|<<0>>/.source,[E]),O=s(t(/[^"'/()]|<<0>>|\(<>*\)/.source,[j]),2),A=/\b(?:assembly|event|field|method|module|param|property|return|type)\b/.source,T=t(/<<0>>(?:\s*\(<<1>>*\))?/.source,[x,O]);e.languages.insertBefore("csharp","class-name",{attribute:{pattern:r(/((?:^|[^\s\w>)?])\s*\[\s*)(?:<<0>>\s*:\s*)?<<1>>(?:\s*,\s*<<1>>)*(?=\s*\])/.source,[A,T]),lookbehind:!0,greedy:!0,inside:{target:{pattern:r(/^<<0>>(?=\s*:)/.source,[A]),alias:"keyword"},"attribute-arguments":{pattern:r(/\(<<0>>*\)/.source,[O]),inside:e.languages.csharp},"class-name":{pattern:RegExp(x),inside:{punctuation:/\./}},punctuation:/[:,]/}}});var R=/:[^}\r\n]+/.source,_=s(t(/[^"'/()]|<<0>>|\(<>*\)/.source,[j]),2),z=t(/\{(?!\{)(?:(?![}:])<<0>>)*<<1>>?\}/.source,[_,R]),Q=s(t(/[^"'/()]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|<<0>>|\(<>*\)/.source,[E]),2),J=t(/\{(?!\{)(?:(?![}:])<<0>>)*<<1>>?\}/.source,[Q,R]);function ee(oe,Ke){return{interpolation:{pattern:r(/((?:^|[^{])(?:\{\{)*)<<0>>/.source,[oe]),lookbehind:!0,inside:{"format-string":{pattern:r(/(^\{(?:(?![}:])<<0>>)*)<<1>>(?=\}$)/.source,[Ke,R]),lookbehind:!0,inside:{punctuation:/^:/}},punctuation:/^\{|\}$/,expression:{pattern:/[\s\S]+/,alias:"language-csharp",inside:e.languages.csharp}}},string:/[\s\S]+/}}e.languages.insertBefore("csharp","string",{"interpolation-string":[{pattern:r(/(^|[^\\])(?:\$@|@\$)"(?:""|\\[\s\S]|\{\{|<<0>>|[^\\{"])*"/.source,[z]),lookbehind:!0,greedy:!0,inside:ee(z,_)},{pattern:r(/(^|[^@\\])\$"(?:\\.|\{\{|<<0>>|[^\\"{])*"/.source,[J]),lookbehind:!0,greedy:!0,inside:ee(J,Q)}],char:{pattern:RegExp(S),greedy:!0}}),e.languages.dotnet=e.languages.cs=e.languages.csharp}(Prism),function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(Prism);const ur=we`.hover-bg:hover{background:var(--bg3)}::selection{background:var(--selection-bg);color:var(--selection-fg)}.regular-font{font-family:var(--font-regular)}.mono-font{font-family:var(--font-mono)}.title{font-size:calc(var(--font-size-small) + 18px);font-weight:400}.sub-title{font-size:20px}.req-res-title{font-family:var(--font-regular);font-size:calc(var(--font-size-small) + 4px);font-weight:700;margin-bottom:8px;text-align:left}.tiny-title{font-size:calc(var(--font-size-small) + 1px);font-weight:700}.regular-font-size{font-size:var(--font-size-regular)}.small-font-size{font-size:var(--font-size-small)}.upper{text-transform:uppercase}.primary-text{color:var(--primary-color)}.bold-text{font-weight:700}.gray-text{color:var(--light-fg)}.red-text{color:var(--red)}.blue-text{color:var(--blue)}.multiline{overflow:scroll;max-height:var(--resp-area-height,400px);color:var(--fg3)}.method-fg.put{color:var(--orange)}.method-fg.post{color:var(--green)}.method-fg.get{color:var(--blue)}.method-fg.delete{color:var(--red)}.method-fg.head,.method-fg.options,.method-fg.patch{color:var(--yellow)}h1{font-family:var(--font-regular);font-size:28px;padding-top:10px;letter-spacing:normal;font-weight:400}h2{font-family:var(--font-regular);font-size:24px;padding-top:10px;letter-spacing:normal;font-weight:400}h3{font-family:var(--font-regular);font-size:18px;padding-top:10px;letter-spacing:normal;font-weight:400}h4{font-family:var(--font-regular);font-size:16px;padding-top:10px;letter-spacing:normal;font-weight:400}h5{font-family:var(--font-regular);font-size:14px;padding-top:10px;letter-spacing:normal;font-weight:400}h6{font-family:var(--font-regular);font-size:14px;padding-top:10px;letter-spacing:normal;font-weight:400}h1,h2,h3,h4,h5{margin-block-end:.2em}p{margin-block-start:.5em}a{color:var(--blue);cursor:pointer}a.inactive-link{color:var(--fg);text-decoration:none;cursor:text}code,pre{margin:0;font-family:var(--font-mono);font-size:calc(var(--font-size-mono) - 1px)}.m-markdown,.m-markdown-small{display:block}.m-markdown p,.m-markdown span{font-size:var(--font-size-regular);line-height:calc(var(--font-size-regular) + 8px)}.m-markdown li{font-size:var(--font-size-regular);line-height:calc(var(--font-size-regular) + 10px)}.m-markdown-small li,.m-markdown-small p,.m-markdown-small span{font-size:var(--font-size-small);line-height:calc(var(--font-size-small) + 6px)}.m-markdown-small li{line-height:calc(var(--font-size-small) + 8px)}.m-markdown p:not(:first-child){margin-block-start:24px}.m-markdown-small p:not(:first-child){margin-block-start:12px}.m-markdown-small p:first-child{margin-block-start:0}.m-markdown p,.m-markdown-small p{margin-block-end:0}.m-markdown code span{font-size:var(--font-size-mono)}.m-markdown code,.m-markdown-small code{padding:1px 6px;border-radius:2px;color:var(--inline-code-fg);background-color:var(--bg3);font-size:calc(var(--font-size-mono));line-height:1.2}.m-markdown-small code{font-size:calc(var(--font-size-mono) - 1px)}.m-markdown pre,.m-markdown-small pre{white-space:pre-wrap;overflow-x:auto;line-height:normal;border-radius:2px;border:1px solid var(--code-border-color)}.m-markdown pre{padding:12px;background-color:var(--code-bg);color:var(--code-fg)}.m-markdown-small pre{margin-top:4px;padding:2px 4px;background-color:var(--bg3);color:var(--fg2)}.m-markdown pre code,.m-markdown-small pre code{border:none;padding:0}.m-markdown pre code{color:var(--code-fg);background-color:var(--code-bg);background-color:transparent}.m-markdown-small pre code{color:var(--fg2);background-color:var(--bg3)}.m-markdown ol,.m-markdown ul{padding-inline-start:30px}.m-markdown-small ol,.m-markdown-small ul{padding-inline-start:20px}.m-markdown a,.m-markdown-small a{color:var(--blue)}.m-markdown img,.m-markdown-small img{max-width:100%}.m-markdown table,.m-markdown-small table{border-spacing:0;margin:10px 0;border-collapse:separate;border:1px solid var(--border-color);border-radius:var(--border-radius);font-size:calc(var(--font-size-small) + 1px);line-height:calc(var(--font-size-small) + 4px);max-width:100%}.m-markdown-small table{font-size:var(--font-size-small);line-height:calc(var(--font-size-small) + 2px);margin:8px 0}.m-markdown td,.m-markdown th,.m-markdown-small td,.m-markdown-small th{vertical-align:top;border-top:1px solid var(--border-color);line-height:calc(var(--font-size-small) + 4px)}.m-markdown tr:first-child th,.m-markdown-small tr:first-child th{border-top:0 none}.m-markdown td,.m-markdown th{padding:10px 12px}.m-markdown-small td,.m-markdown-small th{padding:8px 8px}.m-markdown th,.m-markdown-small th{font-weight:600;background-color:var(--bg2);vertical-align:middle}.m-markdown-small table code{font-size:calc(var(--font-size-mono) - 2px)}.m-markdown table code{font-size:calc(var(--font-size-mono) - 1px)}.m-markdown blockquote,.m-markdown-small blockquote{margin-inline-start:0;margin-inline-end:0;border-left:3px solid var(--border-color);padding:6px 0 6px 6px}.m-markdown hr{border:1px solid var(--border-color)}`,fs=we`.m-btn{border-radius:var(--border-radius);font-weight:600;display:inline-block;padding:6px 16px;font-size:var(--font-size-small);outline:0;line-height:1;text-align:center;white-space:nowrap;border:2px solid var(--primary-color);background-color:transparent;user-select:none;cursor:pointer;box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24);transition-duration:.75s}.m-btn.primary{background-color:var(--primary-color);color:var(--primary-color-invert)}.m-btn.thin-border{border-width:1px}.m-btn.large{padding:8px 14px}.m-btn.small{padding:5px 12px}.m-btn.tiny{padding:5px 6px}.m-btn.circle{border-radius:50%}.m-btn:hover{background-color:var(--primary-color);color:var(--primary-color-invert)}.m-btn.nav{border:2px solid var(--nav-accent-color)}.m-btn.nav:hover{background-color:var(--nav-accent-color)}.m-btn:disabled{background-color:var(--bg3);color:var(--fg3);border-color:var(--fg3);cursor:not-allowed;opacity:.4}.m-btn:active{filter:brightness(75%);transform:scale(.95);transition:scale 0s}.toolbar-btn{cursor:pointer;padding:4px;margin:0 2px;font-size:var(--font-size-small);min-width:50px;color:var(--primary-color-invert);border-radius:2px;border:none;background-color:var(--primary-color)}button,input,pre,select,textarea{color:var(--fg);outline:0;background-color:var(--input-bg);border:1px solid var(--border-color);border-radius:var(--border-radius)}button{font-family:var(--font-regular)}input[type=file],input[type=password],input[type=text],pre,select,textarea{font-family:var(--font-mono);font-weight:400;font-size:var(--font-size-small);transition:border .2s;padding:6px 5px}select{font-family:var(--font-regular);padding:5px 30px 5px 5px;background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2212%22%20height%3D%2212%22%3E%3Cpath%20d%3D%22M10.3%203.3L6%207.6%201.7%203.3A1%201%200%2000.3%204.7l5%205a1%201%200%20001.4%200l5-5a1%201%200%2010-1.4-1.4z%22%20fill%3D%22%23777777%22%2F%3E%3C%2Fsvg%3E");background-position:calc(100% - 5px) center;background-repeat:no-repeat;background-size:10px;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}select:hover{border-color:var(--primary-color)}input[type=password]::placeholder,input[type=text]::placeholder,textarea::placeholder{color:var(--placeholder-color);opacity:1}input[type=file]{font-family:var(--font-regular);padding:2px;cursor:pointer;border:1px solid var(--primary-color);min-height:calc(var(--font-size-small) + 18px)}input[type=file]::-webkit-file-upload-button{font-family:var(--font-regular);font-size:var(--font-size-small);outline:0;cursor:pointer;padding:3px 8px;border:1px solid var(--primary-color);background-color:var(--primary-color);color:var(--primary-color-invert);border-radius:var(--border-radius);-webkit-appearance:none}pre,textarea{scrollbar-width:thin;scrollbar-color:var(--border-color) var(--input-bg)}pre::-webkit-scrollbar,textarea::-webkit-scrollbar{width:8px;height:8px}pre::-webkit-scrollbar-track,textarea::-webkit-scrollbar-track{background:var(--input-bg)}pre::-webkit-scrollbar-thumb,textarea::-webkit-scrollbar-thumb{border-radius:2px;background-color:var(--border-color)}.link{font-size:var(--font-size-small);text-decoration:underline;color:var(--blue);font-family:var(--font-mono);margin-bottom:2px}input[type=checkbox]{appearance:none;display:inline-block;background-color:var(--light-bg);border:1px solid var(--light-bg);border-radius:9px;cursor:pointer;height:18px;position:relative;transition:border .25s .15s,box-shadow .25s .3s,padding .25s;min-width:36px;width:36px;vertical-align:top}input[type=checkbox]:after{position:absolute;background-color:var(--bg);border:1px solid var(--light-bg);border-radius:8px;content:'';top:0;left:0;right:16px;display:block;height:16px;transition:border .25s .15s,left .25s .1s,right .15s .175s}input[type=checkbox]:checked{background-color:var(--green);border-color:var(--green)}input[type=checkbox]:checked:after{border:1px solid var(--green);left:16px;right:1px;transition:border .25s,left .15s .25s,right .25s .175s}`,mn=we`.col,.row{display:flex}.row{align-items:center;flex-direction:row}.col{align-items:stretch;flex-direction:column}`,fn=we`.m-table{border-spacing:0;border-collapse:separate;border:1px solid var(--light-border-color);border-radius:var(--border-radius);margin:0;max-width:100%;direction:ltr}.m-table tr:first-child td,.m-table tr:first-child th{border-top:0 none}.m-table td,.m-table th{font-size:var(--font-size-small);line-height:calc(var(--font-size-small) + 4px);padding:4px 5px 4px;vertical-align:top}.m-table.padded-12 td,.m-table.padded-12 th{padding:12px}.m-table td:not([align]),.m-table th:not([align]){text-align:left}.m-table th{color:var(--fg2);font-size:var(--font-size-small);line-height:calc(var(--font-size-small) + 18px);font-weight:600;letter-spacing:normal;background-color:var(--bg2);vertical-align:bottom;border-bottom:1px solid var(--light-border-color)}.m-table>tbody>tr>td,.m-table>tr>td{border-top:1px solid var(--light-border-color);text-overflow:ellipsis;overflow:hidden}.table-title{font-size:var(--font-size-small);font-weight:700;vertical-align:middle;margin:12px 0 4px 0}`,Il=we`:host{container-type:inline-size}.only-large-screen{display:none}.endpoint-head .path{display:flex;font-family:var(--font-mono);font-size:var(--font-size-small);align-items:center;overflow-wrap:break-word;word-break:break-all}.endpoint-head .descr{font-size:var(--font-size-small);color:var(--light-fg);font-weight:400;align-items:center;overflow-wrap:break-word;word-break:break-all;display:none}.m-endpoint.expanded{margin-bottom:16px}.m-endpoint>.endpoint-head{border-width:1px 1px 1px 5px;border-style:solid;border-color:transparent;border-top-color:var(--light-border-color);display:flex;padding:6px 16px;align-items:center;cursor:pointer}.m-endpoint>.endpoint-head.put.expanded,.m-endpoint>.endpoint-head.put:hover{border-color:var(--orange);background-color:var(--light-orange)}.m-endpoint>.endpoint-head.post.expanded,.m-endpoint>.endpoint-head.post:hover{border-color:var(--green);background-color:var(--light-green)}.m-endpoint>.endpoint-head.get.expanded,.m-endpoint>.endpoint-head.get:hover{border-color:var(--blue);background-color:var(--light-blue)}.m-endpoint>.endpoint-head.delete.expanded,.m-endpoint>.endpoint-head.delete:hover{border-color:var(--red);background-color:var(--light-red)}.m-endpoint>.endpoint-head.head.expanded,.m-endpoint>.endpoint-head.head:hover,.m-endpoint>.endpoint-head.options.expanded,.m-endpoint>.endpoint-head.options:hover,.m-endpoint>.endpoint-head.patch.expanded,.m-endpoint>.endpoint-head.patch:hover{border-color:var(--yellow);background-color:var(--light-yellow)}.m-endpoint>.endpoint-head.deprecated.expanded,.m-endpoint>.endpoint-head.deprecated:hover{border-color:var(--border-color);filter:opacity(.6)}.m-endpoint .endpoint-body{flex-wrap:wrap;padding:16px 0 0 0;border-width:0 1px 1px 5px;border-style:solid;box-shadow:0 4px 3px -3px rgba(0,0,0,.15)}.m-endpoint .endpoint-body.delete{border-color:var(--red)}.m-endpoint .endpoint-body.put{border-color:var(--orange)}.m-endpoint .endpoint-body.post{border-color:var(--green)}.m-endpoint .endpoint-body.get{border-color:var(--blue)}.m-endpoint .endpoint-body.head,.m-endpoint .endpoint-body.options,.m-endpoint .endpoint-body.patch{border-color:var(--yellow)}.m-endpoint .endpoint-body.deprecated{border-color:var(--border-color);filter:opacity(.6)}.endpoint-head .deprecated{color:var(--light-fg);filter:opacity(.6)}.summary{padding:8px 8px}.summary .title{font-size:calc(var(--font-size-regular) + 2px);margin-bottom:6px;word-break:break-all}.endpoint-head .method{padding:2px 5px;vertical-align:middle;font-size:var(--font-size-small);height:calc(var(--font-size-small) + 16px);line-height:calc(var(--font-size-small) + 8px);width:60px;border-radius:2px;display:inline-block;text-align:center;font-weight:700;text-transform:uppercase;margin-right:5px}.endpoint-head .method.delete{border:2px solid var(--red)}.endpoint-head .method.put{border:2px solid var(--orange)}.endpoint-head .method.post{border:2px solid var(--green)}.endpoint-head .method.get{border:2px solid var(--blue)}.endpoint-head .method.get.deprecated{border:2px solid var(--border-color)}.endpoint-head .method.head,.endpoint-head .method.options,.endpoint-head .method.patch{border:2px solid var(--yellow)}.req-resp-container{display:flex;margin-top:16px;align-items:stretch;flex-wrap:wrap;flex-direction:column;border-top:1px solid var(--light-border-color)}.view-mode-request,api-response.view-mode{flex:1;min-height:100px;padding:16px 8px;overflow:hidden}.view-mode-request{border-width:0 0 1px 0;border-style:dashed}.head .view-mode-request,.options .view-mode-request,.patch .view-mode-request{border-color:var(--yellow)}.put .view-mode-request{border-color:var(--orange)}.post .view-mode-request{border-color:var(--green)}.get .view-mode-request{border-color:var(--blue)}.delete .view-mode-request{border-color:var(--red)}.endpoint-head .path{font-size:var(--font-size-regular)}.endpoint-head .descr{display:flex}.descr .m-markdown-small,.endpoint-head .m-markdown-small{display:block}.req-resp-container{flex-direction:var(--layout,row);flex-wrap:nowrap}api-response.view-mode{padding:16px}.view-mode-request.row-layout{border-width:0 1px 0 0;padding:16px}.summary{padding:8px 16px}`,Zi=we`code[class*=language-],pre[class*=language-]{text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;tab-size:2;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-]{white-space:normal}.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:var(--light-fg)}.token.punctuation{color:var(--fg)}.token.attr-name,.token.deleted,.token.namespace,.token.tag{color:var(--pink)}.token.function-name{color:var(--blue)}.token.boolean,.token.function,.token.number{color:var(--red)}.token.class-name,.token.constant,.token.property,.token.symbol{color:var(--code-property-color)}.token.atrule,.token.builtin,.token.important,.token.keyword,.token.selector{color:var(--code-keyword-color)}.token.attr-value,.token.char,.token.regex,.token.string,.token.variable{color:var(--green)}.token.entity,.token.operator,.token.url{color:var(--code-operator-color)}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green}`,gn=we`.tab-panel{border:none}.tab-buttons{height:30px;padding:4px 4px 0 4px;border-bottom:1px solid var(--light-border-color);align-items:stretch;overflow-y:hidden;overflow-x:auto;scrollbar-width:thin}.tab-buttons::-webkit-scrollbar{height:1px;background-color:var(--border-color)}.tab-btn{border:none;border-bottom:3px solid transparent;color:var(--light-fg);background-color:transparent;white-space:nowrap;cursor:pointer;outline:0;font-family:var(--font-regular);font-size:var(--font-size-small);margin-right:16px;padding:1px}.tab-btn.active{border-bottom:3px solid var(--primary-color);font-weight:700;color:var(--primary-color)}.tab-btn:hover{color:var(--primary-color)}.tab-content{margin:-1px 0 0 0;position:relative;min-height:50px}`,_l=we`.nav-bar-info:focus-visible,.nav-bar-path:focus-visible,.nav-bar-tag:focus-visible{outline:1px solid;box-shadow:none;outline-offset:-4px}.nav-bar-collapse-all:focus-visible,.nav-bar-expand-all:focus-visible,.nav-bar-tag-icon:focus-visible{outline:1px solid;box-shadow:none;outline-offset:2px}.nav-bar{width:0;height:100%;overflow:hidden;color:var(--nav-text-color);background-color:var(--nav-bg-color);background-blend-mode:multiply;line-height:calc(var(--font-size-small) + 4px);display:none;position:relative;flex-direction:column;flex-wrap:nowrap;word-break:break-word}::slotted([slot=nav-logo]){padding:16px 16px 0 16px}.nav-scroll{overflow-x:hidden;overflow-y:auto;overflow-y:overlay;scrollbar-width:thin;scrollbar-color:var(--nav-hover-bg-color) transparent}.nav-bar-tag{display:flex;align-items:center;justify-content:space-between;flex-direction:row}.nav-bar.read .nav-bar-tag-icon{display:none}.nav-bar-paths-under-tag{overflow:hidden;transition:max-height .2s ease-out,visibility .3s}.collapsed .nav-bar-paths-under-tag{visibility:hidden}.nav-bar-expand-all{transform:rotate(90deg);cursor:pointer;margin-right:10px}.nav-bar-collapse-all{transform:rotate(270deg);cursor:pointer}.nav-bar-collapse-all:hover,.nav-bar-expand-all:hover{color:var(--primary-color)}.nav-bar-tag-icon{color:var(--nav-text-color);font-size:20px}.nav-bar-tag-icon:hover{color:var(--nav-hover-text-color)}.nav-bar.focused .nav-bar-tag-and-paths.collapsed .nav-bar-tag-icon::after{content:'⌵';width:16px;height:16px;text-align:center;display:inline-block;transform:rotate(-90deg);transition:transform .2s ease-out 0s}.nav-bar.focused .nav-bar-tag-and-paths.expanded .nav-bar-tag-icon::after{content:'⌵';width:16px;height:16px;text-align:center;display:inline-block;transition:transform .2s ease-out 0s}.nav-scroll::-webkit-scrollbar{width:var(--scroll-bar-width,8px)}.nav-scroll::-webkit-scrollbar-track{background:0 0}.nav-scroll::-webkit-scrollbar-thumb{background-color:var(--nav-hover-bg-color)}.nav-bar-tag{font-size:var(--font-size-regular);color:var(--nav-accent-color);border-left:4px solid transparent;font-weight:700;padding:15px 15px 15px 10px;text-transform:capitalize}.nav-bar-components,.nav-bar-h1,.nav-bar-h2,.nav-bar-info,.nav-bar-path,.nav-bar-tag{display:flex;cursor:pointer;width:100%;border:none;border-radius:4px;color:var(--nav-text-color);background:0 0;border-left:4px solid transparent}.nav-bar-h1,.nav-bar-h2,.nav-bar-path{font-size:calc(var(--font-size-small) + 1px);padding:var(--nav-item-padding)}.nav-bar-path.small-font{font-size:var(--font-size-small)}.nav-bar-info{font-size:var(--font-size-regular);padding:16px 10px;font-weight:700}.nav-bar-section{display:flex;flex-direction:row;justify-content:space-between;font-size:var(--font-size-small);color:var(--nav-text-color);padding:var(--nav-item-padding);font-weight:700}.nav-bar-section.operations{cursor:pointer}.nav-bar-section.operations:hover{color:var(--nav-hover-text-color);background-color:var(--nav-hover-bg-color)}.nav-bar-section:first-child{display:none}.nav-bar-h2{margin-left:12px}.nav-bar-h1.left-bar.active,.nav-bar-h2.left-bar.active,.nav-bar-info.left-bar.active,.nav-bar-path.left-bar.active,.nav-bar-section.left-bar.operations.active,.nav-bar-tag.left-bar.active{border-left:4px solid var(--nav-accent-color);color:var(--nav-hover-text-color)}.nav-bar-h1.colored-block.active,.nav-bar-h2.colored-block.active,.nav-bar-info.colored-block.active,.nav-bar-path.colored-block.active,.nav-bar-section.colored-block.operations.active,.nav-bar-tag.colored-block.active{background-color:var(--nav-accent-color);color:var(--nav-accent-text-color);border-radius:0}.nav-bar-h1:hover,.nav-bar-h2:hover,.nav-bar-info:hover,.nav-bar-path:hover,.nav-bar-tag:hover{color:var(--nav-hover-text-color);background-color:var(--nav-hover-bg-color)}`,Fl=we`#api-info{font-size:calc(var(--font-size-regular) - 1px);margin-top:8px}#api-info span:before{content:'|';display:inline-block;opacity:.5;width:15px;text-align:center}#api-info span:first-child:before{content:'';width:0}`,gs=we``,yn=/[\s#:?&={}]/g,Fr="_rapidoc_api_key";function vn(e){return new Promise(t=>setTimeout(t,e))}function bn(e,t){const r=t.target,s=document.createElement("textarea");s.value=e,s.style.position="fixed",document.body.appendChild(s),s.focus(),s.select();try{document.execCommand("copy"),r.innerText="Copied",setTimeout(()=>{r.innerText="Copy"},5e3)}catch{}document.body.removeChild(s)}function Iw(e,t){return t.name.toLowerCase().includes(e.toLowerCase())}function xn(e,t,r=""){return`${t.method} ${t.path} ${t.summary||""} ${t.description||""} ${t.operationId||""} ${r}`.toLowerCase().includes(e.toLowerCase())}function Ml(e,t=new Set){return e&&Object.keys(e).forEach(r=>{var s,n;t.add(r),e[r].properties?Ml(e[r].properties,t):(s=e[r].items)!=null&&s.properties&&Ml((n=e[r].items)==null?void 0:n.properties,t)}),t}function _w(e,t,r=[]){if(!e.trim()||r.length===0)return;const s=[];return t.forEach(n=>{n.paths.forEach(i=>{var a,o,l,c;let d="";if(r.includes("search-api-path")&&(d=i.path),r.includes("search-api-descr")&&(d=`${d} ${(i.summary||"")+(i.description||"")}`),r.includes("search-api-params")&&(d=`${d} ${((a=i.parameters)==null?void 0:a.map(p=>p.name).join(" "))||""}`),r.includes("search-api-request-body")&&i.requestBody){let p=new Set;for(const m in(o=i.requestBody)==null?void 0:o.content)(l=i.requestBody.content[m].schema)!=null&&l.properties&&(p=Ml((c=i.requestBody.content[m].schema)==null?void 0:c.properties)),d=`${d} ${[...p].join(" ")}`}r.includes("search-api-resp-descr")&&(d=`${d} ${Object.values(i.responses).map(p=>p.description||"").join(" ")}`),d.toLowerCase().includes(e.trim().toLowerCase())&&s.push({elementId:i.elementId,method:i.method,path:i.path,summary:i.summary||i.description||"",deprecated:i.deprecated})})}),s}function Kd(e,t){if(e){const r=document.createElement("a");document.body.appendChild(r),r.style="display: none",r.href=e,r.download=t,r.click(),r.remove()}}function Yd(e){if(e){const t=document.createElement("a");document.body.appendChild(t),t.style="display: none",t.href=e,t.target="_blank",t.click(),t.remove()}}const Zd=Object.freeze({url:"/"}),{fetch:Fw,Response:Mw,Headers:Lw,Request:Dw,FormData:qw,File:Nw,Blob:Bw}=globalThis;function Ll(e,t){return t||typeof navigator>"u"||(t=navigator),t&&t.product==="ReactNative"?!(!e||typeof e!="object"||typeof e.uri!="string"):typeof File<"u"&&e instanceof File||typeof Blob<"u"&&e instanceof Blob||!!ArrayBuffer.isView(e)||e!==null&&typeof e=="object"&&typeof e.pipe=="function"}function Xd(e,t){return Array.isArray(e)&&e.some(r=>Ll(r,t))}globalThis.fetch===void 0&&(globalThis.fetch=Fw),globalThis.Headers===void 0&&(globalThis.Headers=Lw),globalThis.Request===void 0&&(globalThis.Request=Dw),globalThis.Response===void 0&&(globalThis.Response=Mw),globalThis.FormData===void 0&&(globalThis.FormData=qw),globalThis.File===void 0&&(globalThis.File=Nw),globalThis.Blob===void 0&&(globalThis.Blob=Bw);class Dl extends File{constructor(t,r="",s={}){super([t],r,s),this.data=t}valueOf(){return this.data}toString(){return this.valueOf()}}function Qd(e,t="reserved"){return[...e].map(r=>{if((n=>/^[a-z0-9\-._~]+$/i.test(n))(r)||(n=>":/?#[]@!$&'()*+,;=".indexOf(n)>-1)(r)&&t==="unsafe")return r;const s=new TextEncoder;return Array.from(s.encode(r)).map(n=>`0${n.toString(16).toUpperCase()}`.slice(-2)).map(n=>`%${n}`).join("")}).join("")}function ql(e){const{value:t}=e;return Array.isArray(t)?function({key:r,value:s,style:n,explode:i,escape:a}){if(n==="simple")return s.map(o=>Ne(o,a)).join(",");if(n==="label")return`.${s.map(o=>Ne(o,a)).join(".")}`;if(n==="matrix")return s.map(o=>Ne(o,a)).reduce((o,l)=>!o||i?`${o||""};${r}=${l}`:`${o},${l}`,"");if(n==="form"){const o=i?`&${r}=`:",";return s.map(l=>Ne(l,a)).join(o)}if(n==="spaceDelimited"){const o=i?`${r}=`:"";return s.map(l=>Ne(l,a)).join(` ${o}`)}if(n==="pipeDelimited"){const o=i?`${r}=`:"";return s.map(l=>Ne(l,a)).join(`|${o}`)}}(e):typeof t=="object"?function({key:r,value:s,style:n,explode:i,escape:a}){const o=Object.keys(s);if(n==="simple")return o.reduce((l,c)=>{const d=Ne(s[c],a);return`${l?`${l},`:""}${c}${i?"=":","}${d}`},"");if(n==="label")return o.reduce((l,c)=>{const d=Ne(s[c],a);return`${l?`${l}.`:"."}${c}${i?"=":"."}${d}`},"");if(n==="matrix"&&i)return o.reduce((l,c)=>`${l?`${l};`:";"}${c}=${Ne(s[c],a)}`,"");if(n==="matrix")return o.reduce((l,c)=>{const d=Ne(s[c],a);return`${l?`${l},`:`;${r}=`}${c},${d}`},"");if(n==="form")return o.reduce((l,c)=>{const d=Ne(s[c],a);return`${l?`${l}${i?"&":","}`:""}${c}${i?"=":","}${d}`},"")}(e):function({key:r,value:s,style:n,escape:i}){if(n==="simple")return Ne(s,i);if(n==="label")return`.${Ne(s,i)}`;if(n==="matrix")return`;${r}=${Ne(s,i)}`;if(n==="form"||n==="deepObject")return Ne(s,i)}(e)}function Ne(e,t=!1){return Array.isArray(e)||e!==null&&typeof e=="object"?e=JSON.stringify(e):typeof e!="number"&&typeof e!="boolean"||(e=String(e)),t&&e.length>0?Qd(e,t):e}const zw={form:",",spaceDelimited:"%20",pipeDelimited:"|"},Uw={csv:",",ssv:"%20",tsv:"%09",pipes:"|"};function eh(e,t,r=!1){const{collectionFormat:s,allowEmptyValue:n,serializationOption:i,encoding:a}=t,o=typeof t!="object"||Array.isArray(t)?t:t.value,l=r?d=>d.toString():d=>encodeURIComponent(d),c=l(e);if(o===void 0&&n)return[[c,""]];if(Ll(o)||Xd(o))return[[c,o]];if(i)return th(e,o,r,i);if(a){if([typeof a.style,typeof a.explode,typeof a.allowReserved].some(d=>d!=="undefined")){const{style:d,explode:p,allowReserved:m}=a;return th(e,o,r,{style:d,explode:p,allowReserved:m})}if(typeof a.contentType=="string"){if(a.contentType.startsWith("application/json")){const p=l(typeof o=="string"?o:JSON.stringify(o));return[[c,new Dl(p,"blob",{type:a.contentType})]]}const d=l(String(o));return[[c,new Dl(d,"blob",{type:a.contentType})]]}return typeof o!="object"?[[c,l(o)]]:Array.isArray(o)&&o.every(d=>typeof d!="object")?[[c,o.map(l).join(",")]]:[[c,l(JSON.stringify(o))]]}return typeof o!="object"?[[c,l(o)]]:Array.isArray(o)?s==="multi"?[[c,o.map(l)]]:[[c,o.map(l).join(Uw[s||"csv"])]]:[[c,""]]}function th(e,t,r,s){const n=s.style||"form",i=s.explode===void 0?n==="form":s.explode,a=!r&&(s&&s.allowReserved?"unsafe":"reserved"),o=c=>Ne(c,a),l=r?c=>c:c=>o(c);return typeof t!="object"?[[l(e),o(t)]]:Array.isArray(t)?i?[[l(e),t.map(o)]]:[[l(e),t.map(o).join(zw[n])]]:n==="deepObject"?Object.keys(t).map(c=>[l(`${e}[${c}]`),o(t[c])]):i?Object.keys(t).map(c=>[l(c),o(t[c])]):[[l(e),Object.keys(t).map(c=>[`${l(c)},${o(t[c])}`]).join(",")]]}function rh(e){return((t,{encode:r=!0}={})=>{const s=(a,o,l)=>(l==null?a.append(o,""):Array.isArray(l)?l.reduce((c,d)=>s(a,o,d),a):l instanceof Date?a.append(o,l.toISOString()):typeof l=="object"?Object.entries(l).reduce((c,[d,p])=>s(a,`${o}[${d}]`,p),a):a.append(o,l),a),n=Object.entries(t).reduce((a,[o,l])=>s(a,o,l),new URLSearchParams),i=String(n);return r?i:decodeURIComponent(i)})(Object.keys(e).reduce((t,r)=>{for(const[s,n]of eh(r,e[r]))t[s]=n instanceof Dl?n.valueOf():n;return t},{}),{encode:!1})}function Nl(e={}){const{url:t="",query:r,form:s}=e;if(s){const i=Object.keys(s).some(o=>{const{value:l}=s[o];return Ll(l)||Xd(l)}),a=e.headers["content-type"]||e.headers["Content-Type"];if(i||/multipart\/form-data/i.test(a)){const o=(n=e.form,Object.entries(n).reduce((l,[c,d])=>{for(const[p,m]of eh(c,d,!0))if(Array.isArray(m))for(const h of m)if(ArrayBuffer.isView(h)){const x=new Blob([h]);l.append(p,x)}else l.append(p,h);else if(ArrayBuffer.isView(m)){const h=new Blob([m]);l.append(p,h)}else l.append(p,m);return l},new FormData));e.formdata=o,e.body=o}else e.body=rh(s);delete e.form}var n;if(r){const[i,a]=t.split("?");let o="";if(a){const c=new URLSearchParams(a);Object.keys(r).forEach(d=>c.delete(d)),o=String(c)}const l=((...c)=>{const d=c.filter(p=>p).join("&");return d?`?${d}`:""})(o,rh(r));e.url=i+l,delete e.query}return e}/*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */function sh(e){return e==null}var Hw=function(e,t){var r,s,n,i;if(t)for(r=0,s=(i=Object.keys(t)).length;ro&&(t=s-o+(i=" ... ").length),r-s>o&&(r=s+o-(a=" ...").length),{str:i+e.slice(t,r).replace(/\t/g,"\u2192")+a,pos:s-t+i.length}}function zl(e,t){return Ce.repeat(" ",t-e.length)+e}var Vw=function(e,t){if(t=Object.create(t||null),!e.buffer)return null;t.maxLength||(t.maxLength=79),typeof t.indent!="number"&&(t.indent=1),typeof t.linesBefore!="number"&&(t.linesBefore=3),typeof t.linesAfter!="number"&&(t.linesAfter=2);for(var r,s=/\r?\n|\r|\0/g,n=[0],i=[],a=-1;r=s.exec(e.buffer);)i.push(r.index),n.push(r.index+r[0].length),e.position<=r.index&&a<0&&(a=n.length-2);a<0&&(a=n.length-1);var o,l,c="",d=Math.min(e.line+t.linesAfter,i.length).toString().length,p=t.maxLength-(t.indent+d+3);for(o=1;o<=t.linesBefore&&!(a-o<0);o++)l=Bl(e.buffer,n[a-o],i[a-o],e.position-(n[a]-n[a-o]),p),c=Ce.repeat(" ",t.indent)+zl((e.line-o+1).toString(),d)+" | "+l.str+` +`+c;for(l=Bl(e.buffer,n[a],i[a],e.position,p),c+=Ce.repeat(" ",t.indent)+zl((e.line+1).toString(),d)+" | "+l.str+` +`,c+=Ce.repeat("-",t.indent+d+3+l.pos)+`^ +`,o=1;o<=t.linesAfter&&!(a+o>=i.length);o++)l=Bl(e.buffer,n[a+o],i[a+o],e.position-(n[a]-n[a+o]),p),c+=Ce.repeat(" ",t.indent)+zl((e.line+o+1).toString(),d)+" | "+l.str+` +`;return c.replace(/\n$/,"")},Ww=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],Jw=["scalar","sequence","mapping"],_e=function(e,t){if(t=t||{},Object.keys(t).forEach(function(r){if(Ww.indexOf(r)===-1)throw new He('Unknown option "'+r+'" is met in definition of "'+e+'" YAML type.')}),this.options=t,this.tag=e,this.kind=t.kind||null,this.resolve=t.resolve||function(){return!0},this.construct=t.construct||function(r){return r},this.instanceOf=t.instanceOf||null,this.predicate=t.predicate||null,this.represent=t.represent||null,this.representName=t.representName||null,this.defaultStyle=t.defaultStyle||null,this.multi=t.multi||!1,this.styleAliases=function(r){var s={};return r!==null&&Object.keys(r).forEach(function(n){r[n].forEach(function(i){s[String(i)]=n})}),s}(t.styleAliases||null),Jw.indexOf(this.kind)===-1)throw new He('Unknown kind "'+this.kind+'" is specified for "'+e+'" YAML type.')};function ih(e,t){var r=[];return e[t].forEach(function(s){var n=r.length;r.forEach(function(i,a){i.tag===s.tag&&i.kind===s.kind&&i.multi===s.multi&&(n=a)}),r[n]=s}),r}function Ul(e){return this.extend(e)}Ul.prototype.extend=function(e){var t=[],r=[];if(e instanceof _e)r.push(e);else if(Array.isArray(e))r=r.concat(e);else{if(!e||!Array.isArray(e.implicit)&&!Array.isArray(e.explicit))throw new He("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");e.implicit&&(t=t.concat(e.implicit)),e.explicit&&(r=r.concat(e.explicit))}t.forEach(function(n){if(!(n instanceof _e))throw new He("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(n.loadKind&&n.loadKind!=="scalar")throw new He("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(n.multi)throw new He("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")}),r.forEach(function(n){if(!(n instanceof _e))throw new He("Specified list of YAML types (or a single Type object) contains a non-Type object.")});var s=Object.create(Ul.prototype);return s.implicit=(this.implicit||[]).concat(t),s.explicit=(this.explicit||[]).concat(r),s.compiledImplicit=ih(s,"implicit"),s.compiledExplicit=ih(s,"explicit"),s.compiledTypeMap=function(){var n,i,a={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}};function o(l){l.multi?(a.multi[l.kind].push(l),a.multi.fallback.push(l)):a[l.kind][l.tag]=a.fallback[l.tag]=l}for(n=0,i=arguments.length;n=0?"0b"+e.toString(2):"-0b"+e.toString(2).slice(1)},octal:function(e){return e>=0?"0o"+e.toString(8):"-0o"+e.toString(8).slice(1)},decimal:function(e){return e.toString(10)},hexadecimal:function(e){return e>=0?"0x"+e.toString(16).toUpperCase():"-0x"+e.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),Yw=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$"),Zw=/^[-+]?[0-9]+e/,mh=new _e("tag:yaml.org,2002:float",{kind:"scalar",resolve:function(e){return e!==null&&!(!Yw.test(e)||e[e.length-1]==="_")},construct:function(e){var t,r;return r=(t=e.replace(/_/g,"").toLowerCase())[0]==="-"?-1:1,"+-".indexOf(t[0])>=0&&(t=t.slice(1)),t===".inf"?r===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:t===".nan"?NaN:r*parseFloat(t,10)},predicate:function(e){return Object.prototype.toString.call(e)==="[object Number]"&&(e%1!=0||Ce.isNegativeZero(e))},represent:function(e,t){var r;if(isNaN(e))switch(t){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===e)switch(t){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===e)switch(t){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(Ce.isNegativeZero(e))return"-0.0";return r=e.toString(10),Zw.test(r)?r.replace("e",".e"):r},defaultStyle:"lowercase"}),fh=ph.extend({implicit:[uh,dh,hh,mh]}),gh=fh,yh=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),vh=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$"),bh=new _e("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:function(e){return e!==null&&(yh.exec(e)!==null||vh.exec(e)!==null)},construct:function(e){var t,r,s,n,i,a,o,l,c=0,d=null;if((t=yh.exec(e))===null&&(t=vh.exec(e)),t===null)throw new Error("Date resolve error");if(r=+t[1],s=+t[2]-1,n=+t[3],!t[4])return new Date(Date.UTC(r,s,n));if(i=+t[4],a=+t[5],o=+t[6],t[7]){for(c=t[7].slice(0,3);c.length<3;)c+="0";c=+c}return t[9]&&(d=6e4*(60*+t[10]+ +(t[11]||0)),t[9]==="-"&&(d=-d)),l=new Date(Date.UTC(r,s,n,i,a,o,c)),d&&l.setTime(l.getTime()-d),l},instanceOf:Date,represent:function(e){return e.toISOString()}}),xh=new _e("tag:yaml.org,2002:merge",{kind:"scalar",resolve:function(e){return e==="<<"||e===null}}),Hl=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= +\r`,wh=new _e("tag:yaml.org,2002:binary",{kind:"scalar",resolve:function(e){if(e===null)return!1;var t,r,s=0,n=e.length,i=Hl;for(r=0;r64)){if(t<0)return!1;s+=6}return s%8==0},construct:function(e){var t,r,s=e.replace(/[\r\n=]/g,""),n=s.length,i=Hl,a=0,o=[];for(t=0;t>16&255),o.push(a>>8&255),o.push(255&a)),a=a<<6|i.indexOf(s.charAt(t));return(r=n%4*6)===0?(o.push(a>>16&255),o.push(a>>8&255),o.push(255&a)):r===18?(o.push(a>>10&255),o.push(a>>2&255)):r===12&&o.push(a>>4&255),new Uint8Array(o)},predicate:function(e){return Object.prototype.toString.call(e)==="[object Uint8Array]"},represent:function(e){var t,r,s="",n=0,i=e.length,a=Hl;for(t=0;t>18&63],s+=a[n>>12&63],s+=a[n>>6&63],s+=a[63&n]),n=(n<<8)+e[t];return(r=i%3)===0?(s+=a[n>>18&63],s+=a[n>>12&63],s+=a[n>>6&63],s+=a[63&n]):r===2?(s+=a[n>>10&63],s+=a[n>>4&63],s+=a[n<<2&63],s+=a[64]):r===1&&(s+=a[n>>2&63],s+=a[n<<4&63],s+=a[64],s+=a[64]),s}}),Xw=Object.prototype.hasOwnProperty,Qw=Object.prototype.toString,$h=new _e("tag:yaml.org,2002:omap",{kind:"sequence",resolve:function(e){if(e===null)return!0;var t,r,s,n,i,a=[],o=e;for(t=0,r=o.length;t>10),56320+(e-65536&1023))}for(var Th=new Array(256),Ph=new Array(256),vs=0;vs<256;vs++)Th[vs]=jh(vs)?1:0,Ph[vs]=jh(vs);function o$(e,t){this.input=e,this.filename=t.filename||null,this.schema=t.schema||Vl,this.onWarning=t.onWarning||null,this.legacy=t.legacy||!1,this.json=t.json||!1,this.listener=t.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=e.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function Ch(e,t){var r={name:e.filename,buffer:e.input.slice(0,-1),position:e.position,line:e.line,column:e.position-e.lineStart};return r.snippet=Vw(r),new He(t,r)}function H(e,t){throw Ch(e,t)}function Xi(e,t){e.onWarning&&e.onWarning.call(null,Ch(e,t))}var Rh={YAML:function(e,t,r){var s,n,i;e.version!==null&&H(e,"duplication of %YAML directive"),r.length!==1&&H(e,"YAML directive accepts exactly one argument"),(s=/^([0-9]+)\.([0-9]+)$/.exec(r[0]))===null&&H(e,"ill-formed argument of the YAML directive"),n=parseInt(s[1],10),i=parseInt(s[2],10),n!==1&&H(e,"unacceptable YAML version of the document"),e.version=r[0],e.checkLineBreaks=i<2,i!==1&&i!==2&&Xi(e,"unsupported YAML version of the document")},TAG:function(e,t,r){var s,n;r.length!==2&&H(e,"TAG directive accepts exactly two arguments"),s=r[0],n=r[1],Eh.test(s)||H(e,"ill-formed tag handle (first argument) of the TAG directive"),dr.call(e.tagMap,s)&&H(e,'there is a previously declared suffix for "'+s+'" tag handle'),Ah.test(n)||H(e,"ill-formed tag prefix (second argument) of the TAG directive");try{n=decodeURIComponent(n)}catch{H(e,"tag prefix is malformed: "+n)}e.tagMap[s]=n}};function hr(e,t,r,s){var n,i,a,o;if(t1&&(e.result+=Ce.repeat(` +`,t-1))}function _h(e,t){var r,s,n=e.tag,i=e.anchor,a=[],o=!1;if(e.firstTabInLine!==-1)return!1;for(e.anchor!==null&&(e.anchorMap[e.anchor]=a),s=e.input.charCodeAt(e.position);s!==0&&(e.firstTabInLine!==-1&&(e.position=e.firstTabInLine,H(e,"tab characters must not be used in indentation")),s===45)&&Ze(e.input.charCodeAt(e.position+1));)if(o=!0,e.position++,je(e,!0,-1)&&e.lineIndent<=t)a.push(null),s=e.input.charCodeAt(e.position);else if(r=e.line,xs(e,t,3,!1,!0),a.push(e.result),je(e,!0,-1),s=e.input.charCodeAt(e.position),(e.line===r||e.lineIndent>t)&&s!==0)H(e,"bad indentation of a sequence entry");else if(e.lineIndentt?x=1:e.lineIndent===t?x=0:e.lineIndentt?x=1:e.lineIndent===t?x=0:e.lineIndenty)&&(ee&&(k=u.line,E=u.lineStart,j=u.position),xs(u,y,4,!0,S)&&(ee?Q=u.result:J=u.result),ee||(bs(u,R,_,z,Q,J,k,E,j),z=Q=J=null),je(u,!0,-1),O=u.input.charCodeAt(u.position)),(u.line===$||u.lineIndent>y)&&O!==0)H(u,"bad indentation of a mapping entry");else if(u.lineIndent=0))break;S===0?H(u,"bad explicit indentation width of a block scalar; it cannot be less than one"):O?H(u,"repeat of an indentation width identifier"):(A=y+S-1,O=!0)}if(Mr($)){do $=u.input.charCodeAt(++u.position);while(Mr($));if($===35)do $=u.input.charCodeAt(++u.position);while(!Et($)&&$!==0)}for(;$!==0;){for(Wl(u),u.lineIndent=0,$=u.input.charCodeAt(u.position);(!O||u.lineIndentA&&(A=u.lineIndent),Et($))T++;else{if(u.lineIndent0){for(S=k,$=0;S>0;S--)(k=i$(E=u.input.charCodeAt(++u.position)))>=0?$=($<<4)+k:H(u,"expected hexadecimal character");u.result+=a$($),u.position++}else H(u,"unknown escape sequence");v=w=u.position}else Et(E)?(hr(u,v,w,!0),Jl(u,je(u,!1,y)),v=w=u.position):u.position===u.lineStart&&Qi(u)?H(u,"unexpected end of the document within a double quoted scalar"):(u.position++,w=u.position)}H(u,"unexpected end of the stream within a double quoted scalar")}(e,m)?f=!0:function(u){var y,v,w;if((w=u.input.charCodeAt(u.position))!==42)return!1;for(w=u.input.charCodeAt(++u.position),y=u.position;w!==0&&!Ze(w)&&!ys(w);)w=u.input.charCodeAt(++u.position);return u.position===y&&H(u,"name of an alias node must contain at least one character"),v=u.input.slice(y,u.position),dr.call(u.anchorMap,v)||H(u,'unidentified alias "'+v+'"'),u.result=u.anchorMap[v],je(u,!0,-1),!0}(e)?(f=!0,e.tag===null&&e.anchor===null||H(e,"alias node should not have any properties")):function(u,y,v){var w,S,$,k,E,j,O,A,T=u.kind,R=u.result;if(Ze(A=u.input.charCodeAt(u.position))||ys(A)||A===35||A===38||A===42||A===33||A===124||A===62||A===39||A===34||A===37||A===64||A===96||(A===63||A===45)&&(Ze(w=u.input.charCodeAt(u.position+1))||v&&ys(w)))return!1;for(u.kind="scalar",u.result="",S=$=u.position,k=!1;A!==0;){if(A===58){if(Ze(w=u.input.charCodeAt(u.position+1))||v&&ys(w))break}else if(A===35){if(Ze(u.input.charCodeAt(u.position-1)))break}else{if(u.position===u.lineStart&&Qi(u)||v&&ys(A))break;if(Et(A)){if(E=u.line,j=u.lineStart,O=u.lineIndent,je(u,!1,-1),u.lineIndent>=y){k=!0,A=u.input.charCodeAt(u.position);continue}u.position=$,u.line=E,u.lineStart=j,u.lineIndent=O;break}}k&&(hr(u,S,$,!1),Jl(u,u.line-E),S=$=u.position,k=!1),Mr(A)||($=u.position+1),A=u.input.charCodeAt(++u.position)}return hr(u,S,$,!1),!!u.result||(u.kind=T,u.result=R,!1)}(e,m,r===1)&&(f=!0,e.tag===null&&(e.tag="?")),e.anchor!==null&&(e.anchorMap[e.anchor]=e.result)):x===0&&(f=o&&_h(e,h))),e.tag===null)e.anchor!==null&&(e.anchorMap[e.anchor]=e.result);else if(e.tag==="?"){for(e.result!==null&&e.kind!=="scalar"&&H(e,'unacceptable node kind for ! tag; it should be "scalar", not "'+e.kind+'"'),l=0,c=e.implicitTypes.length;l"),e.result!==null&&p.kind!==e.kind&&H(e,"unacceptable node kind for !<"+e.tag+'> tag; it should be "'+p.kind+'", not "'+e.kind+'"'),p.resolve(e.result,e.tag)?(e.result=p.construct(e.result,e.tag),e.anchor!==null&&(e.anchorMap[e.anchor]=e.result)):H(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")}return e.listener!==null&&e.listener("close",e),e.tag!==null||e.anchor!==null||f}function p$(e){var t,r,s,n,i=e.position,a=!1;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap=Object.create(null),e.anchorMap=Object.create(null);(n=e.input.charCodeAt(e.position))!==0&&(je(e,!0,-1),n=e.input.charCodeAt(e.position),!(e.lineIndent>0||n!==37));){for(a=!0,n=e.input.charCodeAt(++e.position),t=e.position;n!==0&&!Ze(n);)n=e.input.charCodeAt(++e.position);for(s=[],(r=e.input.slice(t,e.position)).length<1&&H(e,"directive name must not be less than one character in length");n!==0;){for(;Mr(n);)n=e.input.charCodeAt(++e.position);if(n===35){do n=e.input.charCodeAt(++e.position);while(n!==0&&!Et(n));break}if(Et(n))break;for(t=e.position;n!==0&&!Ze(n);)n=e.input.charCodeAt(++e.position);s.push(e.input.slice(t,e.position))}n!==0&&Wl(e),dr.call(Rh,r)?Rh[r](e,r,s):Xi(e,'unknown document directive "'+r+'"')}je(e,!0,-1),e.lineIndent===0&&e.input.charCodeAt(e.position)===45&&e.input.charCodeAt(e.position+1)===45&&e.input.charCodeAt(e.position+2)===45?(e.position+=3,je(e,!0,-1)):a&&H(e,"directives end mark is expected"),xs(e,e.lineIndent-1,4,!1,!0),je(e,!0,-1),e.checkLineBreaks&&s$.test(e.input.slice(i,e.position))&&Xi(e,"non-ASCII line breaks are interpreted as content"),e.documents.push(e.result),e.position===e.lineStart&&Qi(e)?e.input.charCodeAt(e.position)===46&&(e.position+=3,je(e,!0,-1)):e.position=55296&&s<=56319&&t+1=56320&&r<=57343?1024*(s-55296)+r-56320+65536:s}function zh(e){return/^\n* /.test(e)}function y$(e,t,r,s,n,i,a,o){var l,c,d=0,p=null,m=!1,h=!1,x=s!==-1,g=-1,f=$n(c=Sn(e,0))&&c!==65279&&!ea(c)&&c!==45&&c!==63&&c!==58&&c!==44&&c!==91&&c!==93&&c!==123&&c!==125&&c!==35&&c!==38&&c!==42&&c!==33&&c!==124&&c!==61&&c!==62&&c!==39&&c!==34&&c!==37&&c!==64&&c!==96&&function(u){return!ea(u)&&u!==58}(Sn(e,e.length-1));if(t||a)for(l=0;l=65536?l+=2:l++){if(!$n(d=Sn(e,l)))return 5;f=f&&Bh(d,p,o),p=d}else{for(l=0;l=65536?l+=2:l++){if((d=Sn(e,l))===10)m=!0,x&&(h=h||l-g-1>s&&e[g+1]!==" ",g=l);else if(!$n(d))return 5;f=f&&Bh(d,p,o),p=d}h=h||x&&l-g-1>s&&e[g+1]!==" "}return m||h?r>9&&zh(e)?5:a?i===2?5:2:h?4:3:!f||a||n(e)?i===2?5:2:1}function v$(e,t,r,s,n){e.dump=function(){if(t.length===0)return e.quotingType===2?'""':"''";if(!e.noCompatMode&&(h$.indexOf(t)!==-1||m$.test(t)))return e.quotingType===2?'"'+t+'"':"'"+t+"'";var i=e.indent*Math.max(1,r),a=e.lineWidth===-1?-1:Math.max(Math.min(e.lineWidth,40),e.lineWidth-i),o=s||e.flowLevel>-1&&r>=e.flowLevel;switch(y$(t,o,e.indent,a,function(l){return function(c,d){var p,m;for(p=0,m=c.implicitTypes.length;p"+Uh(t,e.indent)+Hh(qh(function(l,c){for(var d,p,m=/(\n+)([^\n]*)/g,h=(g=l.indexOf(` +`),g=g!==-1?g:l.length,m.lastIndex=g,Vh(l.slice(0,g),c)),x=l[0]===` +`||l[0]===" ",g;p=m.exec(l);){var f=p[1],u=p[2];d=u[0]===" ",h+=f+(x||d||u===""?"":` +`)+Vh(u,c),x=d}return h}(t,a),i));case 5:return'"'+function(l){for(var c,d="",p=0,m=0;m=65536?m+=2:m++)p=Sn(l,m),!(c=d$[p])&&$n(p)?(d+=l[m],p>=65536&&(d+=l[m+1])):d+=c||f$(p);return d}(t)+'"';default:throw new He("impossible error: invalid scalar style")}}()}function Uh(e,t){var r=zh(e)?String(t):"",s=e[e.length-1]===` +`;return r+(s&&(e[e.length-2]===` +`||e===` +`)?"+":s?"":"-")+` +`}function Hh(e){return e[e.length-1]===` +`?e.slice(0,-1):e}function Vh(e,t){if(e===""||e[0]===" ")return e;for(var r,s,n=/ [^ ]/g,i=0,a=0,o=0,l="";r=n.exec(e);)(o=r.index)-i>t&&(s=a>i?a:o,l+=` +`+e.slice(i,s),i=s+1),a=o;return l+=` +`,e.length-i>t&&a>i?l+=e.slice(i,a)+` +`+e.slice(a+1):l+=e.slice(i),l.slice(1)}function Wh(e,t,r,s){var n,i,a,o="",l=e.tag;for(n=0,i=r.length;n tag resolver accepts not "'+l+'" style');s=o.represent[l](t,l)}e.dump=s}return!0}return!1}function Dt(e,t,r,s,n,i,a){e.tag=null,e.dump=r,Jh(e,r,!1)||Jh(e,r,!0);var o,l=Lh.call(e.dump),c=s;s&&(s=e.flowLevel<0||e.flowLevel>t);var d,p,m=l==="[object Object]"||l==="[object Array]";if(m&&(p=(d=e.duplicates.indexOf(r))!==-1),(e.tag!==null&&e.tag!=="?"||p||e.indent!==2&&t>0)&&(n=!1),p&&e.usedDuplicates[d])e.dump="*ref_"+d;else{if(m&&p&&!e.usedDuplicates[d]&&(e.usedDuplicates[d]=!0),l==="[object Object]")s&&Object.keys(e.dump).length!==0?(function(h,x,g,f){var u,y,v,w,S,$,k="",E=h.tag,j=Object.keys(g);if(h.sortKeys===!0)j.sort();else if(typeof h.sortKeys=="function")j.sort(h.sortKeys);else if(h.sortKeys)throw new He("sortKeys must be a boolean or a function");for(u=0,y=j.length;u1024)&&(h.dump&&h.dump.charCodeAt(0)===10?$+="?":$+="? "),$+=h.dump,S&&($+=Gl(h,x)),Dt(h,x+1,w,!0,S)&&(h.dump&&h.dump.charCodeAt(0)===10?$+=":":$+=": ",k+=$+=h.dump));h.tag=E,h.dump=k||"{}"}(e,t,e.dump,n),p&&(e.dump="&ref_"+d+e.dump)):(function(h,x,g){var f,u,y,v,w,S="",$=h.tag,k=Object.keys(g);for(f=0,u=k.length;f1024&&(w+="? "),w+=h.dump+(h.condenseFlow?'"':"")+":"+(h.condenseFlow?"":" "),Dt(h,x,v,!1,!1)&&(S+=w+=h.dump));h.tag=$,h.dump="{"+S+"}"}(e,t,e.dump),p&&(e.dump="&ref_"+d+" "+e.dump));else if(l==="[object Array]")s&&e.dump.length!==0?(e.noArrayIndent&&!a&&t>0?Wh(e,t-1,e.dump,n):Wh(e,t,e.dump,n),p&&(e.dump="&ref_"+d+e.dump)):(function(h,x,g){var f,u,y,v="",w=h.tag;for(f=0,u=g.length;f",e.dump=o+" "+e.dump)}return!0}function b$(e,t){var r,s,n=[],i=[];for(Kl(e,n,i),r=0,s=i.length;r(t[r]=function(n){return n.includes(", ")?n.split(", "):n}(s),t),{})}function Kh(e,t,{loadSpec:r=!1}={}){const s={ok:e.ok,url:e.url||t,status:e.status,statusText:e.statusText,headers:Gh(e.headers)},n=s.headers["content-type"],i=r||((a="")=>/(json|xml|yaml|text)\b/.test(a))(n);return(i?e.text:e.blob||e.buffer).call(e).then(a=>{if(s.text=a,s.data=a,i)try{const o=function(l,c){return c&&(c.indexOf("application/json")===0||c.indexOf("+json")>0)?JSON.parse(l):ws.load(l)}(a,n);s.body=o,s.obj=o}catch(o){s.parseError=o}return s})}async function $s(e,t={}){typeof e=="object"&&(e=(t=e).url),t.headers=t.headers||{},(t=Nl(t)).headers&&Object.keys(t.headers).forEach(n=>{const i=t.headers[n];typeof i=="string"&&(t.headers[n]=i.replace(/\n+/g," "))}),t.requestInterceptor&&(t=await t.requestInterceptor(t)||t);const r=t.headers["content-type"]||t.headers["Content-Type"];let s;/multipart\/form-data/i.test(r)&&(delete t.headers["content-type"],delete t.headers["Content-Type"]);try{s=await(t.userFetch||fetch)(t.url,t),s=await Kh(s,e,t),t.responseInterceptor&&(s=await t.responseInterceptor(s)||s)}catch(n){if(!s)throw n;const i=new Error(s.statusText||`response status is ${s.status}`);throw i.status=s.status,i.statusCode=s.status,i.responseError=n,i}if(!s.ok){const n=new Error(s.statusText||`response status is ${s.status}`);throw n.status=s.status,n.statusCode=s.status,n.response=s,n}return s}function Yh(e,t={}){const{requestInterceptor:r,responseInterceptor:s}=t,n=e.withCredentials?"include":"same-origin";return i=>e({url:i,loadSpec:!0,requestInterceptor:r,responseInterceptor:s,headers:{Accept:"application/json, application/yaml"},credentials:n}).then(a=>a.body)}const Zl=e=>{var t,r;const{baseDoc:s,url:n}=e,i=(t=s??n)!==null&&t!==void 0?t:"";return typeof((r=globalThis.document)===null||r===void 0?void 0:r.baseURI)=="string"?String(new URL(i,globalThis.document.baseURI)):i},Zh=e=>{const{fetch:t,http:r}=e;return t||r||$s};/*! + * https://github.com/Starcounter-Jack/JSON-Patch + * (c) 2017-2022 Joachim Wester + * MIT licensed + */var ra,I$=(ra=function(e,t){return ra=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,s){r.__proto__=s}||function(r,s){for(var n in s)s.hasOwnProperty(n)&&(r[n]=s[n])},ra(e,t)},function(e,t){function r(){this.constructor=e}ra(e,t),e.prototype=t===null?Object.create(t):(r.prototype=t.prototype,new r)}),_$=Object.prototype.hasOwnProperty;function Xl(e,t){return _$.call(e,t)}function Ql(e){if(Array.isArray(e)){for(var t=new Array(e.length),r=0;r=48&&t<=57))return!1;r++}return!0}function Lr(e){return e.indexOf("/")===-1&&e.indexOf("~")===-1?e:e.replace(/~/g,"~0").replace(/\//g,"~1")}function Xh(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}function tc(e){if(e===void 0)return!0;if(e){if(Array.isArray(e)){for(var t=0,r=e.length;t0&&o[c-1]=="constructor"))throw new TypeError("JSON-Patch: modifying `__proto__` or `constructor/prototype` prop is banned for security reasons, if this was on purpose, please set `banPrototypeModifications` flag false and pass it to this function. More info in fast-json-patch README");if(r&&p===void 0&&(l[m]===void 0?p=o.slice(0,c).join("/"):c==d-1&&(p=t.path),p!==void 0&&h(t,0,e,p)),c++,Array.isArray(l)){if(m==="-")m=l.length;else{if(r&&!ec(m))throw new ke("Expected an unsigned base-10 integer value, making the new referenced value the array element with the zero-based index","OPERATION_PATH_ILLEGAL_ARRAY_INDEX",i,t,e);ec(m)&&(m=~~m)}if(c>=d){if(r&&t.op==="add"&&m>l.length)throw new ke("The specified index MUST NOT be greater than the number of elements in the array","OPERATION_VALUE_OUT_OF_BOUNDS",i,t,e);if((a=M$[t.op].call(t,l,m,e)).test===!1)throw new ke("Test operation failed","TEST_OPERATION_FAILED",i,t,e);return a}}else if(c>=d){if((a=Ss[t.op].call(t,l,m,e)).test===!1)throw new ke("Test operation failed","TEST_OPERATION_FAILED",i,t,e);return a}if(l=l[m],r&&c0)throw new ke('Operation `path` property must start with "/"',"OPERATION_PATH_INVALID",t,e,r);if((e.op==="move"||e.op==="copy")&&typeof e.from!="string")throw new ke("Operation `from` property is not present (applicable in `move` and `copy` operations)","OPERATION_FROM_REQUIRED",t,e,r);if((e.op==="add"||e.op==="replace"||e.op==="test")&&e.value===void 0)throw new ke("Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)","OPERATION_VALUE_REQUIRED",t,e,r);if((e.op==="add"||e.op==="replace"||e.op==="test")&&tc(e.value))throw new ke("Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)","OPERATION_VALUE_CANNOT_CONTAIN_UNDEFINED",t,e,r);if(r){if(e.op=="add"){var n=e.path.split("/").length,i=s.split("/").length;if(n!==i+1&&n!==i)throw new ke("Cannot perform an `add` operation at the desired path","OPERATION_PATH_CANNOT_ADD",t,e,r)}else if(e.op==="replace"||e.op==="remove"||e.op==="_get"){if(e.path!==s)throw new ke("Cannot perform the operation at a path that does not exist","OPERATION_PATH_UNRESOLVABLE",t,e,r)}else if(e.op==="move"||e.op==="copy"){var a=tm([{op:"_get",path:e.from,value:void 0}],r);if(a&&a.name==="OPERATION_PATH_UNRESOLVABLE")throw new ke("Cannot perform the operation from a path that does not exist","OPERATION_FROM_UNRESOLVABLE",t,e,r)}}}function tm(e,t,r){try{if(!Array.isArray(e))throw new ke("Patch sequence must be an array","SEQUENCE_NOT_AN_ARRAY");if(t)mr(at(t),at(e),r||!0);else{r=r||sa;for(var s=0;s0&&(e.patches=[],e.callback&&e.callback(s)),s}function nc(e,t,r,s,n){if(t!==e){typeof t.toJSON=="function"&&(t=t.toJSON());for(var i=Ql(t),a=Ql(e),o=!1,l=a.length-1;l>=0;l--){var c=e[p=a[l]];if(!Xl(t,p)||t[p]===void 0&&c!==void 0&&Array.isArray(t)===!1)Array.isArray(e)===Array.isArray(t)?(n&&r.push({op:"test",path:s+"/"+Lr(p),value:at(c)}),r.push({op:"remove",path:s+"/"+Lr(p)}),o=!0):(n&&r.push({op:"test",path:s,value:e}),r.push({op:"replace",path:s,value:t}));else{var d=t[p];typeof c=="object"&&c!=null&&typeof d=="object"&&d!=null&&Array.isArray(c)===Array.isArray(d)?nc(c,d,r,s+"/"+Lr(p),n):c!==d&&(n&&r.push({op:"test",path:s+"/"+Lr(p),value:at(c)}),r.push({op:"replace",path:s+"/"+Lr(p),value:at(d)}))}}if(o||i.length!=a.length)for(l=0;ls!==void 0&&r?r[s]:r,e)},applyPatch:function(e,t,r){if(r=r||{},(t={...t,path:t.path&&nm(t.path)}).op==="merge"){const s=oc(e,t.path);Object.assign(s,t.value),mr(e,[ia(t.path,s)])}else if(t.op==="mergeDeep"){const s=oc(e,t.path),n=V$(s,t.value);e=mr(e,[ia(t.path,n)]).newDocument}else if(t.op==="add"&&t.path===""&&qr(t.value)){const s=Object.keys(t.value).reduce((n,i)=>(n.push({op:"add",path:`/${nm(i)}`,value:t.value[i]}),n),[]);mr(e,s)}else if(t.op==="replace"&&t.path===""){let{value:s}=t;r.allowMetaPatches&&t.meta&&aa(t)&&(Array.isArray(t.value)||qr(t.value))&&(s={...s,...t.meta}),e=s}else if(mr(e,[t]),r.allowMetaPatches&&t.meta&&aa(t)&&(Array.isArray(t.value)||qr(t.value))){const s={...oc(e,t.path),...t.meta};mr(e,[ia(t.path,s)])}return e},parentPathMatch:function(e,t){if(!Array.isArray(t))return!1;for(let r=0,s=t.length;r(t+"").replace(/~/g,"~0").replace(/\//g,"~1")).join("/")}`:e}function ia(e,t,r){return{op:"replace",path:e,value:t,meta:r}}function im(e,t,r){return om(On(e.filter(aa).map(s=>t(s.value,r,s.path))||[]))}function ic(e,t,r){return r=r||[],Array.isArray(e)?e.map((s,n)=>ic(s,t,r.concat(n))):qr(e)?Object.keys(e).map(s=>ic(e[s],t,r.concat(s))):t(e,r[r.length-1],r)}function ac(e,t,r){let s=[];if((r=r||[]).length>0){const n=t(e,r[r.length-1],r);n&&(s=s.concat(n))}if(Array.isArray(e)){const n=e.map((i,a)=>ac(i,t,r.concat(a)));n&&(s=s.concat(n))}else if(qr(e)){const n=Object.keys(e).map(i=>ac(e[i],t,r.concat(i)));n&&(s=s.concat(n))}return s=On(s),s}function am(e){return Array.isArray(e)?e:[e]}function On(e){return[].concat(...e.map(t=>Array.isArray(t)?On(t):t))}function om(e){return e.filter(t=>t!==void 0)}function qr(e){return e&&typeof e=="object"}function lm(e){return e&&typeof e=="function"}function cm(e){if(oa(e)){const{op:t}=e;return t==="add"||t==="remove"||t==="replace"}return!1}function pm(e){return cm(e)||oa(e)&&e.type==="mutation"}function aa(e){return pm(e)&&(e.op==="add"||e.op==="replace"||e.op==="merge"||e.op==="mergeDeep")}function oa(e){return e&&typeof e=="object"}function oc(e,t){try{return kn(e,t)}catch{return{}}}var jn=function(e){return e&&e.Math===Math&&e},ot=jn(typeof globalThis=="object"&&globalThis)||jn(typeof window=="object"&&window)||jn(typeof self=="object"&&self)||jn(typeof global=="object"&&global)||jn(!1)||function(){return this}()||Function("return this")(),gt=function(e){try{return!!e()}catch{return!0}},la=!gt(function(){var e=function(){}.bind();return typeof e!="function"||e.hasOwnProperty("prototype")}),W$=la,um=Function.prototype,dm=um.apply,hm=um.call,lc=typeof Reflect=="object"&&Reflect.apply||(W$?hm.bind(dm):function(){return hm.apply(dm,arguments)}),mm=la,fm=Function.prototype,cc=fm.call,J$=mm&&fm.bind.bind(cc,cc),yt=mm?J$:function(e){return function(){return cc.apply(e,arguments)}},gm=yt,G$=gm({}.toString),K$=gm("".slice),pc=function(e){return K$(G$(e),8,-1)},Y$=pc,Z$=yt,uc=function(e){if(Y$(e)==="Function")return Z$(e)},dc=typeof document=="object"&&document.all,lt=dc===void 0&&dc!==void 0?function(e){return typeof e=="function"||e===dc}:function(e){return typeof e=="function"},hc={},fr=!gt(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!==7}),X$=la,ca=Function.prototype.call,Nr=X$?ca.bind(ca):function(){return ca.apply(ca,arguments)},ym={},vm={}.propertyIsEnumerable,bm=Object.getOwnPropertyDescriptor,Q$=bm&&!vm.call({1:2},1);ym.f=Q$?function(e){var t=bm(this,e);return!!t&&t.enumerable}:vm;var gr,pa,Tn=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},e1=gt,t1=pc,mc=Object,r1=yt("".split),s1=e1(function(){return!mc("z").propertyIsEnumerable(0)})?function(e){return t1(e)==="String"?r1(e,""):mc(e)}:mc,fc=function(e){return e==null},n1=fc,i1=TypeError,ua=function(e){if(n1(e))throw new i1("Can't call method on "+e);return e},a1=s1,o1=ua,Pn=function(e){return a1(o1(e))},l1=lt,At=function(e){return typeof e=="object"?e!==null:l1(e)},gc={},yc=gc,vc=ot,c1=lt,xm=function(e){return c1(e)?e:void 0},Cn=function(e,t){return arguments.length<2?xm(yc[e])||xm(vc[e]):yc[e]&&yc[e][t]||vc[e]&&vc[e][t]},da=yt({}.isPrototypeOf),wm=ot.navigator,$m=wm&&wm.userAgent,Sm=ot,bc=$m?String($m):"",km=Sm.process,Em=Sm.Deno,Am=km&&km.versions||Em&&Em.version,Om=Am&&Am.v8;Om&&(pa=(gr=Om.split("."))[0]>0&&gr[0]<4?1:+(gr[0]+gr[1])),!pa&&bc&&(!(gr=bc.match(/Edge\/(\d+)/))||gr[1]>=74)&&(gr=bc.match(/Chrome\/(\d+)/))&&(pa=+gr[1]);var jm=pa,p1=gt,u1=ot.String,Tm=!!Object.getOwnPropertySymbols&&!p1(function(){var e=Symbol("symbol detection");return!u1(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&jm&&jm<41}),Pm=Tm&&!Symbol.sham&&typeof Symbol.iterator=="symbol",d1=Cn,h1=lt,m1=da,f1=Object,Cm=Pm?function(e){return typeof e=="symbol"}:function(e){var t=d1("Symbol");return h1(t)&&m1(t.prototype,f1(e))},g1=String,xc=function(e){try{return g1(e)}catch{return"Object"}},y1=lt,v1=xc,b1=TypeError,ha=function(e){if(y1(e))return e;throw new b1(v1(e)+" is not a function")},x1=ha,w1=fc,wc=function(e,t){var r=e[t];return w1(r)?void 0:x1(r)},Rm=Nr,Im=lt,_m=At,$1=TypeError,Fm={exports:{}},Mm=ot,S1=Object.defineProperty,k1=ot,E1=function(e,t){try{S1(Mm,e,{value:t,configurable:!0,writable:!0})}catch{Mm[e]=t}return t},Lm=Fm.exports=k1.o||E1("__core-js_shared__",{});(Lm.versions||(Lm.versions=[])).push({version:"3.38.1",mode:"pure",copyright:"\xA9 2014-2024 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.38.1/LICENSE",source:"https://github.com/zloirock/core-js"});var Dm=Fm.exports,qm=Dm,Nm=function(e,t){return qm[e]||(qm[e]=t||{})},A1=ua,O1=Object,Bm=function(e){return O1(A1(e))},j1=Bm,T1=yt({}.hasOwnProperty),qt=Object.hasOwn||function(e,t){return T1(j1(e),t)},P1=yt,C1=0,R1=Math.random(),I1=P1(1 .toString),zm=function(e){return"Symbol("+(e===void 0?"":e)+")_"+I1(++C1+R1,36)},_1=Nm,Um=qt,F1=zm,M1=Tm,L1=Pm,Es=ot.Symbol,$c=_1("wks"),D1=L1?Es.for||Es:Es&&Es.withoutSetter||F1,Nt=function(e){return Um($c,e)||($c[e]=M1&&Um(Es,e)?Es[e]:D1("Symbol."+e)),$c[e]},q1=Nr,Hm=At,Vm=Cm,N1=wc,B1=function(e,t){var r,s;if(Im(r=e.toString)&&!_m(s=Rm(r,e))||Im(r=e.valueOf)&&!_m(s=Rm(r,e)))return s;throw new $1("Can't convert object to primitive value")},z1=TypeError,U1=Nt("toPrimitive"),H1=function(e,t){if(!Hm(e)||Vm(e))return e;var r,s=N1(e,U1);if(s){if(r=q1(s,e,t),!Hm(r)||Vm(r))return r;throw new z1("Can't convert object to primitive value")}return B1(e)},V1=Cm,Wm=function(e){var t=H1(e,"string");return V1(t)?t:t+""},Jm=At,Sc=ot.document,W1=Jm(Sc)&&Jm(Sc.createElement),Gm=function(e){return W1?Sc.createElement(e):{}},J1=Gm,Km=!fr&&!gt(function(){return Object.defineProperty(J1("div"),"a",{get:function(){return 7}}).a!==7}),G1=fr,K1=Nr,Y1=ym,Z1=Tn,X1=Pn,Q1=Wm,eS=qt,tS=Km,Ym=Object.getOwnPropertyDescriptor;hc.f=G1?Ym:function(e,t){if(e=X1(e),t=Q1(t),tS)try{return Ym(e,t)}catch{}if(eS(e,t))return Z1(!K1(Y1.f,e,t),e[t])};var rS=gt,sS=lt,nS=/#|\.prototype\./,Rn=function(e,t){var r=aS[iS(e)];return r===lS||r!==oS&&(sS(t)?rS(t):!!t)},iS=Rn.normalize=function(e){return String(e).replace(nS,".").toLowerCase()},aS=Rn.data={},oS=Rn.NATIVE="N",lS=Rn.POLYFILL="P",cS=Rn,pS=ha,uS=la,dS=uc(uc.bind),Zm=function(e,t){return pS(e),t===void 0?e:uS?dS(e,t):function(){return e.apply(t,arguments)}},Br={},Xm=fr&>(function(){return Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype!==42}),hS=At,mS=String,fS=TypeError,zr=function(e){if(hS(e))return e;throw new fS(mS(e)+" is not an object")},gS=fr,yS=Km,vS=Xm,ma=zr,Qm=Wm,bS=TypeError,kc=Object.defineProperty,xS=Object.getOwnPropertyDescriptor;Br.f=gS?vS?function(e,t,r){if(ma(e),t=Qm(t),ma(r),typeof e=="function"&&t==="prototype"&&"value"in r&&"writable"in r&&!r.writable){var s=xS(e,t);s&&s.writable&&(e[t]=r.value,r={configurable:"configurable"in r?r.configurable:s.configurable,enumerable:"enumerable"in r?r.enumerable:s.enumerable,writable:!1})}return kc(e,t,r)}:kc:function(e,t,r){if(ma(e),t=Qm(t),ma(r),yS)try{return kc(e,t,r)}catch{}if("get"in r||"set"in r)throw new bS("Accessors not supported");return"value"in r&&(e[t]=r.value),e};var wS=Br,$S=Tn,yr=fr?function(e,t,r){return wS.f(e,t,$S(1,r))}:function(e,t,r){return e[t]=r,e},In=ot,SS=lc,kS=uc,ES=lt,AS=hc.f,OS=cS,As=gc,jS=Zm,Os=yr,ef=qt,TS=function(e){var t=function(r,s,n){if(this instanceof t){switch(arguments.length){case 0:return new e;case 1:return new e(r);case 2:return new e(r,s)}return new e(r,s,n)}return SS(e,this,arguments)};return t.prototype=e.prototype,t},fa=function(e,t){var r,s,n,i,a,o,l,c,d,p=e.target,m=e.global,h=e.stat,x=e.proto,g=m?In:h?In[p]:In[p]&&In[p].prototype,f=m?As:As[p]||Os(As,p,{})[p],u=f.prototype;for(i in t)s=!(r=OS(m?i:p+(h?".":"#")+i,e.forced))&&g&&ef(g,i),o=f[i],s&&(l=e.dontCallGetSet?(d=AS(g,i))&&d.value:g[i]),a=s&&l?l:t[i],(r||x||typeof o!=typeof a)&&(c=e.bind&&s?jS(a,In):e.wrap&&s?TS(a):x&&ES(a)?kS(a):a,(e.sham||a&&a.sham||o&&o.sham)&&Os(c,"sham",!0),Os(f,i,c),x&&(ef(As,n=p+"Prototype")||Os(As,n,{}),Os(As[n],i,a),e.real&&u&&(r||!u[i])&&Os(u,i,a)))},PS=zm,tf=Nm("keys"),Ec=function(e){return tf[e]||(tf[e]=PS(e))},CS=!gt(function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype}),RS=qt,IS=lt,_S=Bm,FS=CS,rf=Ec("IE_PROTO"),Ac=Object,MS=Ac.prototype,Oc=FS?Ac.getPrototypeOf:function(e){var t=_S(e);if(RS(t,rf))return t[rf];var r=t.constructor;return IS(r)&&t instanceof r?r.prototype:t instanceof Ac?MS:null},LS=yt,DS=ha,qS=At,NS=function(e){return qS(e)||e===null},BS=String,zS=TypeError,US=function(e,t,r){try{return LS(DS(Object.getOwnPropertyDescriptor(e,t)[r]))}catch{}},HS=At,VS=ua,WS=function(e){if(NS(e))return e;throw new zS("Can't set "+BS(e)+" as a prototype")},jc=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,r={};try{(e=US(Object.prototype,"__proto__","set"))(r,[]),t=r instanceof Array}catch{}return function(s,n){return VS(s),WS(n),HS(s)&&(t?e(s,n):s.__proto__=n),s}}():void 0),sf={},JS=Math.ceil,GS=Math.floor,KS=Math.trunc||function(e){var t=+e;return(t>0?GS:JS)(t)},Tc=function(e){var t=+e;return t!=t||t===0?0:KS(t)},YS=Tc,ZS=Math.max,XS=Math.min,QS=Tc,ek=Math.min,tk=function(e){var t=QS(e);return t>0?ek(t,9007199254740991):0},nf=function(e){return tk(e.length)},rk=Pn,sk=function(e,t){var r=YS(e);return r<0?ZS(r+t,0):XS(r,t)},nk=nf,af=function(e){return function(t,r,s){var n=rk(t),i=nk(n);if(i===0)return!e&&-1;var a,o=sk(s,i);if(e&&r!=r){for(;i>o;)if((a=n[o++])!=a)return!0}else for(;i>o;o++)if((e||o in n)&&n[o]===r)return e||o||0;return!e&&-1}},ik={includes:af(!0),indexOf:af(!1)},Pc={},Cc=qt,ak=Pn,ok=ik.indexOf,lk=Pc,of=yt([].push),lf=function(e,t){var r,s=ak(e),n=0,i=[];for(r in s)!Cc(lk,r)&&Cc(s,r)&&of(i,r);for(;t.length>n;)Cc(s,r=t[n++])&&(~ok(i,r)||of(i,r));return i},Rc=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],ck=lf,pk=Rc.concat("length","prototype");sf.f=Object.getOwnPropertyNames||function(e){return ck(e,pk)};var cf={};cf.f=Object.getOwnPropertySymbols;var uk=Cn,dk=sf,hk=cf,mk=zr,fk=yt([].concat),gk=uk("Reflect","ownKeys")||function(e){var t=dk.f(mk(e)),r=hk.f;return r?fk(t,r(e)):t},pf=qt,yk=gk,vk=hc,bk=Br,uf=function(e,t,r){for(var s=yk(t),n=bk.f,i=vk.f,a=0;aa;)Ek.f(e,r=n[a++],s[r]);return e};var ga,Tk=Cn("document","documentElement"),Pk=zr,Ck=df,hf=Rc,Rk=Pc,Ik=Tk,_k=Gm,mf=Ec("IE_PROTO"),Ic=function(){},ff=function(e){return" + + + + + + ``` + + # OpenAPI Version + + You can find the version of OpenAPI spec from the `version` object + + ```yaml + openapi: 3.0.2 + info: + version: '1.0' + title: Server Variables + ... + ``` + + # Authentication + + Petstore offers two forms of authentication: + + - API Key + - OAuth2 + + OAuth2 - an open protocol to allow secure authorization in a simple + and standard method from web, mobile and desktop applications. +externalDocs: + description: Find out how to create Github repo for your OpenAPI spec. + url: 'https://github.com/Rebilly/generator-openapi-repo' +tags: + - name: pet + description: Everything about your Pets + - name: store + description: Access to Petstore orders + x-tag-expanded: false + - name: user + description: Operations about user + - name: pet_model + description: The Pet Model + - name: store_model + description: The Order Model +paths: + /pet: + parameters: + - name: cookieParam + in: cookie + description: Some cookie + required: true + schema: + type: integer + format: int64 + post: + tags: + - pet + summary: Add a new pet to the store + description: Add new pet to the store inventory. + operationId: addPet + responses: + '405': + description: Invalid input + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + x-code-samples: + - lang: 'HTTP' + label: 'HTTP Request' + source: | + POST /pet HTTP/1.1 + Host: example.org + Content-Type: application/json; charset=utf-8 + Content-Length: 137 + + { + "status": "ok", + "extended": true, + "results": [ + {"value": 0, "type": "int64"}, + {"value": 1.0e+3, "type": "decimal"} + ] + } + - lang: java + label: 'JAVA' + source: | + private String createPet() throws JsonProcessingException { + Pet pet = new Pet(); + pet.setId(1l); + pet.setName("Wuffy"); + Category category = new Category(1l, "Hund"); + pet.setCategory(category); + return new ObjectMapper().writeValueAsString(pet); + } + requestBody: + $ref: '#/components/requestBodies/Pet' + put: + tags: + - pet + summary: Update an existing pet + description: This is a description for updating a pet (!!!) + operationId: updatePet + externalDocs: + description: Find more info here + url: https://rapidocweb.com + responses: + '400': + description: Invalid ID supplied + '404': + description: Pet not found + '405': + description: Validation exception + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + x-code-samples: + - lang: PHP + source: | + $form = new \PetStore\Entities\Pet(); + $form->setPetId(1); + $form->setPetType("Dog"); + $form->setName("Rex"); + // set other fields + try { + $pet = $client->pets()->update($form); + } catch (UnprocessableEntityException $e) { + var_dump($e->getErrors()); + } + requestBody: + $ref: '#/components/requestBodies/Pet' + '/pet/{petId}': + get: + tags: + - pet + summary: Find pet by ID + description: Returns a single pet + operationId: getPetById + parameters: + - name: petId + in: path + description: ID of pet to return + required: true + deprecated: true + schema: + type: integer + format: int64 + responses: + '200': + description: successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/Pet' + application/xml: + schema: + $ref: '#/components/schemas/Pet' + '400': + description: Invalid ID supplied + '404': + description: Pet not found + security: + - api_key: [] + post: + tags: + - pet + summary: Updates a pet in the store with form data + description: '' + operationId: updatePetWithForm + parameters: + - name: petId + in: path + description: ID of pet that needs to be updated + required: true + schema: + type: integer + format: int64 + responses: + '405': + description: Invalid input + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + requestBody: + content: + application/x-www-form-urlencoded: + schema: + type: object + properties: + name: + description: Updated name of the pet + type: string + status: + description: Updated status of the pet + type: string + delete: + tags: + - pet + summary: Deletes a pet + description: '' + operationId: deletePet + parameters: + - name: api_key + in: header + required: false + schema: + type: string + example: "Bearer " + - name: petId + in: path + description: Pet id to delete + required: true + schema: + type: integer + format: int64 + responses: + '400': + description: Invalid pet value + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + '/pet/{petId}/uploadImage': + post: + tags: + - pet + summary: uploads an image + description: '' + operationId: uploadFile + parameters: + - name: petId + in: path + description: ID of pet to update + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + requestBody: + content: + application/octet-stream: + schema: + type: string + format: binary + /pet/findByStatus: + get: + tags: + - pet + summary: Finds Pets by status + description: Multiple status values can be provided with comma seperated strings + operationId: findPetsByStatus + parameters: + - name: status + in: query + description: Status values that need to be considered for filter + required: true + style: form + schema: + type: array + minItems: 1 + maxItems: 3 + items: + type: string + enum: + - available + - pending + - sold + default: available + responses: + '200': + description: successful operation + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Pet' + application/xml: + schema: + type: array + items: + $ref: '#/components/schemas/Pet' + '400': + description: Invalid status value + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + /pet/findByTags: + get: + tags: + - pet + summary: Finds Pets by tags + description: >- + Muliple tags can be provided with comma seperated strings. Use tag1, + tag2, tag3 for testing. + operationId: findPetsByTags + deprecated: true + parameters: + - name: tags + in: query + description: Tags to filter by + required: true + style: form + schema: + type: array + items: + type: string + responses: + '200': + description: successful operation + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Pet' + application/xml: + schema: + type: array + items: + $ref: '#/components/schemas/Pet' + '400': + description: Invalid tag value + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + /store/inventory: + get: + tags: + - store + summary: Returns pet inventories by status + description: Returns a map of status codes to quantities + operationId: getInventory + responses: + '200': + description: successful operation + content: + application/json: + schema: + type: object + additionalProperties: + type: integer + format: int32 + security: + - api_key: [] + /store/order: + post: + tags: + - store + summary: Place an order for a pet + description: '' + operationId: placeOrder + responses: + '200': + description: successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/Order' + application/xml: + schema: + $ref: '#/components/schemas/Order' + '400': + description: Invalid Order + content: + application/json: + example: + status: 400 + message: "Invalid Order" + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Order' + description: order placed for purchasing the pet + required: true + '/store/order/{orderId}': + get: + tags: + - store + summary: Find purchase order by ID + description: >- + For valid response try integer IDs with value <= 5 or > 10. Other values + will generated exceptions + operationId: getOrderById + parameters: + - name: orderId + in: path + description: ID of pet that needs to be fetched + required: true + schema: + type: integer + format: int64 + minimum: 1 + maximum: 5 + responses: + '200': + description: successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/Order' + application/xml: + schema: + $ref: '#/components/schemas/Order' + '400': + description: Invalid ID supplied + '404': + description: Order not found + delete: + tags: + - store + summary: Delete purchase order by ID + description: >- + For valid response try integer IDs with value < 1000. Anything above + 1000 or nonintegers will generate API errors + operationId: deleteOrder + parameters: + - name: orderId + in: path + description: ID of the order that needs to be deleted + required: true + schema: + type: string + minimum: 1 + responses: + '400': + description: Invalid ID supplied + '404': + description: Order not found + /user: + post: + tags: + - user + summary: Create user + description: This can only be done by the logged in user. + operationId: createUser + responses: + default: + description: successful operation + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/User' + description: Created user object + required: true + '/user/{username}': + get: + tags: + - user + summary: Get user by user name + description: '' + operationId: getUserByName + parameters: + - name: username + in: path + description: 'The name that needs to be fetched. Use user1 for testing. ' + required: true + schema: + type: string + responses: + '200': + description: successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/User' + application/xml: + schema: + $ref: '#/components/schemas/User' + '400': + description: Invalid username supplied + '404': + description: User not found + put: + tags: + - user + summary: Updated user + description: This can only be done by the logged in user. + operationId: updateUser + parameters: + - name: username + in: path + description: name that need to be deleted + required: true + schema: + type: string + responses: + '400': + description: Invalid user supplied + '404': + description: User not found + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/User' + description: Updated user object + required: true + delete: + tags: + - user + summary: Delete user + description: This can only be done by the logged in user. + operationId: deleteUser + parameters: + - name: username + in: path + description: The name that needs to be deleted + required: true + schema: + type: string + responses: + '400': + description: Invalid username supplied + '404': + description: User not found + /user/createWithArray: + post: + tags: + - user + summary: Creates list of users with given input array + description: '' + operationId: createUsersWithArrayInput + responses: + default: + description: successful operation + requestBody: + $ref: '#/components/requestBodies/UserArray' + /user/createWithList: + post: + tags: + - user + summary: Creates list of users with given input array + description: '' + operationId: createUsersWithListInput + responses: + default: + description: successful operation + requestBody: + $ref: '#/components/requestBodies/UserArray' + /user/login: + get: + tags: + - user + summary: Logs user into the system + description: '' + operationId: loginUser + parameters: + - name: username + in: query + description: The user name for login + required: true + schema: + type: string + - name: password + in: query + description: The password for login in clear text + required: true + schema: + type: string + responses: + '200': + description: successful operation + headers: + X-Rate-Limit: + description: | + calls per hour allowed by the user. The rate limit is applid to avoid DoS attack or an accdental usage of this + API such as putting it in a loop. `X-Rate-Limit` can vary based on time of the day, user, load and many more other factors. + This header will provide information on the rate limit which the user can use to adapt their task + schema: + type: integer + format: int32 + X-Expires-After: + description: | + date in UTC when toekn expires. This information can be used to makke request for new tokens if its near expiry and thereby + extend an existing session. + schema: + type: string + format: date-time + content: + application/json: + schema: + type: string + examples: + response: + value: OK + application/xml: + schema: + type: string + examples: + response: + value: OK + text/plain: + examples: + response: + value: OK + '400': + description: Invalid username/password supplied + /user/logout: + get: + tags: + - user + summary: Logs out current logged in user session + description: '' + operationId: logoutUser + responses: + default: + description: successful operation +components: + schemas: + ApiResponse: + type: object + properties: + code: + type: integer + format: int32 + type: + type: string + message: + type: string + Cat: + description: A representation of a cat + allOf: + - $ref: '#/components/schemas/Pet' + - type: object + properties: + huntingSkill: + type: string + description: The measured skill for hunting + default: lazy + enum: + - clueless + - lazy + - adventurous + - aggressive + required: + - huntingSkill + Category: + type: object + properties: + id: + description: Category ID + allOf: + - $ref: '#/components/schemas/Id' + name: + description: Category name + type: string + minLength: 1 + sub: + description: Test Sub Category + type: object + properties: + prop1: + type: string + description: Dumb Property + xml: + name: Category + namespace: https://rapidocweb.com + Dog: + description: A representation of a dog + allOf: + - $ref: '#/components/schemas/Pet' + - type: object + properties: + packSize: + type: integer + format: int32 + description: The size of the pack the dog is from + default: 1 + minimum: 1 + required: + - packSize + HoneyBee: + description: A representation of a honey bee + allOf: + - $ref: '#/components/schemas/Pet' + - type: object + properties: + honeyPerDay: + type: number + description: Average amount of honey produced per day in ounces + example: 3.14 + required: + - honeyPerDay + Id: + type: integer + format: int64 + readOnly: true + Order: + type: object + properties: + id: + description: Order ID + allOf: + - $ref: '#/components/schemas/Id' + petId: + description: Pet ID + allOf: + - $ref: '#/components/schemas/Id' + quantity: + type: integer + format: int32 + minimum: 1 + default: 1 + shipDate: + description: Estimated ship date + type: string + format: date-time + status: + type: string + description: Order Status + enum: + - placed + - approved + - delivered + complete: + description: Indicates whenever order was completed or not + type: boolean + default: false + readOnly: true + rqeuestId: + description: Unique Request Id + type: string + writeOnly: true + xml: + name: Order + namespace: https://rapidocweb.com + Pet: + type: object + required: + - name + - photoUrls + discriminator: + propertyName: petType + mapping: + cat: '#/components/schemas/Cat' + dog: '#/components/schemas/Dog' + bee: '#/components/schemas/HoneyBee' + properties: + id: + externalDocs: + description: "Find more info here" + url: "https://example.com" + description: Pet ID + allOf: + - $ref: '#/components/schemas/Id' + category: + description: Categories this pet belongs to + allOf: + - $ref: '#/components/schemas/Category' + name: + description: The name given to a pet + type: string + example: Guru + photoUrls: + description: The list of URL to a cute photos featuring pet + type: array + maxItems: 20 + xml: + name: photoUrl + wrapped: true + items: + type: string + format: url + friend: + allOf: + - $ref: '#/components/schemas/Pet' + tags: + description: Tags attached to the pet + type: array + minItems: 1 + xml: + name: tag1 + wrapped: true + items: + $ref: '#/components/schemas/Tag' + status: + type: string + description: Pet status in the store + enum: + - available + - pending + - sold + petType: + description: Type of a pet + type: string + xml: + name: Pet + namespace: https://rapidocweb.com + Tag: + type: object + properties: + id: + description: Tag ID + allOf: + - $ref: '#/components/schemas/Id' + name: + description: Tag name + type: string + minLength: 1 + xml: + name: Tag + namespace: https://rapidocweb.com + User: + type: object + properties: + id: + $ref: '#/components/schemas/Id' + pet: + oneOf: + - $ref: '#/components/schemas/Pet' + - $ref: '#/components/schemas/Tag' + username: + description: User supplied username + type: string + minLength: 4 + example: John78 + firstName: + description: User first name + type: string + minLength: 1 + example: John + lastName: + description: User last name + type: string + minLength: 1 + example: Smith + email: + description: User email address + type: string + format: email + example: john.smith@example.com + password: + type: string + description: >- + User password, MUST contain a mix of upper and lower case letters, + as well as digits + format: password + minLength: 8 + pattern: '/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])/' + example: drowssaP123 + phone: + description: User phone number in international format + type: string + pattern: '/^\+(?:[0-9]-?){6,14}[0-9]$/' + example: +1-202-555-0192 + nullable: true + userStatus: + description: User status + type: integer + format: int32 + xml: + name: User + namespace: https://rapidocweb.com + requestBodies: + Pet: + content: + application/json: + schema: + allOf: + - description: My Pet + title: Pettie + - $ref: '#/components/schemas/Pet' + application/xml: + schema: + type: 'object' + properties: + name: + type: string + description: hooray + description: Pet object that needs to be added to the store + required: true + UserArray: + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/User' + description: List of user object + required: true + securitySchemes: + basic: + type: http + scheme: basic + petstore_auth: + description: | + Get access to data while protecting your account credentials. + OAuth2 is also a safer and more secure way to give you access. + type: oauth2 + flows: + implicit: + authorizationUrl: 'http://petstore.swagger.io/api/oauth/dialog' + scopes: + 'write:pets': modify pets in your account + 'read:pets': read your pets + api_key: + description: > + For this sample, you can use the api key `special-key` to test the + authorization filters. + type: apiKey + name: api_key + in: header + examples: + Order: + value: + quantity: 1, + shipDate: 2018-10-19T16:46:45Z, + status: placed, + complete: false \ No newline at end of file diff --git a/docs/specs/petstore_mini.yaml b/docs/generated-docs/specs/petstore_mini.yaml similarity index 100% rename from docs/specs/petstore_mini.yaml rename to docs/generated-docs/specs/petstore_mini.yaml diff --git a/docs/specs/post-nobody.yaml b/docs/generated-docs/specs/post-nobody.yaml similarity index 100% rename from docs/specs/post-nobody.yaml rename to docs/generated-docs/specs/post-nobody.yaml diff --git a/docs/specs/predefined-example.yaml b/docs/generated-docs/specs/predefined-example.yaml similarity index 100% rename from docs/specs/predefined-example.yaml rename to docs/generated-docs/specs/predefined-example.yaml diff --git a/docs/specs/readOnly-writeOnly.json b/docs/generated-docs/specs/readOnly-writeOnly.json similarity index 100% rename from docs/specs/readOnly-writeOnly.json rename to docs/generated-docs/specs/readOnly-writeOnly.json diff --git a/docs/generated-docs/specs/readwrite.yaml b/docs/generated-docs/specs/readwrite.yaml new file mode 100644 index 000000000..8978d4e83 --- /dev/null +++ b/docs/generated-docs/specs/readwrite.yaml @@ -0,0 +1,90 @@ +openapi: 3.0.3 +info: + version: "1.0.0" + title: "RaedOnly and WriteOnly Testcase " +paths: + /read-write: + post: + summary: "Request doesn't show the read-only and Response doesn't show write-only" + requestBody: + content: + application/json: + schema: + properties: + holder: + $ref: '#/components/schemas/Holder' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Holder' + +components: + schemas: + Holder: + type: object + properties: + id: + type: integer + name: + type: string + others: + $ref: '#/components/schemas/other' + other: + type: object + required: + - obj-regular + properties: + primitive: + type: integer + primitive-readonly: + readOnly: true + type: integer + obj-regular: + type: object + properties: + obj-prop1: + type: integer + obj-prop2: + type: integer + obj-prop-readonly: + readOnly: true + type: integer + obj-prop-writeonly: + writeOnly: true + type: integer + primitive-writeonly: + writeOnly: true + type: integer + obj-readonly: + type: object + readOnly: true + properties: + c1: + type: integer + c2: + type: integer + obj-writeonly: + type: object + writeOnly: true + properties: + d1: + type: integer + d2: + type: integer + arr-readonly: + type: array + readOnly: true + items: + type: string + arr-writeonly: + type: array + writeOnly: true + items: + type: string + g: + type: integer \ No newline at end of file diff --git a/docs/specs/request-body-multiple.yaml b/docs/generated-docs/specs/request-body-multiple.yaml similarity index 100% rename from docs/specs/request-body-multiple.yaml rename to docs/generated-docs/specs/request-body-multiple.yaml diff --git a/docs/generated-docs/specs/schema-expand-level.yaml b/docs/generated-docs/specs/schema-expand-level.yaml new file mode 100644 index 000000000..19063d92d --- /dev/null +++ b/docs/generated-docs/specs/schema-expand-level.yaml @@ -0,0 +1,112 @@ +openapi: 3.0.0 +info: + description: Schema + version: 1.0.0 + title: Schema with various data +paths: + /schema/person: + get: + summary: Person Schema + description: Sample Schema of `person` + requestBody: + content: + applicaton/json: + schema: + $ref: '#/components/schemas/Person' + +components: + schemas: + Category: + type: object + properties: + id: + description: Category ID + allOf: + - $ref: '#/components/schemas/Id' + name: + description: Category name + type: string + minLength: 1 + Id: + type: integer + format: int64 + readOnly: true + Person: + type: object + required: + - name + - photoUrls + properties: + id: + description: Pet ID + allOf: + - $ref: '#/components/schemas/Id' + category: + description: Categories this pet belongs to + allOf: + - $ref: '#/components/schemas/Category' + DependentIds: + type: array + description: IDs of Dependents . + items: + type: integer + example: + - 278 + - 279 + - 280 + - 281 + name: + description: Name of the person + type: object + properties: + firstName: + description: First name and prefix + type: object + properties: + prefix: + description: Prefix + type: string + name: + description: First name only + type: string + lastName: + description: Last name + type: string + minLength: 3 + photoUrls: + description: The list of URL to a cute photos featuring pet + type: array + maxItems: 20 + items: + type: string + format: url + tags: + description: Tags attached to the pet + type: array + minItems: 1 + items: + $ref: '#/components/schemas/Tag' + maritalStatus: + type: string + description: Pet status in the store + enum: + - married + - unmarried + - widowed + phone: + description: phone number in international format + type: string + pattern: '/^\+(?:[0-9]-?){6,14}[0-9]$/' + example: +1-202-555-0192 + nullable: true + Tag: + type: object + properties: + id: + description: Tag ID + allOf: + - $ref: '#/components/schemas/Id' + name: + description: Tag name + type: string + minLength: 1 \ No newline at end of file diff --git a/docs/generated-docs/specs/schema-read-and-write-only.yaml b/docs/generated-docs/specs/schema-read-and-write-only.yaml new file mode 100644 index 000000000..788747cec --- /dev/null +++ b/docs/generated-docs/specs/schema-read-and-write-only.yaml @@ -0,0 +1,77 @@ +openapi: 3.0.0 +info: + title: ReadOnly and WriteOnly field attributes in Request, Response, Callback and Webhook + version: "1" + +paths: + /users: + post: + summary: Create a user (Regular req n response and Callback req n response) + requestBody: + description: Pass in the RFQ properties to update. Only `product` is required. + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/User" + callbacks: + created: + /send-data-needed-for-creation-here: + post: + description: Called when the user is created + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/User" + responses: + "200": + description: OK + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/User" + + responses: + "200": + description: OK + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/User" + +webhooks: + user-hooks: + post: + summary: Called after user Creation + requestBody: + description: Informs the client that a user is created and passes on the user data + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/User" + responses: + "200": + description: Return a 200 status to indicate that the data was received successfully +components: + schemas: + User: + type: object + properties: + id: + type: string + description: Server-generated ID of the user + readOnly: true + name: + type: string + description: The name of the user + password: + type: string + description: Password of the user + format: password + writeOnly: true diff --git a/docs/generated-docs/specs/schema-table.yaml b/docs/generated-docs/specs/schema-table.yaml new file mode 100644 index 000000000..19063d92d --- /dev/null +++ b/docs/generated-docs/specs/schema-table.yaml @@ -0,0 +1,112 @@ +openapi: 3.0.0 +info: + description: Schema + version: 1.0.0 + title: Schema with various data +paths: + /schema/person: + get: + summary: Person Schema + description: Sample Schema of `person` + requestBody: + content: + applicaton/json: + schema: + $ref: '#/components/schemas/Person' + +components: + schemas: + Category: + type: object + properties: + id: + description: Category ID + allOf: + - $ref: '#/components/schemas/Id' + name: + description: Category name + type: string + minLength: 1 + Id: + type: integer + format: int64 + readOnly: true + Person: + type: object + required: + - name + - photoUrls + properties: + id: + description: Pet ID + allOf: + - $ref: '#/components/schemas/Id' + category: + description: Categories this pet belongs to + allOf: + - $ref: '#/components/schemas/Category' + DependentIds: + type: array + description: IDs of Dependents . + items: + type: integer + example: + - 278 + - 279 + - 280 + - 281 + name: + description: Name of the person + type: object + properties: + firstName: + description: First name and prefix + type: object + properties: + prefix: + description: Prefix + type: string + name: + description: First name only + type: string + lastName: + description: Last name + type: string + minLength: 3 + photoUrls: + description: The list of URL to a cute photos featuring pet + type: array + maxItems: 20 + items: + type: string + format: url + tags: + description: Tags attached to the pet + type: array + minItems: 1 + items: + $ref: '#/components/schemas/Tag' + maritalStatus: + type: string + description: Pet status in the store + enum: + - married + - unmarried + - widowed + phone: + description: phone number in international format + type: string + pattern: '/^\+(?:[0-9]-?){6,14}[0-9]$/' + example: +1-202-555-0192 + nullable: true + Tag: + type: object + properties: + id: + description: Tag ID + allOf: + - $ref: '#/components/schemas/Id' + name: + description: Tag name + type: string + minLength: 1 \ No newline at end of file diff --git a/docs/generated-docs/specs/schema-title-and-descriptions.yaml b/docs/generated-docs/specs/schema-title-and-descriptions.yaml new file mode 100644 index 000000000..cb4ef8a32 --- /dev/null +++ b/docs/generated-docs/specs/schema-title-and-descriptions.yaml @@ -0,0 +1,96 @@ +openapi: 3.0.0 +info: + title: Schema Titles and Description Testcase + description: More detailed description of the titles example API + version: '1' +paths: + /object: + get: + summary: Object + responses: + default: + description: Response description. + content: + application/json: + schema: + title: Root Object Title + description: Root Object Description + type: object + properties: + propString: + title: Prop 1 Title + description: Property 1 description + type: string + propArrayOfString: + type: array + title: Array Title + description: Array Description + items: + title: Array Item Title + description: Array Item Description (premitive) + type: string + propArrayOfObject: + type: array + title: Array Title + description: Array Description + items: + type: object + title: Array Item Title + description: Array Item Description (object) + properties: + name: + type: string + title: Title + description: description + age: + type: integer + title: Title + description: description + + /array-of-string: + get: + summary: Array Of String + responses: + default: + description: Response description. + content: + application/json: + schema: + title: Root Array Title + description: Root Array Description + type: array + items: + title: Array Item Title + description: Array Item Description (premitive) + type: string + /array-of-object: + get: + summary: Array Of Object + responses: + default: + description: Response description. + content: + application/json: + schema: + type: object + title: Root Object Title + description: Root Object Description + properties: + array_attribute: + type: array + minItems: 10 + maxItems: 20 + title: Array Title + description: Array Description + items: + type: object + title: Array Item Title + minProperties: 2 + maxProperties: 2 + description: Array Item Description + properties: + key: + type: string + value: + type: integer + minimum: 20 diff --git a/docs/generated-docs/specs/schema.yaml b/docs/generated-docs/specs/schema.yaml new file mode 100644 index 000000000..19063d92d --- /dev/null +++ b/docs/generated-docs/specs/schema.yaml @@ -0,0 +1,112 @@ +openapi: 3.0.0 +info: + description: Schema + version: 1.0.0 + title: Schema with various data +paths: + /schema/person: + get: + summary: Person Schema + description: Sample Schema of `person` + requestBody: + content: + applicaton/json: + schema: + $ref: '#/components/schemas/Person' + +components: + schemas: + Category: + type: object + properties: + id: + description: Category ID + allOf: + - $ref: '#/components/schemas/Id' + name: + description: Category name + type: string + minLength: 1 + Id: + type: integer + format: int64 + readOnly: true + Person: + type: object + required: + - name + - photoUrls + properties: + id: + description: Pet ID + allOf: + - $ref: '#/components/schemas/Id' + category: + description: Categories this pet belongs to + allOf: + - $ref: '#/components/schemas/Category' + DependentIds: + type: array + description: IDs of Dependents . + items: + type: integer + example: + - 278 + - 279 + - 280 + - 281 + name: + description: Name of the person + type: object + properties: + firstName: + description: First name and prefix + type: object + properties: + prefix: + description: Prefix + type: string + name: + description: First name only + type: string + lastName: + description: Last name + type: string + minLength: 3 + photoUrls: + description: The list of URL to a cute photos featuring pet + type: array + maxItems: 20 + items: + type: string + format: url + tags: + description: Tags attached to the pet + type: array + minItems: 1 + items: + $ref: '#/components/schemas/Tag' + maritalStatus: + type: string + description: Pet status in the store + enum: + - married + - unmarried + - widowed + phone: + description: phone number in international format + type: string + pattern: '/^\+(?:[0-9]-?){6,14}[0-9]$/' + example: +1-202-555-0192 + nullable: true + Tag: + type: object + properties: + id: + description: Tag ID + allOf: + - $ref: '#/components/schemas/Id' + name: + description: Tag name + type: string + minLength: 1 \ No newline at end of file diff --git a/docs/specs/server-override.yaml b/docs/generated-docs/specs/server-override.yaml similarity index 100% rename from docs/specs/server-override.yaml rename to docs/generated-docs/specs/server-override.yaml diff --git a/docs/specs/server.yaml b/docs/generated-docs/specs/server-vars.yaml similarity index 100% rename from docs/specs/server.yaml rename to docs/generated-docs/specs/server-vars.yaml diff --git a/docs/generated-docs/specs/server.yaml b/docs/generated-docs/specs/server.yaml new file mode 100644 index 000000000..4302634f8 --- /dev/null +++ b/docs/generated-docs/specs/server.yaml @@ -0,0 +1,104 @@ +openapi: 3.1.0 +info: + version: '1.0' + title: API Server templating using variables + description: > + Various ways to define API servers in the spec including variables + + ```yaml + servers: + - url: 'http://example.com/api' + description: Test server (just for example) + - url: '/api' + - url: '{protocol}://dev.com/api/{version}' + variables: + protocol: + description: Protocol (with enum) + default: https + enum: + - http + - https + version: + description: API Version (without enum) + default: v1 + - url: '{protocol}://{environment}.example.com/{version}' + variables: + environment: + default: api # Production server + description: > + Server choices: + * `api` Production (this is the default). + * `api.qa` QA server. + * `api.dev` Development server. + enum: + - api # Production server + - api.dev # Development server + - api.qa # Testing server + protocol: + default: https + enum: + - http + - https + version: + default: v2 + enum: + - v1 + - v2 + ``` +servers: + - url: 'http://example.com/api' + description: Test server (just for example) + - url: '/api' + - url: '{protocol}://dev.com/api/{version}' + variables: + protocol: + description: Protocol (with enum) + default: https + enum: + - http + - https + version: + description: API Version (without enum) + default: v1 + - url: '{protocol}://{environment}.example.com/{version}' + variables: + environment: + default: api # Production server + description: > + Server choices: + * `api` Production (this is the default). + * `api.qa` QA server. + * `api.dev` Development server. + enum: + - api # Production server + - api.dev # Development server + - api.qa # Testing server + protocol: + default: https + enum: + - http + - https + version: + default: v2 + enum: + - v1 + - v2 +paths: + /api-server-template: + get: + summary: Dynamic API Server. + description: Uses API server template string and variables which can be used to generatea a desired API server url - The selected and computed API Server URL should be shown against `API SERVER`. + responses: + '200': + description: successful operation + content: + application/json: + schema: + type: object + properties: + name: + description: Person Name + type: string + age: + description: Person Age + type: integer \ No newline at end of file diff --git a/docs/generated-docs/specs/show-components.yaml b/docs/generated-docs/specs/show-components.yaml new file mode 100644 index 000000000..081eaad20 --- /dev/null +++ b/docs/generated-docs/specs/show-components.yaml @@ -0,0 +1,911 @@ +openapi: 3.0.0 +servers: + - url: https://petstore.swagger.io/v2 + description: Default server + - url: https://petstore.swagger.io/sandbox + description: Sandbox server +info: + title: Pet Store + version: 1.0.0 + description: Example to display Component Definitions in the Spec +externalDocs: + description: Find out how to create Github repo for your OpenAPI spec. + url: 'https://github.com/Rebilly/generator-openapi-repo' +tags: + - name: pet + description: Everything about your Pets + x-tag-expanded: false + - name: store + description: Access to Petstore orders + x-tag-expanded: false + - name: user + description: Operations about user + x-tag-expanded: false + - name: pet_model + description: The Pet Model + x-tag-expanded: false + - name: store_model + description: The Order Model + x-tag-expanded: false +paths: + /pet: + parameters: + - name: cookieParam + in: cookie + description: Some cookie + required: true + schema: + type: integer + format: int64 + post: + tags: + - pet + summary: Add a new pet to the store + description: Add new pet to the store inventory. + operationId: addPet + responses: + '405': + description: Invalid input + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + x-code-samples: + - lang: 'HTTP' + label: 'HTTP Request' + source: | + POST /pet HTTP/1.1 + Host: example.org + Content-Type: application/json; charset=utf-8 + Content-Length: 137 + + { + "status": "ok", + "extended": true, + "results": [ + {"value": 0, "type": "int64"}, + {"value": 1.0e+3, "type": "decimal"} + ] + } + - lang: java + label: 'JAVA' + source: | + private String createPet() throws JsonProcessingException { + Pet pet = new Pet(); + pet.setId(1l); + pet.setName("Wuffy"); + Category category = new Category(1l, "Hund"); + pet.setCategory(category); + return new ObjectMapper().writeValueAsString(pet); + } + requestBody: + $ref: '#/components/requestBodies/Pet' + put: + tags: + - pet + summary: Update an existing pet + description: This is a description for updating a pet (!!!) + operationId: updatePet + externalDocs: + description: Find more info here + url: https://rapidocweb.com + responses: + '400': + description: Invalid ID supplied + '404': + description: Pet not found + '405': + description: Validation exception + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + x-code-samples: + - lang: PHP + source: | + $form = new \PetStore\Entities\Pet(); + $form->setPetId(1); + $form->setPetType("Dog"); + $form->setName("Rex"); + // set other fields + try { + $pet = $client->pets()->update($form); + } catch (UnprocessableEntityException $e) { + var_dump($e->getErrors()); + } + requestBody: + $ref: '#/components/requestBodies/Pet' + '/pet/{petId}': + get: + tags: + - pet + summary: Find pet by ID + description: Returns a single pet + operationId: getPetById + parameters: + - name: petId + in: path + description: ID of pet to return + required: true + deprecated: true + schema: + type: integer + format: int64 + responses: + '200': + description: successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/Pet' + application/xml: + schema: + $ref: '#/components/schemas/Pet' + '400': + description: Invalid ID supplied + '404': + description: Pet not found + security: + - api_key: [] + post: + tags: + - pet + summary: Updates a pet in the store with form data + description: '' + operationId: updatePetWithForm + parameters: + - name: petId + in: path + description: ID of pet that needs to be updated + required: true + schema: + type: integer + format: int64 + responses: + '405': + description: Invalid input + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + requestBody: + content: + application/x-www-form-urlencoded: + schema: + type: object + properties: + name: + description: Updated name of the pet + type: string + status: + description: Updated status of the pet + type: string + delete: + tags: + - pet + summary: Deletes a pet + description: '' + operationId: deletePet + parameters: + - name: api_key + in: header + required: false + schema: + type: string + example: "Bearer " + - name: petId + in: path + description: Pet id to delete + required: true + schema: + type: integer + format: int64 + responses: + '400': + description: Invalid pet value + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + '/pet/{petId}/uploadImage': + post: + tags: + - pet + summary: uploads an image + description: '' + operationId: uploadFile + parameters: + - name: petId + in: path + description: ID of pet to update + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + requestBody: + content: + application/octet-stream: + schema: + type: string + format: binary + /pet/findByStatus: + get: + tags: + - pet + summary: Finds Pets by status + description: Multiple status values can be provided with comma seperated strings + operationId: findPetsByStatus + parameters: + - name: status + in: query + description: Status values that need to be considered for filter + required: true + style: form + schema: + type: array + minItems: 1 + maxItems: 3 + items: + type: string + enum: + - available + - pending + - sold + default: available + responses: + '200': + description: successful operation + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Pet' + application/xml: + schema: + type: array + items: + $ref: '#/components/schemas/Pet' + '400': + description: Invalid status value + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + /pet/findByTags: + get: + tags: + - pet + summary: Finds Pets by tags + description: >- + Muliple tags can be provided with comma seperated strings. Use tag1, + tag2, tag3 for testing. + operationId: findPetsByTags + deprecated: true + parameters: + - name: tags + in: query + description: Tags to filter by + required: true + style: form + schema: + type: array + items: + type: string + responses: + '200': + description: successful operation + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Pet' + application/xml: + schema: + type: array + items: + $ref: '#/components/schemas/Pet' + '400': + description: Invalid tag value + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + /store/inventory: + get: + tags: + - store + summary: Returns pet inventories by status + description: Returns a map of status codes to quantities + operationId: getInventory + responses: + '200': + description: successful operation + content: + application/json: + schema: + type: object + additionalProperties: + type: integer + format: int32 + security: + - api_key: [] + /store/order: + post: + tags: + - store + summary: Place an order for a pet + description: '' + operationId: placeOrder + responses: + '200': + description: successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/Order' + application/xml: + schema: + $ref: '#/components/schemas/Order' + '400': + description: Invalid Order + content: + application/json: + example: + status: 400 + message: "Invalid Order" + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Order' + description: order placed for purchasing the pet + required: true + '/store/order/{orderId}': + get: + tags: + - store + summary: Find purchase order by ID + description: >- + For valid response try integer IDs with value <= 5 or > 10. Other values + will generated exceptions + operationId: getOrderById + parameters: + - name: orderId + in: path + description: ID of pet that needs to be fetched + required: true + schema: + type: integer + format: int64 + minimum: 1 + maximum: 5 + responses: + '200': + description: successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/Order' + application/xml: + schema: + $ref: '#/components/schemas/Order' + '400': + description: Invalid ID supplied + '404': + description: Order not found + delete: + tags: + - store + summary: Delete purchase order by ID + description: >- + For valid response try integer IDs with value < 1000. Anything above + 1000 or nonintegers will generate API errors + operationId: deleteOrder + parameters: + - name: orderId + in: path + description: ID of the order that needs to be deleted + required: true + schema: + type: string + minimum: 1 + responses: + '400': + description: Invalid ID supplied + '404': + description: Order not found + /user: + post: + tags: + - user + summary: Create user + description: This can only be done by the logged in user. + operationId: createUser + responses: + default: + description: successful operation + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/User' + description: Created user object + required: true + '/user/{username}': + get: + tags: + - user + summary: Get user by user name + description: '' + operationId: getUserByName + parameters: + - name: username + in: path + description: 'The name that needs to be fetched. Use user1 for testing. ' + required: true + schema: + type: string + responses: + '200': + description: successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/User' + application/xml: + schema: + $ref: '#/components/schemas/User' + '400': + description: Invalid username supplied + '404': + description: User not found + put: + tags: + - user + summary: Updated user + description: This can only be done by the logged in user. + operationId: updateUser + parameters: + - name: username + in: path + description: name that need to be deleted + required: true + schema: + type: string + responses: + '400': + description: Invalid user supplied + '404': + description: User not found + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/User' + description: Updated user object + required: true + delete: + tags: + - user + summary: Delete user + description: This can only be done by the logged in user. + operationId: deleteUser + parameters: + - name: username + in: path + description: The name that needs to be deleted + required: true + schema: + type: string + responses: + '400': + description: Invalid username supplied + '404': + description: User not found + /user/createWithArray: + post: + tags: + - user + summary: Creates list of users with given input array + description: '' + operationId: createUsersWithArrayInput + responses: + default: + description: successful operation + requestBody: + $ref: '#/components/requestBodies/UserArray' + /user/createWithList: + post: + tags: + - user + summary: Creates list of users with given input array + description: '' + operationId: createUsersWithListInput + responses: + default: + description: successful operation + requestBody: + $ref: '#/components/requestBodies/UserArray' + /user/login: + get: + tags: + - user + summary: Logs user into the system + description: '' + operationId: loginUser + parameters: + - name: username + in: query + description: The user name for login + required: true + schema: + type: string + - name: password + in: query + description: The password for login in clear text + required: true + schema: + type: string + responses: + '200': + description: successful operation + headers: + X-Rate-Limit: + description: | + calls per hour allowed by the user. The rate limit is applid to avoid DoS attack or an accdental usage of this + API such as putting it in a loop. `X-Rate-Limit` can vary based on time of the day, user, load and many more other factors. + This header will provide information on the rate limit which the user can use to adapt their task + schema: + type: integer + format: int32 + X-Expires-After: + description: | + date in UTC when toekn expires. This information can be used to makke request for new tokens if its near expiry and thereby + extend an existing session. + schema: + type: string + format: date-time + content: + application/json: + schema: + type: string + examples: + response: + value: OK + application/xml: + schema: + type: string + examples: + response: + value: OK + text/plain: + examples: + response: + value: OK + '400': + description: Invalid username/password supplied + /user/logout: + get: + tags: + - user + summary: Logs out current logged in user session + description: '' + operationId: logoutUser + responses: + default: + description: successful operation +components: + schemas: + ApiResponse: + type: object + properties: + code: + type: integer + format: int32 + type: + type: string + message: + type: string + Cat: + description: A representation of a cat + allOf: + - $ref: '#/components/schemas/Pet' + - type: object + properties: + huntingSkill: + type: string + description: The measured skill for hunting + default: lazy + enum: + - clueless + - lazy + - adventurous + - aggressive + required: + - huntingSkill + Category: + type: object + properties: + id: + description: Category ID + allOf: + - $ref: '#/components/schemas/Id' + name: + description: Category name + type: string + minLength: 1 + sub: + description: Test Sub Category + type: object + properties: + prop1: + type: string + description: Dumb Property + xml: + name: Category + namespace: https://rapidocweb.com + Dog: + description: A representation of a dog + allOf: + - $ref: '#/components/schemas/Pet' + - type: object + properties: + packSize: + type: integer + format: int32 + description: The size of the pack the dog is from + default: 1 + minimum: 1 + required: + - packSize + HoneyBee: + description: A representation of a honey bee + allOf: + - $ref: '#/components/schemas/Pet' + - type: object + properties: + honeyPerDay: + type: number + description: Average amount of honey produced per day in ounces + example: 3.14 + required: + - honeyPerDay + Id: + type: integer + format: int64 + readOnly: true + Order: + type: object + properties: + id: + description: Order ID + allOf: + - $ref: '#/components/schemas/Id' + petId: + description: Pet ID + allOf: + - $ref: '#/components/schemas/Id' + quantity: + type: integer + format: int32 + minimum: 1 + default: 1 + shipDate: + description: Estimated ship date + type: string + format: date-time + status: + type: string + description: Order Status + enum: + - placed + - approved + - delivered + complete: + description: Indicates whenever order was completed or not + type: boolean + default: false + readOnly: true + rqeuestId: + description: Unique Request Id + type: string + writeOnly: true + xml: + name: Order + namespace: https://rapidocweb.com + Pet: + type: object + required: + - name + - photoUrls + discriminator: + propertyName: petType + mapping: + cat: '#/components/schemas/Cat' + dog: '#/components/schemas/Dog' + bee: '#/components/schemas/HoneyBee' + properties: + id: + externalDocs: + description: "Find more info here" + url: "https://example.com" + description: Pet ID + allOf: + - $ref: '#/components/schemas/Id' + category: + description: Categories this pet belongs to + allOf: + - $ref: '#/components/schemas/Category' + name: + description: The name given to a pet + type: string + example: Guru + photoUrls: + description: The list of URL to a cute photos featuring pet + type: array + maxItems: 20 + xml: + name: photoUrl + wrapped: true + items: + type: string + format: url + friend: + allOf: + - $ref: '#/components/schemas/Pet' + tags: + description: Tags attached to the pet + type: array + minItems: 1 + xml: + name: tag1 + wrapped: true + items: + $ref: '#/components/schemas/Tag' + status: + type: string + description: Pet status in the store + enum: + - available + - pending + - sold + petType: + description: Type of a pet + type: string + xml: + name: Pet + namespace: https://rapidocweb.com + Tag: + type: object + properties: + id: + description: Tag ID + allOf: + - $ref: '#/components/schemas/Id' + name: + description: Tag name + type: string + minLength: 1 + xml: + name: Tag + namespace: https://rapidocweb.com + User: + type: object + properties: + id: + $ref: '#/components/schemas/Id' + pet: + oneOf: + - $ref: '#/components/schemas/Pet' + - $ref: '#/components/schemas/Tag' + username: + description: User supplied username + type: string + minLength: 4 + example: John78 + firstName: + description: User first name + type: string + minLength: 1 + example: John + lastName: + description: User last name + type: string + minLength: 1 + example: Smith + email: + description: User email address + type: string + format: email + example: john.smith@example.com + password: + type: string + description: >- + User password, MUST contain a mix of upper and lower case letters, + as well as digits + format: password + minLength: 8 + pattern: '/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])/' + example: drowssaP123 + phone: + description: User phone number in international format + type: string + pattern: '/^\+(?:[0-9]-?){6,14}[0-9]$/' + example: +1-202-555-0192 + nullable: true + userStatus: + description: User status + type: integer + format: int32 + xml: + name: User + namespace: https://rapidocweb.com + requestBodies: + Pet: + content: + application/json: + schema: + allOf: + - description: My Pet + title: Pettie + - $ref: '#/components/schemas/Pet' + application/xml: + schema: + type: 'object' + properties: + name: + type: string + description: hooray + description: Pet object that needs to be added to the store + required: true + UserArray: + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/User' + description: List of user object + required: true + securitySchemes: + basic: + type: http + scheme: basic + petstore_auth: + description: | + Get access to data while protecting your account credentials. + OAuth2 is also a safer and more secure way to give you access. + type: oauth2 + flows: + implicit: + authorizationUrl: 'http://petstore.swagger.io/api/oauth/dialog' + scopes: + 'write:pets': modify pets in your account + 'read:pets': read your pets + api_key: + description: > + For this sample, you can use the api key `special-key` to test the + authorization filters. + type: apiKey + name: api_key + in: header + examples: + Order: + value: + quantity: 1, + shipDate: 2018-10-19T16:46:45Z, + status: placed, + complete: false \ No newline at end of file diff --git a/docs/specs/slots.yaml b/docs/generated-docs/specs/slots.yaml similarity index 100% rename from docs/specs/slots.yaml rename to docs/generated-docs/specs/slots.yaml diff --git a/docs/specs/split-spec-test/README.md b/docs/generated-docs/specs/split-spec-test/README.md similarity index 100% rename from docs/specs/split-spec-test/README.md rename to docs/generated-docs/specs/split-spec-test/README.md diff --git a/docs/specs/split-spec-test/eve-scout-logo.png b/docs/generated-docs/specs/split-spec-test/eve-scout-logo.png similarity index 100% rename from docs/specs/split-spec-test/eve-scout-logo.png rename to docs/generated-docs/specs/split-spec-test/eve-scout-logo.png diff --git a/docs/specs/split-spec-test/eve-scout-partner.png b/docs/generated-docs/specs/split-spec-test/eve-scout-partner.png similarity index 100% rename from docs/specs/split-spec-test/eve-scout-partner.png rename to docs/generated-docs/specs/split-spec-test/eve-scout-partner.png diff --git a/docs/specs/split-spec-test/favicon.ico b/docs/generated-docs/specs/split-spec-test/favicon.ico similarity index 100% rename from docs/specs/split-spec-test/favicon.ico rename to docs/generated-docs/specs/split-spec-test/favicon.ico diff --git a/docs/specs/split-spec-test/index.html b/docs/generated-docs/specs/split-spec-test/index.html similarity index 100% rename from docs/specs/split-spec-test/index.html rename to docs/generated-docs/specs/split-spec-test/index.html diff --git a/docs/specs/split-spec-test/openapi.yaml b/docs/generated-docs/specs/split-spec-test/openapi.yaml similarity index 100% rename from docs/specs/split-spec-test/openapi.yaml rename to docs/generated-docs/specs/split-spec-test/openapi.yaml diff --git a/docs/specs/split-spec-test/output.yaml b/docs/generated-docs/specs/split-spec-test/output.yaml similarity index 100% rename from docs/specs/split-spec-test/output.yaml rename to docs/generated-docs/specs/split-spec-test/output.yaml diff --git a/docs/specs/split-spec-test/parameters/_index.yaml b/docs/generated-docs/specs/split-spec-test/parameters/_index.yaml similarity index 100% rename from docs/specs/split-spec-test/parameters/_index.yaml rename to docs/generated-docs/specs/split-spec-test/parameters/_index.yaml diff --git a/docs/specs/split-spec-test/parameters/path_observation_id.yaml b/docs/generated-docs/specs/split-spec-test/parameters/path_observation_id.yaml similarity index 100% rename from docs/specs/split-spec-test/parameters/path_observation_id.yaml rename to docs/generated-docs/specs/split-spec-test/parameters/path_observation_id.yaml diff --git a/docs/specs/split-spec-test/parameters/path_signature_id.yaml b/docs/generated-docs/specs/split-spec-test/parameters/path_signature_id.yaml similarity index 100% rename from docs/specs/split-spec-test/parameters/path_signature_id.yaml rename to docs/generated-docs/specs/split-spec-test/parameters/path_signature_id.yaml diff --git a/docs/specs/split-spec-test/parameters/query_budget.yaml b/docs/generated-docs/specs/split-spec-test/parameters/query_budget.yaml similarity index 100% rename from docs/specs/split-spec-test/parameters/query_budget.yaml rename to docs/generated-docs/specs/split-spec-test/parameters/query_budget.yaml diff --git a/docs/specs/split-spec-test/parameters/query_date_end.yaml b/docs/generated-docs/specs/split-spec-test/parameters/query_date_end.yaml similarity index 100% rename from docs/specs/split-spec-test/parameters/query_date_end.yaml rename to docs/generated-docs/specs/split-spec-test/parameters/query_date_end.yaml diff --git a/docs/specs/split-spec-test/parameters/query_date_start.yaml b/docs/generated-docs/specs/split-spec-test/parameters/query_date_start.yaml similarity index 100% rename from docs/specs/split-spec-test/parameters/query_date_start.yaml rename to docs/generated-docs/specs/split-spec-test/parameters/query_date_start.yaml diff --git a/docs/specs/split-spec-test/parameters/query_dump_type.yaml b/docs/generated-docs/specs/split-spec-test/parameters/query_dump_type.yaml similarity index 100% rename from docs/specs/split-spec-test/parameters/query_dump_type.yaml rename to docs/generated-docs/specs/split-spec-test/parameters/query_dump_type.yaml diff --git a/docs/specs/split-spec-test/parameters/query_edge.yaml b/docs/generated-docs/specs/split-spec-test/parameters/query_edge.yaml similarity index 100% rename from docs/specs/split-spec-test/parameters/query_edge.yaml rename to docs/generated-docs/specs/split-spec-test/parameters/query_edge.yaml diff --git a/docs/specs/split-spec-test/parameters/query_export_mode.yaml b/docs/generated-docs/specs/split-spec-test/parameters/query_export_mode.yaml similarity index 100% rename from docs/specs/split-spec-test/parameters/query_export_mode.yaml rename to docs/generated-docs/specs/split-spec-test/parameters/query_export_mode.yaml diff --git a/docs/specs/split-spec-test/parameters/query_from_system.yaml b/docs/generated-docs/specs/split-spec-test/parameters/query_from_system.yaml similarity index 100% rename from docs/specs/split-spec-test/parameters/query_from_system.yaml rename to docs/generated-docs/specs/split-spec-test/parameters/query_from_system.yaml diff --git a/docs/specs/split-spec-test/parameters/query_identifier.yaml b/docs/generated-docs/specs/split-spec-test/parameters/query_identifier.yaml similarity index 100% rename from docs/specs/split-spec-test/parameters/query_identifier.yaml rename to docs/generated-docs/specs/split-spec-test/parameters/query_identifier.yaml diff --git a/docs/specs/split-spec-test/parameters/query_latest.yaml b/docs/generated-docs/specs/split-spec-test/parameters/query_latest.yaml similarity index 100% rename from docs/specs/split-spec-test/parameters/query_latest.yaml rename to docs/generated-docs/specs/split-spec-test/parameters/query_latest.yaml diff --git a/docs/specs/split-spec-test/parameters/query_limit.yaml b/docs/generated-docs/specs/split-spec-test/parameters/query_limit.yaml similarity index 100% rename from docs/specs/split-spec-test/parameters/query_limit.yaml rename to docs/generated-docs/specs/split-spec-test/parameters/query_limit.yaml diff --git a/docs/specs/split-spec-test/parameters/query_observation_type.yaml b/docs/generated-docs/specs/split-spec-test/parameters/query_observation_type.yaml similarity index 100% rename from docs/specs/split-spec-test/parameters/query_observation_type.yaml rename to docs/generated-docs/specs/split-spec-test/parameters/query_observation_type.yaml diff --git a/docs/specs/split-spec-test/parameters/query_precision.yaml b/docs/generated-docs/specs/split-spec-test/parameters/query_precision.yaml similarity index 100% rename from docs/specs/split-spec-test/parameters/query_precision.yaml rename to docs/generated-docs/specs/split-spec-test/parameters/query_precision.yaml diff --git a/docs/specs/split-spec-test/parameters/query_return_to.yaml b/docs/generated-docs/specs/split-spec-test/parameters/query_return_to.yaml similarity index 100% rename from docs/specs/split-spec-test/parameters/query_return_to.yaml rename to docs/generated-docs/specs/split-spec-test/parameters/query_return_to.yaml diff --git a/docs/specs/split-spec-test/parameters/query_routing_preference.yaml b/docs/generated-docs/specs/split-spec-test/parameters/query_routing_preference.yaml similarity index 100% rename from docs/specs/split-spec-test/parameters/query_routing_preference.yaml rename to docs/generated-docs/specs/split-spec-test/parameters/query_routing_preference.yaml diff --git a/docs/specs/split-spec-test/parameters/query_source.yaml b/docs/generated-docs/specs/split-spec-test/parameters/query_source.yaml similarity index 100% rename from docs/specs/split-spec-test/parameters/query_source.yaml rename to docs/generated-docs/specs/split-spec-test/parameters/query_source.yaml diff --git a/docs/specs/split-spec-test/parameters/query_space.yaml b/docs/generated-docs/specs/split-spec-test/parameters/query_space.yaml similarity index 100% rename from docs/specs/split-spec-test/parameters/query_space.yaml rename to docs/generated-docs/specs/split-spec-test/parameters/query_space.yaml diff --git a/docs/specs/split-spec-test/parameters/query_string.yaml b/docs/generated-docs/specs/split-spec-test/parameters/query_string.yaml similarity index 100% rename from docs/specs/split-spec-test/parameters/query_string.yaml rename to docs/generated-docs/specs/split-spec-test/parameters/query_string.yaml diff --git a/docs/specs/split-spec-test/parameters/query_system_name_optional.yaml b/docs/generated-docs/specs/split-spec-test/parameters/query_system_name_optional.yaml similarity index 100% rename from docs/specs/split-spec-test/parameters/query_system_name_optional.yaml rename to docs/generated-docs/specs/split-spec-test/parameters/query_system_name_optional.yaml diff --git a/docs/specs/split-spec-test/parameters/query_system_name_required.yaml b/docs/generated-docs/specs/split-spec-test/parameters/query_system_name_required.yaml similarity index 100% rename from docs/specs/split-spec-test/parameters/query_system_name_required.yaml rename to docs/generated-docs/specs/split-spec-test/parameters/query_system_name_required.yaml diff --git a/docs/specs/split-spec-test/parameters/query_target.yaml b/docs/generated-docs/specs/split-spec-test/parameters/query_target.yaml similarity index 100% rename from docs/specs/split-spec-test/parameters/query_target.yaml rename to docs/generated-docs/specs/split-spec-test/parameters/query_target.yaml diff --git a/docs/specs/split-spec-test/parameters/query_timestamp.yaml b/docs/generated-docs/specs/split-spec-test/parameters/query_timestamp.yaml similarity index 100% rename from docs/specs/split-spec-test/parameters/query_timestamp.yaml rename to docs/generated-docs/specs/split-spec-test/parameters/query_timestamp.yaml diff --git a/docs/specs/split-spec-test/parameters/query_to_system.yaml b/docs/generated-docs/specs/split-spec-test/parameters/query_to_system.yaml similarity index 100% rename from docs/specs/split-spec-test/parameters/query_to_system.yaml rename to docs/generated-docs/specs/split-spec-test/parameters/query_to_system.yaml diff --git a/docs/specs/split-spec-test/paths/_index.yaml b/docs/generated-docs/specs/split-spec-test/paths/_index.yaml similarity index 100% rename from docs/specs/split-spec-test/paths/_index.yaml rename to docs/generated-docs/specs/split-spec-test/paths/_index.yaml diff --git a/docs/specs/split-spec-test/paths/allison/cachedump.yaml b/docs/generated-docs/specs/split-spec-test/paths/allison/cachedump.yaml similarity index 100% rename from docs/specs/split-spec-test/paths/allison/cachedump.yaml rename to docs/generated-docs/specs/split-spec-test/paths/allison/cachedump.yaml diff --git a/docs/specs/split-spec-test/paths/allison/logs.yaml b/docs/generated-docs/specs/split-spec-test/paths/allison/logs.yaml similarity index 100% rename from docs/specs/split-spec-test/paths/allison/logs.yaml rename to docs/generated-docs/specs/split-spec-test/paths/allison/logs.yaml diff --git a/docs/specs/split-spec-test/paths/allison/maintenance.yaml b/docs/generated-docs/specs/split-spec-test/paths/allison/maintenance.yaml similarity index 100% rename from docs/specs/split-spec-test/paths/allison/maintenance.yaml rename to docs/generated-docs/specs/split-spec-test/paths/allison/maintenance.yaml diff --git a/docs/specs/split-spec-test/paths/allison/signaturedump.yaml b/docs/generated-docs/specs/split-spec-test/paths/allison/signaturedump.yaml similarity index 100% rename from docs/specs/split-spec-test/paths/allison/signaturedump.yaml rename to docs/generated-docs/specs/split-spec-test/paths/allison/signaturedump.yaml diff --git a/docs/specs/split-spec-test/paths/allison/status.yaml b/docs/generated-docs/specs/split-spec-test/paths/allison/status.yaml similarity index 100% rename from docs/specs/split-spec-test/paths/allison/status.yaml rename to docs/generated-docs/specs/split-spec-test/paths/allison/status.yaml diff --git a/docs/specs/split-spec-test/paths/allison/topscanners.yaml b/docs/generated-docs/specs/split-spec-test/paths/allison/topscanners.yaml similarity index 100% rename from docs/specs/split-spec-test/paths/allison/topscanners.yaml rename to docs/generated-docs/specs/split-spec-test/paths/allison/topscanners.yaml diff --git a/docs/specs/split-spec-test/paths/allison/topstormchasers.yaml b/docs/generated-docs/specs/split-spec-test/paths/allison/topstormchasers.yaml similarity index 100% rename from docs/specs/split-spec-test/paths/allison/topstormchasers.yaml rename to docs/generated-docs/specs/split-spec-test/paths/allison/topstormchasers.yaml diff --git a/docs/specs/split-spec-test/paths/auth/callback.yaml b/docs/generated-docs/specs/split-spec-test/paths/auth/callback.yaml similarity index 100% rename from docs/specs/split-spec-test/paths/auth/callback.yaml rename to docs/generated-docs/specs/split-spec-test/paths/auth/callback.yaml diff --git a/docs/specs/split-spec-test/paths/auth/login.yaml b/docs/generated-docs/specs/split-spec-test/paths/auth/login.yaml similarity index 100% rename from docs/specs/split-spec-test/paths/auth/login.yaml rename to docs/generated-docs/specs/split-spec-test/paths/auth/login.yaml diff --git a/docs/specs/split-spec-test/paths/auth/login/director.yaml b/docs/generated-docs/specs/split-spec-test/paths/auth/login/director.yaml similarity index 100% rename from docs/specs/split-spec-test/paths/auth/login/director.yaml rename to docs/generated-docs/specs/split-spec-test/paths/auth/login/director.yaml diff --git a/docs/specs/split-spec-test/paths/auth/logout.yaml b/docs/generated-docs/specs/split-spec-test/paths/auth/logout.yaml similarity index 100% rename from docs/specs/split-spec-test/paths/auth/logout.yaml rename to docs/generated-docs/specs/split-spec-test/paths/auth/logout.yaml diff --git a/docs/specs/split-spec-test/paths/health.yaml b/docs/generated-docs/specs/split-spec-test/paths/health.yaml similarity index 100% rename from docs/specs/split-spec-test/paths/health.yaml rename to docs/generated-docs/specs/split-spec-test/paths/health.yaml diff --git a/docs/specs/split-spec-test/paths/private/claims.yaml b/docs/generated-docs/specs/split-spec-test/paths/private/claims.yaml similarity index 100% rename from docs/specs/split-spec-test/paths/private/claims.yaml rename to docs/generated-docs/specs/split-spec-test/paths/private/claims.yaml diff --git a/docs/specs/split-spec-test/paths/private/claims/claims.yaml b/docs/generated-docs/specs/split-spec-test/paths/private/claims/claims.yaml similarity index 100% rename from docs/specs/split-spec-test/paths/private/claims/claims.yaml rename to docs/generated-docs/specs/split-spec-test/paths/private/claims/claims.yaml diff --git a/docs/specs/split-spec-test/paths/private/observations.yaml b/docs/generated-docs/specs/split-spec-test/paths/private/observations.yaml similarity index 100% rename from docs/specs/split-spec-test/paths/private/observations.yaml rename to docs/generated-docs/specs/split-spec-test/paths/private/observations.yaml diff --git a/docs/specs/split-spec-test/paths/private/observations/observations.yaml b/docs/generated-docs/specs/split-spec-test/paths/private/observations/observations.yaml similarity index 100% rename from docs/specs/split-spec-test/paths/private/observations/observations.yaml rename to docs/generated-docs/specs/split-spec-test/paths/private/observations/observations.yaml diff --git a/docs/specs/split-spec-test/paths/private/properties.yaml b/docs/generated-docs/specs/split-spec-test/paths/private/properties.yaml similarity index 100% rename from docs/specs/split-spec-test/paths/private/properties.yaml rename to docs/generated-docs/specs/split-spec-test/paths/private/properties.yaml diff --git a/docs/specs/split-spec-test/paths/private/signatures.yaml b/docs/generated-docs/specs/split-spec-test/paths/private/signatures.yaml similarity index 100% rename from docs/specs/split-spec-test/paths/private/signatures.yaml rename to docs/generated-docs/specs/split-spec-test/paths/private/signatures.yaml diff --git a/docs/specs/split-spec-test/paths/private/signatures/signature_type.yaml b/docs/generated-docs/specs/split-spec-test/paths/private/signatures/signature_type.yaml similarity index 100% rename from docs/specs/split-spec-test/paths/private/signatures/signature_type.yaml rename to docs/generated-docs/specs/split-spec-test/paths/private/signatures/signature_type.yaml diff --git a/docs/specs/split-spec-test/paths/private/signatures/signatures.yaml b/docs/generated-docs/specs/split-spec-test/paths/private/signatures/signatures.yaml similarity index 100% rename from docs/specs/split-spec-test/paths/private/signatures/signatures.yaml rename to docs/generated-docs/specs/split-spec-test/paths/private/signatures/signatures.yaml diff --git a/docs/specs/split-spec-test/paths/private/statistics/auditlog.yaml b/docs/generated-docs/specs/split-spec-test/paths/private/statistics/auditlog.yaml similarity index 100% rename from docs/specs/split-spec-test/paths/private/statistics/auditlog.yaml rename to docs/generated-docs/specs/split-spec-test/paths/private/statistics/auditlog.yaml diff --git a/docs/specs/split-spec-test/paths/private/statistics/leaderboard.yaml b/docs/generated-docs/specs/split-spec-test/paths/private/statistics/leaderboard.yaml similarity index 100% rename from docs/specs/split-spec-test/paths/private/statistics/leaderboard.yaml rename to docs/generated-docs/specs/split-spec-test/paths/private/statistics/leaderboard.yaml diff --git a/docs/specs/split-spec-test/paths/private/statistics/payouts/scans.yaml b/docs/generated-docs/specs/split-spec-test/paths/private/statistics/payouts/scans.yaml similarity index 100% rename from docs/specs/split-spec-test/paths/private/statistics/payouts/scans.yaml rename to docs/generated-docs/specs/split-spec-test/paths/private/statistics/payouts/scans.yaml diff --git a/docs/specs/split-spec-test/paths/private/statistics/payouts/storms.yaml b/docs/generated-docs/specs/split-spec-test/paths/private/statistics/payouts/storms.yaml similarity index 100% rename from docs/specs/split-spec-test/paths/private/statistics/payouts/storms.yaml rename to docs/generated-docs/specs/split-spec-test/paths/private/statistics/payouts/storms.yaml diff --git a/docs/specs/split-spec-test/paths/private/statistics/track/connection_loss.yaml b/docs/generated-docs/specs/split-spec-test/paths/private/statistics/track/connection_loss.yaml similarity index 100% rename from docs/specs/split-spec-test/paths/private/statistics/track/connection_loss.yaml rename to docs/generated-docs/specs/split-spec-test/paths/private/statistics/track/connection_loss.yaml diff --git a/docs/specs/split-spec-test/paths/private/users/corporation.yaml b/docs/generated-docs/specs/split-spec-test/paths/private/users/corporation.yaml similarity index 100% rename from docs/specs/split-spec-test/paths/private/users/corporation.yaml rename to docs/generated-docs/specs/split-spec-test/paths/private/users/corporation.yaml diff --git a/docs/specs/split-spec-test/paths/private/users/current.yaml b/docs/generated-docs/specs/split-spec-test/paths/private/users/current.yaml similarity index 100% rename from docs/specs/split-spec-test/paths/private/users/current.yaml rename to docs/generated-docs/specs/split-spec-test/paths/private/users/current.yaml diff --git a/docs/specs/split-spec-test/paths/private/users/online.yaml b/docs/generated-docs/specs/split-spec-test/paths/private/users/online.yaml similarity index 100% rename from docs/specs/split-spec-test/paths/private/users/online.yaml rename to docs/generated-docs/specs/split-spec-test/paths/private/users/online.yaml diff --git a/docs/specs/split-spec-test/paths/public/observations.yaml b/docs/generated-docs/specs/split-spec-test/paths/public/observations.yaml similarity index 100% rename from docs/specs/split-spec-test/paths/public/observations.yaml rename to docs/generated-docs/specs/split-spec-test/paths/public/observations.yaml diff --git a/docs/specs/split-spec-test/paths/public/routes.yaml b/docs/generated-docs/specs/split-spec-test/paths/public/routes.yaml similarity index 100% rename from docs/specs/split-spec-test/paths/public/routes.yaml rename to docs/generated-docs/specs/split-spec-test/paths/public/routes.yaml diff --git a/docs/specs/split-spec-test/paths/public/routes/highsec.yaml b/docs/generated-docs/specs/split-spec-test/paths/public/routes/highsec.yaml similarity index 100% rename from docs/specs/split-spec-test/paths/public/routes/highsec.yaml rename to docs/generated-docs/specs/split-spec-test/paths/public/routes/highsec.yaml diff --git a/docs/specs/split-spec-test/paths/public/routes/joveobservatories.yaml b/docs/generated-docs/specs/split-spec-test/paths/public/routes/joveobservatories.yaml similarity index 100% rename from docs/specs/split-spec-test/paths/public/routes/joveobservatories.yaml rename to docs/generated-docs/specs/split-spec-test/paths/public/routes/joveobservatories.yaml diff --git a/docs/specs/split-spec-test/paths/public/routes/signatures.yaml b/docs/generated-docs/specs/split-spec-test/paths/public/routes/signatures.yaml similarity index 100% rename from docs/specs/split-spec-test/paths/public/routes/signatures.yaml rename to docs/generated-docs/specs/split-spec-test/paths/public/routes/signatures.yaml diff --git a/docs/specs/split-spec-test/paths/public/signatures.yaml b/docs/generated-docs/specs/split-spec-test/paths/public/signatures.yaml similarity index 100% rename from docs/specs/split-spec-test/paths/public/signatures.yaml rename to docs/generated-docs/specs/split-spec-test/paths/public/signatures.yaml diff --git a/docs/specs/split-spec-test/paths/public/statistics/donations.yaml b/docs/generated-docs/specs/split-spec-test/paths/public/statistics/donations.yaml similarity index 100% rename from docs/specs/split-spec-test/paths/public/statistics/donations.yaml rename to docs/generated-docs/specs/split-spec-test/paths/public/statistics/donations.yaml diff --git a/docs/specs/split-spec-test/paths/public/statistics/scans.yaml b/docs/generated-docs/specs/split-spec-test/paths/public/statistics/scans.yaml similarity index 100% rename from docs/specs/split-spec-test/paths/public/statistics/scans.yaml rename to docs/generated-docs/specs/split-spec-test/paths/public/statistics/scans.yaml diff --git a/docs/specs/split-spec-test/paths/public/systems.yaml b/docs/generated-docs/specs/split-spec-test/paths/public/systems.yaml similarity index 100% rename from docs/specs/split-spec-test/paths/public/systems.yaml rename to docs/generated-docs/specs/split-spec-test/paths/public/systems.yaml diff --git a/docs/specs/split-spec-test/paths/public/wormholetypes.yaml b/docs/generated-docs/specs/split-spec-test/paths/public/wormholetypes.yaml similarity index 100% rename from docs/specs/split-spec-test/paths/public/wormholetypes.yaml rename to docs/generated-docs/specs/split-spec-test/paths/public/wormholetypes.yaml diff --git a/docs/specs/split-spec-test/responses/204.yaml b/docs/generated-docs/specs/split-spec-test/responses/204.yaml similarity index 100% rename from docs/specs/split-spec-test/responses/204.yaml rename to docs/generated-docs/specs/split-spec-test/responses/204.yaml diff --git a/docs/specs/split-spec-test/responses/400.yaml b/docs/generated-docs/specs/split-spec-test/responses/400.yaml similarity index 100% rename from docs/specs/split-spec-test/responses/400.yaml rename to docs/generated-docs/specs/split-spec-test/responses/400.yaml diff --git a/docs/specs/split-spec-test/responses/401.yaml b/docs/generated-docs/specs/split-spec-test/responses/401.yaml similarity index 100% rename from docs/specs/split-spec-test/responses/401.yaml rename to docs/generated-docs/specs/split-spec-test/responses/401.yaml diff --git a/docs/specs/split-spec-test/responses/403.yaml b/docs/generated-docs/specs/split-spec-test/responses/403.yaml similarity index 100% rename from docs/specs/split-spec-test/responses/403.yaml rename to docs/generated-docs/specs/split-spec-test/responses/403.yaml diff --git a/docs/specs/split-spec-test/responses/404.yaml b/docs/generated-docs/specs/split-spec-test/responses/404.yaml similarity index 100% rename from docs/specs/split-spec-test/responses/404.yaml rename to docs/generated-docs/specs/split-spec-test/responses/404.yaml diff --git a/docs/specs/split-spec-test/responses/409.yaml b/docs/generated-docs/specs/split-spec-test/responses/409.yaml similarity index 100% rename from docs/specs/split-spec-test/responses/409.yaml rename to docs/generated-docs/specs/split-spec-test/responses/409.yaml diff --git a/docs/specs/split-spec-test/responses/500.yaml b/docs/generated-docs/specs/split-spec-test/responses/500.yaml similarity index 100% rename from docs/specs/split-spec-test/responses/500.yaml rename to docs/generated-docs/specs/split-spec-test/responses/500.yaml diff --git a/docs/specs/split-spec-test/responses/501.yaml b/docs/generated-docs/specs/split-spec-test/responses/501.yaml similarity index 100% rename from docs/specs/split-spec-test/responses/501.yaml rename to docs/generated-docs/specs/split-spec-test/responses/501.yaml diff --git a/docs/specs/split-spec-test/responses/503.yaml b/docs/generated-docs/specs/split-spec-test/responses/503.yaml similarity index 100% rename from docs/specs/split-spec-test/responses/503.yaml rename to docs/generated-docs/specs/split-spec-test/responses/503.yaml diff --git a/docs/specs/split-spec-test/responses/_index.yaml b/docs/generated-docs/specs/split-spec-test/responses/_index.yaml similarity index 100% rename from docs/specs/split-spec-test/responses/_index.yaml rename to docs/generated-docs/specs/split-spec-test/responses/_index.yaml diff --git a/docs/specs/split-spec-test/schemas/_index.yaml b/docs/generated-docs/specs/split-spec-test/schemas/_index.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/_index.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/_index.yaml diff --git a/docs/specs/split-spec-test/schemas/claim.yaml b/docs/generated-docs/specs/split-spec-test/schemas/claim.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/claim.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/claim.yaml diff --git a/docs/specs/split-spec-test/schemas/claims.yaml b/docs/generated-docs/specs/split-spec-test/schemas/claims.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/claims.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/claims.yaml diff --git a/docs/specs/split-spec-test/schemas/dump_claims.yaml b/docs/generated-docs/specs/split-spec-test/schemas/dump_claims.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/dump_claims.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/dump_claims.yaml diff --git a/docs/specs/split-spec-test/schemas/dump_graph.yaml b/docs/generated-docs/specs/split-spec-test/schemas/dump_graph.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/dump_graph.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/dump_graph.yaml diff --git a/docs/specs/split-spec-test/schemas/dump_observations.yaml b/docs/generated-docs/specs/split-spec-test/schemas/dump_observations.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/dump_observations.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/dump_observations.yaml diff --git a/docs/specs/split-spec-test/schemas/dump_performance_log.yaml b/docs/generated-docs/specs/split-spec-test/schemas/dump_performance_log.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/dump_performance_log.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/dump_performance_log.yaml diff --git a/docs/specs/split-spec-test/schemas/dump_signatures.yaml b/docs/generated-docs/specs/split-spec-test/schemas/dump_signatures.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/dump_signatures.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/dump_signatures.yaml diff --git a/docs/specs/split-spec-test/schemas/dump_users.yaml b/docs/generated-docs/specs/split-spec-test/schemas/dump_users.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/dump_users.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/dump_users.yaml diff --git a/docs/specs/split-spec-test/schemas/dump_users_location.yaml b/docs/generated-docs/specs/split-spec-test/schemas/dump_users_location.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/dump_users_location.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/dump_users_location.yaml diff --git a/docs/specs/split-spec-test/schemas/error.yaml b/docs/generated-docs/specs/split-spec-test/schemas/error.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/error.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/error.yaml diff --git a/docs/specs/split-spec-test/schemas/health.yaml b/docs/generated-docs/specs/split-spec-test/schemas/health.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/health.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/health.yaml diff --git a/docs/specs/split-spec-test/schemas/observation_category.yaml b/docs/generated-docs/specs/split-spec-test/schemas/observation_category.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/observation_category.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/observation_category.yaml diff --git a/docs/specs/split-spec-test/schemas/observation_create_by_id.yaml b/docs/generated-docs/specs/split-spec-test/schemas/observation_create_by_id.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/observation_create_by_id.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/observation_create_by_id.yaml diff --git a/docs/specs/split-spec-test/schemas/observation_create_by_name.yaml b/docs/generated-docs/specs/split-spec-test/schemas/observation_create_by_name.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/observation_create_by_name.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/observation_create_by_name.yaml diff --git a/docs/specs/split-spec-test/schemas/observation_representation.yaml b/docs/generated-docs/specs/split-spec-test/schemas/observation_representation.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/observation_representation.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/observation_representation.yaml diff --git a/docs/specs/split-spec-test/schemas/observation_type.yaml b/docs/generated-docs/specs/split-spec-test/schemas/observation_type.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/observation_type.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/observation_type.yaml diff --git a/docs/specs/split-spec-test/schemas/properties.yaml b/docs/generated-docs/specs/split-spec-test/schemas/properties.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/properties.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/properties.yaml diff --git a/docs/specs/split-spec-test/schemas/public_system.yaml b/docs/generated-docs/specs/split-spec-test/schemas/public_system.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/public_system.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/public_system.yaml diff --git a/docs/specs/split-spec-test/schemas/public_wormhole.yaml b/docs/generated-docs/specs/split-spec-test/schemas/public_wormhole.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/public_wormhole.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/public_wormhole.yaml diff --git a/docs/specs/split-spec-test/schemas/route.yaml b/docs/generated-docs/specs/split-spec-test/schemas/route.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/route.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/route.yaml diff --git a/docs/specs/split-spec-test/schemas/route_request.yaml b/docs/generated-docs/specs/split-spec-test/schemas/route_request.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/route_request.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/route_request.yaml diff --git a/docs/specs/split-spec-test/schemas/route_systems.yaml b/docs/generated-docs/specs/split-spec-test/schemas/route_systems.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/route_systems.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/route_systems.yaml diff --git a/docs/specs/split-spec-test/schemas/routes.yaml b/docs/generated-docs/specs/split-spec-test/schemas/routes.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/routes.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/routes.yaml diff --git a/docs/specs/split-spec-test/schemas/signature_modification.yaml b/docs/generated-docs/specs/split-spec-test/schemas/signature_modification.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/signature_modification.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/signature_modification.yaml diff --git a/docs/specs/split-spec-test/schemas/signature_psw.yaml b/docs/generated-docs/specs/split-spec-test/schemas/signature_psw.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/signature_psw.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/signature_psw.yaml diff --git a/docs/specs/split-spec-test/schemas/signature_representation.yaml b/docs/generated-docs/specs/split-spec-test/schemas/signature_representation.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/signature_representation.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/signature_representation.yaml diff --git a/docs/specs/split-spec-test/schemas/signature_type_change.yaml b/docs/generated-docs/specs/split-spec-test/schemas/signature_type_change.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/signature_type_change.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/signature_type_change.yaml diff --git a/docs/specs/split-spec-test/schemas/signatures_psw.yaml b/docs/generated-docs/specs/split-spec-test/schemas/signatures_psw.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/signatures_psw.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/signatures_psw.yaml diff --git a/docs/specs/split-spec-test/schemas/signatures_representation.yaml b/docs/generated-docs/specs/split-spec-test/schemas/signatures_representation.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/signatures_representation.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/signatures_representation.yaml diff --git a/docs/specs/split-spec-test/schemas/statistics_auditlog.yaml b/docs/generated-docs/specs/split-spec-test/schemas/statistics_auditlog.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/statistics_auditlog.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/statistics_auditlog.yaml diff --git a/docs/specs/split-spec-test/schemas/statistics_auditlog_record.yaml b/docs/generated-docs/specs/split-spec-test/schemas/statistics_auditlog_record.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/statistics_auditlog_record.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/statistics_auditlog_record.yaml diff --git a/docs/specs/split-spec-test/schemas/statistics_daily_goal.yaml b/docs/generated-docs/specs/split-spec-test/schemas/statistics_daily_goal.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/statistics_daily_goal.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/statistics_daily_goal.yaml diff --git a/docs/specs/split-spec-test/schemas/statistics_daily_goals.yaml b/docs/generated-docs/specs/split-spec-test/schemas/statistics_daily_goals.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/statistics_daily_goals.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/statistics_daily_goals.yaml diff --git a/docs/specs/split-spec-test/schemas/statistics_donations.yaml b/docs/generated-docs/specs/split-spec-test/schemas/statistics_donations.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/statistics_donations.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/statistics_donations.yaml diff --git a/docs/specs/split-spec-test/schemas/statistics_donor.yaml b/docs/generated-docs/specs/split-spec-test/schemas/statistics_donor.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/statistics_donor.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/statistics_donor.yaml diff --git a/docs/specs/split-spec-test/schemas/statistics_donors.yaml b/docs/generated-docs/specs/split-spec-test/schemas/statistics_donors.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/statistics_donors.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/statistics_donors.yaml diff --git a/docs/specs/split-spec-test/schemas/statistics_leaderboard.yaml b/docs/generated-docs/specs/split-spec-test/schemas/statistics_leaderboard.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/statistics_leaderboard.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/statistics_leaderboard.yaml diff --git a/docs/specs/split-spec-test/schemas/statistics_payout_statistics.yaml b/docs/generated-docs/specs/split-spec-test/schemas/statistics_payout_statistics.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/statistics_payout_statistics.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/statistics_payout_statistics.yaml diff --git a/docs/specs/split-spec-test/schemas/statistics_payouts.yaml b/docs/generated-docs/specs/split-spec-test/schemas/statistics_payouts.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/statistics_payouts.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/statistics_payouts.yaml diff --git a/docs/specs/split-spec-test/schemas/statistics_payouts_hub.yaml b/docs/generated-docs/specs/split-spec-test/schemas/statistics_payouts_hub.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/statistics_payouts_hub.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/statistics_payouts_hub.yaml diff --git a/docs/specs/split-spec-test/schemas/statistics_payouts_pilot.yaml b/docs/generated-docs/specs/split-spec-test/schemas/statistics_payouts_pilot.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/statistics_payouts_pilot.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/statistics_payouts_pilot.yaml diff --git a/docs/specs/split-spec-test/schemas/statistics_payouts_pilots.yaml b/docs/generated-docs/specs/split-spec-test/schemas/statistics_payouts_pilots.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/statistics_payouts_pilots.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/statistics_payouts_pilots.yaml diff --git a/docs/specs/split-spec-test/schemas/statistics_scan.yaml b/docs/generated-docs/specs/split-spec-test/schemas/statistics_scan.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/statistics_scan.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/statistics_scan.yaml diff --git a/docs/specs/split-spec-test/schemas/statistics_scans.yaml b/docs/generated-docs/specs/split-spec-test/schemas/statistics_scans.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/statistics_scans.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/statistics_scans.yaml diff --git a/docs/specs/split-spec-test/schemas/status.yaml b/docs/generated-docs/specs/split-spec-test/schemas/status.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/status.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/status.yaml diff --git a/docs/specs/split-spec-test/schemas/system_class.yaml b/docs/generated-docs/specs/split-spec-test/schemas/system_class.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/system_class.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/system_class.yaml diff --git a/docs/specs/split-spec-test/schemas/systems.yaml b/docs/generated-docs/specs/split-spec-test/schemas/systems.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/systems.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/systems.yaml diff --git a/docs/specs/split-spec-test/schemas/toggle_switch.yaml b/docs/generated-docs/specs/split-spec-test/schemas/toggle_switch.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/toggle_switch.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/toggle_switch.yaml diff --git a/docs/specs/split-spec-test/schemas/topscanner.yaml b/docs/generated-docs/specs/split-spec-test/schemas/topscanner.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/topscanner.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/topscanner.yaml diff --git a/docs/specs/split-spec-test/schemas/topstormchaser.yaml b/docs/generated-docs/specs/split-spec-test/schemas/topstormchaser.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/topstormchaser.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/topstormchaser.yaml diff --git a/docs/specs/split-spec-test/schemas/user.yaml b/docs/generated-docs/specs/split-spec-test/schemas/user.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/user.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/user.yaml diff --git a/docs/specs/split-spec-test/schemas/users_current.yaml b/docs/generated-docs/specs/split-spec-test/schemas/users_current.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/users_current.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/users_current.yaml diff --git a/docs/specs/split-spec-test/schemas/users_online.yaml b/docs/generated-docs/specs/split-spec-test/schemas/users_online.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/users_online.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/users_online.yaml diff --git a/docs/specs/split-spec-test/schemas/wormholetypes.yaml b/docs/generated-docs/specs/split-spec-test/schemas/wormholetypes.yaml similarity index 100% rename from docs/specs/split-spec-test/schemas/wormholetypes.yaml rename to docs/generated-docs/specs/split-spec-test/schemas/wormholetypes.yaml diff --git a/docs/specs/splunk.json b/docs/generated-docs/specs/splunk.json similarity index 100% rename from docs/specs/splunk.json rename to docs/generated-docs/specs/splunk.json diff --git a/docs/specs/strip.json b/docs/generated-docs/specs/strip.json similarity index 100% rename from docs/specs/strip.json rename to docs/generated-docs/specs/strip.json diff --git a/docs/specs/strip.yaml b/docs/generated-docs/specs/strip.yaml similarity index 100% rename from docs/specs/strip.yaml rename to docs/generated-docs/specs/strip.yaml diff --git a/docs/specs/sw.yaml b/docs/generated-docs/specs/sw.yaml similarity index 100% rename from docs/specs/sw.yaml rename to docs/generated-docs/specs/sw.yaml diff --git a/docs/specs/swagger-v2.json b/docs/generated-docs/specs/swagger-v2.json similarity index 100% rename from docs/specs/swagger-v2.json rename to docs/generated-docs/specs/swagger-v2.json diff --git a/docs/specs/tag-displayname.yaml b/docs/generated-docs/specs/tag-displayname.yaml similarity index 100% rename from docs/specs/tag-displayname.yaml rename to docs/generated-docs/specs/tag-displayname.yaml diff --git a/docs/specs/temp-partial.yaml b/docs/generated-docs/specs/temp-partial.yaml similarity index 100% rename from docs/specs/temp-partial.yaml rename to docs/generated-docs/specs/temp-partial.yaml diff --git a/docs/specs/temp.json b/docs/generated-docs/specs/temp.json similarity index 100% rename from docs/specs/temp.json rename to docs/generated-docs/specs/temp.json diff --git a/docs/specs/temp.yaml b/docs/generated-docs/specs/temp.yaml similarity index 100% rename from docs/specs/temp.yaml rename to docs/generated-docs/specs/temp.yaml diff --git a/docs/specs/temp1.yaml b/docs/generated-docs/specs/temp1.yaml similarity index 100% rename from docs/specs/temp1.yaml rename to docs/generated-docs/specs/temp1.yaml diff --git a/docs/specs/temp2.yaml b/docs/generated-docs/specs/temp2.yaml similarity index 100% rename from docs/specs/temp2.yaml rename to docs/generated-docs/specs/temp2.yaml diff --git a/docs/specs/titles.txt b/docs/generated-docs/specs/titles.txt similarity index 100% rename from docs/specs/titles.txt rename to docs/generated-docs/specs/titles.txt diff --git a/docs/generated-docs/specs/toomany-example-generation.yaml b/docs/generated-docs/specs/toomany-example-generation.yaml new file mode 100644 index 000000000..d47ec651d --- /dev/null +++ b/docs/generated-docs/specs/toomany-example-generation.yaml @@ -0,0 +1,87 @@ +openapi: 3.0.0 +info: + title: tennis + version: '1.0' + contact: + name: test +paths: + /getPlayer: + get: + summary: Possibility of generatiing 1024 Examples + description: the test case ensures that it do not generate more than 10 examples + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/Player' + tags: + - Many Examples + + /getTennisMatch: + get: + summary: Possibility of generatiing 1 million Examples + description: the test case ensures that it do not generate more than 10 examples + tags: + - Many Examples + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + leftPlayer: + $ref: '#/components/schemas/Player' + rightPlayer: + $ref: '#/components/schemas/Player' + + parameters: [] +components: + schemas: + Color: + title: Color + description: '' + oneOf: + - type: string + properties: {} + description: color code + example: '#FF0000' + - type: object + properties: + r: + type: integer + example: 255 + g: + type: integer + example: 0 + b: + type: integer + example: 0 + description: RGB color + Player: + title: Player + type: object + properties: + eyeColor: + $ref: '#/components/schemas/Color' + hairColor: + $ref: '#/components/schemas/Color' + lipColor: + $ref: '#/components/schemas/Color' + mouthColor: + $ref: '#/components/schemas/Color' + pantsColor: + $ref: '#/components/schemas/Color' + racketColor: + $ref: '#/components/schemas/Color' + shirtColor: + $ref: '#/components/schemas/Color' + shoeColor: + $ref: '#/components/schemas/Color' + skinColor: + $ref: '#/components/schemas/Color' + sockColor: + $ref: '#/components/schemas/Color' diff --git a/docs/specs/xml.yaml b/docs/generated-docs/specs/xml.yaml similarity index 100% rename from docs/specs/xml.yaml rename to docs/generated-docs/specs/xml.yaml diff --git a/docs/generated-docs/specs/xxx-of-nesting-with-expand-level.yaml b/docs/generated-docs/specs/xxx-of-nesting-with-expand-level.yaml new file mode 100644 index 000000000..d6633f54d --- /dev/null +++ b/docs/generated-docs/specs/xxx-of-nesting-with-expand-level.yaml @@ -0,0 +1,66 @@ +openapi: 3.0.3 +info: + title: One Of Nesting with Schema Expand level + description: > + this test case demonstrate covers the following scenarios + - nesting of `one-of`, `any-of` + - nested `one-of` contains + - only primitive data type options + - mix of primitive and object data type options + - schema-exapand-level attribute must play nice with nesting of `one-of` and `any-of` + version: 1.0.0 +servers: + - url: 'http://localhost:9000' + description: Local server +paths: + /nested-xxx-of: + get: + parameters: + - name: env + in: path + schema: + type: string + responses: + '200': + description: 'ok' + content: + application/json: + schema: + allOf: + - type: object + properties: + rootLevel: + allOf: + - type: object + - anyOf: + - type: object + properties: + L1_A: + type: string + L1_B: + type: number + L1_C: + type: object + properties: + L2_C1: + type: string + L2_C2: + type: string + L2_C3: + oneOf: + - type: string + - type: number + - type: object + properties: + L3_C3_A: + type: string + L3_C3_B: + type: string + L2_C4: + oneOf: + - type: string + - type: number + - type: object + properties: + L1_X: + type: number diff --git a/docs/generated-docs/specs/xxx-of-with-primitives-and-recursive-model.yaml b/docs/generated-docs/specs/xxx-of-with-primitives-and-recursive-model.yaml new file mode 100644 index 000000000..2a1112e46 --- /dev/null +++ b/docs/generated-docs/specs/xxx-of-with-primitives-and-recursive-model.yaml @@ -0,0 +1,952 @@ +openapi: 3.0.0 +servers: + - url: //petstore.swagger.io/v2 + description: Default server + - url: //petstore.swagger.io/sandbox + description: Sandbox server +info: + description: | + This is a sample server Petstore server. + You can find out more about Swagger at + [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/). + For this sample, you can use the api key `special-key` to test the authorization filters. + + # Introduction + This API is documented in **OpenAPI format** and is based on + [Petstore sample](http://petstore.swagger.io/) provided by [swagger.io](http://swagger.io) team. + It was **extended** to illustrate features of [generator-openapi-repo](https://github.com/Rebilly/generator-openapi-repo) + tool and [ReDoc](https://github.com/Redocly/redoc) documentation. In addition to standard + OpenAPI syntax we use a few [vendor extensions](https://github.com/Redocly/redoc/blob/master/docs/redoc-vendor-extensions.md). + + # OpenAPI Specification + This API is documented in **OpenAPI format** and is based on + [Petstore sample](http://petstore.swagger.io/) provided by [swagger.io](http://swagger.io) team. + It was **extended** to illustrate features of [generator-openapi-repo](https://github.com/Rebilly/generator-openapi-repo) + tool and [ReDoc](https://github.com/Redocly/redoc) documentation. In addition to standard + OpenAPI syntax we use a few [vendor extensions](https://github.com/Redocly/redoc/blob/master/docs/redoc-vendor-extensions.md). + + # Cross-Origin Resource Sharing + This API features Cross-Origin Resource Sharing (CORS) implemented in compliance with [W3C spec](https://www.w3.org/TR/cors/). + And that allows cross-domain communication from the browser. + All responses have a wildcard same-origin which makes them completely public and accessible to everyone, including any code on any site. + + # Authentication + + Petstore offers two forms of authentication: + - API Key + - OAuth2 + OAuth2 - an open protocol to allow secure authorization in a simple + and standard method from web, mobile and desktop applications. + + + + version: 1.0.0 + title: Swagger Petstore + termsOfService: 'http://swagger.io/terms/' + contact: + name: API Support + email: apiteam@swagger.io + url: https://github.com/Redocly/redoc + x-logo: + url: 'https://redocly.github.io/redoc/petstore-logo.png' + altText: Petstore logo + license: + name: Apache 2.0 + url: 'http://www.apache.org/licenses/LICENSE-2.0.html' +externalDocs: + description: Find out how to create Github repo for your OpenAPI spec. + url: 'https://github.com/Rebilly/generator-openapi-repo' +tags: + - name: pet + description: Everything about your Pets + - name: store + description: Access to Petstore orders + - name: user + description: Operations about user + - name: pet_model + x-displayName: The Pet Model + description: | + + - name: store_model + x-displayName: The Order Model + description: | + +x-tagGroups: + - name: General + tags: + - pet + - store + - name: User Management + tags: + - user + - name: Models + tags: + - pet_model + - store_model +paths: + /pet: + parameters: + - name: cookieParam + in: cookie + description: Some cookie + required: true + schema: + type: integer + format: int64 + post: + tags: + - pet + summary: Add a new pet to the store + description: Add new pet to the store inventory. + operationId: addPet + responses: + '405': + description: Invalid input + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + x-code-samples: + - lang: 'C#' + source: | + PetStore.v1.Pet pet = new PetStore.v1.Pet(); + pet.setApiKey("your api key"); + pet.petType = PetStore.v1.Pet.TYPE_DOG; + pet.name = "Rex"; + // set other fields + PetStoreResponse response = pet.create(); + if (response.statusCode == HttpStatusCode.Created) + { + // Successfully created + } + else + { + // Something wrong -- check response for errors + Console.WriteLine(response.getRawResponse()); + } + - lang: PHP + source: | + $form = new \PetStore\Entities\Pet(); + $form->setPetType("Dog"); + $form->setName("Rex"); + // set other fields + try { + $pet = $client->pets()->create($form); + } catch (UnprocessableEntityException $e) { + var_dump($e->getErrors()); + } + requestBody: + $ref: '#/components/requestBodies/Pet' + put: + tags: + - pet + summary: Update an existing pet + description: '' + operationId: updatePet + responses: + '400': + description: Invalid ID supplied + '404': + description: Pet not found + '405': + description: Validation exception + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + x-code-samples: + - lang: PHP + source: | + $form = new \PetStore\Entities\Pet(); + $form->setPetId(1); + $form->setPetType("Dog"); + $form->setName("Rex"); + // set other fields + try { + $pet = $client->pets()->update($form); + } catch (UnprocessableEntityException $e) { + var_dump($e->getErrors()); + } + requestBody: + $ref: '#/components/requestBodies/Pet' + '/pet/{petId}': + get: + tags: + - pet + summary: Find pet by ID + description: Returns a single pet + operationId: getPetById + parameters: + - name: petId + in: path + description: ID of pet to return + required: true + deprecated: true + schema: + type: integer + format: int64 + responses: + '200': + description: successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/Pet' + application/xml: + schema: + $ref: '#/components/schemas/Pet' + '400': + description: Invalid ID supplied + '404': + description: Pet not found + security: + - api_key: [] + post: + tags: + - pet + summary: Updates a pet in the store with form data + description: '' + operationId: updatePetWithForm + parameters: + - name: petId + in: path + description: ID of pet that needs to be updated + required: true + schema: + type: integer + format: int64 + responses: + '405': + description: Invalid input + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + requestBody: + content: + application/x-www-form-urlencoded: + schema: + type: object + properties: + name: + description: Updated name of the pet + type: string + status: + description: Updated status of the pet + type: string + delete: + tags: + - pet + summary: Deletes a pet + description: '' + operationId: deletePet + parameters: + - name: api_key + in: header + required: false + schema: + type: string + example: "Bearer " + - name: petId + in: path + description: Pet id to delete + required: true + schema: + type: integer + format: int64 + responses: + '400': + description: Invalid pet value + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + '/pet/{petId}/uploadImage': + post: + tags: + - pet + summary: uploads an image + description: '' + operationId: uploadFile + parameters: + - name: petId + in: path + description: ID of pet to update + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + requestBody: + content: + application/octet-stream: + schema: + type: string + format: binary + /pet/findByStatus: + get: + tags: + - pet + summary: Finds Pets by status + description: Multiple status values can be provided with comma seperated strings + operationId: findPetsByStatus + parameters: + - name: status + in: query + description: Status values that need to be considered for filter + required: true + style: form + schema: + type: array + minItems: 1 + maxItems: 3 + items: + type: string + enum: + - available + - pending + - sold + default: available + responses: + '200': + description: successful operation + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Pet' + application/xml: + schema: + type: array + items: + $ref: '#/components/schemas/Pet' + '400': + description: Invalid status value + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + /pet/findByTags: + get: + tags: + - pet + summary: Finds Pets by tags + description: >- + Muliple tags can be provided with comma seperated strings. Use tag1, + tag2, tag3 for testing. + operationId: findPetsByTags + deprecated: true + parameters: + - name: tags + in: query + description: Tags to filter by + required: true + style: form + schema: + type: array + items: + type: string + responses: + '200': + description: successful operation + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Pet' + application/xml: + schema: + type: array + items: + $ref: '#/components/schemas/Pet' + '400': + description: Invalid tag value + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + /store/inventory: + get: + tags: + - store + summary: Returns pet inventories by status + description: Returns a map of status codes to quantities + operationId: getInventory + responses: + '200': + description: successful operation + content: + application/json: + schema: + type: object + additionalProperties: + type: integer + format: int32 + security: + - api_key: [] + /store/order: + post: + tags: + - store + summary: Place an order for a pet + description: '' + operationId: placeOrder + responses: + '200': + description: successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/Order' + application/xml: + schema: + $ref: '#/components/schemas/Order' + '400': + description: Invalid Order + content: + application/json: + example: + status: 400 + message: "Invalid Order" + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Order' + description: order placed for purchasing the pet + required: true + '/store/order/{orderId}': + get: + tags: + - store + summary: Find purchase order by ID + description: >- + For valid response try integer IDs with value <= 5 or > 10. Other values + will generated exceptions + operationId: getOrderById + parameters: + - name: orderId + in: path + description: ID of pet that needs to be fetched + required: true + schema: + type: integer + format: int64 + minimum: 1 + maximum: 5 + responses: + '200': + description: successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/Order' + application/xml: + schema: + $ref: '#/components/schemas/Order' + '400': + description: Invalid ID supplied + '404': + description: Order not found + delete: + tags: + - store + summary: Delete purchase order by ID + description: >- + For valid response try integer IDs with value < 1000. Anything above + 1000 or nonintegers will generate API errors + operationId: deleteOrder + parameters: + - name: orderId + in: path + description: ID of the order that needs to be deleted + required: true + schema: + type: string + minimum: 1 + responses: + '400': + description: Invalid ID supplied + '404': + description: Order not found + /user: + post: + tags: + - user + summary: Create user + description: This can only be done by the logged in user. + operationId: createUser + responses: + default: + description: successful operation + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/User' + description: Created user object + required: true + '/user/{username}': + get: + tags: + - user + summary: Get user by user name + description: '' + operationId: getUserByName + parameters: + - name: username + in: path + description: 'The name that needs to be fetched. Use user1 for testing. ' + required: true + schema: + type: string + responses: + '200': + description: successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/User' + application/xml: + schema: + $ref: '#/components/schemas/User' + '400': + description: Invalid username supplied + '404': + description: User not found + put: + tags: + - user + summary: Updated user + description: This can only be done by the logged in user. + operationId: updateUser + parameters: + - name: username + in: path + description: name that need to be deleted + required: true + schema: + type: string + responses: + '400': + description: Invalid user supplied + '404': + description: User not found + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/User' + description: Updated user object + required: true + delete: + tags: + - user + summary: Delete user + description: This can only be done by the logged in user. + operationId: deleteUser + parameters: + - name: username + in: path + description: The name that needs to be deleted + required: true + schema: + type: string + responses: + '400': + description: Invalid username supplied + '404': + description: User not found + /user/createWithArray: + post: + tags: + - user + summary: Creates list of users with given input array + description: '' + operationId: createUsersWithArrayInput + responses: + default: + description: successful operation + requestBody: + $ref: '#/components/requestBodies/UserArray' + /user/createWithList: + post: + tags: + - user + summary: Creates list of users with given input array + description: '' + operationId: createUsersWithListInput + responses: + default: + description: successful operation + requestBody: + $ref: '#/components/requestBodies/UserArray' + /user/login: + get: + tags: + - user + summary: Logs user into the system + description: '' + operationId: loginUser + parameters: + - name: username + in: query + description: The user name for login + required: true + schema: + type: string + - name: password + in: query + description: The password for login in clear text + required: true + schema: + type: string + responses: + '200': + description: successful operation + headers: + X-Rate-Limit: + description: calls per hour allowed by the user + schema: + type: integer + format: int32 + X-Expires-After: + description: date in UTC when toekn expires + schema: + type: string + format: date-time + content: + application/json: + schema: + type: string + examples: + response: + value: OK + application/xml: + schema: + type: string + examples: + response: + value: OK + text/plain: + examples: + response: + value: OK + '400': + description: Invalid username/password supplied + /user/logout: + get: + tags: + - user + summary: Logs out current logged in user session + description: '' + operationId: logoutUser + responses: + default: + description: successful operation +components: + schemas: + ApiResponse: + type: object + properties: + code: + type: integer + format: int32 + type: + type: string + message: + type: string + Cat: + description: A representation of a cat + allOf: + - $ref: '#/components/schemas/Pet' + - type: object + properties: + huntingSkill: + type: string + description: The measured skill for hunting + default: lazy + enum: + - clueless + - lazy + - adventurous + - aggressive + required: + - huntingSkill + Category: + type: object + properties: + id: + description: Category ID + allOf: + - $ref: '#/components/schemas/Id' + name: + description: Category name + type: string + minLength: 1 + sub: + description: Test Sub Category + type: object + properties: + prop1: + type: string + description: Dumb Property + xml: + name: Category + Dog: + description: A representation of a dog + allOf: + - $ref: '#/components/schemas/Pet' + - type: object + properties: + packSize: + type: integer + format: int32 + description: The size of the pack the dog is from + default: 1 + minimum: 1 + required: + - packSize + HoneyBee: + description: A representation of a honey bee + allOf: + - $ref: '#/components/schemas/Pet' + - type: object + properties: + honeyPerDay: + type: number + description: Average amount of honey produced per day in ounces + example: 3.14 + required: + - honeyPerDay + Id: + type: integer + format: int64 + readOnly: true + Order: + type: object + properties: + id: + description: Order ID + allOf: + - $ref: '#/components/schemas/Id' + petId: + description: Pet ID + allOf: + - $ref: '#/components/schemas/Id' + quantity: + type: integer + format: int32 + minimum: 1 + default: 1 + shipDate: + description: Estimated ship date + type: string + format: date-time + status: + type: string + description: Order Status + enum: + - placed + - approved + - delivered + complete: + description: Indicates whenever order was completed or not + type: boolean + default: false + readOnly: true + rqeuestId: + description: Unique Request Id + type: string + writeOnly: true + xml: + name: Order + Pet: + type: object + required: + - name + - photoUrls + discriminator: + propertyName: petType + mapping: + cat: '#/components/schemas/Cat' + dog: '#/components/schemas/Dog' + bee: '#/components/schemas/HoneyBee' + properties: + id: + externalDocs: + description: "Find more info here" + url: "https://example.com" + description: Pet ID + allOf: + - $ref: '#/components/schemas/Id' + category: + description: Categories this pet belongs to + allOf: + - $ref: '#/components/schemas/Category' + name: + description: The name given to a pet + type: string + example: Guru + photoUrls: + description: The list of URL to a cute photos featuring pet + type: array + maxItems: 20 + xml: + name: photoUrl + wrapped: true + items: + type: string + format: url + friend: + allOf: + - $ref: '#/components/schemas/Pet' + tags: + description: Tags attached to the pet + type: array + minItems: 1 + xml: + name: tag + wrapped: true + items: + $ref: '#/components/schemas/Tag' + status: + type: string + description: Pet status in the store + enum: + - available + - pending + - sold + petType: + description: Type of a pet + type: string + xml: + name: Pet + Tag: + type: object + properties: + id: + description: Tag ID + allOf: + - $ref: '#/components/schemas/Id' + name: + description: Tag name + type: string + minLength: 1 + xml: + name: Tag + User: + type: object + properties: + id: + $ref: '#/components/schemas/Id' + pet: + oneOf: + - $ref: '#/components/schemas/Pet' + - $ref: '#/components/schemas/Tag' + username: + description: User supplied username + type: string + minLength: 4 + example: John78 + firstName: + description: User first name + type: string + minLength: 1 + example: John + lastName: + description: User last name + type: string + minLength: 1 + example: Smith + email: + description: User email address + type: string + format: email + example: john.smith@example.com + password: + type: string + description: >- + User password, MUST contain a mix of upper and lower case letters, + as well as digits + format: password + minLength: 8 + pattern: '/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])/' + example: drowssaP123 + phone: + description: User phone number in international format + type: string + pattern: '/^\+(?:[0-9]-?){6,14}[0-9]$/' + example: +1-202-555-0192 + nullable: true + userStatus: + description: User status + type: integer + format: int32 + xml: + name: User + requestBodies: + Pet: + content: + application/json: + schema: + allOf: + - description: My Pet + title: Pettie + - $ref: '#/components/schemas/Pet' + application/xml: + schema: + type: 'object' + properties: + name: + type: string + description: hooray + description: Pet object that needs to be added to the store + required: true + UserArray: + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/User' + description: List of user object + required: true + securitySchemes: + petstore_auth: + description: | + Get access to data while protecting your account credentials. + OAuth2 is also a safer and more secure way to give you access. + type: oauth2 + flows: + implicit: + authorizationUrl: 'http://petstore.swagger.io/api/oauth/dialog' + scopes: + 'write:pets': modify pets in your account + 'read:pets': read your pets + api_key: + description: > + For this sample, you can use the api key `special-key` to test the + authorization filters. + type: apiKey + name: api_key + in: header + examples: + Order: + value: + quantity: 1, + shipDate: 2018-10-19T16:46:45Z, + status: placed, + complete: false \ No newline at end of file diff --git a/docs/generated-docs/specs/youtube.yaml b/docs/generated-docs/specs/youtube.yaml new file mode 100644 index 000000000..6b5edb378 --- /dev/null +++ b/docs/generated-docs/specs/youtube.yaml @@ -0,0 +1,9623 @@ +openapi: 3.0.0 +servers: + - url: https://youtube.googleapis.com/ +info: + contact: + name: Google + url: https://google.com + x-twitter: youtube + description: The YouTube Data API v3 is an API that provides access to YouTube data, such as videos, playlists, and channels. + license: + name: Creative Commons Attribution 3.0 + url: http://creativecommons.org/licenses/by/3.0/ + termsOfService: https://developers.google.com/terms/ + title: YouTube Data API v3 + version: v3 + x-apiClientRegistration: + url: https://console.developers.google.com + x-apisguru-categories: + - analytics + - media + x-logo: + url: https://api.apis.guru/v2/cache/logo/https_www.google.com_images_branding_googlelogo_2x_googlelogo_color_272x92dp.png + x-origin: + - format: google + url: https://youtube.googleapis.com/$discovery/rest?version=v3 + version: v1 + x-providerName: googleapis.com + x-serviceName: youtube +externalDocs: + url: https://developers.google.com/youtube/ +tags: + - name: abuseReports + - name: activities + - name: captions + - name: channelBanners + - name: channels + - name: channelSections + - name: comments + - name: commentThreads + - name: i18nLanguages + - name: i18nRegions + - name: liveBroadcasts + - name: liveChatBans + - name: liveChatMessages + - name: liveChatModerators + - name: liveStreams + - name: members + - name: membershipsLevels + - name: playlistItems + - name: playlists + - name: search + - name: subscriptions + - name: superChatEvents + - name: tests + - name: thirdPartyLinks + - name: thumbnails + - name: videoAbuseReportReasons + - name: videoCategories + - name: videos + - name: watermarks + - name: youtube +paths: + /youtube/v3/abuseReports: + parameters: + - $ref: "#/components/parameters/_.xgafv" + - $ref: "#/components/parameters/access_token" + - $ref: "#/components/parameters/alt" + - $ref: "#/components/parameters/callback" + - $ref: "#/components/parameters/fields" + - $ref: "#/components/parameters/key" + - $ref: "#/components/parameters/oauth_token" + - $ref: "#/components/parameters/prettyPrint" + - $ref: "#/components/parameters/quotaUser" + - $ref: "#/components/parameters/upload_protocol" + - $ref: "#/components/parameters/uploadType" + post: + description: Inserts a new resource into this collection. + operationId: youtube.abuseReports.insert + parameters: + - description: The *part* parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response will include. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/AbuseReport" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/AbuseReport" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + tags: + - abuseReports + /youtube/v3/activities: + get: + description: Retrieves a list of resources, possibly filtered. + operationId: youtube.activities.list + parameters: + - description: The *part* parameter specifies a comma-separated list of one or more activity resource properties that the API response will include. If the parameter identifies a property that contains child properties, the child properties will be included in the response. For example, in an activity resource, the snippet property contains other properties that identify the type of activity, a display title for the activity, and so forth. If you set *part=snippet*, the API response will also contain all of those nested properties. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + - in: query + name: channelId + schema: + type: string + - in: query + name: home + schema: + type: boolean + - description: The *maxResults* parameter specifies the maximum number of items that should be returned in the result set. + in: query + name: maxResults + schema: + maximum: 50 + minimum: 0 + type: integer + - in: query + name: mine + schema: + type: boolean + - description: The *pageToken* parameter identifies a specific page in the result set that should be returned. In an API response, the nextPageToken and prevPageToken properties identify other pages that could be retrieved. + in: query + name: pageToken + schema: + type: string + - in: query + name: publishedAfter + schema: + type: string + - in: query + name: publishedBefore + schema: + type: string + - in: query + name: regionCode + schema: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/ActivityListResponse" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + - Oauth2: + - https://www.googleapis.com/auth/youtube.readonly + Oauth2c: + - https://www.googleapis.com/auth/youtube.readonly + tags: + - activities + parameters: + - $ref: "#/components/parameters/_.xgafv" + - $ref: "#/components/parameters/access_token" + - $ref: "#/components/parameters/alt" + - $ref: "#/components/parameters/callback" + - $ref: "#/components/parameters/fields" + - $ref: "#/components/parameters/key" + - $ref: "#/components/parameters/oauth_token" + - $ref: "#/components/parameters/prettyPrint" + - $ref: "#/components/parameters/quotaUser" + - $ref: "#/components/parameters/upload_protocol" + - $ref: "#/components/parameters/uploadType" + /youtube/v3/captions: + delete: + description: Deletes a resource. + operationId: youtube.captions.delete + parameters: + - in: query + name: id + required: true + schema: + type: string + - description: ID of the Google+ Page for the channel that the request is be on behalf of + in: query + name: onBehalfOf + schema: + type: string + - description: "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The actual CMS account that the user authenticates with must be linked to the specified YouTube content owner." + in: query + name: onBehalfOfContentOwner + schema: + type: string + responses: + "200": + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + - Oauth2: + - https://www.googleapis.com/auth/youtubepartner + Oauth2c: + - https://www.googleapis.com/auth/youtubepartner + tags: + - captions + get: + description: Retrieves a list of resources, possibly filtered. + operationId: youtube.captions.list + parameters: + - description: The *part* parameter specifies a comma-separated list of one or more caption resource parts that the API response will include. The part names that you can include in the parameter value are id and snippet. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + - description: Returns the captions for the specified video. + in: query + name: videoId + required: true + schema: + type: string + - description: Returns the captions with the given IDs for Stubby or Apiary. + explode: true + in: query + name: id + schema: + items: + type: string + type: array + style: form + - description: ID of the Google+ Page for the channel that the request is on behalf of. + in: query + name: onBehalfOf + schema: + type: string + - description: "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The actual CMS account that the user authenticates with must be linked to the specified YouTube content owner." + in: query + name: onBehalfOfContentOwner + schema: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/CaptionListResponse" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + - Oauth2: + - https://www.googleapis.com/auth/youtubepartner + Oauth2c: + - https://www.googleapis.com/auth/youtubepartner + tags: + - captions + parameters: + - $ref: "#/components/parameters/_.xgafv" + - $ref: "#/components/parameters/access_token" + - $ref: "#/components/parameters/alt" + - $ref: "#/components/parameters/callback" + - $ref: "#/components/parameters/fields" + - $ref: "#/components/parameters/key" + - $ref: "#/components/parameters/oauth_token" + - $ref: "#/components/parameters/prettyPrint" + - $ref: "#/components/parameters/quotaUser" + - $ref: "#/components/parameters/upload_protocol" + - $ref: "#/components/parameters/uploadType" + post: + description: Inserts a new resource into this collection. + operationId: youtube.captions.insert + parameters: + - description: The *part* parameter specifies the caption resource parts that the API response will include. Set the parameter value to snippet. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + - description: ID of the Google+ Page for the channel that the request is be on behalf of + in: query + name: onBehalfOf + schema: + type: string + - description: "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The actual CMS account that the user authenticates with must be linked to the specified YouTube content owner." + in: query + name: onBehalfOfContentOwner + schema: + type: string + - description: Extra parameter to allow automatically syncing the uploaded caption/transcript with the audio. + in: query + name: sync + schema: + type: boolean + requestBody: + content: + application/octet-stream: + schema: + $ref: "#/components/schemas/Caption" + text/xml: + schema: + $ref: "#/components/schemas/Caption" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Caption" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + - Oauth2: + - https://www.googleapis.com/auth/youtubepartner + Oauth2c: + - https://www.googleapis.com/auth/youtubepartner + tags: + - captions + put: + description: Updates an existing resource. + operationId: youtube.captions.update + parameters: + - description: The *part* parameter specifies a comma-separated list of one or more caption resource parts that the API response will include. The part names that you can include in the parameter value are id and snippet. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + - description: ID of the Google+ Page for the channel that the request is on behalf of. + in: query + name: onBehalfOf + schema: + type: string + - description: "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The actual CMS account that the user authenticates with must be linked to the specified YouTube content owner." + in: query + name: onBehalfOfContentOwner + schema: + type: string + - description: Extra parameter to allow automatically syncing the uploaded caption/transcript with the audio. + in: query + name: sync + schema: + type: boolean + requestBody: + content: + application/octet-stream: + schema: + $ref: "#/components/schemas/Caption" + text/xml: + schema: + $ref: "#/components/schemas/Caption" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Caption" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + - Oauth2: + - https://www.googleapis.com/auth/youtubepartner + Oauth2c: + - https://www.googleapis.com/auth/youtubepartner + tags: + - captions + "/youtube/v3/captions/{id}": + get: + description: Downloads a caption track. + operationId: youtube.captions.download + parameters: + - description: The ID of the caption track to download, required for One Platform. + in: path + name: id + required: true + schema: + type: string + - description: ID of the Google+ Page for the channel that the request is be on behalf of + in: query + name: onBehalfOf + schema: + type: string + - description: "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The actual CMS account that the user authenticates with must be linked to the specified YouTube content owner." + in: query + name: onBehalfOfContentOwner + schema: + type: string + - description: Convert the captions into this format. Supported options are sbv, srt, and vtt. + in: query + name: tfmt + schema: + type: string + - description: tlang is the language code; machine translate the captions into this language. + in: query + name: tlang + schema: + type: string + responses: + "200": + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + - Oauth2: + - https://www.googleapis.com/auth/youtubepartner + Oauth2c: + - https://www.googleapis.com/auth/youtubepartner + tags: + - captions + parameters: + - $ref: "#/components/parameters/_.xgafv" + - $ref: "#/components/parameters/access_token" + - $ref: "#/components/parameters/alt" + - $ref: "#/components/parameters/callback" + - $ref: "#/components/parameters/fields" + - $ref: "#/components/parameters/key" + - $ref: "#/components/parameters/oauth_token" + - $ref: "#/components/parameters/prettyPrint" + - $ref: "#/components/parameters/quotaUser" + - $ref: "#/components/parameters/upload_protocol" + - $ref: "#/components/parameters/uploadType" + /youtube/v3/channelBanners/insert: + parameters: + - $ref: "#/components/parameters/_.xgafv" + - $ref: "#/components/parameters/access_token" + - $ref: "#/components/parameters/alt" + - $ref: "#/components/parameters/callback" + - $ref: "#/components/parameters/fields" + - $ref: "#/components/parameters/key" + - $ref: "#/components/parameters/oauth_token" + - $ref: "#/components/parameters/prettyPrint" + - $ref: "#/components/parameters/quotaUser" + - $ref: "#/components/parameters/upload_protocol" + - $ref: "#/components/parameters/uploadType" + post: + description: Inserts a new resource into this collection. + operationId: youtube.channelBanners.insert + parameters: + - description: Unused, channel_id is currently derived from the security context of the requestor. + in: query + name: channelId + schema: + type: string + - description: "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The actual CMS account that the user authenticates with must be linked to the specified YouTube content owner." + in: query + name: onBehalfOfContentOwner + schema: + type: string + - description: This parameter can only be used in a properly authorized request. *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwnerChannel* parameter specifies the YouTube channel ID of the channel to which a video is being added. This parameter is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it can only be used in conjunction with that parameter. In addition, the request must be authorized using a CMS account that is linked to the content owner that the onBehalfOfContentOwner parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value specifies must be linked to the content owner that the onBehalfOfContentOwner parameter specifies. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and perform actions on behalf of the channel specified in the parameter value, without having to provide authentication credentials for each separate channel. + in: query + name: onBehalfOfContentOwnerChannel + schema: + type: string + requestBody: + content: + application/octet-stream: + schema: + $ref: "#/components/schemas/ChannelBannerResource" + image/jpeg: + schema: + $ref: "#/components/schemas/ChannelBannerResource" + image/png: + schema: + $ref: "#/components/schemas/ChannelBannerResource" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/ChannelBannerResource" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + - Oauth2: + - https://www.googleapis.com/auth/youtube.upload + Oauth2c: + - https://www.googleapis.com/auth/youtube.upload + tags: + - channelBanners + /youtube/v3/channelSections: + delete: + description: Deletes a resource. + operationId: youtube.channelSections.delete + parameters: + - in: query + name: id + required: true + schema: + type: string + - description: "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The CMS account that the user authenticates with must be linked to the specified YouTube content owner." + in: query + name: onBehalfOfContentOwner + schema: + type: string + responses: + "200": + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + - Oauth2: + - https://www.googleapis.com/auth/youtubepartner + Oauth2c: + - https://www.googleapis.com/auth/youtubepartner + tags: + - channelSections + get: + description: Retrieves a list of resources, possibly filtered. + operationId: youtube.channelSections.list + parameters: + - description: The *part* parameter specifies a comma-separated list of one or more channelSection resource properties that the API response will include. The part names that you can include in the parameter value are id, snippet, and contentDetails. If the parameter identifies a property that contains child properties, the child properties will be included in the response. For example, in a channelSection resource, the snippet property contains other properties, such as a display title for the channelSection. If you set *part=snippet*, the API response will also contain all of those nested properties. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + - description: Return the ChannelSections owned by the specified channel ID. + in: query + name: channelId + schema: + type: string + - description: Return content in specified language + in: query + name: hl + schema: + type: string + - description: Return the ChannelSections with the given IDs for Stubby or Apiary. + explode: true + in: query + name: id + schema: + items: + type: string + type: array + style: form + - description: Return the ChannelSections owned by the authenticated user. + in: query + name: mine + schema: + type: boolean + - description: "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The CMS account that the user authenticates with must be linked to the specified YouTube content owner." + in: query + name: onBehalfOfContentOwner + schema: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/ChannelSectionListResponse" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + - Oauth2: + - https://www.googleapis.com/auth/youtube.readonly + Oauth2c: + - https://www.googleapis.com/auth/youtube.readonly + - Oauth2: + - https://www.googleapis.com/auth/youtubepartner + Oauth2c: + - https://www.googleapis.com/auth/youtubepartner + tags: + - channelSections + parameters: + - $ref: "#/components/parameters/_.xgafv" + - $ref: "#/components/parameters/access_token" + - $ref: "#/components/parameters/alt" + - $ref: "#/components/parameters/callback" + - $ref: "#/components/parameters/fields" + - $ref: "#/components/parameters/key" + - $ref: "#/components/parameters/oauth_token" + - $ref: "#/components/parameters/prettyPrint" + - $ref: "#/components/parameters/quotaUser" + - $ref: "#/components/parameters/upload_protocol" + - $ref: "#/components/parameters/uploadType" + post: + description: Inserts a new resource into this collection. + operationId: youtube.channelSections.insert + parameters: + - description: The *part* parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response will include. The part names that you can include in the parameter value are snippet and contentDetails. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + - description: "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The CMS account that the user authenticates with must be linked to the specified YouTube content owner." + in: query + name: onBehalfOfContentOwner + schema: + type: string + - description: This parameter can only be used in a properly authorized request. *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwnerChannel* parameter specifies the YouTube channel ID of the channel to which a video is being added. This parameter is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it can only be used in conjunction with that parameter. In addition, the request must be authorized using a CMS account that is linked to the content owner that the onBehalfOfContentOwner parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value specifies must be linked to the content owner that the onBehalfOfContentOwner parameter specifies. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and perform actions on behalf of the channel specified in the parameter value, without having to provide authentication credentials for each separate channel. + in: query + name: onBehalfOfContentOwnerChannel + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/ChannelSection" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/ChannelSection" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + - Oauth2: + - https://www.googleapis.com/auth/youtubepartner + Oauth2c: + - https://www.googleapis.com/auth/youtubepartner + tags: + - channelSections + put: + description: Updates an existing resource. + operationId: youtube.channelSections.update + parameters: + - description: The *part* parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response will include. The part names that you can include in the parameter value are snippet and contentDetails. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + - description: "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The CMS account that the user authenticates with must be linked to the specified YouTube content owner." + in: query + name: onBehalfOfContentOwner + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/ChannelSection" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/ChannelSection" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + - Oauth2: + - https://www.googleapis.com/auth/youtubepartner + Oauth2c: + - https://www.googleapis.com/auth/youtubepartner + tags: + - channelSections + /youtube/v3/channels: + get: + description: Retrieves a list of resources, possibly filtered. + operationId: youtube.channels.list + parameters: + - description: The *part* parameter specifies a comma-separated list of one or more channel resource properties that the API response will include. If the parameter identifies a property that contains child properties, the child properties will be included in the response. For example, in a channel resource, the contentDetails property contains other properties, such as the uploads properties. As such, if you set *part=contentDetails*, the API response will also contain all of those nested properties. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + - description: Return the channels within the specified guide category ID. + in: query + name: categoryId + schema: + type: string + - description: Return the channel associated with a YouTube username. + in: query + name: forUsername + schema: + type: string + - description: Stands for "host language". Specifies the localization language of the metadata to be filled into snippet.localized. The field is filled with the default metadata if there is no localization in the specified language. The parameter value must be a language code included in the list returned by the i18nLanguages.list method (e.g. en_US, es_MX). + in: query + name: hl + schema: + type: string + - description: Return the channels with the specified IDs. + explode: true + in: query + name: id + schema: + items: + type: string + type: array + style: form + - description: Return the channels managed by the authenticated user. + in: query + name: managedByMe + schema: + type: boolean + - description: The *maxResults* parameter specifies the maximum number of items that should be returned in the result set. + in: query + name: maxResults + schema: + maximum: 50 + minimum: 0 + type: integer + - description: Return the ids of channels owned by the authenticated user. + in: query + name: mine + schema: + type: boolean + - description: Return the channels subscribed to the authenticated user + in: query + name: mySubscribers + schema: + type: boolean + - description: "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The CMS account that the user authenticates with must be linked to the specified YouTube content owner." + in: query + name: onBehalfOfContentOwner + schema: + type: string + - description: The *pageToken* parameter identifies a specific page in the result set that should be returned. In an API response, the nextPageToken and prevPageToken properties identify other pages that could be retrieved. + in: query + name: pageToken + schema: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/ChannelListResponse" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + - Oauth2: + - https://www.googleapis.com/auth/youtube.readonly + Oauth2c: + - https://www.googleapis.com/auth/youtube.readonly + - Oauth2: + - https://www.googleapis.com/auth/youtubepartner + Oauth2c: + - https://www.googleapis.com/auth/youtubepartner + - Oauth2: + - https://www.googleapis.com/auth/youtubepartner-channel-audit + Oauth2c: + - https://www.googleapis.com/auth/youtubepartner-channel-audit + tags: + - channels + parameters: + - $ref: "#/components/parameters/_.xgafv" + - $ref: "#/components/parameters/access_token" + - $ref: "#/components/parameters/alt" + - $ref: "#/components/parameters/callback" + - $ref: "#/components/parameters/fields" + - $ref: "#/components/parameters/key" + - $ref: "#/components/parameters/oauth_token" + - $ref: "#/components/parameters/prettyPrint" + - $ref: "#/components/parameters/quotaUser" + - $ref: "#/components/parameters/upload_protocol" + - $ref: "#/components/parameters/uploadType" + put: + description: Updates an existing resource. + operationId: youtube.channels.update + parameters: + - description: The *part* parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response will include. The API currently only allows the parameter value to be set to either brandingSettings or invideoPromotion. (You cannot update both of those parts with a single request.) Note that this method overrides the existing values for all of the mutable properties that are contained in any parts that the parameter value specifies. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + - description: The *onBehalfOfContentOwner* parameter indicates that the authenticated user is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The actual CMS account that the user authenticates with needs to be linked to the specified YouTube content owner. + in: query + name: onBehalfOfContentOwner + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/Channel" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Channel" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + - Oauth2: + - https://www.googleapis.com/auth/youtubepartner + Oauth2c: + - https://www.googleapis.com/auth/youtubepartner + tags: + - channels + /youtube/v3/commentThreads: + get: + description: Retrieves a list of resources, possibly filtered. + operationId: youtube.commentThreads.list + parameters: + - description: The *part* parameter specifies a comma-separated list of one or more commentThread resource properties that the API response will include. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + - description: Returns the comment threads of all videos of the channel and the channel comments as well. + in: query + name: allThreadsRelatedToChannelId + schema: + type: string + - description: Returns the comment threads for all the channel comments (ie does not include comments left on videos). + in: query + name: channelId + schema: + type: string + - description: Returns the comment threads with the given IDs for Stubby or Apiary. + explode: true + in: query + name: id + schema: + items: + type: string + type: array + style: form + - description: The *maxResults* parameter specifies the maximum number of items that should be returned in the result set. + in: query + name: maxResults + schema: + maximum: 100 + minimum: 1 + type: integer + - description: "Limits the returned comment threads to those with the specified moderation status. Not compatible with the 'id' filter. Valid values: published, heldForReview, likelySpam." + in: query + name: moderationStatus + schema: + enum: + - published + - heldForReview + - likelySpam + - rejected + type: string + - in: query + name: order + schema: + enum: + - orderUnspecified + - time + - relevance + type: string + - description: The *pageToken* parameter identifies a specific page in the result set that should be returned. In an API response, the nextPageToken and prevPageToken properties identify other pages that could be retrieved. + in: query + name: pageToken + schema: + type: string + - description: Limits the returned comment threads to those matching the specified key words. Not compatible with the 'id' filter. + in: query + name: searchTerms + schema: + type: string + - description: The requested text format for the returned comments. + in: query + name: textFormat + schema: + enum: + - textFormatUnspecified + - html + - plainText + type: string + - description: Returns the comment threads of the specified video. + in: query + name: videoId + schema: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/CommentThreadListResponse" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + tags: + - commentThreads + parameters: + - $ref: "#/components/parameters/_.xgafv" + - $ref: "#/components/parameters/access_token" + - $ref: "#/components/parameters/alt" + - $ref: "#/components/parameters/callback" + - $ref: "#/components/parameters/fields" + - $ref: "#/components/parameters/key" + - $ref: "#/components/parameters/oauth_token" + - $ref: "#/components/parameters/prettyPrint" + - $ref: "#/components/parameters/quotaUser" + - $ref: "#/components/parameters/upload_protocol" + - $ref: "#/components/parameters/uploadType" + post: + description: Inserts a new resource into this collection. + operationId: youtube.commentThreads.insert + parameters: + - description: The *part* parameter identifies the properties that the API response will include. Set the parameter value to snippet. The snippet part has a quota cost of 2 units. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/CommentThread" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/CommentThread" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + tags: + - commentThreads + put: + description: Updates an existing resource. + operationId: youtube.youtube.v3.updateCommentThreads + parameters: + - description: The *part* parameter specifies a comma-separated list of commentThread resource properties that the API response will include. You must at least include the snippet part in the parameter value since that part contains all of the properties that the API request can update. + explode: true + in: query + name: part + schema: + items: + type: string + type: array + style: form + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/CommentThread" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/CommentThread" + description: Successful response + tags: + - youtube + /youtube/v3/comments: + delete: + description: Deletes a resource. + operationId: youtube.comments.delete + parameters: + - in: query + name: id + required: true + schema: + type: string + responses: + "200": + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + tags: + - comments + get: + description: Retrieves a list of resources, possibly filtered. + operationId: youtube.comments.list + parameters: + - description: The *part* parameter specifies a comma-separated list of one or more comment resource properties that the API response will include. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + - description: Returns the comments with the given IDs for One Platform. + explode: true + in: query + name: id + schema: + items: + type: string + type: array + style: form + - description: The *maxResults* parameter specifies the maximum number of items that should be returned in the result set. + in: query + name: maxResults + schema: + maximum: 100 + minimum: 1 + type: integer + - description: The *pageToken* parameter identifies a specific page in the result set that should be returned. In an API response, the nextPageToken and prevPageToken properties identify other pages that could be retrieved. + in: query + name: pageToken + schema: + type: string + - description: Returns replies to the specified comment. Note, currently YouTube features only one level of replies (ie replies to top level comments). However replies to replies may be supported in the future. + in: query + name: parentId + schema: + type: string + - description: The requested text format for the returned comments. + in: query + name: textFormat + schema: + enum: + - textFormatUnspecified + - html + - plainText + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/CommentListResponse" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + tags: + - comments + parameters: + - $ref: "#/components/parameters/_.xgafv" + - $ref: "#/components/parameters/access_token" + - $ref: "#/components/parameters/alt" + - $ref: "#/components/parameters/callback" + - $ref: "#/components/parameters/fields" + - $ref: "#/components/parameters/key" + - $ref: "#/components/parameters/oauth_token" + - $ref: "#/components/parameters/prettyPrint" + - $ref: "#/components/parameters/quotaUser" + - $ref: "#/components/parameters/upload_protocol" + - $ref: "#/components/parameters/uploadType" + post: + description: Inserts a new resource into this collection. + operationId: youtube.comments.insert + parameters: + - description: The *part* parameter identifies the properties that the API response will include. Set the parameter value to snippet. The snippet part has a quota cost of 2 units. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/Comment" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Comment" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + tags: + - comments + put: + description: Updates an existing resource. + operationId: youtube.comments.update + parameters: + - description: The *part* parameter identifies the properties that the API response will include. You must at least include the snippet part in the parameter value since that part contains all of the properties that the API request can update. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/Comment" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Comment" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + tags: + - comments + /youtube/v3/comments/markAsSpam: + parameters: + - $ref: "#/components/parameters/_.xgafv" + - $ref: "#/components/parameters/access_token" + - $ref: "#/components/parameters/alt" + - $ref: "#/components/parameters/callback" + - $ref: "#/components/parameters/fields" + - $ref: "#/components/parameters/key" + - $ref: "#/components/parameters/oauth_token" + - $ref: "#/components/parameters/prettyPrint" + - $ref: "#/components/parameters/quotaUser" + - $ref: "#/components/parameters/upload_protocol" + - $ref: "#/components/parameters/uploadType" + post: + description: Expresses the caller's opinion that one or more comments should be flagged as spam. + operationId: youtube.comments.markAsSpam + parameters: + - description: Flags the comments with the given IDs as spam in the caller's opinion. + explode: true + in: query + name: id + required: true + schema: + items: + type: string + type: array + style: form + responses: + "200": + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + tags: + - comments + /youtube/v3/comments/setModerationStatus: + parameters: + - $ref: "#/components/parameters/_.xgafv" + - $ref: "#/components/parameters/access_token" + - $ref: "#/components/parameters/alt" + - $ref: "#/components/parameters/callback" + - $ref: "#/components/parameters/fields" + - $ref: "#/components/parameters/key" + - $ref: "#/components/parameters/oauth_token" + - $ref: "#/components/parameters/prettyPrint" + - $ref: "#/components/parameters/quotaUser" + - $ref: "#/components/parameters/upload_protocol" + - $ref: "#/components/parameters/uploadType" + post: + description: Sets the moderation status of one or more comments. + operationId: youtube.comments.setModerationStatus + parameters: + - description: Modifies the moderation status of the comments with the given IDs + explode: true + in: query + name: id + required: true + schema: + items: + type: string + type: array + style: form + - description: "Specifies the requested moderation status. Note, comments can be in statuses, which are not available through this call. For example, this call does not allow to mark a comment as 'likely spam'. Valid values: MODERATION_STATUS_PUBLISHED, MODERATION_STATUS_HELD_FOR_REVIEW, MODERATION_STATUS_REJECTED." + in: query + name: moderationStatus + required: true + schema: + enum: + - published + - heldForReview + - likelySpam + - rejected + type: string + - description: If set to true the author of the comment gets added to the ban list. This means all future comments of the author will autmomatically be rejected. Only valid in combination with STATUS_REJECTED. + in: query + name: banAuthor + schema: + type: boolean + responses: + "200": + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + tags: + - comments + /youtube/v3/i18nLanguages: + get: + description: Retrieves a list of resources, possibly filtered. + operationId: youtube.i18nLanguages.list + parameters: + - description: The *part* parameter specifies the i18nLanguage resource properties that the API response will include. Set the parameter value to snippet. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + - in: query + name: hl + schema: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/I18nLanguageListResponse" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + - Oauth2: + - https://www.googleapis.com/auth/youtube.readonly + Oauth2c: + - https://www.googleapis.com/auth/youtube.readonly + - Oauth2: + - https://www.googleapis.com/auth/youtubepartner + Oauth2c: + - https://www.googleapis.com/auth/youtubepartner + tags: + - i18nLanguages + parameters: + - $ref: "#/components/parameters/_.xgafv" + - $ref: "#/components/parameters/access_token" + - $ref: "#/components/parameters/alt" + - $ref: "#/components/parameters/callback" + - $ref: "#/components/parameters/fields" + - $ref: "#/components/parameters/key" + - $ref: "#/components/parameters/oauth_token" + - $ref: "#/components/parameters/prettyPrint" + - $ref: "#/components/parameters/quotaUser" + - $ref: "#/components/parameters/upload_protocol" + - $ref: "#/components/parameters/uploadType" + /youtube/v3/i18nRegions: + get: + description: Retrieves a list of resources, possibly filtered. + operationId: youtube.i18nRegions.list + parameters: + - description: The *part* parameter specifies the i18nRegion resource properties that the API response will include. Set the parameter value to snippet. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + - in: query + name: hl + schema: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/I18nRegionListResponse" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + - Oauth2: + - https://www.googleapis.com/auth/youtube.readonly + Oauth2c: + - https://www.googleapis.com/auth/youtube.readonly + - Oauth2: + - https://www.googleapis.com/auth/youtubepartner + Oauth2c: + - https://www.googleapis.com/auth/youtubepartner + tags: + - i18nRegions + parameters: + - $ref: "#/components/parameters/_.xgafv" + - $ref: "#/components/parameters/access_token" + - $ref: "#/components/parameters/alt" + - $ref: "#/components/parameters/callback" + - $ref: "#/components/parameters/fields" + - $ref: "#/components/parameters/key" + - $ref: "#/components/parameters/oauth_token" + - $ref: "#/components/parameters/prettyPrint" + - $ref: "#/components/parameters/quotaUser" + - $ref: "#/components/parameters/upload_protocol" + - $ref: "#/components/parameters/uploadType" + /youtube/v3/liveBroadcasts: + delete: + description: Delete a given broadcast. + operationId: youtube.liveBroadcasts.delete + parameters: + - description: Broadcast to delete. + in: query + name: id + required: true + schema: + type: string + - description: "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The CMS account that the user authenticates with must be linked to the specified YouTube content owner." + in: query + name: onBehalfOfContentOwner + schema: + type: string + - description: This parameter can only be used in a properly authorized request. *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwnerChannel* parameter specifies the YouTube channel ID of the channel to which a video is being added. This parameter is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it can only be used in conjunction with that parameter. In addition, the request must be authorized using a CMS account that is linked to the content owner that the onBehalfOfContentOwner parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value specifies must be linked to the content owner that the onBehalfOfContentOwner parameter specifies. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and perform actions on behalf of the channel specified in the parameter value, without having to provide authentication credentials for each separate channel. + in: query + name: onBehalfOfContentOwnerChannel + schema: + type: string + responses: + "200": + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + tags: + - liveBroadcasts + get: + description: Retrieve the list of broadcasts associated with the given channel. + operationId: youtube.liveBroadcasts.list + parameters: + - description: The *part* parameter specifies a comma-separated list of one or more liveBroadcast resource properties that the API response will include. The part names that you can include in the parameter value are id, snippet, contentDetails, status and statistics. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + - description: Return broadcasts with a certain status, e.g. active broadcasts. + in: query + name: broadcastStatus + schema: + enum: + - broadcastStatusFilterUnspecified + - all + - active + - upcoming + - completed + type: string + - description: Return only broadcasts with the selected type. + in: query + name: broadcastType + schema: + enum: + - broadcastTypeFilterUnspecified + - all + - event + - persistent + type: string + - description: Return broadcasts with the given ids from Stubby or Apiary. + explode: true + in: query + name: id + schema: + items: + type: string + type: array + style: form + - description: The *maxResults* parameter specifies the maximum number of items that should be returned in the result set. + in: query + name: maxResults + schema: + maximum: 50 + minimum: 0 + type: integer + - in: query + name: mine + schema: + type: boolean + - description: "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The CMS account that the user authenticates with must be linked to the specified YouTube content owner." + in: query + name: onBehalfOfContentOwner + schema: + type: string + - description: This parameter can only be used in a properly authorized request. *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwnerChannel* parameter specifies the YouTube channel ID of the channel to which a video is being added. This parameter is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it can only be used in conjunction with that parameter. In addition, the request must be authorized using a CMS account that is linked to the content owner that the onBehalfOfContentOwner parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value specifies must be linked to the content owner that the onBehalfOfContentOwner parameter specifies. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and perform actions on behalf of the channel specified in the parameter value, without having to provide authentication credentials for each separate channel. + in: query + name: onBehalfOfContentOwnerChannel + schema: + type: string + - description: The *pageToken* parameter identifies a specific page in the result set that should be returned. In an API response, the nextPageToken and prevPageToken properties identify other pages that could be retrieved. + in: query + name: pageToken + schema: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/LiveBroadcastListResponse" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + - Oauth2: + - https://www.googleapis.com/auth/youtube.readonly + Oauth2c: + - https://www.googleapis.com/auth/youtube.readonly + tags: + - liveBroadcasts + parameters: + - $ref: "#/components/parameters/_.xgafv" + - $ref: "#/components/parameters/access_token" + - $ref: "#/components/parameters/alt" + - $ref: "#/components/parameters/callback" + - $ref: "#/components/parameters/fields" + - $ref: "#/components/parameters/key" + - $ref: "#/components/parameters/oauth_token" + - $ref: "#/components/parameters/prettyPrint" + - $ref: "#/components/parameters/quotaUser" + - $ref: "#/components/parameters/upload_protocol" + - $ref: "#/components/parameters/uploadType" + post: + description: Inserts a new stream for the authenticated user. + operationId: youtube.liveBroadcasts.insert + parameters: + - description: The *part* parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response will include. The part properties that you can include in the parameter value are id, snippet, contentDetails, and status. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + - description: "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The CMS account that the user authenticates with must be linked to the specified YouTube content owner." + in: query + name: onBehalfOfContentOwner + schema: + type: string + - description: This parameter can only be used in a properly authorized request. *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwnerChannel* parameter specifies the YouTube channel ID of the channel to which a video is being added. This parameter is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it can only be used in conjunction with that parameter. In addition, the request must be authorized using a CMS account that is linked to the content owner that the onBehalfOfContentOwner parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value specifies must be linked to the content owner that the onBehalfOfContentOwner parameter specifies. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and perform actions on behalf of the channel specified in the parameter value, without having to provide authentication credentials for each separate channel. + in: query + name: onBehalfOfContentOwnerChannel + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/LiveBroadcast" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/LiveBroadcast" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + tags: + - liveBroadcasts + put: + description: Updates an existing broadcast for the authenticated user. + operationId: youtube.liveBroadcasts.update + parameters: + - description: The *part* parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response will include. The part properties that you can include in the parameter value are id, snippet, contentDetails, and status. Note that this method will override the existing values for all of the mutable properties that are contained in any parts that the parameter value specifies. For example, a broadcast's privacy status is defined in the status part. As such, if your request is updating a private or unlisted broadcast, and the request's part parameter value includes the status part, the broadcast's privacy setting will be updated to whatever value the request body specifies. If the request body does not specify a value, the existing privacy setting will be removed and the broadcast will revert to the default privacy setting. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + - description: "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The CMS account that the user authenticates with must be linked to the specified YouTube content owner." + in: query + name: onBehalfOfContentOwner + schema: + type: string + - description: This parameter can only be used in a properly authorized request. *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwnerChannel* parameter specifies the YouTube channel ID of the channel to which a video is being added. This parameter is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it can only be used in conjunction with that parameter. In addition, the request must be authorized using a CMS account that is linked to the content owner that the onBehalfOfContentOwner parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value specifies must be linked to the content owner that the onBehalfOfContentOwner parameter specifies. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and perform actions on behalf of the channel specified in the parameter value, without having to provide authentication credentials for each separate channel. + in: query + name: onBehalfOfContentOwnerChannel + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/LiveBroadcast" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/LiveBroadcast" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + tags: + - liveBroadcasts + /youtube/v3/liveBroadcasts/bind: + parameters: + - $ref: "#/components/parameters/_.xgafv" + - $ref: "#/components/parameters/access_token" + - $ref: "#/components/parameters/alt" + - $ref: "#/components/parameters/callback" + - $ref: "#/components/parameters/fields" + - $ref: "#/components/parameters/key" + - $ref: "#/components/parameters/oauth_token" + - $ref: "#/components/parameters/prettyPrint" + - $ref: "#/components/parameters/quotaUser" + - $ref: "#/components/parameters/upload_protocol" + - $ref: "#/components/parameters/uploadType" + post: + description: Bind a broadcast to a stream. + operationId: youtube.liveBroadcasts.bind + parameters: + - description: Broadcast to bind to the stream + in: query + name: id + required: true + schema: + type: string + - description: The *part* parameter specifies a comma-separated list of one or more liveBroadcast resource properties that the API response will include. The part names that you can include in the parameter value are id, snippet, contentDetails, and status. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + - description: "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The CMS account that the user authenticates with must be linked to the specified YouTube content owner." + in: query + name: onBehalfOfContentOwner + schema: + type: string + - description: This parameter can only be used in a properly authorized request. *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwnerChannel* parameter specifies the YouTube channel ID of the channel to which a video is being added. This parameter is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it can only be used in conjunction with that parameter. In addition, the request must be authorized using a CMS account that is linked to the content owner that the onBehalfOfContentOwner parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value specifies must be linked to the content owner that the onBehalfOfContentOwner parameter specifies. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and perform actions on behalf of the channel specified in the parameter value, without having to provide authentication credentials for each separate channel. + in: query + name: onBehalfOfContentOwnerChannel + schema: + type: string + - description: Stream to bind, if not set unbind the current one. + in: query + name: streamId + schema: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/LiveBroadcast" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + tags: + - liveBroadcasts + /youtube/v3/liveBroadcasts/cuepoint: + parameters: + - $ref: "#/components/parameters/_.xgafv" + - $ref: "#/components/parameters/access_token" + - $ref: "#/components/parameters/alt" + - $ref: "#/components/parameters/callback" + - $ref: "#/components/parameters/fields" + - $ref: "#/components/parameters/key" + - $ref: "#/components/parameters/oauth_token" + - $ref: "#/components/parameters/prettyPrint" + - $ref: "#/components/parameters/quotaUser" + - $ref: "#/components/parameters/upload_protocol" + - $ref: "#/components/parameters/uploadType" + post: + description: Insert cuepoints in a broadcast + operationId: youtube.liveBroadcasts.insertCuepoint + parameters: + - description: Broadcast to insert ads to, or equivalently `external_video_id` for internal use. + in: query + name: id + schema: + type: string + - description: "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The CMS account that the user authenticates with must be linked to the specified YouTube content owner." + in: query + name: onBehalfOfContentOwner + schema: + type: string + - description: This parameter can only be used in a properly authorized request. *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwnerChannel* parameter specifies the YouTube channel ID of the channel to which a video is being added. This parameter is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it can only be used in conjunction with that parameter. In addition, the request must be authorized using a CMS account that is linked to the content owner that the onBehalfOfContentOwner parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value specifies must be linked to the content owner that the onBehalfOfContentOwner parameter specifies. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and perform actions on behalf of the channel specified in the parameter value, without having to provide authentication credentials for each separate channel. + in: query + name: onBehalfOfContentOwnerChannel + schema: + type: string + - description: The *part* parameter specifies a comma-separated list of one or more liveBroadcast resource properties that the API response will include. The part names that you can include in the parameter value are id, snippet, contentDetails, and status. + explode: true + in: query + name: part + schema: + items: + type: string + type: array + style: form + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/Cuepoint" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Cuepoint" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + - Oauth2: + - https://www.googleapis.com/auth/youtubepartner + Oauth2c: + - https://www.googleapis.com/auth/youtubepartner + tags: + - liveBroadcasts + /youtube/v3/liveBroadcasts/transition: + parameters: + - $ref: "#/components/parameters/_.xgafv" + - $ref: "#/components/parameters/access_token" + - $ref: "#/components/parameters/alt" + - $ref: "#/components/parameters/callback" + - $ref: "#/components/parameters/fields" + - $ref: "#/components/parameters/key" + - $ref: "#/components/parameters/oauth_token" + - $ref: "#/components/parameters/prettyPrint" + - $ref: "#/components/parameters/quotaUser" + - $ref: "#/components/parameters/upload_protocol" + - $ref: "#/components/parameters/uploadType" + post: + description: Transition a broadcast to a given status. + operationId: youtube.liveBroadcasts.transition + parameters: + - description: The status to which the broadcast is going to transition. + in: query + name: broadcastStatus + required: true + schema: + enum: + - statusUnspecified + - testing + - live + - complete + type: string + - description: Broadcast to transition. + in: query + name: id + required: true + schema: + type: string + - description: The *part* parameter specifies a comma-separated list of one or more liveBroadcast resource properties that the API response will include. The part names that you can include in the parameter value are id, snippet, contentDetails, and status. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + - description: "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The CMS account that the user authenticates with must be linked to the specified YouTube content owner." + in: query + name: onBehalfOfContentOwner + schema: + type: string + - description: This parameter can only be used in a properly authorized request. *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwnerChannel* parameter specifies the YouTube channel ID of the channel to which a video is being added. This parameter is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it can only be used in conjunction with that parameter. In addition, the request must be authorized using a CMS account that is linked to the content owner that the onBehalfOfContentOwner parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value specifies must be linked to the content owner that the onBehalfOfContentOwner parameter specifies. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and perform actions on behalf of the channel specified in the parameter value, without having to provide authentication credentials for each separate channel. + in: query + name: onBehalfOfContentOwnerChannel + schema: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/LiveBroadcast" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + tags: + - liveBroadcasts + /youtube/v3/liveChat/bans: + delete: + description: Deletes a chat ban. + operationId: youtube.liveChatBans.delete + parameters: + - in: query + name: id + required: true + schema: + type: string + responses: + "200": + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + tags: + - liveChatBans + parameters: + - $ref: "#/components/parameters/_.xgafv" + - $ref: "#/components/parameters/access_token" + - $ref: "#/components/parameters/alt" + - $ref: "#/components/parameters/callback" + - $ref: "#/components/parameters/fields" + - $ref: "#/components/parameters/key" + - $ref: "#/components/parameters/oauth_token" + - $ref: "#/components/parameters/prettyPrint" + - $ref: "#/components/parameters/quotaUser" + - $ref: "#/components/parameters/upload_protocol" + - $ref: "#/components/parameters/uploadType" + post: + description: Inserts a new resource into this collection. + operationId: youtube.liveChatBans.insert + parameters: + - description: The *part* parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response returns. Set the parameter value to snippet. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/LiveChatBan" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/LiveChatBan" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + tags: + - liveChatBans + /youtube/v3/liveChat/messages: + delete: + description: Deletes a chat message. + operationId: youtube.liveChatMessages.delete + parameters: + - in: query + name: id + required: true + schema: + type: string + responses: + "200": + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + tags: + - liveChatMessages + get: + description: Retrieves a list of resources, possibly filtered. + operationId: youtube.liveChatMessages.list + parameters: + - description: The id of the live chat for which comments should be returned. + in: query + name: liveChatId + required: true + schema: + type: string + - description: The *part* parameter specifies the liveChatComment resource parts that the API response will include. Supported values are id and snippet. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + - description: Specifies the localization language in which the system messages should be returned. + in: query + name: hl + schema: + type: string + - description: The *maxResults* parameter specifies the maximum number of items that should be returned in the result set. + in: query + name: maxResults + schema: + maximum: 2000 + minimum: 200 + type: integer + - description: The *pageToken* parameter identifies a specific page in the result set that should be returned. In an API response, the nextPageToken property identify other pages that could be retrieved. + in: query + name: pageToken + schema: + type: string + - description: Specifies the size of the profile image that should be returned for each user. + in: query + name: profileImageSize + schema: + maximum: 720 + minimum: 16 + type: integer + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/LiveChatMessageListResponse" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + - Oauth2: + - https://www.googleapis.com/auth/youtube.readonly + Oauth2c: + - https://www.googleapis.com/auth/youtube.readonly + tags: + - liveChatMessages + parameters: + - $ref: "#/components/parameters/_.xgafv" + - $ref: "#/components/parameters/access_token" + - $ref: "#/components/parameters/alt" + - $ref: "#/components/parameters/callback" + - $ref: "#/components/parameters/fields" + - $ref: "#/components/parameters/key" + - $ref: "#/components/parameters/oauth_token" + - $ref: "#/components/parameters/prettyPrint" + - $ref: "#/components/parameters/quotaUser" + - $ref: "#/components/parameters/upload_protocol" + - $ref: "#/components/parameters/uploadType" + post: + description: Inserts a new resource into this collection. + operationId: youtube.liveChatMessages.insert + parameters: + - description: The *part* parameter serves two purposes. It identifies the properties that the write operation will set as well as the properties that the API response will include. Set the parameter value to snippet. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/LiveChatMessage" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/LiveChatMessage" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + tags: + - liveChatMessages + /youtube/v3/liveChat/moderators: + delete: + description: Deletes a chat moderator. + operationId: youtube.liveChatModerators.delete + parameters: + - in: query + name: id + required: true + schema: + type: string + responses: + "200": + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + tags: + - liveChatModerators + get: + description: Retrieves a list of resources, possibly filtered. + operationId: youtube.liveChatModerators.list + parameters: + - description: The id of the live chat for which moderators should be returned. + in: query + name: liveChatId + required: true + schema: + type: string + - description: The *part* parameter specifies the liveChatModerator resource parts that the API response will include. Supported values are id and snippet. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + - description: The *maxResults* parameter specifies the maximum number of items that should be returned in the result set. + in: query + name: maxResults + schema: + maximum: 50 + minimum: 0 + type: integer + - description: The *pageToken* parameter identifies a specific page in the result set that should be returned. In an API response, the nextPageToken and prevPageToken properties identify other pages that could be retrieved. + in: query + name: pageToken + schema: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/LiveChatModeratorListResponse" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + - Oauth2: + - https://www.googleapis.com/auth/youtube.readonly + Oauth2c: + - https://www.googleapis.com/auth/youtube.readonly + tags: + - liveChatModerators + parameters: + - $ref: "#/components/parameters/_.xgafv" + - $ref: "#/components/parameters/access_token" + - $ref: "#/components/parameters/alt" + - $ref: "#/components/parameters/callback" + - $ref: "#/components/parameters/fields" + - $ref: "#/components/parameters/key" + - $ref: "#/components/parameters/oauth_token" + - $ref: "#/components/parameters/prettyPrint" + - $ref: "#/components/parameters/quotaUser" + - $ref: "#/components/parameters/upload_protocol" + - $ref: "#/components/parameters/uploadType" + post: + description: Inserts a new resource into this collection. + operationId: youtube.liveChatModerators.insert + parameters: + - description: The *part* parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response returns. Set the parameter value to snippet. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/LiveChatModerator" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/LiveChatModerator" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + tags: + - liveChatModerators + /youtube/v3/liveStreams: + delete: + description: Deletes an existing stream for the authenticated user. + operationId: youtube.liveStreams.delete + parameters: + - in: query + name: id + required: true + schema: + type: string + - description: "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The CMS account that the user authenticates with must be linked to the specified YouTube content owner." + in: query + name: onBehalfOfContentOwner + schema: + type: string + - description: This parameter can only be used in a properly authorized request. *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwnerChannel* parameter specifies the YouTube channel ID of the channel to which a video is being added. This parameter is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it can only be used in conjunction with that parameter. In addition, the request must be authorized using a CMS account that is linked to the content owner that the onBehalfOfContentOwner parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value specifies must be linked to the content owner that the onBehalfOfContentOwner parameter specifies. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and perform actions on behalf of the channel specified in the parameter value, without having to provide authentication credentials for each separate channel. + in: query + name: onBehalfOfContentOwnerChannel + schema: + type: string + responses: + "200": + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + tags: + - liveStreams + get: + description: Retrieve the list of streams associated with the given channel. -- + operationId: youtube.liveStreams.list + parameters: + - description: The *part* parameter specifies a comma-separated list of one or more liveStream resource properties that the API response will include. The part names that you can include in the parameter value are id, snippet, cdn, and status. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + - description: Return LiveStreams with the given ids from Stubby or Apiary. + explode: true + in: query + name: id + schema: + items: + type: string + type: array + style: form + - description: The *maxResults* parameter specifies the maximum number of items that should be returned in the result set. + in: query + name: maxResults + schema: + maximum: 50 + minimum: 0 + type: integer + - in: query + name: mine + schema: + type: boolean + - description: "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The CMS account that the user authenticates with must be linked to the specified YouTube content owner." + in: query + name: onBehalfOfContentOwner + schema: + type: string + - description: This parameter can only be used in a properly authorized request. *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwnerChannel* parameter specifies the YouTube channel ID of the channel to which a video is being added. This parameter is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it can only be used in conjunction with that parameter. In addition, the request must be authorized using a CMS account that is linked to the content owner that the onBehalfOfContentOwner parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value specifies must be linked to the content owner that the onBehalfOfContentOwner parameter specifies. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and perform actions on behalf of the channel specified in the parameter value, without having to provide authentication credentials for each separate channel. + in: query + name: onBehalfOfContentOwnerChannel + schema: + type: string + - description: The *pageToken* parameter identifies a specific page in the result set that should be returned. In an API response, the nextPageToken and prevPageToken properties identify other pages that could be retrieved. + in: query + name: pageToken + schema: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/LiveStreamListResponse" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + - Oauth2: + - https://www.googleapis.com/auth/youtube.readonly + Oauth2c: + - https://www.googleapis.com/auth/youtube.readonly + tags: + - liveStreams + parameters: + - $ref: "#/components/parameters/_.xgafv" + - $ref: "#/components/parameters/access_token" + - $ref: "#/components/parameters/alt" + - $ref: "#/components/parameters/callback" + - $ref: "#/components/parameters/fields" + - $ref: "#/components/parameters/key" + - $ref: "#/components/parameters/oauth_token" + - $ref: "#/components/parameters/prettyPrint" + - $ref: "#/components/parameters/quotaUser" + - $ref: "#/components/parameters/upload_protocol" + - $ref: "#/components/parameters/uploadType" + post: + description: Inserts a new stream for the authenticated user. + operationId: youtube.liveStreams.insert + parameters: + - description: The *part* parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response will include. The part properties that you can include in the parameter value are id, snippet, cdn, content_details, and status. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + - description: "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The CMS account that the user authenticates with must be linked to the specified YouTube content owner." + in: query + name: onBehalfOfContentOwner + schema: + type: string + - description: This parameter can only be used in a properly authorized request. *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwnerChannel* parameter specifies the YouTube channel ID of the channel to which a video is being added. This parameter is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it can only be used in conjunction with that parameter. In addition, the request must be authorized using a CMS account that is linked to the content owner that the onBehalfOfContentOwner parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value specifies must be linked to the content owner that the onBehalfOfContentOwner parameter specifies. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and perform actions on behalf of the channel specified in the parameter value, without having to provide authentication credentials for each separate channel. + in: query + name: onBehalfOfContentOwnerChannel + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/LiveStream" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/LiveStream" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + tags: + - liveStreams + put: + description: Updates an existing stream for the authenticated user. + operationId: youtube.liveStreams.update + parameters: + - description: The *part* parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response will include. The part properties that you can include in the parameter value are id, snippet, cdn, and status. Note that this method will override the existing values for all of the mutable properties that are contained in any parts that the parameter value specifies. If the request body does not specify a value for a mutable property, the existing value for that property will be removed. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + - description: "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The CMS account that the user authenticates with must be linked to the specified YouTube content owner." + in: query + name: onBehalfOfContentOwner + schema: + type: string + - description: This parameter can only be used in a properly authorized request. *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwnerChannel* parameter specifies the YouTube channel ID of the channel to which a video is being added. This parameter is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it can only be used in conjunction with that parameter. In addition, the request must be authorized using a CMS account that is linked to the content owner that the onBehalfOfContentOwner parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value specifies must be linked to the content owner that the onBehalfOfContentOwner parameter specifies. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and perform actions on behalf of the channel specified in the parameter value, without having to provide authentication credentials for each separate channel. + in: query + name: onBehalfOfContentOwnerChannel + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/LiveStream" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/LiveStream" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + tags: + - liveStreams + /youtube/v3/members: + get: + description: Retrieves a list of members that match the request criteria for a channel. + operationId: youtube.members.list + parameters: + - description: The *part* parameter specifies the member resource parts that the API response will include. Set the parameter value to snippet. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + - description: Comma separated list of channel IDs. Only data about members that are part of this list will be included in the response. + in: query + name: filterByMemberChannelId + schema: + type: string + - description: Filter members in the results set to the ones that have access to a level. + in: query + name: hasAccessToLevel + schema: + type: string + - description: The *maxResults* parameter specifies the maximum number of items that should be returned in the result set. + in: query + name: maxResults + schema: + maximum: 1000 + minimum: 0 + type: integer + - description: Parameter that specifies which channel members to return. + in: query + name: mode + schema: + enum: + - listMembersModeUnknown + - updates + - all_current + type: string + - description: The *pageToken* parameter identifies a specific page in the result set that should be returned. In an API response, the nextPageToken and prevPageToken properties identify other pages that could be retrieved. + in: query + name: pageToken + schema: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/MemberListResponse" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube.channel-memberships.creator + Oauth2c: + - https://www.googleapis.com/auth/youtube.channel-memberships.creator + tags: + - members + parameters: + - $ref: "#/components/parameters/_.xgafv" + - $ref: "#/components/parameters/access_token" + - $ref: "#/components/parameters/alt" + - $ref: "#/components/parameters/callback" + - $ref: "#/components/parameters/fields" + - $ref: "#/components/parameters/key" + - $ref: "#/components/parameters/oauth_token" + - $ref: "#/components/parameters/prettyPrint" + - $ref: "#/components/parameters/quotaUser" + - $ref: "#/components/parameters/upload_protocol" + - $ref: "#/components/parameters/uploadType" + /youtube/v3/membershipsLevels: + get: + description: Retrieves a list of all pricing levels offered by a creator to the fans. + operationId: youtube.membershipsLevels.list + parameters: + - description: The *part* parameter specifies the membershipsLevel resource parts that the API response will include. Supported values are id and snippet. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/MembershipsLevelListResponse" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube.channel-memberships.creator + Oauth2c: + - https://www.googleapis.com/auth/youtube.channel-memberships.creator + tags: + - membershipsLevels + parameters: + - $ref: "#/components/parameters/_.xgafv" + - $ref: "#/components/parameters/access_token" + - $ref: "#/components/parameters/alt" + - $ref: "#/components/parameters/callback" + - $ref: "#/components/parameters/fields" + - $ref: "#/components/parameters/key" + - $ref: "#/components/parameters/oauth_token" + - $ref: "#/components/parameters/prettyPrint" + - $ref: "#/components/parameters/quotaUser" + - $ref: "#/components/parameters/upload_protocol" + - $ref: "#/components/parameters/uploadType" + /youtube/v3/playlistItems: + delete: + description: Deletes a resource. + operationId: youtube.playlistItems.delete + parameters: + - in: query + name: id + required: true + schema: + type: string + - description: "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The CMS account that the user authenticates with must be linked to the specified YouTube content owner." + in: query + name: onBehalfOfContentOwner + schema: + type: string + responses: + "200": + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + - Oauth2: + - https://www.googleapis.com/auth/youtubepartner + Oauth2c: + - https://www.googleapis.com/auth/youtubepartner + tags: + - playlistItems + get: + description: Retrieves a list of resources, possibly filtered. + operationId: youtube.playlistItems.list + parameters: + - description: The *part* parameter specifies a comma-separated list of one or more playlistItem resource properties that the API response will include. If the parameter identifies a property that contains child properties, the child properties will be included in the response. For example, in a playlistItem resource, the snippet property contains numerous fields, including the title, description, position, and resourceId properties. As such, if you set *part=snippet*, the API response will contain all of those properties. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + - explode: true + in: query + name: id + schema: + items: + type: string + type: array + style: form + - description: The *maxResults* parameter specifies the maximum number of items that should be returned in the result set. + in: query + name: maxResults + schema: + maximum: 50 + minimum: 0 + type: integer + - description: "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The CMS account that the user authenticates with must be linked to the specified YouTube content owner." + in: query + name: onBehalfOfContentOwner + schema: + type: string + - description: The *pageToken* parameter identifies a specific page in the result set that should be returned. In an API response, the nextPageToken and prevPageToken properties identify other pages that could be retrieved. + in: query + name: pageToken + schema: + type: string + - description: Return the playlist items within the given playlist. + in: query + name: playlistId + schema: + type: string + - description: Return the playlist items associated with the given video ID. + in: query + name: videoId + schema: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/PlaylistItemListResponse" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + - Oauth2: + - https://www.googleapis.com/auth/youtube.readonly + Oauth2c: + - https://www.googleapis.com/auth/youtube.readonly + - Oauth2: + - https://www.googleapis.com/auth/youtubepartner + Oauth2c: + - https://www.googleapis.com/auth/youtubepartner + tags: + - playlistItems + parameters: + - $ref: "#/components/parameters/_.xgafv" + - $ref: "#/components/parameters/access_token" + - $ref: "#/components/parameters/alt" + - $ref: "#/components/parameters/callback" + - $ref: "#/components/parameters/fields" + - $ref: "#/components/parameters/key" + - $ref: "#/components/parameters/oauth_token" + - $ref: "#/components/parameters/prettyPrint" + - $ref: "#/components/parameters/quotaUser" + - $ref: "#/components/parameters/upload_protocol" + - $ref: "#/components/parameters/uploadType" + post: + description: Inserts a new resource into this collection. + operationId: youtube.playlistItems.insert + parameters: + - description: The *part* parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response will include. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + - description: "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The CMS account that the user authenticates with must be linked to the specified YouTube content owner." + in: query + name: onBehalfOfContentOwner + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/PlaylistItem" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/PlaylistItem" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + - Oauth2: + - https://www.googleapis.com/auth/youtubepartner + Oauth2c: + - https://www.googleapis.com/auth/youtubepartner + tags: + - playlistItems + put: + description: Updates an existing resource. + operationId: youtube.playlistItems.update + parameters: + - description: The *part* parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response will include. Note that this method will override the existing values for all of the mutable properties that are contained in any parts that the parameter value specifies. For example, a playlist item can specify a start time and end time, which identify the times portion of the video that should play when users watch the video in the playlist. If your request is updating a playlist item that sets these values, and the request's part parameter value includes the contentDetails part, the playlist item's start and end times will be updated to whatever value the request body specifies. If the request body does not specify values, the existing start and end times will be removed and replaced with the default settings. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + - description: "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The CMS account that the user authenticates with must be linked to the specified YouTube content owner." + in: query + name: onBehalfOfContentOwner + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/PlaylistItem" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/PlaylistItem" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + - Oauth2: + - https://www.googleapis.com/auth/youtubepartner + Oauth2c: + - https://www.googleapis.com/auth/youtubepartner + tags: + - playlistItems + /youtube/v3/playlists: + delete: + description: Deletes a resource. + operationId: youtube.playlists.delete + parameters: + - in: query + name: id + required: true + schema: + type: string + - description: "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The CMS account that the user authenticates with must be linked to the specified YouTube content owner." + in: query + name: onBehalfOfContentOwner + schema: + type: string + responses: + "200": + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + - Oauth2: + - https://www.googleapis.com/auth/youtubepartner + Oauth2c: + - https://www.googleapis.com/auth/youtubepartner + tags: + - playlists + get: + description: Retrieves a list of resources, possibly filtered. + operationId: youtube.playlists.list + parameters: + - description: The *part* parameter specifies a comma-separated list of one or more playlist resource properties that the API response will include. If the parameter identifies a property that contains child properties, the child properties will be included in the response. For example, in a playlist resource, the snippet property contains properties like author, title, description, tags, and timeCreated. As such, if you set *part=snippet*, the API response will contain all of those properties. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + - description: Return the playlists owned by the specified channel ID. + in: query + name: channelId + schema: + type: string + - description: Return content in specified language + in: query + name: hl + schema: + type: string + - description: Return the playlists with the given IDs for Stubby or Apiary. + explode: true + in: query + name: id + schema: + items: + type: string + type: array + style: form + - description: The *maxResults* parameter specifies the maximum number of items that should be returned in the result set. + in: query + name: maxResults + schema: + maximum: 50 + minimum: 0 + type: integer + - description: Return the playlists owned by the authenticated user. + in: query + name: mine + schema: + type: boolean + - description: "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The CMS account that the user authenticates with must be linked to the specified YouTube content owner." + in: query + name: onBehalfOfContentOwner + schema: + type: string + - description: This parameter can only be used in a properly authorized request. *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwnerChannel* parameter specifies the YouTube channel ID of the channel to which a video is being added. This parameter is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it can only be used in conjunction with that parameter. In addition, the request must be authorized using a CMS account that is linked to the content owner that the onBehalfOfContentOwner parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value specifies must be linked to the content owner that the onBehalfOfContentOwner parameter specifies. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and perform actions on behalf of the channel specified in the parameter value, without having to provide authentication credentials for each separate channel. + in: query + name: onBehalfOfContentOwnerChannel + schema: + type: string + - description: The *pageToken* parameter identifies a specific page in the result set that should be returned. In an API response, the nextPageToken and prevPageToken properties identify other pages that could be retrieved. + in: query + name: pageToken + schema: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/PlaylistListResponse" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + - Oauth2: + - https://www.googleapis.com/auth/youtube.readonly + Oauth2c: + - https://www.googleapis.com/auth/youtube.readonly + - Oauth2: + - https://www.googleapis.com/auth/youtubepartner + Oauth2c: + - https://www.googleapis.com/auth/youtubepartner + tags: + - playlists + parameters: + - $ref: "#/components/parameters/_.xgafv" + - $ref: "#/components/parameters/access_token" + - $ref: "#/components/parameters/alt" + - $ref: "#/components/parameters/callback" + - $ref: "#/components/parameters/fields" + - $ref: "#/components/parameters/key" + - $ref: "#/components/parameters/oauth_token" + - $ref: "#/components/parameters/prettyPrint" + - $ref: "#/components/parameters/quotaUser" + - $ref: "#/components/parameters/upload_protocol" + - $ref: "#/components/parameters/uploadType" + post: + description: Inserts a new resource into this collection. + operationId: youtube.playlists.insert + parameters: + - description: The *part* parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response will include. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + - description: "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The CMS account that the user authenticates with must be linked to the specified YouTube content owner." + in: query + name: onBehalfOfContentOwner + schema: + type: string + - description: This parameter can only be used in a properly authorized request. *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwnerChannel* parameter specifies the YouTube channel ID of the channel to which a video is being added. This parameter is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it can only be used in conjunction with that parameter. In addition, the request must be authorized using a CMS account that is linked to the content owner that the onBehalfOfContentOwner parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value specifies must be linked to the content owner that the onBehalfOfContentOwner parameter specifies. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and perform actions on behalf of the channel specified in the parameter value, without having to provide authentication credentials for each separate channel. + in: query + name: onBehalfOfContentOwnerChannel + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/Playlist" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Playlist" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + - Oauth2: + - https://www.googleapis.com/auth/youtubepartner + Oauth2c: + - https://www.googleapis.com/auth/youtubepartner + tags: + - playlists + put: + description: Updates an existing resource. + operationId: youtube.playlists.update + parameters: + - description: The *part* parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response will include. Note that this method will override the existing values for mutable properties that are contained in any parts that the request body specifies. For example, a playlist's description is contained in the snippet part, which must be included in the request body. If the request does not specify a value for the snippet.description property, the playlist's existing description will be deleted. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + - description: "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The CMS account that the user authenticates with must be linked to the specified YouTube content owner." + in: query + name: onBehalfOfContentOwner + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/Playlist" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Playlist" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + - Oauth2: + - https://www.googleapis.com/auth/youtubepartner + Oauth2c: + - https://www.googleapis.com/auth/youtubepartner + tags: + - playlists + /youtube/v3/search: + get: + description: Retrieves a list of search resources + operationId: youtube.search.list + parameters: + - description: The *part* parameter specifies a comma-separated list of one or more search resource properties that the API response will include. Set the parameter value to snippet. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + - description: Filter on resources belonging to this channelId. + in: query + name: channelId + schema: + type: string + - description: Add a filter on the channel search. + in: query + name: channelType + schema: + enum: + - channelTypeUnspecified + - any + - show + type: string + - description: Filter on the livestream status of the videos. + in: query + name: eventType + schema: + enum: + - none + - upcoming + - live + - completed + type: string + - description: Search owned by a content owner. + in: query + name: forContentOwner + schema: + type: boolean + - description: Restrict the search to only retrieve videos uploaded using the project id of the authenticated user. + in: query + name: forDeveloper + schema: + type: boolean + - description: Search for the private videos of the authenticated user. + in: query + name: forMine + schema: + type: boolean + - description: Filter on location of the video + in: query + name: location + schema: + type: string + - description: Filter on distance from the location (specified above). + in: query + name: locationRadius + schema: + type: string + - description: The *maxResults* parameter specifies the maximum number of items that should be returned in the result set. + in: query + name: maxResults + schema: + maximum: 50 + minimum: 0 + type: integer + - description: "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The CMS account that the user authenticates with must be linked to the specified YouTube content owner." + in: query + name: onBehalfOfContentOwner + schema: + type: string + - description: Sort order of the results. + in: query + name: order + schema: + enum: + - searchSortUnspecified + - date + - rating + - viewCount + - relevance + - title + - videoCount + type: string + - description: The *pageToken* parameter identifies a specific page in the result set that should be returned. In an API response, the nextPageToken and prevPageToken properties identify other pages that could be retrieved. + in: query + name: pageToken + schema: + type: string + - description: Filter on resources published after this date. + in: query + name: publishedAfter + schema: + type: string + - description: Filter on resources published before this date. + in: query + name: publishedBefore + schema: + type: string + - description: Textual search terms to match. + in: query + name: q + schema: + type: string + - description: Display the content as seen by viewers in this country. + in: query + name: regionCode + schema: + type: string + - description: Search related to a resource. + in: query + name: relatedToVideoId + schema: + type: string + - description: Return results relevant to this language. + in: query + name: relevanceLanguage + schema: + type: string + - description: Indicates whether the search results should include restricted content as well as standard content. + in: query + name: safeSearch + schema: + enum: + - safeSearchSettingUnspecified + - none + - moderate + - strict + type: string + - description: Restrict results to a particular topic. + in: query + name: topicId + schema: + type: string + - description: Restrict results to a particular set of resource types from One Platform. + explode: true + in: query + name: type + schema: + items: + type: string + type: array + style: form + - description: Filter on the presence of captions on the videos. + in: query + name: videoCaption + schema: + enum: + - videoCaptionUnspecified + - any + - closedCaption + - none + type: string + - description: Filter on videos in a specific category. + in: query + name: videoCategoryId + schema: + type: string + - description: Filter on the definition of the videos. + in: query + name: videoDefinition + schema: + enum: + - any + - standard + - high + type: string + - description: Filter on 3d videos. + in: query + name: videoDimension + schema: + enum: + - any + - 2d + - 3d + type: string + - description: Filter on the duration of the videos. + in: query + name: videoDuration + schema: + enum: + - videoDurationUnspecified + - any + - short + - medium + - long + type: string + - description: Filter on embeddable videos. + in: query + name: videoEmbeddable + schema: + enum: + - videoEmbeddableUnspecified + - any + - "true" + type: string + - description: Filter on the license of the videos. + in: query + name: videoLicense + schema: + enum: + - any + - youtube + - creativeCommon + type: string + - description: Filter on syndicated videos. + in: query + name: videoSyndicated + schema: + enum: + - videoSyndicatedUnspecified + - any + - "true" + type: string + - description: Filter on videos of a specific type. + in: query + name: videoType + schema: + enum: + - videoTypeUnspecified + - any + - movie + - episode + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/SearchListResponse" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + - Oauth2: + - https://www.googleapis.com/auth/youtube.readonly + Oauth2c: + - https://www.googleapis.com/auth/youtube.readonly + - Oauth2: + - https://www.googleapis.com/auth/youtubepartner + Oauth2c: + - https://www.googleapis.com/auth/youtubepartner + tags: + - search + parameters: + - $ref: "#/components/parameters/_.xgafv" + - $ref: "#/components/parameters/access_token" + - $ref: "#/components/parameters/alt" + - $ref: "#/components/parameters/callback" + - $ref: "#/components/parameters/fields" + - $ref: "#/components/parameters/key" + - $ref: "#/components/parameters/oauth_token" + - $ref: "#/components/parameters/prettyPrint" + - $ref: "#/components/parameters/quotaUser" + - $ref: "#/components/parameters/upload_protocol" + - $ref: "#/components/parameters/uploadType" + /youtube/v3/subscriptions: + delete: + description: Deletes a resource. + operationId: youtube.subscriptions.delete + parameters: + - in: query + name: id + required: true + schema: + type: string + responses: + "200": + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + - Oauth2: + - https://www.googleapis.com/auth/youtubepartner + Oauth2c: + - https://www.googleapis.com/auth/youtubepartner + tags: + - subscriptions + get: + description: Retrieves a list of resources, possibly filtered. + operationId: youtube.subscriptions.list + parameters: + - description: The *part* parameter specifies a comma-separated list of one or more subscription resource properties that the API response will include. If the parameter identifies a property that contains child properties, the child properties will be included in the response. For example, in a subscription resource, the snippet property contains other properties, such as a display title for the subscription. If you set *part=snippet*, the API response will also contain all of those nested properties. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + - description: Return the subscriptions of the given channel owner. + in: query + name: channelId + schema: + type: string + - description: Return the subscriptions to the subset of these channels that the authenticated user is subscribed to. + in: query + name: forChannelId + schema: + type: string + - description: Return the subscriptions with the given IDs for Stubby or Apiary. + explode: true + in: query + name: id + schema: + items: + type: string + type: array + style: form + - description: The *maxResults* parameter specifies the maximum number of items that should be returned in the result set. + in: query + name: maxResults + schema: + maximum: 50 + minimum: 0 + type: integer + - description: Flag for returning the subscriptions of the authenticated user. + in: query + name: mine + schema: + type: boolean + - in: query + name: myRecentSubscribers + schema: + type: boolean + - description: Return the subscribers of the given channel owner. + in: query + name: mySubscribers + schema: + type: boolean + - description: "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The CMS account that the user authenticates with must be linked to the specified YouTube content owner." + in: query + name: onBehalfOfContentOwner + schema: + type: string + - description: This parameter can only be used in a properly authorized request. *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwnerChannel* parameter specifies the YouTube channel ID of the channel to which a video is being added. This parameter is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it can only be used in conjunction with that parameter. In addition, the request must be authorized using a CMS account that is linked to the content owner that the onBehalfOfContentOwner parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value specifies must be linked to the content owner that the onBehalfOfContentOwner parameter specifies. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and perform actions on behalf of the channel specified in the parameter value, without having to provide authentication credentials for each separate channel. + in: query + name: onBehalfOfContentOwnerChannel + schema: + type: string + - description: The order of the returned subscriptions + in: query + name: order + schema: + enum: + - subscriptionOrderUnspecified + - relevance + - unread + - alphabetical + type: string + - description: The *pageToken* parameter identifies a specific page in the result set that should be returned. In an API response, the nextPageToken and prevPageToken properties identify other pages that could be retrieved. + in: query + name: pageToken + schema: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/SubscriptionListResponse" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + - Oauth2: + - https://www.googleapis.com/auth/youtube.readonly + Oauth2c: + - https://www.googleapis.com/auth/youtube.readonly + - Oauth2: + - https://www.googleapis.com/auth/youtubepartner + Oauth2c: + - https://www.googleapis.com/auth/youtubepartner + tags: + - subscriptions + parameters: + - $ref: "#/components/parameters/_.xgafv" + - $ref: "#/components/parameters/access_token" + - $ref: "#/components/parameters/alt" + - $ref: "#/components/parameters/callback" + - $ref: "#/components/parameters/fields" + - $ref: "#/components/parameters/key" + - $ref: "#/components/parameters/oauth_token" + - $ref: "#/components/parameters/prettyPrint" + - $ref: "#/components/parameters/quotaUser" + - $ref: "#/components/parameters/upload_protocol" + - $ref: "#/components/parameters/uploadType" + post: + description: Inserts a new resource into this collection. + operationId: youtube.subscriptions.insert + parameters: + - description: The *part* parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response will include. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/Subscription" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Subscription" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + - Oauth2: + - https://www.googleapis.com/auth/youtubepartner + Oauth2c: + - https://www.googleapis.com/auth/youtubepartner + tags: + - subscriptions + /youtube/v3/superChatEvents: + get: + description: Retrieves a list of resources, possibly filtered. + operationId: youtube.superChatEvents.list + parameters: + - description: The *part* parameter specifies the superChatEvent resource parts that the API response will include. This parameter is currently not supported. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + - description: Return rendered funding amounts in specified language. + in: query + name: hl + schema: + type: string + - description: The *maxResults* parameter specifies the maximum number of items that should be returned in the result set. + in: query + name: maxResults + schema: + maximum: 50 + minimum: 1 + type: integer + - description: The *pageToken* parameter identifies a specific page in the result set that should be returned. In an API response, the nextPageToken and prevPageToken properties identify other pages that could be retrieved. + in: query + name: pageToken + schema: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/SuperChatEventListResponse" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + - Oauth2: + - https://www.googleapis.com/auth/youtube.readonly + Oauth2c: + - https://www.googleapis.com/auth/youtube.readonly + tags: + - superChatEvents + parameters: + - $ref: "#/components/parameters/_.xgafv" + - $ref: "#/components/parameters/access_token" + - $ref: "#/components/parameters/alt" + - $ref: "#/components/parameters/callback" + - $ref: "#/components/parameters/fields" + - $ref: "#/components/parameters/key" + - $ref: "#/components/parameters/oauth_token" + - $ref: "#/components/parameters/prettyPrint" + - $ref: "#/components/parameters/quotaUser" + - $ref: "#/components/parameters/upload_protocol" + - $ref: "#/components/parameters/uploadType" + /youtube/v3/tests: + parameters: + - $ref: "#/components/parameters/_.xgafv" + - $ref: "#/components/parameters/access_token" + - $ref: "#/components/parameters/alt" + - $ref: "#/components/parameters/callback" + - $ref: "#/components/parameters/fields" + - $ref: "#/components/parameters/key" + - $ref: "#/components/parameters/oauth_token" + - $ref: "#/components/parameters/prettyPrint" + - $ref: "#/components/parameters/quotaUser" + - $ref: "#/components/parameters/upload_protocol" + - $ref: "#/components/parameters/uploadType" + post: + description: POST method. + operationId: youtube.tests.insert + parameters: + - explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + - in: query + name: externalChannelId + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/TestItem" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/TestItem" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube.readonly + Oauth2c: + - https://www.googleapis.com/auth/youtube.readonly + tags: + - tests + /youtube/v3/thirdPartyLinks: + delete: + description: Deletes a resource. + operationId: youtube.thirdPartyLinks.delete + parameters: + - description: Delete the partner links with the given linking token. + in: query + name: linkingToken + required: true + schema: + type: string + - description: Type of the link to be deleted. + in: query + name: type + required: true + schema: + enum: + - linkUnspecified + - channelToStoreLink + type: string + - description: Channel ID to which changes should be applied, for delegation. + in: query + name: externalChannelId + schema: + type: string + - description: Do not use. Required for compatibility. + explode: true + in: query + name: part + schema: + items: + type: string + type: array + style: form + responses: + "200": + description: Successful response + tags: + - thirdPartyLinks + get: + description: Retrieves a list of resources, possibly filtered. + operationId: youtube.thirdPartyLinks.list + parameters: + - description: The *part* parameter specifies the thirdPartyLink resource parts that the API response will include. Supported values are linkingToken, status, and snippet. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + - description: Channel ID to which changes should be applied, for delegation. + in: query + name: externalChannelId + schema: + type: string + - description: Get a third party link with the given linking token. + in: query + name: linkingToken + schema: + type: string + - description: Get a third party link of the given type. + in: query + name: type + schema: + enum: + - linkUnspecified + - channelToStoreLink + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/ThirdPartyLinkListResponse" + description: Successful response + tags: + - thirdPartyLinks + parameters: + - $ref: "#/components/parameters/_.xgafv" + - $ref: "#/components/parameters/access_token" + - $ref: "#/components/parameters/alt" + - $ref: "#/components/parameters/callback" + - $ref: "#/components/parameters/fields" + - $ref: "#/components/parameters/key" + - $ref: "#/components/parameters/oauth_token" + - $ref: "#/components/parameters/prettyPrint" + - $ref: "#/components/parameters/quotaUser" + - $ref: "#/components/parameters/upload_protocol" + - $ref: "#/components/parameters/uploadType" + post: + description: Inserts a new resource into this collection. + operationId: youtube.thirdPartyLinks.insert + parameters: + - description: The *part* parameter specifies the thirdPartyLink resource parts that the API request and response will include. Supported values are linkingToken, status, and snippet. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + - description: Channel ID to which changes should be applied, for delegation. + in: query + name: externalChannelId + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/ThirdPartyLink" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/ThirdPartyLink" + description: Successful response + tags: + - thirdPartyLinks + put: + description: Updates an existing resource. + operationId: youtube.thirdPartyLinks.update + parameters: + - description: The *part* parameter specifies the thirdPartyLink resource parts that the API request and response will include. Supported values are linkingToken, status, and snippet. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + - description: Channel ID to which changes should be applied, for delegation. + in: query + name: externalChannelId + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/ThirdPartyLink" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/ThirdPartyLink" + description: Successful response + tags: + - thirdPartyLinks + /youtube/v3/thumbnails/set: + parameters: + - $ref: "#/components/parameters/_.xgafv" + - $ref: "#/components/parameters/access_token" + - $ref: "#/components/parameters/alt" + - $ref: "#/components/parameters/callback" + - $ref: "#/components/parameters/fields" + - $ref: "#/components/parameters/key" + - $ref: "#/components/parameters/oauth_token" + - $ref: "#/components/parameters/prettyPrint" + - $ref: "#/components/parameters/quotaUser" + - $ref: "#/components/parameters/upload_protocol" + - $ref: "#/components/parameters/uploadType" + post: + description: As this is not an insert in a strict sense (it supports uploading/setting of a thumbnail for multiple videos, which doesn't result in creation of a single resource), I use a custom verb here. + operationId: youtube.thumbnails.set + parameters: + - description: Returns the Thumbnail with the given video IDs for Stubby or Apiary. + in: query + name: videoId + required: true + schema: + type: string + - description: "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The actual CMS account that the user authenticates with must be linked to the specified YouTube content owner." + in: query + name: onBehalfOfContentOwner + schema: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/ThumbnailSetResponse" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + - Oauth2: + - https://www.googleapis.com/auth/youtube.upload + Oauth2c: + - https://www.googleapis.com/auth/youtube.upload + - Oauth2: + - https://www.googleapis.com/auth/youtubepartner + Oauth2c: + - https://www.googleapis.com/auth/youtubepartner + tags: + - thumbnails + /youtube/v3/videoAbuseReportReasons: + get: + description: Retrieves a list of resources, possibly filtered. + operationId: youtube.videoAbuseReportReasons.list + parameters: + - description: The *part* parameter specifies the videoCategory resource parts that the API response will include. Supported values are id and snippet. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + - in: query + name: hl + schema: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/VideoAbuseReportReasonListResponse" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + - Oauth2: + - https://www.googleapis.com/auth/youtube.readonly + Oauth2c: + - https://www.googleapis.com/auth/youtube.readonly + tags: + - videoAbuseReportReasons + parameters: + - $ref: "#/components/parameters/_.xgafv" + - $ref: "#/components/parameters/access_token" + - $ref: "#/components/parameters/alt" + - $ref: "#/components/parameters/callback" + - $ref: "#/components/parameters/fields" + - $ref: "#/components/parameters/key" + - $ref: "#/components/parameters/oauth_token" + - $ref: "#/components/parameters/prettyPrint" + - $ref: "#/components/parameters/quotaUser" + - $ref: "#/components/parameters/upload_protocol" + - $ref: "#/components/parameters/uploadType" + /youtube/v3/videoCategories: + get: + description: Retrieves a list of resources, possibly filtered. + operationId: youtube.videoCategories.list + parameters: + - description: The *part* parameter specifies the videoCategory resource properties that the API response will include. Set the parameter value to snippet. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + - in: query + name: hl + schema: + type: string + - description: Returns the video categories with the given IDs for Stubby or Apiary. + explode: true + in: query + name: id + schema: + items: + type: string + type: array + style: form + - in: query + name: regionCode + schema: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/VideoCategoryListResponse" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + - Oauth2: + - https://www.googleapis.com/auth/youtube.readonly + Oauth2c: + - https://www.googleapis.com/auth/youtube.readonly + - Oauth2: + - https://www.googleapis.com/auth/youtubepartner + Oauth2c: + - https://www.googleapis.com/auth/youtubepartner + tags: + - videoCategories + parameters: + - $ref: "#/components/parameters/_.xgafv" + - $ref: "#/components/parameters/access_token" + - $ref: "#/components/parameters/alt" + - $ref: "#/components/parameters/callback" + - $ref: "#/components/parameters/fields" + - $ref: "#/components/parameters/key" + - $ref: "#/components/parameters/oauth_token" + - $ref: "#/components/parameters/prettyPrint" + - $ref: "#/components/parameters/quotaUser" + - $ref: "#/components/parameters/upload_protocol" + - $ref: "#/components/parameters/uploadType" + /youtube/v3/videos: + delete: + description: Deletes a resource. + operationId: youtube.videos.delete + parameters: + - in: query + name: id + required: true + schema: + type: string + - description: "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The actual CMS account that the user authenticates with must be linked to the specified YouTube content owner." + in: query + name: onBehalfOfContentOwner + schema: + type: string + responses: + "200": + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + - Oauth2: + - https://www.googleapis.com/auth/youtubepartner + Oauth2c: + - https://www.googleapis.com/auth/youtubepartner + tags: + - videos + get: + description: Retrieves a list of resources, possibly filtered. + operationId: youtube.videos.list + parameters: + - description: The *part* parameter specifies a comma-separated list of one or more video resource properties that the API response will include. If the parameter identifies a property that contains child properties, the child properties will be included in the response. For example, in a video resource, the snippet property contains the channelId, title, description, tags, and categoryId properties. As such, if you set *part=snippet*, the API response will contain all of those properties. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + - description: Return the videos that are in the specified chart. + in: query + name: chart + schema: + enum: + - chartUnspecified + - mostPopular + type: string + - description: Stands for "host language". Specifies the localization language of the metadata to be filled into snippet.localized. The field is filled with the default metadata if there is no localization in the specified language. The parameter value must be a language code included in the list returned by the i18nLanguages.list method (e.g. en_US, es_MX). + in: query + name: hl + schema: + type: string + - description: Return videos with the given ids. + explode: true + in: query + name: id + schema: + items: + type: string + type: array + style: form + - in: query + name: locale + schema: + type: string + - in: query + name: maxHeight + schema: + maximum: 8192 + minimum: 72 + type: integer + - description: The *maxResults* parameter specifies the maximum number of items that should be returned in the result set. *Note:* This parameter is supported for use in conjunction with the myRating and chart parameters, but it is not supported for use in conjunction with the id parameter. + in: query + name: maxResults + schema: + maximum: 50 + minimum: 1 + type: integer + - description: Return the player with maximum height specified in + in: query + name: maxWidth + schema: + maximum: 8192 + minimum: 72 + type: integer + - description: Return videos liked/disliked by the authenticated user. Does not support RateType.RATED_TYPE_NONE. + in: query + name: myRating + schema: + enum: + - none + - like + - dislike + type: string + - description: "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The CMS account that the user authenticates with must be linked to the specified YouTube content owner." + in: query + name: onBehalfOfContentOwner + schema: + type: string + - description: The *pageToken* parameter identifies a specific page in the result set that should be returned. In an API response, the nextPageToken and prevPageToken properties identify other pages that could be retrieved. *Note:* This parameter is supported for use in conjunction with the myRating and chart parameters, but it is not supported for use in conjunction with the id parameter. + in: query + name: pageToken + schema: + type: string + - description: Use a chart that is specific to the specified region + in: query + name: regionCode + schema: + type: string + - description: Use chart that is specific to the specified video category + in: query + name: videoCategoryId + schema: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/VideoListResponse" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + - Oauth2: + - https://www.googleapis.com/auth/youtube.readonly + Oauth2c: + - https://www.googleapis.com/auth/youtube.readonly + - Oauth2: + - https://www.googleapis.com/auth/youtubepartner + Oauth2c: + - https://www.googleapis.com/auth/youtubepartner + tags: + - videos + parameters: + - $ref: "#/components/parameters/_.xgafv" + - $ref: "#/components/parameters/access_token" + - $ref: "#/components/parameters/alt" + - $ref: "#/components/parameters/callback" + - $ref: "#/components/parameters/fields" + - $ref: "#/components/parameters/key" + - $ref: "#/components/parameters/oauth_token" + - $ref: "#/components/parameters/prettyPrint" + - $ref: "#/components/parameters/quotaUser" + - $ref: "#/components/parameters/upload_protocol" + - $ref: "#/components/parameters/uploadType" + post: + description: Inserts a new resource into this collection. + operationId: youtube.videos.insert + parameters: + - description: The *part* parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response will include. Note that not all parts contain properties that can be set when inserting or updating a video. For example, the statistics object encapsulates statistics that YouTube calculates for a video and does not contain values that you can set or modify. If the parameter value specifies a part that does not contain mutable values, that part will still be included in the API response. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + - description: Should auto-levels be applied to the upload. + in: query + name: autoLevels + schema: + type: boolean + - description: Notify the channel subscribers about the new video. As default, the notification is enabled. + in: query + name: notifySubscribers + schema: + type: boolean + - description: "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The CMS account that the user authenticates with must be linked to the specified YouTube content owner." + in: query + name: onBehalfOfContentOwner + schema: + type: string + - description: This parameter can only be used in a properly authorized request. *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwnerChannel* parameter specifies the YouTube channel ID of the channel to which a video is being added. This parameter is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it can only be used in conjunction with that parameter. In addition, the request must be authorized using a CMS account that is linked to the content owner that the onBehalfOfContentOwner parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value specifies must be linked to the content owner that the onBehalfOfContentOwner parameter specifies. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and perform actions on behalf of the channel specified in the parameter value, without having to provide authentication credentials for each separate channel. + in: query + name: onBehalfOfContentOwnerChannel + schema: + type: string + - description: Should stabilize be applied to the upload. + in: query + name: stabilize + schema: + type: boolean + requestBody: + content: + application/octet-stream: + schema: + $ref: "#/components/schemas/Video" + video/1d-interleaved-parityfec: + schema: + $ref: "#/components/schemas/Video" + video/3gpp: + schema: + $ref: "#/components/schemas/Video" + video/3gpp-tt: + schema: + $ref: "#/components/schemas/Video" + video/3gpp2: + schema: + $ref: "#/components/schemas/Video" + video/av1: + schema: + $ref: "#/components/schemas/Video" + video/bmpeg: + schema: + $ref: "#/components/schemas/Video" + video/bt656: + schema: + $ref: "#/components/schemas/Video" + video/celb: + schema: + $ref: "#/components/schemas/Video" + video/dv: + schema: + $ref: "#/components/schemas/Video" + video/encaprtp: + schema: + $ref: "#/components/schemas/Video" + video/ffv1: + schema: + $ref: "#/components/schemas/Video" + video/flexfec: + schema: + $ref: "#/components/schemas/Video" + video/h261: + schema: + $ref: "#/components/schemas/Video" + video/h263: + schema: + $ref: "#/components/schemas/Video" + video/h263-1998: + schema: + $ref: "#/components/schemas/Video" + video/h263-2000: + schema: + $ref: "#/components/schemas/Video" + video/h264: + schema: + $ref: "#/components/schemas/Video" + video/h264-rcdo: + schema: + $ref: "#/components/schemas/Video" + video/h264-svc: + schema: + $ref: "#/components/schemas/Video" + video/h265: + schema: + $ref: "#/components/schemas/Video" + video/iso.segment: + schema: + $ref: "#/components/schemas/Video" + video/jpeg: + schema: + $ref: "#/components/schemas/Video" + video/jpeg2000: + schema: + $ref: "#/components/schemas/Video" + video/jpm: + schema: + $ref: "#/components/schemas/Video" + video/jxsv: + schema: + $ref: "#/components/schemas/Video" + video/mj2: + schema: + $ref: "#/components/schemas/Video" + video/mp1s: + schema: + $ref: "#/components/schemas/Video" + video/mp2p: + schema: + $ref: "#/components/schemas/Video" + video/mp2t: + schema: + $ref: "#/components/schemas/Video" + video/mp4: + schema: + $ref: "#/components/schemas/Video" + video/mp4v-es: + schema: + $ref: "#/components/schemas/Video" + video/mpeg: + schema: + $ref: "#/components/schemas/Video" + video/mpeg4-generic: + schema: + $ref: "#/components/schemas/Video" + video/mpv: + schema: + $ref: "#/components/schemas/Video" + video/nv: + schema: + $ref: "#/components/schemas/Video" + video/ogg: + schema: + $ref: "#/components/schemas/Video" + video/parityfec: + schema: + $ref: "#/components/schemas/Video" + video/pointer: + schema: + $ref: "#/components/schemas/Video" + video/quicktime: + schema: + $ref: "#/components/schemas/Video" + video/raptorfec: + schema: + $ref: "#/components/schemas/Video" + video/raw: + schema: + $ref: "#/components/schemas/Video" + video/rtp-enc-aescm128: + schema: + $ref: "#/components/schemas/Video" + video/rtploopback: + schema: + $ref: "#/components/schemas/Video" + video/rtx: + schema: + $ref: "#/components/schemas/Video" + video/scip: + schema: + $ref: "#/components/schemas/Video" + video/smpte291: + schema: + $ref: "#/components/schemas/Video" + video/smpte292m: + schema: + $ref: "#/components/schemas/Video" + video/ulpfec: + schema: + $ref: "#/components/schemas/Video" + video/vc1: + schema: + $ref: "#/components/schemas/Video" + video/vc2: + schema: + $ref: "#/components/schemas/Video" + video/vnd.cctv: + schema: + $ref: "#/components/schemas/Video" + video/vnd.dece.hd: + schema: + $ref: "#/components/schemas/Video" + video/vnd.dece.mobile: + schema: + $ref: "#/components/schemas/Video" + video/vnd.dece.mp4: + schema: + $ref: "#/components/schemas/Video" + video/vnd.dece.pd: + schema: + $ref: "#/components/schemas/Video" + video/vnd.dece.sd: + schema: + $ref: "#/components/schemas/Video" + video/vnd.dece.video: + schema: + $ref: "#/components/schemas/Video" + video/vnd.directv.mpeg: + schema: + $ref: "#/components/schemas/Video" + video/vnd.directv.mpeg-tts: + schema: + $ref: "#/components/schemas/Video" + video/vnd.dlna.mpeg-tts: + schema: + $ref: "#/components/schemas/Video" + video/vnd.dvb.file: + schema: + $ref: "#/components/schemas/Video" + video/vnd.fvt: + schema: + $ref: "#/components/schemas/Video" + video/vnd.hns.video: + schema: + $ref: "#/components/schemas/Video" + video/vnd.iptvforum.1dparityfec-1010: + schema: + $ref: "#/components/schemas/Video" + video/vnd.iptvforum.1dparityfec-2005: + schema: + $ref: "#/components/schemas/Video" + video/vnd.iptvforum.2dparityfec-1010: + schema: + $ref: "#/components/schemas/Video" + video/vnd.iptvforum.2dparityfec-2005: + schema: + $ref: "#/components/schemas/Video" + video/vnd.iptvforum.ttsavc: + schema: + $ref: "#/components/schemas/Video" + video/vnd.iptvforum.ttsmpeg2: + schema: + $ref: "#/components/schemas/Video" + video/vnd.motorola.video: + schema: + $ref: "#/components/schemas/Video" + video/vnd.motorola.videop: + schema: + $ref: "#/components/schemas/Video" + video/vnd.mpegurl: + schema: + $ref: "#/components/schemas/Video" + video/vnd.ms-playready.media.pyv: + schema: + $ref: "#/components/schemas/Video" + video/vnd.nokia.interleaved-multimedia: + schema: + $ref: "#/components/schemas/Video" + video/vnd.nokia.mp4vr: + schema: + $ref: "#/components/schemas/Video" + video/vnd.nokia.videovoip: + schema: + $ref: "#/components/schemas/Video" + video/vnd.objectvideo: + schema: + $ref: "#/components/schemas/Video" + video/vnd.radgamettools.bink: + schema: + $ref: "#/components/schemas/Video" + video/vnd.radgamettools.smacker: + schema: + $ref: "#/components/schemas/Video" + video/vnd.sealed.mpeg1: + schema: + $ref: "#/components/schemas/Video" + video/vnd.sealed.mpeg4: + schema: + $ref: "#/components/schemas/Video" + video/vnd.sealed.swf: + schema: + $ref: "#/components/schemas/Video" + video/vnd.sealedmedia.softseal.mov: + schema: + $ref: "#/components/schemas/Video" + video/vnd.uvvu.mp4: + schema: + $ref: "#/components/schemas/Video" + video/vnd.vivo: + schema: + $ref: "#/components/schemas/Video" + video/vnd.youtube.yt: + schema: + $ref: "#/components/schemas/Video" + video/vp8: + schema: + $ref: "#/components/schemas/Video" + video/vp9: + schema: + $ref: "#/components/schemas/Video" + video/webm: + schema: + $ref: "#/components/schemas/Video" + video/x-f4v: + schema: + $ref: "#/components/schemas/Video" + video/x-fli: + schema: + $ref: "#/components/schemas/Video" + video/x-flv: + schema: + $ref: "#/components/schemas/Video" + video/x-m4v: + schema: + $ref: "#/components/schemas/Video" + video/x-matroska: + schema: + $ref: "#/components/schemas/Video" + video/x-mng: + schema: + $ref: "#/components/schemas/Video" + video/x-ms-asf: + schema: + $ref: "#/components/schemas/Video" + video/x-ms-vob: + schema: + $ref: "#/components/schemas/Video" + video/x-ms-wm: + schema: + $ref: "#/components/schemas/Video" + video/x-ms-wmv: + schema: + $ref: "#/components/schemas/Video" + video/x-ms-wmx: + schema: + $ref: "#/components/schemas/Video" + video/x-ms-wvx: + schema: + $ref: "#/components/schemas/Video" + video/x-msvideo: + schema: + $ref: "#/components/schemas/Video" + video/x-sgi-movie: + schema: + $ref: "#/components/schemas/Video" + video/x-smv: + schema: + $ref: "#/components/schemas/Video" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Video" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + - Oauth2: + - https://www.googleapis.com/auth/youtube.upload + Oauth2c: + - https://www.googleapis.com/auth/youtube.upload + - Oauth2: + - https://www.googleapis.com/auth/youtubepartner + Oauth2c: + - https://www.googleapis.com/auth/youtubepartner + tags: + - videos + put: + description: Updates an existing resource. + operationId: youtube.videos.update + parameters: + - description: The *part* parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response will include. Note that this method will override the existing values for all of the mutable properties that are contained in any parts that the parameter value specifies. For example, a video's privacy setting is contained in the status part. As such, if your request is updating a private video, and the request's part parameter value includes the status part, the video's privacy setting will be updated to whatever value the request body specifies. If the request body does not specify a value, the existing privacy setting will be removed and the video will revert to the default privacy setting. In addition, not all parts contain properties that can be set when inserting or updating a video. For example, the statistics object encapsulates statistics that YouTube calculates for a video and does not contain values that you can set or modify. If the parameter value specifies a part that does not contain mutable values, that part will still be included in the API response. + explode: true + in: query + name: part + required: true + schema: + items: + type: string + type: array + style: form + - description: "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The actual CMS account that the user authenticates with must be linked to the specified YouTube content owner." + in: query + name: onBehalfOfContentOwner + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/Video" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Video" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + - Oauth2: + - https://www.googleapis.com/auth/youtubepartner + Oauth2c: + - https://www.googleapis.com/auth/youtubepartner + tags: + - videos + /youtube/v3/videos/getRating: + get: + description: Retrieves the ratings that the authorized user gave to a list of specified videos. + operationId: youtube.videos.getRating + parameters: + - explode: true + in: query + name: id + required: true + schema: + items: + type: string + type: array + style: form + - description: "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The CMS account that the user authenticates with must be linked to the specified YouTube content owner." + in: query + name: onBehalfOfContentOwner + schema: + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/VideoGetRatingResponse" + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + - Oauth2: + - https://www.googleapis.com/auth/youtubepartner + Oauth2c: + - https://www.googleapis.com/auth/youtubepartner + tags: + - videos + parameters: + - $ref: "#/components/parameters/_.xgafv" + - $ref: "#/components/parameters/access_token" + - $ref: "#/components/parameters/alt" + - $ref: "#/components/parameters/callback" + - $ref: "#/components/parameters/fields" + - $ref: "#/components/parameters/key" + - $ref: "#/components/parameters/oauth_token" + - $ref: "#/components/parameters/prettyPrint" + - $ref: "#/components/parameters/quotaUser" + - $ref: "#/components/parameters/upload_protocol" + - $ref: "#/components/parameters/uploadType" + /youtube/v3/videos/rate: + parameters: + - $ref: "#/components/parameters/_.xgafv" + - $ref: "#/components/parameters/access_token" + - $ref: "#/components/parameters/alt" + - $ref: "#/components/parameters/callback" + - $ref: "#/components/parameters/fields" + - $ref: "#/components/parameters/key" + - $ref: "#/components/parameters/oauth_token" + - $ref: "#/components/parameters/prettyPrint" + - $ref: "#/components/parameters/quotaUser" + - $ref: "#/components/parameters/upload_protocol" + - $ref: "#/components/parameters/uploadType" + post: + description: Adds a like or dislike rating to a video or removes a rating from a video. + operationId: youtube.videos.rate + parameters: + - in: query + name: id + required: true + schema: + type: string + - in: query + name: rating + required: true + schema: + enum: + - none + - like + - dislike + type: string + responses: + "200": + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + - Oauth2: + - https://www.googleapis.com/auth/youtubepartner + Oauth2c: + - https://www.googleapis.com/auth/youtubepartner + tags: + - videos + /youtube/v3/videos/reportAbuse: + parameters: + - $ref: "#/components/parameters/_.xgafv" + - $ref: "#/components/parameters/access_token" + - $ref: "#/components/parameters/alt" + - $ref: "#/components/parameters/callback" + - $ref: "#/components/parameters/fields" + - $ref: "#/components/parameters/key" + - $ref: "#/components/parameters/oauth_token" + - $ref: "#/components/parameters/prettyPrint" + - $ref: "#/components/parameters/quotaUser" + - $ref: "#/components/parameters/upload_protocol" + - $ref: "#/components/parameters/uploadType" + post: + description: Report abuse for a video. + operationId: youtube.videos.reportAbuse + parameters: + - description: "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The CMS account that the user authenticates with must be linked to the specified YouTube content owner." + in: query + name: onBehalfOfContentOwner + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/VideoAbuseReport" + responses: + "200": + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + - Oauth2: + - https://www.googleapis.com/auth/youtubepartner + Oauth2c: + - https://www.googleapis.com/auth/youtubepartner + tags: + - videos + /youtube/v3/watermarks/set: + parameters: + - $ref: "#/components/parameters/_.xgafv" + - $ref: "#/components/parameters/access_token" + - $ref: "#/components/parameters/alt" + - $ref: "#/components/parameters/callback" + - $ref: "#/components/parameters/fields" + - $ref: "#/components/parameters/key" + - $ref: "#/components/parameters/oauth_token" + - $ref: "#/components/parameters/prettyPrint" + - $ref: "#/components/parameters/quotaUser" + - $ref: "#/components/parameters/upload_protocol" + - $ref: "#/components/parameters/uploadType" + post: + description: Allows upload of watermark image and setting it for a channel. + operationId: youtube.watermarks.set + parameters: + - in: query + name: channelId + required: true + schema: + type: string + - description: "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The CMS account that the user authenticates with must be linked to the specified YouTube content owner." + in: query + name: onBehalfOfContentOwner + schema: + type: string + requestBody: + content: + application/octet-stream: + schema: + $ref: "#/components/schemas/InvideoBranding" + image/jpeg: + schema: + $ref: "#/components/schemas/InvideoBranding" + image/png: + schema: + $ref: "#/components/schemas/InvideoBranding" + responses: + "200": + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + - Oauth2: + - https://www.googleapis.com/auth/youtube.upload + Oauth2c: + - https://www.googleapis.com/auth/youtube.upload + - Oauth2: + - https://www.googleapis.com/auth/youtubepartner + Oauth2c: + - https://www.googleapis.com/auth/youtubepartner + tags: + - watermarks + /youtube/v3/watermarks/unset: + parameters: + - $ref: "#/components/parameters/_.xgafv" + - $ref: "#/components/parameters/access_token" + - $ref: "#/components/parameters/alt" + - $ref: "#/components/parameters/callback" + - $ref: "#/components/parameters/fields" + - $ref: "#/components/parameters/key" + - $ref: "#/components/parameters/oauth_token" + - $ref: "#/components/parameters/prettyPrint" + - $ref: "#/components/parameters/quotaUser" + - $ref: "#/components/parameters/upload_protocol" + - $ref: "#/components/parameters/uploadType" + post: + description: Allows removal of channel watermark. + operationId: youtube.watermarks.unset + parameters: + - in: query + name: channelId + required: true + schema: + type: string + - description: "*Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The CMS account that the user authenticates with must be linked to the specified YouTube content owner." + in: query + name: onBehalfOfContentOwner + schema: + type: string + responses: + "200": + description: Successful response + security: + - Oauth2: + - https://www.googleapis.com/auth/youtube + Oauth2c: + - https://www.googleapis.com/auth/youtube + - Oauth2: + - https://www.googleapis.com/auth/youtube.force-ssl + Oauth2c: + - https://www.googleapis.com/auth/youtube.force-ssl + - Oauth2: + - https://www.googleapis.com/auth/youtubepartner + Oauth2c: + - https://www.googleapis.com/auth/youtubepartner + tags: + - watermarks +components: + parameters: + _.xgafv: + description: V1 error format. + in: query + name: $.xgafv + schema: + enum: + - "1" + - "2" + type: string + access_token: + description: OAuth access token. + in: query + name: access_token + schema: + type: string + alt: + description: Data format for response. + in: query + name: alt + schema: + enum: + - json + - media + - proto + type: string + callback: + description: JSONP + in: query + name: callback + schema: + type: string + fields: + description: Selector specifying which fields to include in a partial response. + in: query + name: fields + schema: + type: string + key: + description: API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token. + in: query + name: key + schema: + type: string + oauth_token: + description: OAuth 2.0 token for the current user. + in: query + name: oauth_token + schema: + type: string + prettyPrint: + description: Returns response with indentations and line breaks. + in: query + name: prettyPrint + schema: + type: boolean + quotaUser: + description: Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters. + in: query + name: quotaUser + schema: + type: string + uploadType: + description: Legacy upload protocol for media (e.g. "media", "multipart"). + in: query + name: uploadType + schema: + type: string + upload_protocol: + description: Upload protocol for media (e.g. "raw", "multipart"). + in: query + name: upload_protocol + schema: + type: string + schemas: + AbuseReport: + properties: + abuseTypes: + items: + $ref: "#/components/schemas/AbuseType" + type: array + description: + type: string + relatedEntities: + items: + $ref: "#/components/schemas/RelatedEntity" + type: array + subject: + $ref: "#/components/schemas/Entity" + type: object + AbuseType: + properties: + id: + type: string + type: object + AccessPolicy: + description: Rights management policy for YouTube resources. + properties: + allowed: + description: The value of allowed indicates whether the access to the policy is allowed or denied by default. + type: boolean + exception: + description: A list of region codes that identify countries where the default policy do not apply. + items: + type: string + type: array + type: object + Activity: + description: An *activity* resource contains information about an action that a particular channel, or user, has taken on YouTube.The actions reported in activity feeds include rating a video, sharing a video, marking a video as a favorite, commenting on a video, uploading a video, and so forth. Each activity resource identifies the type of action, the channel associated with the action, and the resource(s) associated with the action, such as the video that was rated or uploaded. + properties: + contentDetails: + $ref: "#/components/schemas/ActivityContentDetails" + description: The contentDetails object contains information about the content associated with the activity. For example, if the snippet.type value is videoRated, then the contentDetails object's content identifies the rated video. + etag: + description: Etag of this resource + type: string + id: + description: The ID that YouTube uses to uniquely identify the activity. + type: string + kind: + default: youtube#activity + description: 'Identifies what kind of resource this is. Value: the fixed string "youtube#activity".' + type: string + snippet: + $ref: "#/components/schemas/ActivitySnippet" + description: The snippet object contains basic details about the activity, including the activity's type and group ID. + type: object + ActivityContentDetails: + description: "Details about the content of an activity: the video that was shared, the channel that was subscribed to, etc." + properties: + bulletin: + $ref: "#/components/schemas/ActivityContentDetailsBulletin" + description: The bulletin object contains details about a channel bulletin post. This object is only present if the snippet.type is bulletin. + channelItem: + $ref: "#/components/schemas/ActivityContentDetailsChannelItem" + description: The channelItem object contains details about a resource which was added to a channel. This property is only present if the snippet.type is channelItem. + comment: + $ref: "#/components/schemas/ActivityContentDetailsComment" + description: The comment object contains information about a resource that received a comment. This property is only present if the snippet.type is comment. + favorite: + $ref: "#/components/schemas/ActivityContentDetailsFavorite" + description: The favorite object contains information about a video that was marked as a favorite video. This property is only present if the snippet.type is favorite. + like: + $ref: "#/components/schemas/ActivityContentDetailsLike" + description: The like object contains information about a resource that received a positive (like) rating. This property is only present if the snippet.type is like. + playlistItem: + $ref: "#/components/schemas/ActivityContentDetailsPlaylistItem" + description: The playlistItem object contains information about a new playlist item. This property is only present if the snippet.type is playlistItem. + promotedItem: + $ref: "#/components/schemas/ActivityContentDetailsPromotedItem" + description: The promotedItem object contains details about a resource which is being promoted. This property is only present if the snippet.type is promotedItem. + recommendation: + $ref: "#/components/schemas/ActivityContentDetailsRecommendation" + description: The recommendation object contains information about a recommended resource. This property is only present if the snippet.type is recommendation. + social: + $ref: "#/components/schemas/ActivityContentDetailsSocial" + description: The social object contains details about a social network post. This property is only present if the snippet.type is social. + subscription: + $ref: "#/components/schemas/ActivityContentDetailsSubscription" + description: The subscription object contains information about a channel that a user subscribed to. This property is only present if the snippet.type is subscription. + upload: + $ref: "#/components/schemas/ActivityContentDetailsUpload" + description: The upload object contains information about the uploaded video. This property is only present if the snippet.type is upload. + type: object + ActivityContentDetailsBulletin: + description: Details about a channel bulletin post. + properties: + resourceId: + $ref: "#/components/schemas/ResourceId" + description: The resourceId object contains information that identifies the resource associated with a bulletin post. @mutable youtube.activities.insert + type: object + ActivityContentDetailsChannelItem: + description: Details about a resource which was added to a channel. + properties: + resourceId: + $ref: "#/components/schemas/ResourceId" + description: The resourceId object contains information that identifies the resource that was added to the channel. + type: object + ActivityContentDetailsComment: + description: Information about a resource that received a comment. + properties: + resourceId: + $ref: "#/components/schemas/ResourceId" + description: The resourceId object contains information that identifies the resource associated with the comment. + type: object + ActivityContentDetailsFavorite: + description: Information about a video that was marked as a favorite video. + properties: + resourceId: + $ref: "#/components/schemas/ResourceId" + description: The resourceId object contains information that identifies the resource that was marked as a favorite. + type: object + ActivityContentDetailsLike: + description: Information about a resource that received a positive (like) rating. + properties: + resourceId: + $ref: "#/components/schemas/ResourceId" + description: The resourceId object contains information that identifies the rated resource. + type: object + ActivityContentDetailsPlaylistItem: + description: Information about a new playlist item. + properties: + playlistId: + description: The value that YouTube uses to uniquely identify the playlist. + type: string + playlistItemId: + description: ID of the item within the playlist. + type: string + resourceId: + $ref: "#/components/schemas/ResourceId" + description: The resourceId object contains information about the resource that was added to the playlist. + type: object + ActivityContentDetailsPromotedItem: + description: Details about a resource which is being promoted. + properties: + adTag: + description: The URL the client should fetch to request a promoted item. + type: string + clickTrackingUrl: + description: The URL the client should ping to indicate that the user clicked through on this promoted item. + type: string + creativeViewUrl: + description: The URL the client should ping to indicate that the user was shown this promoted item. + type: string + ctaType: + description: The type of call-to-action, a message to the user indicating action that can be taken. + enum: + - ctaTypeUnspecified + - visitAdvertiserSite + type: string + customCtaButtonText: + description: The custom call-to-action button text. If specified, it will override the default button text for the cta_type. + type: string + descriptionText: + description: The text description to accompany the promoted item. + type: string + destinationUrl: + description: The URL the client should direct the user to, if the user chooses to visit the advertiser's website. + type: string + forecastingUrl: + description: The list of forecasting URLs. The client should ping all of these URLs when a promoted item is not available, to indicate that a promoted item could have been shown. + items: + type: string + type: array + impressionUrl: + description: The list of impression URLs. The client should ping all of these URLs to indicate that the user was shown this promoted item. + items: + type: string + type: array + videoId: + description: The ID that YouTube uses to uniquely identify the promoted video. + type: string + type: object + ActivityContentDetailsRecommendation: + description: Information that identifies the recommended resource. + properties: + reason: + description: The reason that the resource is recommended to the user. + enum: + - reasonUnspecified + - videoFavorited + - videoLiked + - videoWatched + type: string + resourceId: + $ref: "#/components/schemas/ResourceId" + description: The resourceId object contains information that identifies the recommended resource. + seedResourceId: + $ref: "#/components/schemas/ResourceId" + description: The seedResourceId object contains information about the resource that caused the recommendation. + type: object + ActivityContentDetailsSocial: + description: Details about a social network post. + properties: + author: + description: The author of the social network post. + type: string + imageUrl: + description: An image of the post's author. + type: string + referenceUrl: + description: The URL of the social network post. + type: string + resourceId: + $ref: "#/components/schemas/ResourceId" + description: The resourceId object encapsulates information that identifies the resource associated with a social network post. + type: + description: The name of the social network. + enum: + - unspecified + - googlePlus + - facebook + - twitter + type: string + type: object + ActivityContentDetailsSubscription: + description: Information about a channel that a user subscribed to. + properties: + resourceId: + $ref: "#/components/schemas/ResourceId" + description: The resourceId object contains information that identifies the resource that the user subscribed to. + type: object + ActivityContentDetailsUpload: + description: Information about the uploaded video. + properties: + videoId: + description: The ID that YouTube uses to uniquely identify the uploaded video. + type: string + type: object + ActivityListResponse: + properties: + etag: + description: Etag of this resource. + type: string + eventId: + description: Serialized EventId of the request which produced this response. + type: string + items: + items: + $ref: "#/components/schemas/Activity" + type: array + kind: + default: youtube#activityListResponse + description: 'Identifies what kind of resource this is. Value: the fixed string "youtube#activityListResponse".' + type: string + nextPageToken: + description: The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set. + type: string + pageInfo: + $ref: "#/components/schemas/PageInfo" + description: General pagination information. + prevPageToken: + description: The token that can be used as the value of the pageToken parameter to retrieve the previous page in the result set. + type: string + tokenPagination: + $ref: "#/components/schemas/TokenPagination" + visitorId: + description: The visitorId identifies the visitor. + type: string + type: object + ActivitySnippet: + description: "Basic details about an activity, including title, description, thumbnails, activity type and group. Next ID: 12" + properties: + channelId: + description: The ID that YouTube uses to uniquely identify the channel associated with the activity. + type: string + channelTitle: + description: Channel title for the channel responsible for this activity + type: string + description: + description: The description of the resource primarily associated with the activity. @mutable youtube.activities.insert + type: string + groupId: + description: The group ID associated with the activity. A group ID identifies user events that are associated with the same user and resource. For example, if a user rates a video and marks the same video as a favorite, the entries for those events would have the same group ID in the user's activity feed. In your user interface, you can avoid repetition by grouping events with the same groupId value. + type: string + publishedAt: + description: The date and time that the video was uploaded. + format: date-time + type: string + thumbnails: + $ref: "#/components/schemas/ThumbnailDetails" + description: A map of thumbnail images associated with the resource that is primarily associated with the activity. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail. + title: + description: The title of the resource primarily associated with the activity. + type: string + type: + description: The type of activity that the resource describes. + enum: + - typeUnspecified + - upload + - like + - favorite + - comment + - subscription + - playlistItem + - recommendation + - bulletin + - social + - channelItem + - promotedItem + type: string + type: object + Caption: + description: A *caption* resource represents a YouTube caption track. A caption track is associated with exactly one YouTube video. + properties: + etag: + description: Etag of this resource. + type: string + id: + description: The ID that YouTube uses to uniquely identify the caption track. + type: string + kind: + default: youtube#caption + description: 'Identifies what kind of resource this is. Value: the fixed string "youtube#caption".' + type: string + snippet: + $ref: "#/components/schemas/CaptionSnippet" + description: The snippet object contains basic details about the caption. + type: object + CaptionListResponse: + properties: + etag: + description: Etag of this resource. + type: string + eventId: + description: Serialized EventId of the request which produced this response. + type: string + items: + description: A list of captions that match the request criteria. + items: + $ref: "#/components/schemas/Caption" + type: array + kind: + default: youtube#captionListResponse + description: 'Identifies what kind of resource this is. Value: the fixed string "youtube#captionListResponse".' + type: string + visitorId: + description: The visitorId identifies the visitor. + type: string + type: object + CaptionSnippet: + description: Basic details about a caption track, such as its language and name. + properties: + audioTrackType: + description: The type of audio track associated with the caption track. + enum: + - unknown + - primary + - commentary + - descriptive + type: string + failureReason: + description: The reason that YouTube failed to process the caption track. This property is only present if the state property's value is failed. + enum: + - unknownFormat + - unsupportedFormat + - processingFailed + type: string + isAutoSynced: + description: Indicates whether YouTube synchronized the caption track to the audio track in the video. The value will be true if a sync was explicitly requested when the caption track was uploaded. For example, when calling the captions.insert or captions.update methods, you can set the sync parameter to true to instruct YouTube to sync the uploaded track to the video. If the value is false, YouTube uses the time codes in the uploaded caption track to determine when to display captions. + type: boolean + isCC: + description: Indicates whether the track contains closed captions for the deaf and hard of hearing. The default value is false. + type: boolean + isDraft: + description: Indicates whether the caption track is a draft. If the value is true, then the track is not publicly visible. The default value is false. @mutable youtube.captions.insert youtube.captions.update + type: boolean + isEasyReader: + description: Indicates whether caption track is formatted for "easy reader," meaning it is at a third-grade level for language learners. The default value is false. + type: boolean + isLarge: + description: Indicates whether the caption track uses large text for the vision-impaired. The default value is false. + type: boolean + language: + description: The language of the caption track. The property value is a BCP-47 language tag. + type: string + lastUpdated: + description: The date and time when the caption track was last updated. + format: date-time + type: string + name: + description: The name of the caption track. The name is intended to be visible to the user as an option during playback. + type: string + status: + description: The caption track's status. + enum: + - serving + - syncing + - failed + type: string + trackKind: + description: The caption track's type. + enum: + - standard + - ASR + - forced + type: string + videoId: + description: The ID that YouTube uses to uniquely identify the video associated with the caption track. @mutable youtube.captions.insert + type: string + type: object + CdnSettings: + description: Brief description of the live stream cdn settings. + properties: + format: + description: "The format of the video stream that you are sending to Youtube. " + type: string + frameRate: + description: The frame rate of the inbound video data. + enum: + - 30fps + - 60fps + - variable + type: string + ingestionInfo: + $ref: "#/components/schemas/IngestionInfo" + description: The ingestionInfo object contains information that YouTube provides that you need to transmit your RTMP or HTTP stream to YouTube. + ingestionType: + description: " The method or protocol used to transmit the video stream." + enum: + - rtmp + - dash + - webrtc + - hls + type: string + resolution: + description: The resolution of the inbound video data. + enum: + - 240p + - 360p + - 480p + - 720p + - 1080p + - 1440p + - 2160p + - variable + type: string + type: object + Channel: + description: A *channel* resource contains information about a YouTube channel. + properties: + auditDetails: + $ref: "#/components/schemas/ChannelAuditDetails" + description: The auditionDetails object encapsulates channel data that is relevant for YouTube Partners during the audition process. + brandingSettings: + $ref: "#/components/schemas/ChannelBrandingSettings" + description: The brandingSettings object encapsulates information about the branding of the channel. + contentDetails: + $ref: "#/components/schemas/ChannelContentDetails" + description: The contentDetails object encapsulates information about the channel's content. + contentOwnerDetails: + $ref: "#/components/schemas/ChannelContentOwnerDetails" + description: The contentOwnerDetails object encapsulates channel data that is relevant for YouTube Partners linked with the channel. + conversionPings: + $ref: "#/components/schemas/ChannelConversionPings" + description: The conversionPings object encapsulates information about conversion pings that need to be respected by the channel. + etag: + description: Etag of this resource. + type: string + id: + description: The ID that YouTube uses to uniquely identify the channel. + type: string + kind: + default: youtube#channel + description: 'Identifies what kind of resource this is. Value: the fixed string "youtube#channel".' + type: string + localizations: + additionalProperties: + $ref: "#/components/schemas/ChannelLocalization" + description: Localizations for different languages + type: object + snippet: + $ref: "#/components/schemas/ChannelSnippet" + description: The snippet object contains basic details about the channel, such as its title, description, and thumbnail images. + statistics: + $ref: "#/components/schemas/ChannelStatistics" + description: The statistics object encapsulates statistics for the channel. + status: + $ref: "#/components/schemas/ChannelStatus" + description: The status object encapsulates information about the privacy status of the channel. + topicDetails: + $ref: "#/components/schemas/ChannelTopicDetails" + description: The topicDetails object encapsulates information about Freebase topics associated with the channel. + type: object + ChannelAuditDetails: + description: The auditDetails object encapsulates channel data that is relevant for YouTube Partners during the audit process. + properties: + communityGuidelinesGoodStanding: + description: Whether or not the channel respects the community guidelines. + type: boolean + contentIdClaimsGoodStanding: + description: Whether or not the channel has any unresolved claims. + type: boolean + copyrightStrikesGoodStanding: + description: Whether or not the channel has any copyright strikes. + type: boolean + type: object + ChannelBannerResource: + description: A channel banner returned as the response to a channel_banner.insert call. + properties: + etag: + type: string + kind: + default: youtube#channelBannerResource + description: 'Identifies what kind of resource this is. Value: the fixed string "youtube#channelBannerResource".' + type: string + url: + description: The URL of this banner image. + type: string + type: object + ChannelBrandingSettings: + description: Branding properties of a YouTube channel. + properties: + channel: + $ref: "#/components/schemas/ChannelSettings" + description: Branding properties for the channel view. + hints: + description: Additional experimental branding properties. + items: + $ref: "#/components/schemas/PropertyValue" + type: array + image: + $ref: "#/components/schemas/ImageSettings" + description: Branding properties for branding images. + watch: + $ref: "#/components/schemas/WatchSettings" + description: Branding properties for the watch page. + type: object + ChannelContentDetails: + description: Details about the content of a channel. + properties: + relatedPlaylists: + properties: + favorites: + description: The ID of the playlist that contains the channel"s favorite videos. Use the playlistItems.insert and playlistItems.delete to add or remove items from that list. + type: string + likes: + description: The ID of the playlist that contains the channel"s liked videos. Use the playlistItems.insert and playlistItems.delete to add or remove items from that list. + type: string + uploads: + description: The ID of the playlist that contains the channel"s uploaded videos. Use the videos.insert method to upload new videos and the videos.delete method to delete previously uploaded videos. + type: string + watchHistory: + description: The ID of the playlist that contains the channel"s watch history. Use the playlistItems.insert and playlistItems.delete to add or remove items from that list. + type: string + watchLater: + description: The ID of the playlist that contains the channel"s watch later playlist. Use the playlistItems.insert and playlistItems.delete to add or remove items from that list. + type: string + type: object + type: object + ChannelContentOwnerDetails: + description: The contentOwnerDetails object encapsulates channel data that is relevant for YouTube Partners linked with the channel. + properties: + contentOwner: + description: The ID of the content owner linked to the channel. + type: string + timeLinked: + description: The date and time when the channel was linked to the content owner. + format: date-time + type: string + type: object + ChannelConversionPing: + description: Pings that the app shall fire (authenticated by biscotti cookie). Each ping has a context, in which the app must fire the ping, and a url identifying the ping. + properties: + context: + description: Defines the context of the ping. + enum: + - subscribe + - unsubscribe + - cview + type: string + conversionUrl: + description: "The url (without the schema) that the player shall send the ping to. It's at caller's descretion to decide which schema to use (http vs https) Example of a returned url: //googleads.g.doubleclick.net/pagead/ viewthroughconversion/962985656/?data=path%3DtHe_path%3Btype%3D cview%3Butuid%3DGISQtTNGYqaYl4sKxoVvKA&labe=default The caller must append biscotti authentication (ms param in case of mobile, for example) to this ping." + type: string + type: object + ChannelConversionPings: + description: The conversionPings object encapsulates information about conversion pings that need to be respected by the channel. + properties: + pings: + description: Pings that the app shall fire (authenticated by biscotti cookie). Each ping has a context, in which the app must fire the ping, and a url identifying the ping. + items: + $ref: "#/components/schemas/ChannelConversionPing" + type: array + type: object + ChannelListResponse: + properties: + etag: + description: Etag of this resource. + type: string + eventId: + description: Serialized EventId of the request which produced this response. + type: string + items: + items: + $ref: "#/components/schemas/Channel" + type: array + kind: + default: youtube#channelListResponse + description: 'Identifies what kind of resource this is. Value: the fixed string "youtube#channelListResponse".' + type: string + nextPageToken: + description: The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set. + type: string + pageInfo: + $ref: "#/components/schemas/PageInfo" + description: General pagination information. + prevPageToken: + description: The token that can be used as the value of the pageToken parameter to retrieve the previous page in the result set. + type: string + tokenPagination: + $ref: "#/components/schemas/TokenPagination" + visitorId: + description: The visitorId identifies the visitor. + type: string + type: object + ChannelLocalization: + description: Channel localization setting + properties: + description: + description: The localized strings for channel's description. + type: string + title: + description: The localized strings for channel's title. + type: string + type: object + ChannelProfileDetails: + properties: + channelId: + description: The YouTube channel ID. + type: string + channelUrl: + description: The channel's URL. + type: string + displayName: + description: The channel's display name. + type: string + profileImageUrl: + description: The channels's avatar URL. + type: string + type: object + ChannelSection: + properties: + contentDetails: + $ref: "#/components/schemas/ChannelSectionContentDetails" + description: The contentDetails object contains details about the channel section content, such as a list of playlists or channels featured in the section. + etag: + description: Etag of this resource. + type: string + id: + description: The ID that YouTube uses to uniquely identify the channel section. + type: string + kind: + default: youtube#channelSection + description: 'Identifies what kind of resource this is. Value: the fixed string "youtube#channelSection".' + type: string + localizations: + additionalProperties: + $ref: "#/components/schemas/ChannelSectionLocalization" + description: Localizations for different languages + type: object + snippet: + $ref: "#/components/schemas/ChannelSectionSnippet" + description: The snippet object contains basic details about the channel section, such as its type, style and title. + targeting: + $ref: "#/components/schemas/ChannelSectionTargeting" + description: The targeting object contains basic targeting settings about the channel section. + type: object + ChannelSectionContentDetails: + description: Details about a channelsection, including playlists and channels. + properties: + channels: + description: The channel ids for type multiple_channels. + items: + type: string + type: array + playlists: + description: The playlist ids for type single_playlist and multiple_playlists. For singlePlaylist, only one playlistId is allowed. + items: + type: string + type: array + type: object + ChannelSectionListResponse: + properties: + etag: + description: Etag of this resource. + type: string + eventId: + description: Serialized EventId of the request which produced this response. + type: string + items: + description: A list of ChannelSections that match the request criteria. + items: + $ref: "#/components/schemas/ChannelSection" + type: array + kind: + default: youtube#channelSectionListResponse + description: 'Identifies what kind of resource this is. Value: the fixed string "youtube#channelSectionListResponse".' + type: string + visitorId: + description: The visitorId identifies the visitor. + type: string + type: object + ChannelSectionLocalization: + description: ChannelSection localization setting + properties: + title: + description: The localized strings for channel section's title. + type: string + type: object + ChannelSectionSnippet: + description: Basic details about a channel section, including title, style and position. + properties: + channelId: + description: The ID that YouTube uses to uniquely identify the channel that published the channel section. + type: string + defaultLanguage: + description: The language of the channel section's default title and description. + type: string + localized: + $ref: "#/components/schemas/ChannelSectionLocalization" + description: Localized title, read-only. + position: + description: The position of the channel section in the channel. + format: uint32 + type: integer + style: + description: The style of the channel section. + enum: + - channelsectionStyleUnspecified + - horizontalRow + - verticalList + type: string + title: + description: The channel section's title for multiple_playlists and multiple_channels. + type: string + type: + description: The type of the channel section. + enum: + - channelsectionTypeUndefined + - singlePlaylist + - multiplePlaylists + - popularUploads + - recentUploads + - likes + - allPlaylists + - likedPlaylists + - recentPosts + - recentActivity + - liveEvents + - upcomingEvents + - completedEvents + - multipleChannels + - postedVideos + - postedPlaylists + - subscriptions + type: string + type: object + ChannelSectionTargeting: + description: ChannelSection targeting setting. + properties: + countries: + description: The country the channel section is targeting. + items: + type: string + type: array + languages: + description: The language the channel section is targeting. + items: + type: string + type: array + regions: + description: The region the channel section is targeting. + items: + type: string + type: array + type: object + ChannelSettings: + description: Branding properties for the channel view. + properties: + country: + description: The country of the channel. + type: string + defaultLanguage: + type: string + defaultTab: + description: Which content tab users should see when viewing the channel. + type: string + description: + description: Specifies the channel description. + type: string + featuredChannelsTitle: + description: Title for the featured channels tab. + type: string + featuredChannelsUrls: + description: The list of featured channels. + items: + type: string + type: array + keywords: + description: Lists keywords associated with the channel, comma-separated. + type: string + moderateComments: + description: Whether user-submitted comments left on the channel page need to be approved by the channel owner to be publicly visible. + type: boolean + profileColor: + description: A prominent color that can be rendered on this channel page. + type: string + showBrowseView: + description: Whether the tab to browse the videos should be displayed. + type: boolean + showRelatedChannels: + description: Whether related channels should be proposed. + type: boolean + title: + description: Specifies the channel title. + type: string + trackingAnalyticsAccountId: + description: The ID for a Google Analytics account to track and measure traffic to the channels. + type: string + unsubscribedTrailer: + description: The trailer of the channel, for users that are not subscribers. + type: string + type: object + ChannelSnippet: + description: Basic details about a channel, including title, description and thumbnails. + properties: + country: + description: The country of the channel. + type: string + customUrl: + description: The custom url of the channel. + type: string + defaultLanguage: + description: The language of the channel's default title and description. + type: string + description: + description: The description of the channel. + type: string + localized: + $ref: "#/components/schemas/ChannelLocalization" + description: Localized title and description, read-only. + publishedAt: + description: The date and time that the channel was created. + format: date-time + type: string + thumbnails: + $ref: "#/components/schemas/ThumbnailDetails" + description: A map of thumbnail images associated with the channel. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail. When displaying thumbnails in your application, make sure that your code uses the image URLs exactly as they are returned in API responses. For example, your application should not use the http domain instead of the https domain in a URL returned in an API response. Beginning in July 2018, channel thumbnail URLs will only be available in the https domain, which is how the URLs appear in API responses. After that time, you might see broken images in your application if it tries to load YouTube images from the http domain. Thumbnail images might be empty for newly created channels and might take up to one day to populate. + title: + description: The channel's title. + type: string + type: object + ChannelStatistics: + description: "Statistics about a channel: number of subscribers, number of videos in the channel, etc." + properties: + commentCount: + description: The number of comments for the channel. + format: uint64 + type: string + hiddenSubscriberCount: + description: Whether or not the number of subscribers is shown for this user. + type: boolean + subscriberCount: + description: The number of subscribers that the channel has. + format: uint64 + type: string + videoCount: + description: The number of videos uploaded to the channel. + format: uint64 + type: string + viewCount: + description: The number of times the channel has been viewed. + format: uint64 + type: string + type: object + ChannelStatus: + description: JSON template for the status part of a channel. + properties: + isLinked: + description: If true, then the user is linked to either a YouTube username or G+ account. Otherwise, the user doesn't have a public YouTube identity. + type: boolean + longUploadsStatus: + description: The long uploads status of this channel. See https://support.google.com/youtube/answer/71673 for more information. + enum: + - longUploadsUnspecified + - allowed + - eligible + - disallowed + type: string + madeForKids: + type: boolean + privacyStatus: + description: Privacy status of the channel. + enum: + - public + - unlisted + - private + type: string + selfDeclaredMadeForKids: + type: boolean + type: object + ChannelToStoreLinkDetails: + description: Information specific to a store on a merchandising platform linked to a YouTube channel. + properties: + merchantId: + description: Google Merchant Center id of the store. + format: uint64 + type: string + storeName: + description: Name of the store. + type: string + storeUrl: + description: Landing page of the store. + type: string + type: object + ChannelTopicDetails: + description: Freebase topic information related to the channel. + properties: + topicCategories: + description: A list of Wikipedia URLs that describe the channel's content. + items: + type: string + type: array + topicIds: + description: A list of Freebase topic IDs associated with the channel. You can retrieve information about each topic using the Freebase Topic API. + items: + type: string + type: array + type: object + Comment: + description: A *comment* represents a single YouTube comment. + properties: + etag: + description: Etag of this resource. + type: string + id: + description: The ID that YouTube uses to uniquely identify the comment. + type: string + kind: + default: youtube#comment + description: 'Identifies what kind of resource this is. Value: the fixed string "youtube#comment".' + type: string + snippet: + $ref: "#/components/schemas/CommentSnippet" + description: The snippet object contains basic details about the comment. + type: object + CommentListResponse: + properties: + etag: + description: Etag of this resource. + type: string + eventId: + description: Serialized EventId of the request which produced this response. + type: string + items: + description: A list of comments that match the request criteria. + items: + $ref: "#/components/schemas/Comment" + type: array + kind: + default: youtube#commentListResponse + description: 'Identifies what kind of resource this is. Value: the fixed string "youtube#commentListResponse".' + type: string + nextPageToken: + description: The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set. + type: string + pageInfo: + $ref: "#/components/schemas/PageInfo" + description: General pagination information. + tokenPagination: + $ref: "#/components/schemas/TokenPagination" + visitorId: + description: The visitorId identifies the visitor. + type: string + type: object + CommentSnippet: + description: Basic details about a comment, such as its author and text. + properties: + authorChannelId: + $ref: "#/components/schemas/CommentSnippetAuthorChannelId" + authorChannelUrl: + description: Link to the author's YouTube channel, if any. + type: string + authorDisplayName: + description: The name of the user who posted the comment. + type: string + authorProfileImageUrl: + description: The URL for the avatar of the user who posted the comment. + type: string + canRate: + description: Whether the current viewer can rate this comment. + type: boolean + channelId: + description: The id of the corresponding YouTube channel. In case of a channel comment this is the channel the comment refers to. In case of a video comment it's the video's channel. + type: string + likeCount: + description: The total number of likes this comment has received. + format: uint32 + type: integer + moderationStatus: + description: The comment's moderation status. Will not be set if the comments were requested through the id filter. + enum: + - published + - heldForReview + - likelySpam + - rejected + type: string + parentId: + description: The unique id of the parent comment, only set for replies. + type: string + publishedAt: + description: The date and time when the comment was originally published. + format: date-time + type: string + textDisplay: + description: The comment's text. The format is either plain text or HTML dependent on what has been requested. Even the plain text representation may differ from the text originally posted in that it may replace video links with video titles etc. + type: string + textOriginal: + description: The comment's original raw text as initially posted or last updated. The original text will only be returned if it is accessible to the viewer, which is only guaranteed if the viewer is the comment's author. + type: string + updatedAt: + description: The date and time when the comment was last updated. + format: date-time + type: string + videoId: + description: The ID of the video the comment refers to, if any. + type: string + viewerRating: + description: The rating the viewer has given to this comment. For the time being this will never return RATE_TYPE_DISLIKE and instead return RATE_TYPE_NONE. This may change in the future. + enum: + - none + - like + - dislike + type: string + type: object + CommentSnippetAuthorChannelId: + description: The id of the author's YouTube channel, if any. + properties: + value: + type: string + type: object + CommentThread: + description: A *comment thread* represents information that applies to a top level comment and all its replies. It can also include the top level comment itself and some of the replies. + properties: + etag: + description: Etag of this resource. + type: string + id: + description: The ID that YouTube uses to uniquely identify the comment thread. + type: string + kind: + default: youtube#commentThread + description: 'Identifies what kind of resource this is. Value: the fixed string "youtube#commentThread".' + type: string + replies: + $ref: "#/components/schemas/CommentThreadReplies" + description: The replies object contains a limited number of replies (if any) to the top level comment found in the snippet. + snippet: + $ref: "#/components/schemas/CommentThreadSnippet" + description: The snippet object contains basic details about the comment thread and also the top level comment. + type: object + CommentThreadListResponse: + properties: + etag: + description: Etag of this resource. + type: string + eventId: + description: Serialized EventId of the request which produced this response. + type: string + items: + description: A list of comment threads that match the request criteria. + items: + $ref: "#/components/schemas/CommentThread" + type: array + kind: + default: youtube#commentThreadListResponse + description: 'Identifies what kind of resource this is. Value: the fixed string "youtube#commentThreadListResponse".' + type: string + nextPageToken: + description: The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set. + type: string + pageInfo: + $ref: "#/components/schemas/PageInfo" + description: General pagination information. + tokenPagination: + $ref: "#/components/schemas/TokenPagination" + visitorId: + description: The visitorId identifies the visitor. + type: string + type: object + CommentThreadReplies: + description: Comments written in (direct or indirect) reply to the top level comment. + properties: + comments: + description: A limited number of replies. Unless the number of replies returned equals total_reply_count in the snippet the returned replies are only a subset of the total number of replies. + items: + $ref: "#/components/schemas/Comment" + type: array + type: object + CommentThreadSnippet: + description: Basic details about a comment thread. + properties: + canReply: + description: Whether the current viewer of the thread can reply to it. This is viewer specific - other viewers may see a different value for this field. + type: boolean + channelId: + description: The YouTube channel the comments in the thread refer to or the channel with the video the comments refer to. If video_id isn't set the comments refer to the channel itself. + type: string + isPublic: + description: Whether the thread (and therefore all its comments) is visible to all YouTube users. + type: boolean + topLevelComment: + $ref: "#/components/schemas/Comment" + description: The top level comment of this thread. + totalReplyCount: + description: The total number of replies (not including the top level comment). + format: uint32 + type: integer + videoId: + description: The ID of the video the comments refer to, if any. No video_id implies a channel discussion comment. + type: string + type: object + ContentRating: + description: Ratings schemes. The country-specific ratings are mostly for movies and shows. LINT.IfChange + properties: + acbRating: + description: The video's Australian Classification Board (ACB) or Australian Communications and Media Authority (ACMA) rating. ACMA ratings are used to classify children's television programming. + enum: + - acbUnspecified + - acbE + - acbP + - acbC + - acbG + - acbPg + - acbM + - acbMa15plus + - acbR18plus + - acbUnrated + type: string + agcomRating: + description: The video's rating from Italy's Autorità per le Garanzie nelle Comunicazioni (AGCOM). + enum: + - agcomUnspecified + - agcomT + - agcomVm14 + - agcomVm18 + - agcomUnrated + type: string + anatelRating: + description: The video's Anatel (Asociación Nacional de Televisión) rating for Chilean television. + enum: + - anatelUnspecified + - anatelF + - anatelI + - anatelI7 + - anatelI10 + - anatelI12 + - anatelR + - anatelA + - anatelUnrated + type: string + bbfcRating: + description: The video's British Board of Film Classification (BBFC) rating. + enum: + - bbfcUnspecified + - bbfcU + - bbfcPg + - bbfc12a + - bbfc12 + - bbfc15 + - bbfc18 + - bbfcR18 + - bbfcUnrated + type: string + bfvcRating: + description: The video's rating from Thailand's Board of Film and Video Censors. + enum: + - bfvcUnspecified + - bfvcG + - bfvcE + - bfvc13 + - bfvc15 + - bfvc18 + - bfvc20 + - bfvcB + - bfvcUnrated + type: string + bmukkRating: + description: The video's rating from the Austrian Board of Media Classification (Bundesministerium für Unterricht, Kunst und Kultur). + enum: + - bmukkUnspecified + - bmukkAa + - bmukk6 + - bmukk8 + - bmukk10 + - bmukk12 + - bmukk14 + - bmukk16 + - bmukkUnrated + type: string + catvRating: + description: Rating system for Canadian TV - Canadian TV Classification System The video's rating from the Canadian Radio-Television and Telecommunications Commission (CRTC) for Canadian English-language broadcasts. For more information, see the Canadian Broadcast Standards Council website. + enum: + - catvUnspecified + - catvC + - catvC8 + - catvG + - catvPg + - catv14plus + - catv18plus + - catvUnrated + - catvE + type: string + catvfrRating: + description: The video's rating from the Canadian Radio-Television and Telecommunications Commission (CRTC) for Canadian French-language broadcasts. For more information, see the Canadian Broadcast Standards Council website. + enum: + - catvfrUnspecified + - catvfrG + - catvfr8plus + - catvfr13plus + - catvfr16plus + - catvfr18plus + - catvfrUnrated + - catvfrE + type: string + cbfcRating: + description: The video's Central Board of Film Certification (CBFC - India) rating. + enum: + - cbfcUnspecified + - cbfcU + - cbfcUA + - cbfcUA7plus + - cbfcUA13plus + - cbfcUA16plus + - cbfcA + - cbfcS + - cbfcUnrated + type: string + cccRating: + description: The video's Consejo de Calificación Cinematográfica (Chile) rating. + enum: + - cccUnspecified + - cccTe + - ccc6 + - ccc14 + - ccc18 + - ccc18v + - ccc18s + - cccUnrated + type: string + cceRating: + description: The video's rating from Portugal's Comissão de Classificação de Espect´culos. + enum: + - cceUnspecified + - cceM4 + - cceM6 + - cceM12 + - cceM16 + - cceM18 + - cceUnrated + - cceM14 + type: string + chfilmRating: + description: The video's rating in Switzerland. + enum: + - chfilmUnspecified + - chfilm0 + - chfilm6 + - chfilm12 + - chfilm16 + - chfilm18 + - chfilmUnrated + type: string + chvrsRating: + description: The video's Canadian Home Video Rating System (CHVRS) rating. + enum: + - chvrsUnspecified + - chvrsG + - chvrsPg + - chvrs14a + - chvrs18a + - chvrsR + - chvrsE + - chvrsUnrated + type: string + cicfRating: + description: The video's rating from the Commission de Contrôle des Films (Belgium). + enum: + - cicfUnspecified + - cicfE + - cicfKtEa + - cicfKntEna + - cicfUnrated + type: string + cnaRating: + description: The video's rating from Romania's CONSILIUL NATIONAL AL AUDIOVIZUALULUI (CNA). + enum: + - cnaUnspecified + - cnaAp + - cna12 + - cna15 + - cna18 + - cna18plus + - cnaUnrated + type: string + cncRating: + description: Rating system in France - Commission de classification cinematographique + enum: + - cncUnspecified + - cncT + - cnc10 + - cnc12 + - cnc16 + - cnc18 + - cncE + - cncInterdiction + - cncUnrated + type: string + csaRating: + description: The video's rating from France's Conseil supérieur de l’audiovisuel, which rates broadcast content. + enum: + - csaUnspecified + - csaT + - csa10 + - csa12 + - csa16 + - csa18 + - csaInterdiction + - csaUnrated + type: string + cscfRating: + description: The video's rating from Luxembourg's Commission de surveillance de la classification des films (CSCF). + enum: + - cscfUnspecified + - cscfAl + - cscfA + - cscf6 + - cscf9 + - cscf12 + - cscf16 + - cscf18 + - cscfUnrated + type: string + czfilmRating: + description: The video's rating in the Czech Republic. + enum: + - czfilmUnspecified + - czfilmU + - czfilm12 + - czfilm14 + - czfilm18 + - czfilmUnrated + type: string + djctqRating: + description: The video's Departamento de Justiça, Classificação, Qualificação e Títulos (DJCQT - Brazil) rating. + enum: + - djctqUnspecified + - djctqL + - djctq10 + - djctq12 + - djctq14 + - djctq16 + - djctq18 + - djctqEr + - djctqL10 + - djctqL12 + - djctqL14 + - djctqL16 + - djctqL18 + - djctq1012 + - djctq1014 + - djctq1016 + - djctq1018 + - djctq1214 + - djctq1216 + - djctq1218 + - djctq1416 + - djctq1418 + - djctq1618 + - djctqUnrated + type: string + djctqRatingReasons: + description: Reasons that explain why the video received its DJCQT (Brazil) rating. + items: + enum: + - djctqRatingReasonUnspecified + - djctqViolence + - djctqExtremeViolence + - djctqSexualContent + - djctqNudity + - djctqSex + - djctqExplicitSex + - djctqDrugs + - djctqLegalDrugs + - djctqIllegalDrugs + - djctqInappropriateLanguage + - djctqCriminalActs + - djctqImpactingContent + type: string + type: array + ecbmctRating: + description: Rating system in Turkey - Evaluation and Classification Board of the Ministry of Culture and Tourism + enum: + - ecbmctUnspecified + - ecbmctG + - ecbmct7a + - ecbmct7plus + - ecbmct13a + - ecbmct13plus + - ecbmct15a + - ecbmct15plus + - ecbmct18plus + - ecbmctUnrated + type: string + eefilmRating: + description: The video's rating in Estonia. + enum: + - eefilmUnspecified + - eefilmPere + - eefilmL + - eefilmMs6 + - eefilmK6 + - eefilmMs12 + - eefilmK12 + - eefilmK14 + - eefilmK16 + - eefilmUnrated + type: string + egfilmRating: + description: The video's rating in Egypt. + enum: + - egfilmUnspecified + - egfilmGn + - egfilm18 + - egfilmBn + - egfilmUnrated + type: string + eirinRating: + description: The video's Eirin (æ˜ å€«) rating. Eirin is the Japanese rating system. + enum: + - eirinUnspecified + - eirinG + - eirinPg12 + - eirinR15plus + - eirinR18plus + - eirinUnrated + type: string + fcbmRating: + description: The video's rating from Malaysia's Film Censorship Board. + enum: + - fcbmUnspecified + - fcbmU + - fcbmPg13 + - fcbmP13 + - fcbm18 + - fcbm18sx + - fcbm18pa + - fcbm18sg + - fcbm18pl + - fcbmUnrated + type: string + fcoRating: + description: The video's rating from Hong Kong's Office for Film, Newspaper and Article Administration. + enum: + - fcoUnspecified + - fcoI + - fcoIia + - fcoIib + - fcoIi + - fcoIii + - fcoUnrated + type: string + fmocRating: + description: This property has been deprecated. Use the contentDetails.contentRating.cncRating instead. + enum: + - fmocUnspecified + - fmocU + - fmoc10 + - fmoc12 + - fmoc16 + - fmoc18 + - fmocE + - fmocUnrated + type: string + fpbRating: + description: The video's rating from South Africa's Film and Publication Board. + enum: + - fpbUnspecified + - fpbA + - fpbPg + - fpb79Pg + - fpb1012Pg + - fpb13 + - fpb16 + - fpb18 + - fpbX18 + - fpbXx + - fpbUnrated + - fpb10 + type: string + fpbRatingReasons: + description: Reasons that explain why the video received its FPB (South Africa) rating. + items: + enum: + - fpbRatingReasonUnspecified + - fpbBlasphemy + - fpbLanguage + - fpbNudity + - fpbPrejudice + - fpbSex + - fpbViolence + - fpbDrugs + - fpbSexualViolence + - fpbHorror + - fpbCriminalTechniques + - fpbImitativeActsTechniques + type: string + type: array + fskRating: + description: The video's Freiwillige Selbstkontrolle der Filmwirtschaft (FSK - Germany) rating. + enum: + - fskUnspecified + - fsk0 + - fsk6 + - fsk12 + - fsk16 + - fsk18 + - fskUnrated + type: string + grfilmRating: + description: The video's rating in Greece. + enum: + - grfilmUnspecified + - grfilmK + - grfilmE + - grfilmK12 + - grfilmK13 + - grfilmK15 + - grfilmK17 + - grfilmK18 + - grfilmUnrated + type: string + icaaRating: + description: The video's Instituto de la Cinematografía y de las Artes Audiovisuales (ICAA - Spain) rating. + enum: + - icaaUnspecified + - icaaApta + - icaa7 + - icaa12 + - icaa13 + - icaa16 + - icaa18 + - icaaX + - icaaUnrated + type: string + ifcoRating: + description: The video's Irish Film Classification Office (IFCO - Ireland) rating. See the IFCO website for more information. + enum: + - ifcoUnspecified + - ifcoG + - ifcoPg + - ifco12 + - ifco12a + - ifco15 + - ifco15a + - ifco16 + - ifco18 + - ifcoUnrated + type: string + ilfilmRating: + description: The video's rating in Israel. + enum: + - ilfilmUnspecified + - ilfilmAa + - ilfilm12 + - ilfilm14 + - ilfilm16 + - ilfilm18 + - ilfilmUnrated + type: string + incaaRating: + description: The video's INCAA (Instituto Nacional de Cine y Artes Audiovisuales - Argentina) rating. + enum: + - incaaUnspecified + - incaaAtp + - incaaSam13 + - incaaSam16 + - incaaSam18 + - incaaC + - incaaUnrated + type: string + kfcbRating: + description: The video's rating from the Kenya Film Classification Board. + enum: + - kfcbUnspecified + - kfcbG + - kfcbPg + - kfcb16plus + - kfcbR + - kfcbUnrated + type: string + kijkwijzerRating: + description: The video's NICAM/Kijkwijzer rating from the Nederlands Instituut voor de Classificatie van Audiovisuele Media (Netherlands). + enum: + - kijkwijzerUnspecified + - kijkwijzerAl + - kijkwijzer6 + - kijkwijzer9 + - kijkwijzer12 + - kijkwijzer16 + - kijkwijzer18 + - kijkwijzerUnrated + type: string + kmrbRating: + description: The video's Korea Media Rating Board (영상물등급위원회) rating. The KMRB rates videos in South Korea. + enum: + - kmrbUnspecified + - kmrbAll + - kmrb12plus + - kmrb15plus + - kmrbTeenr + - kmrbR + - kmrbUnrated + type: string + lsfRating: + description: The video's rating from Indonesia's Lembaga Sensor Film. + enum: + - lsfUnspecified + - lsfSu + - lsfA + - lsfBo + - lsf13 + - lsfR + - lsf17 + - lsfD + - lsf21 + - lsfUnrated + type: string + mccaaRating: + description: The video's rating from Malta's Film Age-Classification Board. + enum: + - mccaaUnspecified + - mccaaU + - mccaaPg + - mccaa12a + - mccaa12 + - mccaa14 + - mccaa15 + - mccaa16 + - mccaa18 + - mccaaUnrated + type: string + mccypRating: + description: The video's rating from the Danish Film Institute's (Det Danske Filminstitut) Media Council for Children and Young People. + enum: + - mccypUnspecified + - mccypA + - mccyp7 + - mccyp11 + - mccyp15 + - mccypUnrated + type: string + mcstRating: + description: The video's rating system for Vietnam - MCST + enum: + - mcstUnspecified + - mcstP + - mcst0 + - mcstC13 + - mcstC16 + - mcst16plus + - mcstC18 + - mcstGPg + - mcstUnrated + type: string + mdaRating: + description: The video's rating from Singapore's Media Development Authority (MDA) and, specifically, it's Board of Film Censors (BFC). + enum: + - mdaUnspecified + - mdaG + - mdaPg + - mdaPg13 + - mdaNc16 + - mdaM18 + - mdaR21 + - mdaUnrated + type: string + medietilsynetRating: + description: The video's rating from Medietilsynet, the Norwegian Media Authority. + enum: + - medietilsynetUnspecified + - medietilsynetA + - medietilsynet6 + - medietilsynet7 + - medietilsynet9 + - medietilsynet11 + - medietilsynet12 + - medietilsynet15 + - medietilsynet18 + - medietilsynetUnrated + type: string + mekuRating: + description: The video's rating from Finland's Kansallinen Audiovisuaalinen Instituutti (National Audiovisual Institute). + enum: + - mekuUnspecified + - mekuS + - meku7 + - meku12 + - meku16 + - meku18 + - mekuUnrated + type: string + menaMpaaRating: + description: The rating system for MENA countries, a clone of MPAA. It is needed to prevent titles go live w/o additional QC check, since some of them can be inappropriate for the countries at all. See b/33408548 for more details. + enum: + - menaMpaaUnspecified + - menaMpaaG + - menaMpaaPg + - menaMpaaPg13 + - menaMpaaR + - menaMpaaUnrated + type: string + mibacRating: + description: The video's rating from the Ministero dei Beni e delle Attività Culturali e del Turismo (Italy). + enum: + - mibacUnspecified + - mibacT + - mibacVap + - mibacVm6 + - mibacVm12 + - mibacVm14 + - mibacVm16 + - mibacVm18 + - mibacUnrated + type: string + mocRating: + description: The video's Ministerio de Cultura (Colombia) rating. + enum: + - mocUnspecified + - mocE + - mocT + - moc7 + - moc12 + - moc15 + - moc18 + - mocX + - mocBanned + - mocUnrated + type: string + moctwRating: + description: The video's rating from Taiwan's Ministry of Culture (文化部). + enum: + - moctwUnspecified + - moctwG + - moctwP + - moctwPg + - moctwR + - moctwUnrated + - moctwR12 + - moctwR15 + type: string + mpaaRating: + description: The video's Motion Picture Association of America (MPAA) rating. + enum: + - mpaaUnspecified + - mpaaG + - mpaaPg + - mpaaPg13 + - mpaaR + - mpaaNc17 + - mpaaX + - mpaaUnrated + type: string + mpaatRating: + description: The rating system for trailer, DVD, and Ad in the US. See http://movielabs.com/md/ratings/v2.3/html/US_MPAAT_Ratings.html. + enum: + - mpaatUnspecified + - mpaatGb + - mpaatRb + type: string + mtrcbRating: + description: The video's rating from the Movie and Television Review and Classification Board (Philippines). + enum: + - mtrcbUnspecified + - mtrcbG + - mtrcbPg + - mtrcbR13 + - mtrcbR16 + - mtrcbR18 + - mtrcbX + - mtrcbUnrated + type: string + nbcRating: + description: The video's rating from the Maldives National Bureau of Classification. + enum: + - nbcUnspecified + - nbcG + - nbcPg + - nbc12plus + - nbc15plus + - nbc18plus + - nbc18plusr + - nbcPu + - nbcUnrated + type: string + nbcplRating: + description: The video's rating in Poland. + enum: + - nbcplUnspecified + - nbcplI + - nbcplIi + - nbcplIii + - nbcplIv + - nbcpl18plus + - nbcplUnrated + type: string + nfrcRating: + description: The video's rating from the Bulgarian National Film Center. + enum: + - nfrcUnspecified + - nfrcA + - nfrcB + - nfrcC + - nfrcD + - nfrcX + - nfrcUnrated + type: string + nfvcbRating: + description: The video's rating from Nigeria's National Film and Video Censors Board. + enum: + - nfvcbUnspecified + - nfvcbG + - nfvcbPg + - nfvcb12 + - nfvcb12a + - nfvcb15 + - nfvcb18 + - nfvcbRe + - nfvcbUnrated + type: string + nkclvRating: + description: The video's rating from the Nacionãlais Kino centrs (National Film Centre of Latvia). + enum: + - nkclvUnspecified + - nkclvU + - nkclv7plus + - nkclv12plus + - nkclv16plus + - nkclv18plus + - nkclvUnrated + type: string + nmcRating: + description: The National Media Council ratings system for United Arab Emirates. + enum: + - nmcUnspecified + - nmcG + - nmcPg + - nmcPg13 + - nmcPg15 + - nmc15plus + - nmc18plus + - nmc18tc + - nmcUnrated + type: string + oflcRating: + description: The video's Office of Film and Literature Classification (OFLC - New Zealand) rating. + enum: + - oflcUnspecified + - oflcG + - oflcPg + - oflcM + - oflcR13 + - oflcR15 + - oflcR16 + - oflcR18 + - oflcUnrated + - oflcRp13 + - oflcRp16 + - oflcRp18 + type: string + pefilmRating: + description: The video's rating in Peru. + enum: + - pefilmUnspecified + - pefilmPt + - pefilmPg + - pefilm14 + - pefilm18 + - pefilmUnrated + type: string + rcnofRating: + description: The video's rating from the Hungarian Nemzeti Filmiroda, the Rating Committee of the National Office of Film. + enum: + - rcnofUnspecified + - rcnofI + - rcnofIi + - rcnofIii + - rcnofIv + - rcnofV + - rcnofVi + - rcnofUnrated + type: string + resorteviolenciaRating: + description: The video's rating in Venezuela. + enum: + - resorteviolenciaUnspecified + - resorteviolenciaA + - resorteviolenciaB + - resorteviolenciaC + - resorteviolenciaD + - resorteviolenciaE + - resorteviolenciaUnrated + type: string + rtcRating: + description: The video's General Directorate of Radio, Television and Cinematography (Mexico) rating. + enum: + - rtcUnspecified + - rtcAa + - rtcA + - rtcB + - rtcB15 + - rtcC + - rtcD + - rtcUnrated + type: string + rteRating: + description: The video's rating from Ireland's Raidió Teilifís Éireann. + enum: + - rteUnspecified + - rteGa + - rteCh + - rtePs + - rteMa + - rteUnrated + type: string + russiaRating: + description: The video's National Film Registry of the Russian Federation (MKRF - Russia) rating. + enum: + - russiaUnspecified + - russia0 + - russia6 + - russia12 + - russia16 + - russia18 + - russiaUnrated + type: string + skfilmRating: + description: The video's rating in Slovakia. + enum: + - skfilmUnspecified + - skfilmG + - skfilmP2 + - skfilmP5 + - skfilmP8 + - skfilmUnrated + type: string + smaisRating: + description: The video's rating in Iceland. + enum: + - smaisUnspecified + - smaisL + - smais7 + - smais12 + - smais14 + - smais16 + - smais18 + - smaisUnrated + type: string + smsaRating: + description: The video's rating from Statens medierÃ¥d (Sweden's National Media Council). + enum: + - smsaUnspecified + - smsaA + - smsa7 + - smsa11 + - smsa15 + - smsaUnrated + type: string + tvpgRating: + description: The video's TV Parental Guidelines (TVPG) rating. + enum: + - tvpgUnspecified + - tvpgY + - tvpgY7 + - tvpgY7Fv + - tvpgG + - tvpgPg + - pg14 + - tvpgMa + - tvpgUnrated + type: string + ytRating: + description: A rating that YouTube uses to identify age-restricted content. + enum: + - ytUnspecified + - ytAgeRestricted + type: string + type: object + Cuepoint: + description: Note that there may be a 5-second end-point resolution issue. For instance, if a cuepoint comes in for 22:03:27, we may stuff the cuepoint into 22:03:25 or 22:03:30, depending. This is an artifact of HLS. + properties: + cueType: + enum: + - cueTypeUnspecified + - cueTypeAd + type: string + durationSecs: + description: The duration of this cuepoint. + format: uint32 + type: integer + etag: + type: string + id: + description: The identifier for cuepoint resource. + type: string + insertionOffsetTimeMs: + description: The time when the cuepoint should be inserted by offset to the broadcast actual start time. + format: int64 + type: string + walltimeMs: + description: The wall clock time at which the cuepoint should be inserted. Only one of insertion_offset_time_ms and walltime_ms may be set at a time. + format: uint64 + type: string + type: object + Entity: + properties: + id: + type: string + typeId: + type: string + url: + type: string + type: object + GeoPoint: + description: Geographical coordinates of a point, in WGS84. + properties: + altitude: + description: Altitude above the reference ellipsoid, in meters. + format: double + type: number + latitude: + description: Latitude in degrees. + format: double + type: number + longitude: + description: Longitude in degrees. + format: double + type: number + type: object + I18nLanguage: + description: An *i18nLanguage* resource identifies a UI language currently supported by YouTube. + properties: + etag: + description: Etag of this resource. + type: string + id: + description: The ID that YouTube uses to uniquely identify the i18n language. + type: string + kind: + default: youtube#i18nLanguage + description: 'Identifies what kind of resource this is. Value: the fixed string "youtube#i18nLanguage".' + type: string + snippet: + $ref: "#/components/schemas/I18nLanguageSnippet" + description: The snippet object contains basic details about the i18n language, such as language code and human-readable name. + type: object + I18nLanguageListResponse: + properties: + etag: + description: Etag of this resource. + type: string + eventId: + description: Serialized EventId of the request which produced this response. + type: string + items: + description: A list of supported i18n languages. In this map, the i18n language ID is the map key, and its value is the corresponding i18nLanguage resource. + items: + $ref: "#/components/schemas/I18nLanguage" + type: array + kind: + default: youtube#i18nLanguageListResponse + description: 'Identifies what kind of resource this is. Value: the fixed string "youtube#i18nLanguageListResponse".' + type: string + visitorId: + description: The visitorId identifies the visitor. + type: string + type: object + I18nLanguageSnippet: + description: Basic details about an i18n language, such as language code and human-readable name. + properties: + hl: + description: A short BCP-47 code that uniquely identifies a language. + type: string + name: + description: The human-readable name of the language in the language itself. + type: string + type: object + I18nRegion: + description: A *i18nRegion* resource identifies a region where YouTube is available. + properties: + etag: + description: Etag of this resource. + type: string + id: + description: The ID that YouTube uses to uniquely identify the i18n region. + type: string + kind: + default: youtube#i18nRegion + description: 'Identifies what kind of resource this is. Value: the fixed string "youtube#i18nRegion".' + type: string + snippet: + $ref: "#/components/schemas/I18nRegionSnippet" + description: The snippet object contains basic details about the i18n region, such as region code and human-readable name. + type: object + I18nRegionListResponse: + properties: + etag: + description: Etag of this resource. + type: string + eventId: + description: Serialized EventId of the request which produced this response. + type: string + items: + description: A list of regions where YouTube is available. In this map, the i18n region ID is the map key, and its value is the corresponding i18nRegion resource. + items: + $ref: "#/components/schemas/I18nRegion" + type: array + kind: + default: youtube#i18nRegionListResponse + description: 'Identifies what kind of resource this is. Value: the fixed string "youtube#i18nRegionListResponse".' + type: string + visitorId: + description: The visitorId identifies the visitor. + type: string + type: object + I18nRegionSnippet: + description: Basic details about an i18n region, such as region code and human-readable name. + properties: + gl: + description: The region code as a 2-letter ISO country code. + type: string + name: + description: The human-readable name of the region. + type: string + type: object + ImageSettings: + description: Branding properties for images associated with the channel. + properties: + backgroundImageUrl: + $ref: "#/components/schemas/LocalizedProperty" + description: The URL for the background image shown on the video watch page. The image should be 1200px by 615px, with a maximum file size of 128k. + bannerExternalUrl: + description: This is generated when a ChannelBanner.Insert request has succeeded for the given channel. + type: string + bannerImageUrl: + description: Banner image. Desktop size (1060x175). + type: string + bannerMobileExtraHdImageUrl: + description: Banner image. Mobile size high resolution (1440x395). + type: string + bannerMobileHdImageUrl: + description: Banner image. Mobile size high resolution (1280x360). + type: string + bannerMobileImageUrl: + description: Banner image. Mobile size (640x175). + type: string + bannerMobileLowImageUrl: + description: Banner image. Mobile size low resolution (320x88). + type: string + bannerMobileMediumHdImageUrl: + description: Banner image. Mobile size medium/high resolution (960x263). + type: string + bannerTabletExtraHdImageUrl: + description: Banner image. Tablet size extra high resolution (2560x424). + type: string + bannerTabletHdImageUrl: + description: Banner image. Tablet size high resolution (2276x377). + type: string + bannerTabletImageUrl: + description: Banner image. Tablet size (1707x283). + type: string + bannerTabletLowImageUrl: + description: Banner image. Tablet size low resolution (1138x188). + type: string + bannerTvHighImageUrl: + description: Banner image. TV size high resolution (1920x1080). + type: string + bannerTvImageUrl: + description: Banner image. TV size extra high resolution (2120x1192). + type: string + bannerTvLowImageUrl: + description: Banner image. TV size low resolution (854x480). + type: string + bannerTvMediumImageUrl: + description: Banner image. TV size medium resolution (1280x720). + type: string + largeBrandedBannerImageImapScript: + $ref: "#/components/schemas/LocalizedProperty" + description: The image map script for the large banner image. + largeBrandedBannerImageUrl: + $ref: "#/components/schemas/LocalizedProperty" + description: The URL for the 854px by 70px image that appears below the video player in the expanded video view of the video watch page. + smallBrandedBannerImageImapScript: + $ref: "#/components/schemas/LocalizedProperty" + description: The image map script for the small banner image. + smallBrandedBannerImageUrl: + $ref: "#/components/schemas/LocalizedProperty" + description: The URL for the 640px by 70px banner image that appears below the video player in the default view of the video watch page. The URL for the image that appears above the top-left corner of the video player. This is a 25-pixel-high image with a flexible width that cannot exceed 170 pixels. + trackingImageUrl: + description: The URL for a 1px by 1px tracking pixel that can be used to collect statistics for views of the channel or video pages. + type: string + watchIconImageUrl: + type: string + type: object + IngestionInfo: + description: Describes information necessary for ingesting an RTMP, HTTP, or SRT stream. + properties: + backupIngestionAddress: + description: The backup ingestion URL that you should use to stream video to YouTube. You have the option of simultaneously streaming the content that you are sending to the ingestionAddress to this URL. + type: string + ingestionAddress: + description: "The primary ingestion URL that you should use to stream video to YouTube. You must stream video to this URL. Depending on which application or tool you use to encode your video stream, you may need to enter the stream URL and stream name separately or you may need to concatenate them in the following format: *STREAM_URL/STREAM_NAME* " + type: string + rtmpsBackupIngestionAddress: + description: This ingestion url may be used instead of backupIngestionAddress in order to stream via RTMPS. Not applicable to non-RTMP streams. + type: string + rtmpsIngestionAddress: + description: This ingestion url may be used instead of ingestionAddress in order to stream via RTMPS. Not applicable to non-RTMP streams. + type: string + streamName: + description: The stream name that YouTube assigns to the video stream. + type: string + type: object + InvideoBranding: + description: LINT.IfChange Describes an invideo branding. + properties: + imageBytes: + description: The bytes the uploaded image. Only used in api to youtube communication. + format: byte + type: string + imageUrl: + description: The url of the uploaded image. Only used in apiary to api communication. + type: string + position: + $ref: "#/components/schemas/InvideoPosition" + description: The spatial position within the video where the branding watermark will be displayed. + targetChannelId: + description: The channel to which this branding links. If not present it defaults to the current channel. + type: string + timing: + $ref: "#/components/schemas/InvideoTiming" + description: The temporal position within the video where watermark will be displayed. + type: object + InvideoPosition: + description: Describes the spatial position of a visual widget inside a video. It is a union of various position types, out of which only will be set one. + properties: + cornerPosition: + description: Describes in which corner of the video the visual widget will appear. + enum: + - topLeft + - topRight + - bottomLeft + - bottomRight + type: string + type: + description: Defines the position type. + enum: + - corner + type: string + type: object + InvideoTiming: + description: Describes a temporal position of a visual widget inside a video. + properties: + durationMs: + description: Defines the duration in milliseconds for which the promotion should be displayed. If missing, the client should use the default. + format: uint64 + type: string + offsetMs: + description: Defines the time at which the promotion will appear. Depending on the value of type the value of the offsetMs field will represent a time offset from the start or from the end of the video, expressed in milliseconds. + format: uint64 + type: string + type: + description: Describes a timing type. If the value is offsetFromStart, then the offsetMs field represents an offset from the start of the video. If the value is offsetFromEnd, then the offsetMs field represents an offset from the end of the video. + enum: + - offsetFromStart + - offsetFromEnd + type: string + type: object + LanguageTag: + properties: + value: + type: string + type: object + LevelDetails: + properties: + displayName: + description: The name that should be used when referring to this level. + type: string + type: object + LiveBroadcast: + description: A *liveBroadcast* resource represents an event that will be streamed, via live video, on YouTube. + properties: + contentDetails: + $ref: "#/components/schemas/LiveBroadcastContentDetails" + description: The contentDetails object contains information about the event's video content, such as whether the content can be shown in an embedded video player or if it will be archived and therefore available for viewing after the event has concluded. + etag: + description: Etag of this resource. + type: string + id: + description: The ID that YouTube assigns to uniquely identify the broadcast. + type: string + kind: + default: youtube#liveBroadcast + description: 'Identifies what kind of resource this is. Value: the fixed string "youtube#liveBroadcast".' + type: string + snippet: + $ref: "#/components/schemas/LiveBroadcastSnippet" + description: The snippet object contains basic details about the event, including its title, description, start time, and end time. + statistics: + $ref: "#/components/schemas/LiveBroadcastStatistics" + description: The statistics object contains info about the event's current stats. These include concurrent viewers and total chat count. Statistics can change (in either direction) during the lifetime of an event. Statistics are only returned while the event is live. + status: + $ref: "#/components/schemas/LiveBroadcastStatus" + description: The status object contains information about the event's status. + type: object + LiveBroadcastContentDetails: + description: Detailed settings of a broadcast. + properties: + boundStreamId: + description: This value uniquely identifies the live stream bound to the broadcast. + type: string + boundStreamLastUpdateTimeMs: + description: The date and time that the live stream referenced by boundStreamId was last updated. + format: date-time + type: string + closedCaptionsType: + enum: + - closedCaptionsTypeUnspecified + - closedCaptionsDisabled + - closedCaptionsHttpPost + - closedCaptionsEmbedded + type: string + enableAutoStart: + description: This setting indicates whether auto start is enabled for this broadcast. The default value for this property is false. This setting can only be used by Events. + type: boolean + enableAutoStop: + description: This setting indicates whether auto stop is enabled for this broadcast. The default value for this property is false. This setting can only be used by Events. + type: boolean + enableClosedCaptions: + description: This setting indicates whether HTTP POST closed captioning is enabled for this broadcast. The ingestion URL of the closed captions is returned through the liveStreams API. This is mutually exclusive with using the closed_captions_type property, and is equivalent to setting closed_captions_type to CLOSED_CAPTIONS_HTTP_POST. + type: boolean + enableContentEncryption: + description: This setting indicates whether YouTube should enable content encryption for the broadcast. + type: boolean + enableDvr: + description: This setting determines whether viewers can access DVR controls while watching the video. DVR controls enable the viewer to control the video playback experience by pausing, rewinding, or fast forwarding content. The default value for this property is true. *Important:* You must set the value to true and also set the enableArchive property's value to true if you want to make playback available immediately after the broadcast ends. + type: boolean + enableEmbed: + description: This setting indicates whether the broadcast video can be played in an embedded player. If you choose to archive the video (using the enableArchive property), this setting will also apply to the archived video. + type: boolean + enableLowLatency: + description: Indicates whether this broadcast has low latency enabled. + type: boolean + latencyPreference: + description: If both this and enable_low_latency are set, they must match. LATENCY_NORMAL should match enable_low_latency=false LATENCY_LOW should match enable_low_latency=true LATENCY_ULTRA_LOW should have enable_low_latency omitted. + enum: + - latencyPreferenceUnspecified + - normal + - low + - ultraLow + type: string + mesh: + description: The mesh for projecting the video if projection is mesh. The mesh value must be a UTF-8 string containing the base-64 encoding of 3D mesh data that follows the Spherical Video V2 RFC specification for an mshp box, excluding the box size and type but including the following four reserved zero bytes for the version and flags. + format: byte + type: string + monitorStream: + $ref: "#/components/schemas/MonitorStreamInfo" + description: The monitorStream object contains information about the monitor stream, which the broadcaster can use to review the event content before the broadcast stream is shown publicly. + projection: + description: The projection format of this broadcast. This defaults to rectangular. + enum: + - projectionUnspecified + - rectangular + - "360" + - mesh + type: string + recordFromStart: + description: Automatically start recording after the event goes live. The default value for this property is true. *Important:* You must also set the enableDvr property's value to true if you want the playback to be available immediately after the broadcast ends. If you set this property's value to true but do not also set the enableDvr property to true, there may be a delay of around one day before the archived video will be available for playback. + type: boolean + startWithSlate: + description: This setting indicates whether the broadcast should automatically begin with an in-stream slate when you update the broadcast's status to live. After updating the status, you then need to send a liveCuepoints.insert request that sets the cuepoint's eventState to end to remove the in-stream slate and make your broadcast stream visible to viewers. + type: boolean + stereoLayout: + description: The 3D stereo layout of this broadcast. This defaults to mono. + enum: + - stereoLayoutUnspecified + - mono + - leftRight + - topBottom + type: string + type: object + LiveBroadcastListResponse: + properties: + etag: + description: Etag of this resource. + type: string + eventId: + description: Serialized EventId of the request which produced this response. + type: string + items: + description: A list of broadcasts that match the request criteria. + items: + $ref: "#/components/schemas/LiveBroadcast" + type: array + kind: + default: youtube#liveBroadcastListResponse + description: 'Identifies what kind of resource this is. Value: the fixed string "youtube#liveBroadcastListResponse".' + type: string + nextPageToken: + description: The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set. + type: string + pageInfo: + $ref: "#/components/schemas/PageInfo" + description: General pagination information. + prevPageToken: + description: The token that can be used as the value of the pageToken parameter to retrieve the previous page in the result set. + type: string + tokenPagination: + $ref: "#/components/schemas/TokenPagination" + visitorId: + description: The visitorId identifies the visitor. + type: string + type: object + LiveBroadcastSnippet: + description: Basic broadcast information. + properties: + actualEndTime: + description: The date and time that the broadcast actually ended. This information is only available once the broadcast's state is complete. + format: date-time + type: string + actualStartTime: + description: The date and time that the broadcast actually started. This information is only available once the broadcast's state is live. + format: date-time + type: string + channelId: + description: The ID that YouTube uses to uniquely identify the channel that is publishing the broadcast. + type: string + description: + description: The broadcast's description. As with the title, you can set this field by modifying the broadcast resource or by setting the description field of the corresponding video resource. + type: string + isDefaultBroadcast: + description: Indicates whether this broadcast is the default broadcast. Internal only. + type: boolean + liveChatId: + description: The id of the live chat for this broadcast. + type: string + publishedAt: + description: The date and time that the broadcast was added to YouTube's live broadcast schedule. + format: date-time + type: string + scheduledEndTime: + description: The date and time that the broadcast is scheduled to end. + format: date-time + type: string + scheduledStartTime: + description: The date and time that the broadcast is scheduled to start. + format: date-time + type: string + thumbnails: + $ref: "#/components/schemas/ThumbnailDetails" + description: A map of thumbnail images associated with the broadcast. For each nested object in this object, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail. + title: + description: The broadcast's title. Note that the broadcast represents exactly one YouTube video. You can set this field by modifying the broadcast resource or by setting the title field of the corresponding video resource. + type: string + type: object + LiveBroadcastStatistics: + description: Statistics about the live broadcast. These represent a snapshot of the values at the time of the request. Statistics are only returned for live broadcasts. + properties: + concurrentViewers: + description: The number of viewers currently watching the broadcast. The property and its value will be present if the broadcast has current viewers and the broadcast owner has not hidden the viewcount for the video. Note that YouTube stops tracking the number of concurrent viewers for a broadcast when the broadcast ends. So, this property would not identify the number of viewers watching an archived video of a live broadcast that already ended. + format: uint64 + type: string + type: object + LiveBroadcastStatus: + description: Live broadcast state. + properties: + lifeCycleStatus: + description: The broadcast's status. The status can be updated using the API's liveBroadcasts.transition method. + enum: + - lifeCycleStatusUnspecified + - created + - ready + - testing + - live + - complete + - revoked + - testStarting + - liveStarting + type: string + liveBroadcastPriority: + description: Priority of the live broadcast event (internal state). + enum: + - liveBroadcastPriorityUnspecified + - low + - normal + - high + type: string + madeForKids: + description: Whether the broadcast is made for kids or not, decided by YouTube instead of the creator. This field is read only. + type: boolean + privacyStatus: + description: The broadcast's privacy status. Note that the broadcast represents exactly one YouTube video, so the privacy settings are identical to those supported for videos. In addition, you can set this field by modifying the broadcast resource or by setting the privacyStatus field of the corresponding video resource. + enum: + - public + - unlisted + - private + type: string + recordingStatus: + description: The broadcast's recording status. + enum: + - liveBroadcastRecordingStatusUnspecified + - notRecording + - recording + - recorded + type: string + selfDeclaredMadeForKids: + description: "This field will be set to True if the creator declares the broadcast to be kids only: go/live-cw-work." + type: boolean + type: object + LiveChatBan: + description: A `__liveChatBan__` resource represents a ban for a YouTube live chat. + properties: + etag: + description: Etag of this resource. + type: string + id: + description: The ID that YouTube assigns to uniquely identify the ban. + type: string + kind: + default: youtube#liveChatBan + description: 'Identifies what kind of resource this is. Value: the fixed string `"youtube#liveChatBan"`.' + type: string + snippet: + $ref: "#/components/schemas/LiveChatBanSnippet" + description: The `snippet` object contains basic details about the ban. + type: object + LiveChatBanSnippet: + properties: + banDurationSeconds: + description: The duration of a ban, only filled if the ban has type TEMPORARY. + format: uint64 + type: string + bannedUserDetails: + $ref: "#/components/schemas/ChannelProfileDetails" + liveChatId: + description: The chat this ban is pertinent to. + type: string + type: + description: The type of ban. + enum: + - liveChatBanTypeUnspecified + - permanent + - temporary + type: string + type: object + LiveChatFanFundingEventDetails: + properties: + amountDisplayString: + description: A rendered string that displays the fund amount and currency to the user. + type: string + amountMicros: + description: The amount of the fund. + format: uint64 + type: string + currency: + description: The currency in which the fund was made. + type: string + userComment: + description: The comment added by the user to this fan funding event. + type: string + type: object + LiveChatGiftMembershipReceivedDetails: + properties: + associatedMembershipGiftingMessageId: + description: The ID of the membership gifting message that is related to this gift membership. This ID will always refer to a message whose type is 'membershipGiftingEvent'. + type: string + gifterChannelId: + description: The ID of the user that made the membership gifting purchase. This matches the `snippet.authorChannelId` of the associated membership gifting message. + type: string + memberLevelName: + description: The name of the Level at which the viewer is a member. This matches the `snippet.membershipGiftingDetails.giftMembershipsLevelName` of the associated membership gifting message. The Level names are defined by the YouTube channel offering the Membership. In some situations this field isn't filled. + type: string + type: object + LiveChatMemberMilestoneChatDetails: + properties: + memberLevelName: + description: The name of the Level at which the viever is a member. The Level names are defined by the YouTube channel offering the Membership. In some situations this field isn't filled. + type: string + memberMonth: + description: The total amount of months (rounded up) the viewer has been a member that granted them this Member Milestone Chat. This is the same number of months as is being displayed to YouTube users. + format: uint32 + type: integer + userComment: + description: The comment added by the member to this Member Milestone Chat. This field is empty for messages without a comment from the member. + type: string + type: object + LiveChatMembershipGiftingDetails: + properties: + giftMembershipsCount: + description: The number of gift memberships purchased by the user. + format: int32 + type: integer + giftMembershipsLevelName: + description: The name of the level of the gift memberships purchased by the user. The Level names are defined by the YouTube channel offering the Membership. In some situations this field isn't filled. + type: string + type: object + LiveChatMessage: + description: A *liveChatMessage* resource represents a chat message in a YouTube Live Chat. + properties: + authorDetails: + $ref: "#/components/schemas/LiveChatMessageAuthorDetails" + description: The authorDetails object contains basic details about the user that posted this message. + etag: + description: Etag of this resource. + type: string + id: + description: The ID that YouTube assigns to uniquely identify the message. + type: string + kind: + default: youtube#liveChatMessage + description: 'Identifies what kind of resource this is. Value: the fixed string "youtube#liveChatMessage".' + type: string + snippet: + $ref: "#/components/schemas/LiveChatMessageSnippet" + description: The snippet object contains basic details about the message. + type: object + LiveChatMessageAuthorDetails: + properties: + channelId: + description: The YouTube channel ID. + type: string + channelUrl: + description: The channel's URL. + type: string + displayName: + description: The channel's display name. + type: string + isChatModerator: + description: Whether the author is a moderator of the live chat. + type: boolean + isChatOwner: + description: Whether the author is the owner of the live chat. + type: boolean + isChatSponsor: + description: Whether the author is a sponsor of the live chat. + type: boolean + isVerified: + description: Whether the author's identity has been verified by YouTube. + type: boolean + profileImageUrl: + description: The channels's avatar URL. + type: string + type: object + LiveChatMessageDeletedDetails: + properties: + deletedMessageId: + type: string + type: object + LiveChatMessageListResponse: + properties: + etag: + description: Etag of this resource. + type: string + eventId: + description: Serialized EventId of the request which produced this response. + type: string + items: + items: + $ref: "#/components/schemas/LiveChatMessage" + type: array + kind: + default: youtube#liveChatMessageListResponse + description: 'Identifies what kind of resource this is. Value: the fixed string "youtube#liveChatMessageListResponse".' + type: string + nextPageToken: + type: string + offlineAt: + description: The date and time when the underlying stream went offline. + format: date-time + type: string + pageInfo: + $ref: "#/components/schemas/PageInfo" + description: General pagination information. + pollingIntervalMillis: + description: The amount of time the client should wait before polling again. + format: uint32 + type: integer + tokenPagination: + $ref: "#/components/schemas/TokenPagination" + visitorId: + description: The visitorId identifies the visitor. + type: string + type: object + LiveChatMessageRetractedDetails: + properties: + retractedMessageId: + type: string + type: object + LiveChatMessageSnippet: + description: "Next ID: 33" + properties: + authorChannelId: + description: The ID of the user that authored this message, this field is not always filled. textMessageEvent - the user that wrote the message fanFundingEvent - the user that funded the broadcast newSponsorEvent - the user that just became a sponsor memberMilestoneChatEvent - the member that sent the message membershipGiftingEvent - the user that made the purchase giftMembershipReceivedEvent - the user that received the gift membership messageDeletedEvent - the moderator that took the action messageRetractedEvent - the author that retracted their message userBannedEvent - the moderator that took the action superChatEvent - the user that made the purchase superStickerEvent - the user that made the purchase + type: string + displayMessage: + description: Contains a string that can be displayed to the user. If this field is not present the message is silent, at the moment only messages of type TOMBSTONE and CHAT_ENDED_EVENT are silent. + type: string + fanFundingEventDetails: + $ref: "#/components/schemas/LiveChatFanFundingEventDetails" + description: Details about the funding event, this is only set if the type is 'fanFundingEvent'. + giftMembershipReceivedDetails: + $ref: "#/components/schemas/LiveChatGiftMembershipReceivedDetails" + description: Details about the Gift Membership Received event, this is only set if the type is 'giftMembershipReceivedEvent'. + hasDisplayContent: + description: Whether the message has display content that should be displayed to users. + type: boolean + liveChatId: + type: string + memberMilestoneChatDetails: + $ref: "#/components/schemas/LiveChatMemberMilestoneChatDetails" + description: Details about the Member Milestone Chat event, this is only set if the type is 'memberMilestoneChatEvent'. + membershipGiftingDetails: + $ref: "#/components/schemas/LiveChatMembershipGiftingDetails" + description: Details about the Membership Gifting event, this is only set if the type is 'membershipGiftingEvent'. + messageDeletedDetails: + $ref: "#/components/schemas/LiveChatMessageDeletedDetails" + messageRetractedDetails: + $ref: "#/components/schemas/LiveChatMessageRetractedDetails" + newSponsorDetails: + $ref: "#/components/schemas/LiveChatNewSponsorDetails" + description: Details about the New Member Announcement event, this is only set if the type is 'newSponsorEvent'. Please note that "member" is the new term for "sponsor". + publishedAt: + description: The date and time when the message was orignally published. + format: date-time + type: string + superChatDetails: + $ref: "#/components/schemas/LiveChatSuperChatDetails" + description: Details about the Super Chat event, this is only set if the type is 'superChatEvent'. + superStickerDetails: + $ref: "#/components/schemas/LiveChatSuperStickerDetails" + description: Details about the Super Sticker event, this is only set if the type is 'superStickerEvent'. + textMessageDetails: + $ref: "#/components/schemas/LiveChatTextMessageDetails" + description: Details about the text message, this is only set if the type is 'textMessageEvent'. + type: + description: The type of message, this will always be present, it determines the contents of the message as well as which fields will be present. + enum: + - invalidType + - textMessageEvent + - tombstone + - fanFundingEvent + - chatEndedEvent + - sponsorOnlyModeStartedEvent + - sponsorOnlyModeEndedEvent + - newSponsorEvent + - memberMilestoneChatEvent + - membershipGiftingEvent + - giftMembershipReceivedEvent + - messageDeletedEvent + - messageRetractedEvent + - userBannedEvent + - superChatEvent + - superStickerEvent + type: string + userBannedDetails: + $ref: "#/components/schemas/LiveChatUserBannedMessageDetails" + type: object + LiveChatModerator: + description: A *liveChatModerator* resource represents a moderator for a YouTube live chat. A chat moderator has the ability to ban/unban users from a chat, remove message, etc. + properties: + etag: + description: Etag of this resource. + type: string + id: + description: The ID that YouTube assigns to uniquely identify the moderator. + type: string + kind: + default: youtube#liveChatModerator + description: 'Identifies what kind of resource this is. Value: the fixed string "youtube#liveChatModerator".' + type: string + snippet: + $ref: "#/components/schemas/LiveChatModeratorSnippet" + description: The snippet object contains basic details about the moderator. + type: object + LiveChatModeratorListResponse: + properties: + etag: + description: Etag of this resource. + type: string + eventId: + description: Serialized EventId of the request which produced this response. + type: string + items: + description: A list of moderators that match the request criteria. + items: + $ref: "#/components/schemas/LiveChatModerator" + type: array + kind: + default: youtube#liveChatModeratorListResponse + description: 'Identifies what kind of resource this is. Value: the fixed string "youtube#liveChatModeratorListResponse".' + type: string + nextPageToken: + description: The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set. + type: string + pageInfo: + $ref: "#/components/schemas/PageInfo" + description: General pagination information. + prevPageToken: + description: The token that can be used as the value of the pageToken parameter to retrieve the previous page in the result set. + type: string + tokenPagination: + $ref: "#/components/schemas/TokenPagination" + visitorId: + description: The visitorId identifies the visitor. + type: string + type: object + LiveChatModeratorSnippet: + properties: + liveChatId: + description: The ID of the live chat this moderator can act on. + type: string + moderatorDetails: + $ref: "#/components/schemas/ChannelProfileDetails" + description: Details about the moderator. + type: object + LiveChatNewSponsorDetails: + properties: + isUpgrade: + description: If the viewer just had upgraded from a lower level. For viewers that were not members at the time of purchase, this field is false. + type: boolean + memberLevelName: + description: The name of the Level that the viewer just had joined. The Level names are defined by the YouTube channel offering the Membership. In some situations this field isn't filled. + type: string + type: object + LiveChatSuperChatDetails: + properties: + amountDisplayString: + description: A rendered string that displays the fund amount and currency to the user. + type: string + amountMicros: + description: The amount purchased by the user, in micros (1,750,000 micros = 1.75). + format: uint64 + type: string + currency: + description: The currency in which the purchase was made. + type: string + tier: + description: The tier in which the amount belongs. Lower amounts belong to lower tiers. The lowest tier is 1. + format: uint32 + type: integer + userComment: + description: The comment added by the user to this Super Chat event. + type: string + type: object + LiveChatSuperStickerDetails: + properties: + amountDisplayString: + description: A rendered string that displays the fund amount and currency to the user. + type: string + amountMicros: + description: The amount purchased by the user, in micros (1,750,000 micros = 1.75). + format: uint64 + type: string + currency: + description: The currency in which the purchase was made. + type: string + superStickerMetadata: + $ref: "#/components/schemas/SuperStickerMetadata" + description: Information about the Super Sticker. + tier: + description: The tier in which the amount belongs. Lower amounts belong to lower tiers. The lowest tier is 1. + format: uint32 + type: integer + type: object + LiveChatTextMessageDetails: + properties: + messageText: + description: The user's message. + type: string + type: object + LiveChatUserBannedMessageDetails: + properties: + banDurationSeconds: + description: The duration of the ban. This property is only present if the banType is temporary. + format: uint64 + type: string + banType: + description: The type of ban. + enum: + - permanent + - temporary + type: string + bannedUserDetails: + $ref: "#/components/schemas/ChannelProfileDetails" + description: The details of the user that was banned. + type: object + LiveStream: + description: A live stream describes a live ingestion point. + properties: + cdn: + $ref: "#/components/schemas/CdnSettings" + description: The cdn object defines the live stream's content delivery network (CDN) settings. These settings provide details about the manner in which you stream your content to YouTube. + contentDetails: + $ref: "#/components/schemas/LiveStreamContentDetails" + description: The content_details object contains information about the stream, including the closed captions ingestion URL. + etag: + description: Etag of this resource. + type: string + id: + description: The ID that YouTube assigns to uniquely identify the stream. + type: string + kind: + default: youtube#liveStream + description: 'Identifies what kind of resource this is. Value: the fixed string "youtube#liveStream".' + type: string + snippet: + $ref: "#/components/schemas/LiveStreamSnippet" + description: The snippet object contains basic details about the stream, including its channel, title, and description. + status: + $ref: "#/components/schemas/LiveStreamStatus" + description: The status object contains information about live stream's status. + type: object + LiveStreamConfigurationIssue: + properties: + description: + description: The long-form description of the issue and how to resolve it. + type: string + reason: + description: The short-form reason for this issue. + type: string + severity: + description: How severe this issue is to the stream. + enum: + - info + - warning + - error + type: string + type: + description: The kind of error happening. + enum: + - gopSizeOver + - gopSizeLong + - gopSizeShort + - openGop + - badContainer + - audioBitrateHigh + - audioBitrateLow + - audioSampleRate + - bitrateHigh + - bitrateLow + - audioCodec + - videoCodec + - noAudioStream + - noVideoStream + - multipleVideoStreams + - multipleAudioStreams + - audioTooManyChannels + - interlacedVideo + - frameRateHigh + - resolutionMismatch + - videoCodecMismatch + - videoInterlaceMismatch + - videoProfileMismatch + - videoBitrateMismatch + - framerateMismatch + - gopMismatch + - audioSampleRateMismatch + - audioStereoMismatch + - audioCodecMismatch + - audioBitrateMismatch + - videoResolutionSuboptimal + - videoResolutionUnsupported + - videoIngestionStarved + - videoIngestionFasterThanRealtime + type: string + type: object + LiveStreamContentDetails: + description: Detailed settings of a stream. + properties: + closedCaptionsIngestionUrl: + description: The ingestion URL where the closed captions of this stream are sent. + type: string + isReusable: + description: "Indicates whether the stream is reusable, which means that it can be bound to multiple broadcasts. It is common for broadcasters to reuse the same stream for many different broadcasts if those broadcasts occur at different times. If you set this value to false, then the stream will not be reusable, which means that it can only be bound to one broadcast. Non-reusable streams differ from reusable streams in the following ways: - A non-reusable stream can only be bound to one broadcast. - A non-reusable stream might be deleted by an automated process after the broadcast ends. - The liveStreams.list method does not list non-reusable streams if you call the method and set the mine parameter to true. The only way to use that method to retrieve the resource for a non-reusable stream is to use the id parameter to identify the stream. " + type: boolean + type: object + LiveStreamHealthStatus: + properties: + configurationIssues: + description: The configurations issues on this stream + items: + $ref: "#/components/schemas/LiveStreamConfigurationIssue" + type: array + lastUpdateTimeSeconds: + description: The last time this status was updated (in seconds) + format: uint64 + type: string + status: + description: The status code of this stream + enum: + - good + - ok + - bad + - noData + - revoked + type: string + type: object + LiveStreamListResponse: + properties: + etag: + description: Etag of this resource. + type: string + eventId: + description: Serialized EventId of the request which produced this response. + type: string + items: + description: A list of live streams that match the request criteria. + items: + $ref: "#/components/schemas/LiveStream" + type: array + kind: + default: youtube#liveStreamListResponse + description: 'Identifies what kind of resource this is. Value: the fixed string "youtube#liveStreamListResponse".' + type: string + nextPageToken: + description: The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set. + type: string + pageInfo: + $ref: "#/components/schemas/PageInfo" + prevPageToken: + description: The token that can be used as the value of the pageToken parameter to retrieve the previous page in the result set. + type: string + tokenPagination: + $ref: "#/components/schemas/TokenPagination" + visitorId: + description: The visitorId identifies the visitor. + type: string + type: object + LiveStreamSnippet: + properties: + channelId: + description: The ID that YouTube uses to uniquely identify the channel that is transmitting the stream. + type: string + description: + description: The stream's description. The value cannot be longer than 10000 characters. + type: string + isDefaultStream: + type: boolean + publishedAt: + description: The date and time that the stream was created. + format: date-time + type: string + title: + description: The stream's title. The value must be between 1 and 128 characters long. + type: string + type: object + LiveStreamStatus: + description: Brief description of the live stream status. + properties: + healthStatus: + $ref: "#/components/schemas/LiveStreamHealthStatus" + description: The health status of the stream. + streamStatus: + enum: + - created + - ready + - active + - inactive + - error + type: string + type: object + LocalizedProperty: + properties: + defaultLanguage: + $ref: "#/components/schemas/LanguageTag" + description: The language of the default property. + localized: + items: + $ref: "#/components/schemas/LocalizedString" + type: array + type: object + LocalizedString: + properties: + language: + type: string + value: + type: string + type: object + Member: + description: A *member* resource represents a member for a YouTube channel. A member provides recurring monetary support to a creator and receives special benefits. + properties: + etag: + description: Etag of this resource. + type: string + kind: + default: youtube#member + description: 'Identifies what kind of resource this is. Value: the fixed string "youtube#member".' + type: string + snippet: + $ref: "#/components/schemas/MemberSnippet" + description: The snippet object contains basic details about the member. + type: object + MemberListResponse: + properties: + etag: + description: Etag of this resource. + type: string + eventId: + description: Serialized EventId of the request which produced this response. + type: string + items: + description: A list of members that match the request criteria. + items: + $ref: "#/components/schemas/Member" + type: array + kind: + default: youtube#memberListResponse + description: 'Identifies what kind of resource this is. Value: the fixed string "youtube#memberListResponse".' + type: string + nextPageToken: + description: The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set. + type: string + pageInfo: + $ref: "#/components/schemas/PageInfo" + tokenPagination: + $ref: "#/components/schemas/TokenPagination" + visitorId: + description: The visitorId identifies the visitor. + type: string + type: object + MemberSnippet: + properties: + creatorChannelId: + description: The id of the channel that's offering memberships. + type: string + memberDetails: + $ref: "#/components/schemas/ChannelProfileDetails" + description: Details about the member. + membershipsDetails: + $ref: "#/components/schemas/MembershipsDetails" + description: Details about the user's membership. + type: object + MembershipsDetails: + properties: + accessibleLevels: + description: Ids of all levels that the user has access to. This includes the currently active level and all other levels that are included because of a higher purchase. + items: + type: string + type: array + highestAccessibleLevel: + description: Id of the highest level that the user has access to at the moment. + type: string + highestAccessibleLevelDisplayName: + description: Display name for the highest level that the user has access to at the moment. + type: string + membershipsDuration: + $ref: "#/components/schemas/MembershipsDuration" + description: Data about memberships duration without taking into consideration pricing levels. + membershipsDurationAtLevels: + description: Data about memberships duration on particular pricing levels. + items: + $ref: "#/components/schemas/MembershipsDurationAtLevel" + type: array + type: object + MembershipsDuration: + properties: + memberSince: + description: The date and time when the user became a continuous member across all levels. + type: string + memberTotalDurationMonths: + description: The cumulative time the user has been a member across all levels in complete months (the time is rounded down to the nearest integer). + format: int32 + type: integer + type: object + MembershipsDurationAtLevel: + properties: + level: + description: Pricing level ID. + type: string + memberSince: + description: The date and time when the user became a continuous member for the given level. + type: string + memberTotalDurationMonths: + description: The cumulative time the user has been a member for the given level in complete months (the time is rounded down to the nearest integer). + format: int32 + type: integer + type: object + MembershipsLevel: + description: A *membershipsLevel* resource represents an offer made by YouTube creators for their fans. Users can become members of the channel by joining one of the available levels. They will provide recurring monetary support and receives special benefits. + properties: + etag: + description: Etag of this resource. + type: string + id: + description: The ID that YouTube assigns to uniquely identify the memberships level. + type: string + kind: + default: youtube#membershipsLevel + description: 'Identifies what kind of resource this is. Value: the fixed string "youtube#membershipsLevelListResponse".' + type: string + snippet: + $ref: "#/components/schemas/MembershipsLevelSnippet" + description: The snippet object contains basic details about the level. + type: object + MembershipsLevelListResponse: + properties: + etag: + description: Etag of this resource. + type: string + eventId: + description: Serialized EventId of the request which produced this response. + type: string + items: + description: A list of pricing levels offered by a creator to the fans. + items: + $ref: "#/components/schemas/MembershipsLevel" + type: array + kind: + default: youtube#membershipsLevelListResponse + description: 'Identifies what kind of resource this is. Value: the fixed string "youtube#membershipsLevelListResponse".' + type: string + visitorId: + description: The visitorId identifies the visitor. + type: string + type: object + MembershipsLevelSnippet: + properties: + creatorChannelId: + description: The id of the channel that's offering channel memberships. + type: string + levelDetails: + $ref: "#/components/schemas/LevelDetails" + description: Details about the pricing level. + type: object + MonitorStreamInfo: + description: Settings and Info of the monitor stream + properties: + broadcastStreamDelayMs: + description: If you have set the enableMonitorStream property to true, then this property determines the length of the live broadcast delay. + format: uint32 + type: integer + embedHtml: + description: HTML code that embeds a player that plays the monitor stream. + type: string + enableMonitorStream: + description: This value determines whether the monitor stream is enabled for the broadcast. If the monitor stream is enabled, then YouTube will broadcast the event content on a special stream intended only for the broadcaster's consumption. The broadcaster can use the stream to review the event content and also to identify the optimal times to insert cuepoints. You need to set this value to true if you intend to have a broadcast delay for your event. *Note:* This property cannot be updated once the broadcast is in the testing or live state. + type: boolean + type: object + PageInfo: + description: Paging details for lists of resources, including total number of items available and number of resources returned in a single page. + properties: + resultsPerPage: + description: The number of results included in the API response. + format: int32 + type: integer + totalResults: + description: The total number of results in the result set. + format: int32 + type: integer + type: object + Playlist: + description: "A *playlist* resource represents a YouTube playlist. A playlist is a collection of videos that can be viewed sequentially and shared with other users. A playlist can contain up to 200 videos, and YouTube does not limit the number of playlists that each user creates. By default, playlists are publicly visible to other users, but playlists can be public or private. YouTube also uses playlists to identify special collections of videos for a channel, such as: - uploaded videos - favorite videos - positively rated (liked) videos - watch history - watch later To be more specific, these lists are associated with a channel, which is a collection of a person, group, or company's videos, playlists, and other YouTube information. You can retrieve the playlist IDs for each of these lists from the channel resource for a given channel. You can then use the playlistItems.list method to retrieve any of those lists. You can also add or remove items from those lists by calling the playlistItems.insert and playlistItems.delete methods." + properties: + contentDetails: + $ref: "#/components/schemas/PlaylistContentDetails" + description: The contentDetails object contains information like video count. + etag: + description: Etag of this resource. + type: string + id: + description: The ID that YouTube uses to uniquely identify the playlist. + type: string + kind: + default: youtube#playlist + description: 'Identifies what kind of resource this is. Value: the fixed string "youtube#playlist".' + type: string + localizations: + additionalProperties: + $ref: "#/components/schemas/PlaylistLocalization" + description: Localizations for different languages + type: object + player: + $ref: "#/components/schemas/PlaylistPlayer" + description: The player object contains information that you would use to play the playlist in an embedded player. + snippet: + $ref: "#/components/schemas/PlaylistSnippet" + description: The snippet object contains basic details about the playlist, such as its title and description. + status: + $ref: "#/components/schemas/PlaylistStatus" + description: The status object contains status information for the playlist. + type: object + PlaylistContentDetails: + properties: + itemCount: + description: The number of videos in the playlist. + format: uint32 + type: integer + type: object + PlaylistItem: + description: "A *playlistItem* resource identifies another resource, such as a video, that is included in a playlist. In addition, the playlistItem resource contains details about the included resource that pertain specifically to how that resource is used in that playlist. YouTube uses playlists to identify special collections of videos for a channel, such as: - uploaded videos - favorite videos - positively rated (liked) videos - watch history - watch later To be more specific, these lists are associated with a channel, which is a collection of a person, group, or company's videos, playlists, and other YouTube information. You can retrieve the playlist IDs for each of these lists from the channel resource for a given channel. You can then use the playlistItems.list method to retrieve any of those lists. You can also add or remove items from those lists by calling the playlistItems.insert and playlistItems.delete methods. For example, if a user gives a positive rating to a video, you would insert that video into the liked videos playlist for that user's channel." + properties: + contentDetails: + $ref: "#/components/schemas/PlaylistItemContentDetails" + description: The contentDetails object is included in the resource if the included item is a YouTube video. The object contains additional information about the video. + etag: + description: Etag of this resource. + type: string + id: + description: The ID that YouTube uses to uniquely identify the playlist item. + type: string + kind: + default: youtube#playlistItem + description: 'Identifies what kind of resource this is. Value: the fixed string "youtube#playlistItem".' + type: string + snippet: + $ref: "#/components/schemas/PlaylistItemSnippet" + description: The snippet object contains basic details about the playlist item, such as its title and position in the playlist. + status: + $ref: "#/components/schemas/PlaylistItemStatus" + description: The status object contains information about the playlist item's privacy status. + type: object + PlaylistItemContentDetails: + properties: + endAt: + description: The time, measured in seconds from the start of the video, when the video should stop playing. (The playlist owner can specify the times when the video should start and stop playing when the video is played in the context of the playlist.) By default, assume that the video.endTime is the end of the video. + type: string + note: + description: A user-generated note for this item. + type: string + startAt: + description: The time, measured in seconds from the start of the video, when the video should start playing. (The playlist owner can specify the times when the video should start and stop playing when the video is played in the context of the playlist.) The default value is 0. + type: string + videoId: + description: The ID that YouTube uses to uniquely identify a video. To retrieve the video resource, set the id query parameter to this value in your API request. + type: string + videoPublishedAt: + description: The date and time that the video was published to YouTube. + format: date-time + type: string + type: object + PlaylistItemListResponse: + properties: + etag: + type: string + eventId: + description: Serialized EventId of the request which produced this response. + type: string + items: + description: A list of playlist items that match the request criteria. + items: + $ref: "#/components/schemas/PlaylistItem" + type: array + kind: + default: youtube#playlistItemListResponse + description: 'Identifies what kind of resource this is. Value: the fixed string "youtube#playlistItemListResponse". Etag of this resource.' + type: string + nextPageToken: + description: The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set. + type: string + pageInfo: + $ref: "#/components/schemas/PageInfo" + description: General pagination information. + prevPageToken: + description: The token that can be used as the value of the pageToken parameter to retrieve the previous page in the result set. + type: string + tokenPagination: + $ref: "#/components/schemas/TokenPagination" + visitorId: + description: The visitorId identifies the visitor. + type: string + type: object + PlaylistItemSnippet: + description: "Basic details about a playlist, including title, description and thumbnails. Basic details of a YouTube Playlist item provided by the author. Next ID: 15" + properties: + channelId: + description: The ID that YouTube uses to uniquely identify the user that added the item to the playlist. + type: string + channelTitle: + description: Channel title for the channel that the playlist item belongs to. + type: string + description: + description: The item's description. + type: string + playlistId: + description: The ID that YouTube uses to uniquely identify thGe playlist that the playlist item is in. + type: string + position: + description: The order in which the item appears in the playlist. The value uses a zero-based index, so the first item has a position of 0, the second item has a position of 1, and so forth. + format: uint32 + type: integer + publishedAt: + description: The date and time that the item was added to the playlist. + format: date-time + type: string + resourceId: + $ref: "#/components/schemas/ResourceId" + description: The id object contains information that can be used to uniquely identify the resource that is included in the playlist as the playlist item. + thumbnails: + $ref: "#/components/schemas/ThumbnailDetails" + description: A map of thumbnail images associated with the playlist item. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail. + title: + description: The item's title. + type: string + videoOwnerChannelId: + description: Channel id for the channel this video belongs to. + type: string + videoOwnerChannelTitle: + description: Channel title for the channel this video belongs to. + type: string + type: object + PlaylistItemStatus: + description: Information about the playlist item's privacy status. + properties: + privacyStatus: + description: This resource's privacy status. + enum: + - public + - unlisted + - private + type: string + type: object + PlaylistListResponse: + properties: + etag: + description: Etag of this resource. + type: string + eventId: + description: Serialized EventId of the request which produced this response. + type: string + items: + description: A list of playlists that match the request criteria + items: + $ref: "#/components/schemas/Playlist" + type: array + kind: + default: youtube#playlistListResponse + description: 'Identifies what kind of resource this is. Value: the fixed string "youtube#playlistListResponse".' + type: string + nextPageToken: + description: The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set. + type: string + pageInfo: + $ref: "#/components/schemas/PageInfo" + description: General pagination information. + prevPageToken: + description: The token that can be used as the value of the pageToken parameter to retrieve the previous page in the result set. + type: string + tokenPagination: + $ref: "#/components/schemas/TokenPagination" + visitorId: + description: The visitorId identifies the visitor. + type: string + type: object + PlaylistLocalization: + description: Playlist localization setting + properties: + description: + description: The localized strings for playlist's description. + type: string + title: + description: The localized strings for playlist's title. + type: string + type: object + PlaylistPlayer: + properties: + embedHtml: + description: An