diff --git a/.github/workflows/annotation.yml b/.github/workflows/annotation.yml index 42395a351..6b842a048 100644 --- a/.github/workflows/annotation.yml +++ b/.github/workflows/annotation.yml @@ -63,6 +63,7 @@ jobs: poetry install --no-root poetry add ../lib/filter_lib poetry add ../lib/tenants + poetry add ../lib/badgerdoc_cli poetry run alembic upgrade head poetry run pytest env: diff --git a/.github/workflows/assets.yml b/.github/workflows/assets.yml index a855cc1ba..2664d92d9 100644 --- a/.github/workflows/assets.yml +++ b/.github/workflows/assets.yml @@ -74,6 +74,7 @@ jobs: poetry install --no-root --no-interaction poetry add ../lib/filter_lib poetry add ../lib/tenants + poetry add ../lib/badgerdoc_cli - name: Test with pytest run: | cd assets diff --git a/.github/workflows/badgerdoc-cli.yml b/.github/workflows/badgerdoc-cli.yml new file mode 100644 index 000000000..1c880d4bc --- /dev/null +++ b/.github/workflows/badgerdoc-cli.yml @@ -0,0 +1,36 @@ +name: badgerdoc_cli linters and tests +on: + push: + paths: + - lib/badgerdoc_cli/** + - .github/worlflows/badgerdoc-cli.yml + pull_request: + paths: + - lib/badgerdoc_cli/** + - .github/worlflows/badgerdoc-cli.yml +jobs: + badgerdoc-cli-test: + strategy: + matrix: + python-version: [ "3.8.15" ] + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + cache: 'pip' + - name: Install dependencies + working-directory: ./lib/badgerdoc_cli + run: | + python -m pip install --upgrade pip + pip install ".[dev]" + - name: Run linters and checkers [isort -> black -> mypy -> pylint] + working-directory: ./lib/badgerdoc_cli + run: | + git ls-files -- . | xargs pre-commit run --files + - name: Run tests + working-directory: ./lib/badgerdoc_cli + run: | + pytest tests/ diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml new file mode 100644 index 000000000..68ad3033d --- /dev/null +++ b/.github/workflows/documentation.yml @@ -0,0 +1,377 @@ +name: Documentation build and push +jobs: + annotation: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: [ "3.8.15" ] + env: + SPEC_PATH: ./docs/openapi/annotation.json + steps: + - uses: actions/checkout@v3 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + cache: 'pip' + - name: Install dependencies + working-directory: ./annotation + run: | + python -m pip install --upgrade pip + pip install poetry + poetry install --no-root --without dev + poetry add ../lib/filter_lib + poetry add ../lib/tenants + poetry add ../lib/badgerdoc_cli + - name: Generate documentation + working-directory: ./annotation + run: poetry run badgerdoc openapi .$SPEC_PATH + env: + PYTHONPATH: . + - name: Save documentation + uses: actions/upload-artifact@v3 + with: + path: ${{ env.SPEC_PATH }} + assets: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: [ "3.8.15" ] + env: + SPEC_PATH: ./docs/openapi/assets.json + steps: + - uses: actions/checkout@v3 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + cache: 'pip' + - name: Install dependencies + working-directory: ./assets + run: | + sudo apt-get update && sudo apt-get -y install poppler-utils + python -m pip install --upgrade pip + pip install poetry + poetry install --no-root --without dev + poetry add ../lib/filter_lib + poetry add ../lib/tenants + poetry add ../lib/badgerdoc_cli + - name: Generate documentation + working-directory: ./assets + run: poetry run badgerdoc openapi .$SPEC_PATH + env: + PYTHONPATH: . + - name: Save documentation + uses: actions/upload-artifact@v3 + with: + path: ${{ env.SPEC_PATH }} + convert: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: [ "3.8.15" ] + env: + SPEC_PATH: ./docs/openapi/convert.json + steps: + - uses: actions/checkout@v3 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + cache: 'pip' + - name: Install dependencies + working-directory: ./convert + run: | + python -m pip install --upgrade pip + pip install poetry + poetry install --no-root --without dev + poetry add ../lib/tenants + poetry add ../lib/badgerdoc_cli + - name: Generate documentation + working-directory: ./convert + run: poetry run badgerdoc openapi .$SPEC_PATH + env: + PYTHONPATH: . + - name: Save documentation + uses: actions/upload-artifact@v3 + with: + path: ${{ env.SPEC_PATH }} + jobs: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: [ "3.8.15" ] + env: + SPEC_PATH: ./docs/openapi/jobs.json + steps: + - uses: actions/checkout@v3 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + cache: 'pip' + - name: Install dependencies + working-directory: ./jobs + run: | + python -m pip install --upgrade pip + pip install poetry + poetry install --no-root --without dev + poetry add ../lib/filter_lib + poetry add ../lib/tenants + poetry add ../lib/badgerdoc_cli + - name: Generate documentation + working-directory: ./jobs + run: poetry run badgerdoc openapi .$SPEC_PATH + env: + PYTHONPATH: . + - name: Save documentation + uses: actions/upload-artifact@v3 + with: + path: ${{ env.SPEC_PATH }} + models: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: [ "3.8.15" ] + env: + SPEC_PATH: ./docs/openapi/models.json + steps: + - uses: actions/checkout@v3 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + cache: 'pip' + - name: Install dependencies + working-directory: ./models + run: | + python -m pip install --upgrade pip + pip install poetry + poetry install --no-root --without dev + poetry add ../lib/filter_lib + poetry add ../lib/tenants + poetry add ../lib/badgerdoc_cli + - name: Generate documentation + working-directory: ./models + run: poetry run badgerdoc openapi .$SPEC_PATH + env: + PYTHONPATH: . + - name: Save documentation + uses: actions/upload-artifact@v3 + with: + path: ${{ env.SPEC_PATH }} + pipelines: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: [ "3.8.15" ] + env: + SPEC_PATH: ./docs/openapi/pipelines.json + steps: + - uses: actions/checkout@v3 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + cache: 'pip' + - name: Install dependencies + working-directory: ./pipelines + run: | + python -m pip install --upgrade pip + pip install poetry + poetry install --no-root --without dev + poetry add ../lib/filter_lib + poetry add ../lib/tenants + poetry add ../lib/badgerdoc_cli + - name: Generate documentation + working-directory: ./pipelines + run: poetry run badgerdoc openapi .$SPEC_PATH + env: + PYTHONPATH: . + - name: Save documentation + uses: actions/upload-artifact@v3 + with: + path: ${{ env.SPEC_PATH }} + processing: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: [ "3.8.15" ] + env: + SPEC_PATH: ./docs/openapi/processing.json + steps: + - uses: actions/checkout@v3 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + cache: 'pip' + - name: Install dependencies + working-directory: ./processing + run: | + python -m pip install --upgrade pip + pip install poetry + poetry install --no-root --without dev + poetry add ../lib/tenants + poetry add ../lib/badgerdoc_cli + - name: Generate documentation + working-directory: ./processing + run: poetry run badgerdoc openapi .$SPEC_PATH + env: + PYTHONPATH: . + - name: Save documentation + uses: actions/upload-artifact@v3 + with: + path: ${{ env.SPEC_PATH }} + scheduler: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: [ "3.8.15" ] + env: + SPEC_PATH: ./docs/openapi/scheduler.json + steps: + - uses: actions/checkout@v3 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + cache: 'pip' + - name: Install dependencies + working-directory: ./scheduler + run: | + python -m pip install --upgrade pip + pip install poetry + poetry install --no-root --without dev + poetry add ../lib/tenants + poetry add ../lib/badgerdoc_cli + - name: Generate documentation + working-directory: ./scheduler + run: poetry run badgerdoc openapi .$SPEC_PATH + env: + PYTHONPATH: . + - name: Save documentation + uses: actions/upload-artifact@v3 + with: + path: ${{ env.SPEC_PATH }} + search: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: [ "3.8.15" ] + env: + SPEC_PATH: ./docs/openapi/search.json + steps: + - uses: actions/checkout@v3 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + cache: 'pip' + - name: Install dependencies + working-directory: ./search + run: | + python -m pip install --upgrade pip + pip install poetry + poetry install --no-root --without dev + poetry add ../lib/filter_lib + poetry add ../lib/tenants + poetry add ../lib/badgerdoc_cli + - name: Generate documentation + working-directory: ./search + run: poetry run badgerdoc openapi .$SPEC_PATH + env: + PYTHONPATH: . + - name: Save documentation + uses: actions/upload-artifact@v3 + with: + path: ${{ env.SPEC_PATH }} + taxonomy: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: [ "3.8.15" ] + env: + SPEC_PATH: ./docs/openapi/taxonomy.json + steps: + - uses: actions/checkout@v3 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + cache: 'pip' + - name: Install dependencies + working-directory: ./taxonomy + run: | + python -m pip install --upgrade pip + pip install poetry + poetry install --no-root --without dev + poetry add ../lib/filter_lib + poetry add ../lib/tenants + poetry add ../lib/badgerdoc_cli + - name: Generate documentation + working-directory: ./taxonomy + run: poetry run badgerdoc openapi .$SPEC_PATH + env: + PYTHONPATH: . + - name: Save documentation + uses: actions/upload-artifact@v3 + with: + path: ${{ env.SPEC_PATH }} + users: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: [ "3.8.15" ] + env: + SPEC_PATH: ./docs/openapi/users.json + steps: + - uses: actions/checkout@v3 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + cache: 'pip' + - name: Install dependencies + working-directory: ./users + run: | + python -m pip install --upgrade pip + pip install poetry + poetry install --no-root --without dev + poetry add ../lib/tenants + poetry add ../lib/badgerdoc_cli + - name: Generate documentation + working-directory: ./users + run: poetry run badgerdoc openapi .$SPEC_PATH + env: + PYTHONPATH: . + - name: Save documentation + uses: actions/upload-artifact@v3 + with: + path: ${{ env.SPEC_PATH }} + commit-specs: + runs-on: ubuntu-latest + needs: [annotation, assets, convert, jobs, models, pipelines, processing, scheduler, search, taxonomy, users] + env: + DOCS_PATH: ./docs/openapi + steps: + - uses: actions/checkout@v3 + - name: Download generated specs + id: download + uses: actions/download-artifact@v3 + with: + path: /tmp + - name: Extract downloaded specs + run: mv ${{ steps.download.outputs.download-path }}/artifact/*.json ${{ env.DOCS_PATH }} + - name: Push documentation + working-directory: ${{ env.DOCS_PATH }} + run: | + git add . + if git diff --quiet HEAD ./; then + echo No changes in documentation, exiting + exit 0 + fi + echo '# TODO: Do nothing right now, replace with push to S3 later' +# git -c user.name='github-actions[bot]' -c user.email='github-actions[bot]@users.noreply.github.com' \ +# commit --message "docs: update openapi specs" +# git push origin HEAD diff --git a/.gitignore b/.gitignore index c8401d2fb..2388fb972 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,46 @@ build_dir/ -.env \ No newline at end of file +.env +# Editors +.vscode/ +.idea/ + +# Mac/OSX +.DS_Store + +# Windows +Thumbs.db + +# Source for the following rules: https://raw.githubusercontent.com/github/gitignore/master/Python.gitignore +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# Distribution / packaging +build/ +dist/ +eggs/ +.eggs/ +#lib/ +lib64/ +sdist/ +wheels/ +*.egg-info/ +*.egg + +# Unit test / coverage reports +htmlcov/ +.coverage +.coverage.* +.cache +coverage.xml +*.cover +.pytest_cache/ + +# Environments +.venv +env/ +venv/ + +# mypy +.mypy_cache/ diff --git a/README.md b/README.md index feb89e5af..e54b53e0b 100644 --- a/README.md +++ b/README.md @@ -112,7 +112,7 @@ cd assets && pipenv install --dev ``` 2. Install dependencies from "lib" folder: ``` -pipenv shell && pip install -e ../lib/filter_lib ../lib/tenants +pipenv shell && pip install -e ../lib/filter_lib ../lib/tenants ../lib/badgerdoc_cli ``` # Contributors diff --git a/annotation/alembic/versions/66cd6054c2d0_add_categories_tree.py b/annotation/alembic/versions/66cd6054c2d0_add_categories_tree.py index 58c611a5f..c2aa87e8e 100644 --- a/annotation/alembic/versions/66cd6054c2d0_add_categories_tree.py +++ b/annotation/alembic/versions/66cd6054c2d0_add_categories_tree.py @@ -9,6 +9,7 @@ import sqlalchemy_utils from alembic import op +from annotation import database # revision identifiers, used by Alembic. revision = "66cd6054c2d0" @@ -19,6 +20,7 @@ def upgrade(): # ### commands auto generated by Alembic - please adjust! ### + database.install_ltree_extension() op.add_column( "categories", sa.Column( diff --git a/annotation/annotation/annotations/resources.py b/annotation/annotation/annotations/resources.py index 5071acd66..4255073b8 100644 --- a/annotation/annotation/annotations/resources.py +++ b/annotation/annotation/annotations/resources.py @@ -64,7 +64,6 @@ 500: {"model": ConnectionErrorSchema}, }, summary="Save annotation by user.", - tags=[ANNOTATION_TAG], ) def post_annotation_by_user( doc: DocForSaveSchema, @@ -232,7 +231,6 @@ def post_annotation_by_user( 500: {"model": ConnectionErrorSchema}, }, summary="Save annotation by pipeline.", - tags=[ANNOTATION_TAG], ) def post_annotation_by_pipeline( doc: DocForSaveSchema, @@ -365,7 +363,7 @@ def get_jobs_by_file_id( }, summary="Get latest revision made by particular " "user (or by pipeline) for particular pages.", - tags=[REVISION_TAG, ANNOTATION_TAG], + tags=[REVISION_TAG], ) def get_latest_revision_by_user( job_id: int = Path(..., example=3), @@ -407,7 +405,7 @@ def get_latest_revision_by_user( summary="Get annotation for given revision." "Info will be accumulated from first revision up to" "given.", - tags=[REVISION_TAG, ANNOTATION_TAG], + tags=[REVISION_TAG], ) def get_annotations_up_to_given_revision( job_id: int = Path(..., example=1), @@ -500,7 +498,7 @@ def get_annotations_up_to_given_revision( 500: {"model": ConnectionErrorSchema}, }, summary="Get annotation for latest or particular revision.", - tags=[REVISION_TAG, ANNOTATION_TAG], + tags=[REVISION_TAG], ) def get_annotation_for_given_revision( job_id: int = Path(..., example=1), @@ -544,7 +542,7 @@ def get_annotation_for_given_revision( }, summary="Get all users revisions (or pipeline revision) " "for particular pages.", - tags=[REVISION_TAG, ANNOTATION_TAG], + tags=[REVISION_TAG], ) def get_all_revisions( job_id: int, diff --git a/annotation/annotation/database.py b/annotation/annotation/database.py index 7ba749db9..d77472733 100644 --- a/annotation/annotation/database.py +++ b/annotation/annotation/database.py @@ -18,14 +18,16 @@ engine = create_engine(SQLALCHEMY_DATABASE_URL) -# Ensure LTREE extensions is installed -with engine.connect() as conn: - try: - conn.execute(sqlalchemy.sql.text("CREATE EXTENSION LTREE")) - except sqlalchemy.exc.ProgrammingError as err_: - # Exctension installed, just skip error - if "DuplicateObject" not in str(err_): - raise err_ + +def install_ltree_extension() -> None: + # Ensure LTREE extensions is installed + with engine.connect() as conn: + try: + conn.execute(sqlalchemy.sql.text("CREATE EXTENSION LTREE")) + except sqlalchemy.exc.ProgrammingError as err_: + # Exctension installed, just skip error + if "DuplicateObject" not in str(err_): + raise err_ def todict(obj): diff --git a/annotation/annotation/jobs/resources.py b/annotation/annotation/jobs/resources.py index 379fd28b1..7dbb9e804 100644 --- a/annotation/annotation/jobs/resources.py +++ b/annotation/annotation/jobs/resources.py @@ -50,7 +50,7 @@ UnassignedFilesInfoSchema, ValidationSchema, ) -from annotation.tags import FILES_TAG, JOBS_TAG +from annotation.tags import JOBS_TAG from annotation.token_dependency import TOKEN from ..models import ( @@ -82,13 +82,13 @@ router = APIRouter( prefix="/jobs", responses={500: {"model": ConnectionErrorSchema}}, + tags=[JOBS_TAG], ) @router.post( "/{job_id}", status_code=status.HTTP_201_CREATED, - tags=[JOBS_TAG], responses={ 400: {"model": BadRequestErrorSchema}, }, @@ -207,7 +207,6 @@ def post_job( @router.patch( "/{job_id}", status_code=status.HTTP_204_NO_CONTENT, - tags=[JOBS_TAG], responses={ 400: {"model": BadRequestErrorSchema}, 404: {"model": NotFoundErrorSchema}, @@ -289,7 +288,6 @@ def update_job( "/{job_id}/files", status_code=status.HTTP_200_OK, response_model=JobFilesInfoSchema, - tags=[FILES_TAG], responses={ 404: {"model": NotFoundErrorSchema}, }, @@ -337,7 +335,6 @@ def get_job_files( "/{job_id}/files/unassigned", status_code=status.HTTP_200_OK, response_model=UnassignedFilesInfoSchema, - tags=[FILES_TAG], summary="Get list of unassigned files by job id.", ) def get_unassigned_files( @@ -408,7 +405,6 @@ def get_unassigned_files( @router.post( "/{job_id}/start", - tags=[JOBS_TAG], status_code=status.HTTP_200_OK, response_model=List[ManualAnnotationTaskSchema], responses={ @@ -482,7 +478,6 @@ def start_job( "/{job_id}/users", status_code=status.HTTP_200_OK, response_model=List[Dict[str, Union[UUID, int]]], - tags=[JOBS_TAG], responses={ 404: {"model": NotFoundErrorSchema}, }, @@ -510,7 +505,6 @@ def get_users_for_job( @router.get( "/{job_id}/categories", status_code=status.HTTP_200_OK, - tags=[JOBS_TAG], response_model=Page[Union[CategoryResponseSchema, str, dict]], summary="Get list of categories for provided job_id", responses={ @@ -542,7 +536,6 @@ def fetch_job_categories( @router.post( "/{job_id}/categories/search", status_code=status.HTTP_200_OK, - tags=[JOBS_TAG], response_model=Page[Union[CategoryResponseSchema, str, dict]], summary="Search categories for provided job_id", responses={ @@ -579,7 +572,6 @@ def search_job_categories( @router.get( "", status_code=status.HTTP_200_OK, - tags=[JOBS_TAG], summary="Get info about jobs, in which provided file ids participate", ) def get_jobs_info_by_files( @@ -602,7 +594,6 @@ def get_jobs_info_by_files( "/{job_id}/progress", status_code=status.HTTP_200_OK, response_model=JobProgressSchema, - tags=[JOBS_TAG], responses={ 404: {"model": NotFoundErrorSchema}, }, diff --git a/annotation/annotation/main.py b/annotation/annotation/main.py index 45f4c283b..8937641e4 100644 --- a/annotation/annotation/main.py +++ b/annotation/annotation/main.py @@ -1,12 +1,7 @@ import os import pathlib -from botocore.exceptions import BotoCoreError, ClientError -from dotenv import find_dotenv, load_dotenv -from fastapi import Depends, FastAPI -from sqlalchemy.exc import DBAPIError, SQLAlchemyError -from starlette.requests import Request - +from annotation import database from annotation import logger as app_logger from annotation.annotations import resources as annotations_resources from annotation.categories import resources as categories_resources @@ -42,6 +37,11 @@ from annotation.tags import TAGS from annotation.tasks import resources as task_resources from annotation.token_dependency import TOKEN +from botocore.exceptions import BotoCoreError, ClientError +from dotenv import find_dotenv, load_dotenv +from fastapi import Depends, FastAPI +from sqlalchemy.exc import DBAPIError, SQLAlchemyError +from starlette.requests import Request load_dotenv(find_dotenv()) @@ -70,6 +70,11 @@ def get_version() -> str: logger = app_logger.Logger +@app.on_event("startup") +def setup_db(): + database.install_ltree_extension() + + async def catch_exceptions_middleware(request: Request, call_next): try: return await call_next(request) @@ -105,3 +110,10 @@ async def catch_exceptions_middleware(request: Request, call_next): app.add_exception_handler(DBAPIError, db_dbapi_error_handler) app.add_exception_handler(SelfParentError, category_parent_child_error_handler) app.add_exception_handler(Exception, debug_exception_handler) + + +def cli_handler() -> None: + from badgerdoc_cli import cli_handler, init_cli_app + + init_cli_app(app) + cli_handler() diff --git a/annotation/annotation/metadata/resources.py b/annotation/annotation/metadata/resources.py index f64c2aab1..9faa8d520 100644 --- a/annotation/annotation/metadata/resources.py +++ b/annotation/annotation/metadata/resources.py @@ -4,11 +4,11 @@ X_CURRENT_TENANT_HEADER, ) from annotation.schemas import EntitiesStatusesSchema -from annotation.tags import METADATA_TAG, TASKS_TAG +from annotation.tags import METADATA_TAG router = APIRouter( prefix="/metadata", - tags=[TASKS_TAG, METADATA_TAG], + tags=[METADATA_TAG], ) diff --git a/annotation/annotation/revisions/resources.py b/annotation/annotation/revisions/resources.py index 2bc837d27..702f51bbb 100644 --- a/annotation/annotation/revisions/resources.py +++ b/annotation/annotation/revisions/resources.py @@ -10,11 +10,11 @@ ) from annotation.models import AnnotatedDoc from annotation.schemas import AnnotatedDocSchema, ConnectionErrorSchema -from annotation.tags import ANNOTATION_TAG, REVISION_TAG +from annotation.tags import REVISION_TAG router = APIRouter( prefix="/revisions", - tags=[REVISION_TAG, ANNOTATION_TAG], + tags=[REVISION_TAG], responses={500: {"model": ConnectionErrorSchema}}, ) diff --git a/annotation/annotation/tasks/resources.py b/annotation/annotation/tasks/resources.py index c11087c20..33e4d7c27 100644 --- a/annotation/annotation/tasks/resources.py +++ b/annotation/annotation/tasks/resources.py @@ -72,7 +72,7 @@ ValidationEndSchema, ValidationSchema, ) -from annotation.tags import REVISION_TAG, TASKS_TAG +from annotation.tags import TASKS_TAG from annotation.tasks.validation import ( create_annotation_tasks, create_validation_tasks, @@ -716,7 +716,6 @@ def delete_batch_tasks( "/{task_id}/pages_summary", status_code=status.HTTP_200_OK, response_model=PagesInfoSchema, - tags=[REVISION_TAG], responses={ 404: {"model": NotFoundErrorSchema}, }, diff --git a/annotation/pyproject.toml b/annotation/pyproject.toml index b0dfa9a9f..752d7393f 100644 --- a/annotation/pyproject.toml +++ b/annotation/pyproject.toml @@ -20,7 +20,7 @@ cachetools = "^5.0.0" kafka-python = "^2.0.2" sqlalchemy-utils = "^0.38.3" -[tool.poetry.dev-dependencies] +[tool.poetry.group.dev.dependencies] pre-commit = "^2.14.0" commitizen = "^2.18.0" black = "^22.3.0" @@ -32,6 +32,9 @@ moto = {extras = ["s3"], version = "^2.2.8"} pytest-cov = "^3.0.0" click = "^8.1.3" +[tool.poetry.scripts] +badgerdoc = "annotation.main:cli_handler" + [build-system] requires = ["poetry-core"] build-backend = "poetry.core.masonry.api" diff --git a/assets/assets/main.py b/assets/assets/main.py index 0f850aa04..23b979a05 100644 --- a/assets/assets/main.py +++ b/assets/assets/main.py @@ -1,8 +1,9 @@ -from assets import routers -from assets.config import settings from fastapi import Depends, FastAPI from tenant_dependency import get_tenant_info +from assets import routers +from assets.config import settings + tenant = get_tenant_info(url=settings.keycloak_uri, algorithm="RS256") @@ -18,3 +19,10 @@ app.include_router(routers.datasets_router.router) app.include_router(routers.bonds_router.router) app.include_router(routers.s3_router.router) + + +def cli_handler() -> None: + from badgerdoc_cli import cli_handler, init_cli_app + + init_cli_app(app) + cli_handler() diff --git a/assets/pyproject.toml b/assets/pyproject.toml index f725095ec..ccb83e2be 100644 --- a/assets/pyproject.toml +++ b/assets/pyproject.toml @@ -21,7 +21,7 @@ importlib-resources = "*" boto3 = "*" requests = "*" -[tool.poetry.dev-dependencies] +[tool.poetry.group.dev.dependencies] pre-commit = "*" pytest = "*" pytest-cov = "*" @@ -32,6 +32,9 @@ pylint = "*" types-requests = "*" sqlalchemy-utils = "*" +[tool.poetry.scripts] +badgerdoc = "assets.main:cli_handler" + [build-system] requires = ["poetry-core"] build-backend = "poetry.core.masonry.api" diff --git a/common/minio_service/pyproject.toml b/common/minio_service/pyproject.toml index 77998b773..b51eab8f6 100644 --- a/common/minio_service/pyproject.toml +++ b/common/minio_service/pyproject.toml @@ -14,7 +14,7 @@ mypy-extensions = "^0.4.3" add-logging = "commands:add_logger" get-setup = "commands:get_setup" -[tool.poetry.dev-dependencies] +[tool.poetry.group.dev.dependencies] pytest = "^5.2" diff --git a/common/model_api/pyproject.toml b/common/model_api/pyproject.toml index b8408b04b..a644567a8 100644 --- a/common/model_api/pyproject.toml +++ b/common/model_api/pyproject.toml @@ -13,7 +13,7 @@ pdfplumber = "0.5.28" fastapi = "^0.70.0" uvicorn = "^0.15.0" -[tool.poetry.dev-dependencies] +[tool.poetry.group.dev.dependencies] mypy = "0.910" pytest = "^6.2.5" isort = "5.10.1" diff --git a/common/page_rendering/pyproject.toml b/common/page_rendering/pyproject.toml index 8debc7305..2134f0a71 100644 --- a/common/page_rendering/pyproject.toml +++ b/common/page_rendering/pyproject.toml @@ -14,7 +14,7 @@ pdfplumber = "^0.5.28" add-logging = "commands:add_logger" get-setup = "commands:get_setup" -[tool.poetry.dev-dependencies] +[tool.poetry.group.dev.dependencies] pytest = "^5.2" [build-system] diff --git a/convert/convert/config.py b/convert/convert/config.py index f5fcc4a8d..10080bacf 100644 --- a/convert/convert/config.py +++ b/convert/convert/config.py @@ -4,7 +4,6 @@ import boto3 from botocore.client import BaseClient -from convert import logger from dotenv import load_dotenv from mypy_extensions import KwArg, VarArg from pydantic import BaseSettings, Field @@ -12,6 +11,8 @@ from requests.adapters import HTTPAdapter from requests.packages.urllib3.util.retry import Retry +from convert import logger + load_dotenv() @@ -45,7 +46,7 @@ class Settings(BaseSettings): job_service_url: Optional[str] = os.getenv("JOB_SERVICE_URL") annotation_service_url: Optional[str] = os.getenv("ANNOTATION_SERVICE_URL") taxonomy_service_url: Optional[str] = os.getenv("TAXONOMY_SERVICE_URL") - keycloak_url: Optional[str] = os.getenv("KEYCLOAK_URL") + keycloak_url: str = os.getenv("KEYCLOAK_URL", "") def get_version() -> str: diff --git a/convert/convert/main.py b/convert/convert/main.py index b2d4f77c2..90839a158 100644 --- a/convert/convert/main.py +++ b/convert/convert/main.py @@ -16,3 +16,10 @@ app.include_router(labelstudio.router) app.include_router(text.router) app.include_router(pdf.router) + + +def cli_handler() -> None: + from badgerdoc_cli import cli_handler, init_cli_app + + init_cli_app(app) + cli_handler() diff --git a/convert/pyproject.toml b/convert/pyproject.toml index 05a293cde..bafa18b2f 100644 --- a/convert/pyproject.toml +++ b/convert/pyproject.toml @@ -20,7 +20,7 @@ requests = "^2.28.1" python-dotenv = "^0.21.0" pymupdf-fonts = "^1.0.5" -[tool.poetry.dev-dependencies] +[tool.poetry.group.dev.dependencies] pytest = "^6.2.5" pytest-cov = "^3.0.0" pytest-testinfra = "^6.4.0" @@ -31,6 +31,9 @@ black = "^22.3" datamodel-code-generator = "^0.17.1" responses = "^0.22.0" +[tool.poetry.scripts] +badgerdoc = "convert.main:cli_handler" + [tool.black] line_length = "79" diff --git a/docs/dist/favicon-16x16.png b/docs/dist/favicon-16x16.png new file mode 100644 index 000000000..8b194e617 Binary files /dev/null and b/docs/dist/favicon-16x16.png differ diff --git a/docs/dist/favicon-32x32.png b/docs/dist/favicon-32x32.png new file mode 100644 index 000000000..249737fe4 Binary files /dev/null and b/docs/dist/favicon-32x32.png differ diff --git a/docs/dist/index.css b/docs/dist/index.css new file mode 100644 index 000000000..f2376fdaa --- /dev/null +++ b/docs/dist/index.css @@ -0,0 +1,16 @@ +html { + box-sizing: border-box; + overflow: -moz-scrollbars-vertical; + overflow-y: scroll; +} + +*, +*:before, +*:after { + box-sizing: inherit; +} + +body { + margin: 0; + background: #fafafa; +} diff --git a/docs/dist/oauth2-redirect.html b/docs/dist/oauth2-redirect.html new file mode 100644 index 000000000..564091718 --- /dev/null +++ b/docs/dist/oauth2-redirect.html @@ -0,0 +1,79 @@ + + + + Swagger UI: OAuth2 Redirect + + + + + diff --git a/docs/dist/swagger-initializer.js b/docs/dist/swagger-initializer.js new file mode 100644 index 000000000..f08936128 --- /dev/null +++ b/docs/dist/swagger-initializer.js @@ -0,0 +1,22 @@ +window.onload = function () { + // + // ./specs-list.json contains list of services' openapi specs + const urls = fetch("./specs-list.json"); + + urls.then((response) => response.json()).then((data) => { + window.ui = SwaggerUIBundle({ + urls: data, + dom_id: '#swagger-ui', + deepLinking: true, + presets: [ + SwaggerUIBundle.presets.apis, + SwaggerUIStandalonePreset + ], + plugins: [ + SwaggerUIBundle.plugins.DownloadUrl + ], + layout: "StandaloneLayout" + }); + }); + // +}; diff --git a/docs/dist/swagger-ui-bundle.js b/docs/dist/swagger-ui-bundle.js new file mode 100644 index 000000000..763a11668 --- /dev/null +++ b/docs/dist/swagger-ui-bundle.js @@ -0,0 +1,3 @@ +/*! For license information please see swagger-ui-bundle.js.LICENSE.txt */ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.SwaggerUIBundle=t():e.SwaggerUIBundle=t()}(this,(function(){return(()=>{var e={17967:(e,t)=>{"use strict";t.N=void 0;var r=/^([^\w]*)(javascript|data|vbscript)/im,n=/&#(\w+)(^\w|;)?/g,o=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim,a=/^([^:]+):/gm,i=[".","/"];t.N=function(e){var t,s=(t=e||"",t.replace(n,(function(e,t){return String.fromCharCode(t)}))).replace(o,"").trim();if(!s)return"about:blank";if(function(e){return i.indexOf(e[0])>-1}(s))return s;var l=s.match(a);if(!l)return s;var u=l[0];return r.test(u)?"about:blank":s}},53795:(e,t,r)=>{"use strict";r.d(t,{Z:()=>P});var n=r(23101),o=r.n(n),a=r(61125),i=r.n(a),s=r(11882),l=r.n(s),u=r(97606),c=r.n(u),p=r(67294),f=r(43393);function h(e){return h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},h(e)}function d(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function m(e,t){for(var r=0;r1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=k(t,r),o=e||Object.keys(y({},r,{},t));return o.every(n)}function k(e,t){return function(r){if("string"==typeof r)return(0,f.is)(t[r],e[r]);if(Array.isArray(r))return(0,f.is)(S(t,r),S(e,r));throw new TypeError("Invalid key: expected Array or string: "+r)}}var C=function(e){function t(){return d(this,t),E(this,b(t).apply(this,arguments))}var r,n,o;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&w(e,t)}(t,e),r=t,n=[{key:"shouldComponentUpdate",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return!A(this.updateOnProps,this.props,e,"updateOnProps")||!A(this.updateOnStates,this.state,t,"updateOnStates")}}],n&&m(r.prototype,n),o&&m(r,o),t}(p.Component);const O=C;var j=r(23930),I=r.n(j),N=r(45697),T=r.n(N);class P extends O{constructor(){super(...arguments),i()(this,"getModelName",(e=>-1!==l()(e).call(e,"#/definitions/")?e.replace(/^.*#\/definitions\//,""):-1!==l()(e).call(e,"#/components/schemas/")?e.replace(/^.*#\/components\/schemas\//,""):void 0)),i()(this,"getRefSchema",(e=>{let{specSelectors:t}=this.props;return t.findDefinition(e)}))}render(){let{getComponent:e,getConfigs:t,specSelectors:n,schema:a,required:i,name:s,isRef:l,specPath:u,displayName:c,includeReadOnly:f,includeWriteOnly:h}=this.props;const d=e("ObjectModel"),m=e("ArrayModel"),g=e("PrimitiveModel");let v="object",y=a&&a.get("$$ref");if(!s&&y&&(s=this.getModelName(y)),!a&&y&&(a=this.getRefSchema(s)),!a)return p.createElement("span",{className:"model model-title"},p.createElement("span",{className:"model-title__text"},c||s),p.createElement("img",{src:r(2517),height:"20px",width:"20px"}));const b=n.isOAS3()&&a.get("deprecated");switch(l=void 0!==l?l:!!y,v=a&&a.get("type")||v,v){case"object":return p.createElement(d,o()({className:"object"},this.props,{specPath:u,getConfigs:t,schema:a,name:s,deprecated:b,isRef:l,includeReadOnly:f,includeWriteOnly:h}));case"array":return p.createElement(m,o()({className:"array"},this.props,{getConfigs:t,schema:a,name:s,deprecated:b,required:i,includeReadOnly:f,includeWriteOnly:h}));default:return p.createElement(g,o()({},this.props,{getComponent:e,getConfigs:t,schema:a,name:s,deprecated:b,required:i}))}}}i()(P,"propTypes",{schema:c()(I()).isRequired,getComponent:T().func.isRequired,getConfigs:T().func.isRequired,specSelectors:T().object.isRequired,name:T().string,displayName:T().string,isRef:T().bool,required:T().bool,expandDepth:T().number,depth:T().number,specPath:I().list.isRequired,includeReadOnly:T().bool,includeWriteOnly:T().bool})},5623:(e,t,r)=>{"use strict";r.d(t,{Z:()=>f});var n=r(61125),o=r.n(n),a=r(28222),i=r.n(a),s=r(67294),l=r(84564),u=r.n(l),c=r(90242),p=r(27504);class f extends s.Component{constructor(e,t){super(e,t),o()(this,"getDefinitionUrl",(()=>{let{specSelectors:e}=this.props;return new(u())(e.url(),p.Z.location).toString()}));let{getConfigs:r}=e,{validatorUrl:n}=r();this.state={url:this.getDefinitionUrl(),validatorUrl:void 0===n?"https://validator.swagger.io/validator":n}}UNSAFE_componentWillReceiveProps(e){let{getConfigs:t}=e,{validatorUrl:r}=t();this.setState({url:this.getDefinitionUrl(),validatorUrl:void 0===r?"https://validator.swagger.io/validator":r})}render(){let{getConfigs:e}=this.props,{spec:t}=e(),r=(0,c.Nm)(this.state.validatorUrl);return"object"==typeof t&&i()(t).length?null:this.state.url&&(0,c.hW)(this.state.validatorUrl)&&(0,c.hW)(this.state.url)?s.createElement("span",{className:"float-right"},s.createElement("a",{target:"_blank",rel:"noopener noreferrer",href:`${r}/debug?url=${encodeURIComponent(this.state.url)}`},s.createElement(h,{src:`${r}?url=${encodeURIComponent(this.state.url)}`,alt:"Online validator badge"}))):null}}class h extends s.Component{constructor(e){super(e),this.state={loaded:!1,error:!1}}componentDidMount(){const e=new Image;e.onload=()=>{this.setState({loaded:!0})},e.onerror=()=>{this.setState({error:!0})},e.src=this.props.src}UNSAFE_componentWillReceiveProps(e){if(e.src!==this.props.src){const t=new Image;t.onload=()=>{this.setState({loaded:!0})},t.onerror=()=>{this.setState({error:!0})},t.src=e.src}}render(){return this.state.error?s.createElement("img",{alt:"Error"}):this.state.loaded?s.createElement("img",{src:this.props.src,alt:this.props.alt}):null}}},86019:(e,t,r)=>{"use strict";r.d(t,{Z:()=>me,s:()=>ge});var n=r(67294),o=r(89927);function a(e,t){if(Array.prototype.indexOf)return e.indexOf(t);for(var r=0,n=e.length;r=0;r--)!0===t(e[r])&&e.splice(r,1)}function s(e){throw new Error("Unhandled case for value: '"+e+"'")}var l=function(){function e(e){void 0===e&&(e={}),this.tagName="",this.attrs={},this.innerHTML="",this.whitespaceRegex=/\s+/,this.tagName=e.tagName||"",this.attrs=e.attrs||{},this.innerHTML=e.innerHtml||e.innerHTML||""}return e.prototype.setTagName=function(e){return this.tagName=e,this},e.prototype.getTagName=function(){return this.tagName||""},e.prototype.setAttr=function(e,t){return this.getAttrs()[e]=t,this},e.prototype.getAttr=function(e){return this.getAttrs()[e]},e.prototype.setAttrs=function(e){return Object.assign(this.getAttrs(),e),this},e.prototype.getAttrs=function(){return this.attrs||(this.attrs={})},e.prototype.setClass=function(e){return this.setAttr("class",e)},e.prototype.addClass=function(e){for(var t,r=this.getClass(),n=this.whitespaceRegex,o=r?r.split(n):[],i=e.split(n);t=i.shift();)-1===a(o,t)&&o.push(t);return this.getAttrs().class=o.join(" "),this},e.prototype.removeClass=function(e){for(var t,r=this.getClass(),n=this.whitespaceRegex,o=r?r.split(n):[],i=e.split(n);o.length&&(t=i.shift());){var s=a(o,t);-1!==s&&o.splice(s,1)}return this.getAttrs().class=o.join(" "),this},e.prototype.getClass=function(){return this.getAttrs().class||""},e.prototype.hasClass=function(e){return-1!==(" "+this.getClass()+" ").indexOf(" "+e+" ")},e.prototype.setInnerHTML=function(e){return this.innerHTML=e,this},e.prototype.setInnerHtml=function(e){return this.setInnerHTML(e)},e.prototype.getInnerHTML=function(){return this.innerHTML||""},e.prototype.getInnerHtml=function(){return this.getInnerHTML()},e.prototype.toAnchorString=function(){var e=this.getTagName(),t=this.buildAttrsStr();return["<",e,t=t?" "+t:"",">",this.getInnerHtml(),""].join("")},e.prototype.buildAttrsStr=function(){if(!this.attrs)return"";var e=this.getAttrs(),t=[];for(var r in e)e.hasOwnProperty(r)&&t.push(r+'="'+e[r]+'"');return t.join(" ")},e}();var u=function(){function e(e){void 0===e&&(e={}),this.newWindow=!1,this.truncate={},this.className="",this.newWindow=e.newWindow||!1,this.truncate=e.truncate||{},this.className=e.className||""}return e.prototype.build=function(e){return new l({tagName:"a",attrs:this.createAttrs(e),innerHtml:this.processAnchorText(e.getAnchorText())})},e.prototype.createAttrs=function(e){var t={href:e.getAnchorHref()},r=this.createCssClass(e);return r&&(t.class=r),this.newWindow&&(t.target="_blank",t.rel="noopener noreferrer"),this.truncate&&this.truncate.length&&this.truncate.length=s)return l.host.length==t?(l.host.substr(0,t-o)+r).substr(0,s+n):i(c,s).substr(0,s+n);var p="";if(l.path&&(p+="/"+l.path),l.query&&(p+="?"+l.query),p){if((c+p).length>=s)return(c+p).length==t?(c+p).substr(0,t):(c+i(p,s-c.length)).substr(0,s+n);c+=p}if(l.fragment){var f="#"+l.fragment;if((c+f).length>=s)return(c+f).length==t?(c+f).substr(0,t):(c+i(f,s-c.length)).substr(0,s+n);c+=f}if(l.scheme&&l.host){var h=l.scheme+"://";if((c+h).length0&&(d=c.substr(-1*Math.floor(s/2))),(c.substr(0,Math.ceil(s/2))+r+d).substr(0,s+n)}(e,r):"middle"===n?function(e,t,r){if(e.length<=t)return e;var n,o;null==r?(r="…",n=8,o=3):(n=r.length,o=r.length);var a=t-o,i="";return a>0&&(i=e.substr(-1*Math.floor(a/2))),(e.substr(0,Math.ceil(a/2))+r+i).substr(0,a+n)}(e,r):function(e,t,r){return function(e,t,r){var n;return e.length>t&&(null==r?(r="…",n=3):n=r.length,e=e.substring(0,t-n)+r),e}(e,t,r)}(e,r)},e}(),c=function(){function e(e){this.__jsduckDummyDocProp=null,this.matchedText="",this.offset=0,this.tagBuilder=e.tagBuilder,this.matchedText=e.matchedText,this.offset=e.offset}return e.prototype.getMatchedText=function(){return this.matchedText},e.prototype.setOffset=function(e){this.offset=e},e.prototype.getOffset=function(){return this.offset},e.prototype.getCssClassSuffixes=function(){return[this.getType()]},e.prototype.buildTag=function(){return this.tagBuilder.build(this)},e}(),p=function(e,t){return p=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])},p(e,t)};function f(e,t){function r(){this.constructor=e}p(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}var h=function(){return h=Object.assign||function(e){for(var t,r=1,n=arguments.length;r-1},e.isValidUriScheme=function(e){var t=e.match(this.uriSchemeRegex),r=t&&t[0].toLowerCase();return"javascript:"!==r&&"vbscript:"!==r},e.urlMatchDoesNotHaveProtocolOrDot=function(e,t){return!(!e||t&&this.hasFullProtocolRegex.test(t)||-1!==e.indexOf("."))},e.urlMatchDoesNotHaveAtLeastOneWordChar=function(e,t){return!(!e||!t)&&(!this.hasFullProtocolRegex.test(t)&&!this.hasWordCharAfterProtocolRegex.test(e))},e.hasFullProtocolRegex=/^[A-Za-z][-.+A-Za-z0-9]*:\/\//,e.uriSchemeRegex=/^[A-Za-z][-.+A-Za-z0-9]*:/,e.hasWordCharAfterProtocolRegex=new RegExp(":[^\\s]*?["+C+"]"),e.ipRegex=/[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?(:[0-9]*)?\/?$/,e}(),V=(d=new RegExp("[/?#](?:["+N+"\\-+&@#/%=~_()|'$*\\[\\]{}?!:,.;^✓]*["+N+"\\-+&@#/%=~_()|'$*\\[\\]{}✓])?"),new RegExp(["(?:","(",/(?:[A-Za-z][-.+A-Za-z0-9]{0,63}:(?![A-Za-z][-.+A-Za-z0-9]{0,63}:\/\/)(?!\d+\/?)(?:\/\/)?)/.source,M(2),")","|","(","(//)?",/(?:www\.)/.source,M(6),")","|","(","(//)?",M(10)+"\\.",L.source,"(?![-"+I+"])",")",")","(?::[0-9]+)?","(?:"+d.source+")?"].join(""),"gi")),$=new RegExp("["+N+"]"),W=function(e){function t(t){var r=e.call(this,t)||this;return r.stripPrefix={scheme:!0,www:!0},r.stripTrailingSlash=!0,r.decodePercentEncoding=!0,r.matcherRegex=V,r.wordCharRegExp=$,r.stripPrefix=t.stripPrefix,r.stripTrailingSlash=t.stripTrailingSlash,r.decodePercentEncoding=t.decodePercentEncoding,r}return f(t,e),t.prototype.parseMatches=function(e){for(var t,r=this.matcherRegex,n=this.stripPrefix,o=this.stripTrailingSlash,a=this.decodePercentEncoding,i=this.tagBuilder,s=[],l=function(){var r=t[0],l=t[1],c=t[4],p=t[5],f=t[9],h=t.index,d=p||f,m=e.charAt(h-1);if(!q.isValid(r,l))return"continue";if(h>0&&"@"===m)return"continue";if(h>0&&d&&u.wordCharRegExp.test(m))return"continue";if(/\?$/.test(r)&&(r=r.substr(0,r.length-1)),u.matchHasUnbalancedClosingParen(r))r=r.substr(0,r.length-1);else{var g=u.matchHasInvalidCharAfterTld(r,l);g>-1&&(r=r.substr(0,g))}var v=["http://","https://"].find((function(e){return!!l&&-1!==l.indexOf(e)}));if(v){var y=r.indexOf(v);r=r.substr(y),l=l.substr(y),h+=y}var w=l?"scheme":c?"www":"tld",E=!!l;s.push(new b({tagBuilder:i,matchedText:r,offset:h,urlMatchType:w,url:r,protocolUrlMatch:E,protocolRelativeMatch:!!d,stripPrefix:n,stripTrailingSlash:o,decodePercentEncoding:a}))},u=this;null!==(t=r.exec(e));)l();return s},t.prototype.matchHasUnbalancedClosingParen=function(e){var t,r=e.charAt(e.length-1);if(")"===r)t="(";else if("]"===r)t="[";else{if("}"!==r)return!1;t="{"}for(var n=0,o=0,a=e.length-1;o"===e?(m=new ne(h(h({},m),{name:H()})),W()):E.test(e)||x.test(e)||":"===e||V()}function w(e){">"===e?V():E.test(e)?f=3:V()}function _(e){S.test(e)||("/"===e?f=12:">"===e?W():"<"===e?$():"="===e||A.test(e)||k.test(e)?V():f=5)}function C(e){S.test(e)?f=6:"/"===e?f=12:"="===e?f=7:">"===e?W():"<"===e?$():A.test(e)&&V()}function O(e){S.test(e)||("/"===e?f=12:"="===e?f=7:">"===e?W():"<"===e?$():A.test(e)?V():f=5)}function j(e){S.test(e)||('"'===e?f=8:"'"===e?f=9:/[>=`]/.test(e)?V():"<"===e?$():f=10)}function I(e){'"'===e&&(f=11)}function N(e){"'"===e&&(f=11)}function T(e){S.test(e)?f=4:">"===e?W():"<"===e&&$()}function P(e){S.test(e)?f=4:"/"===e?f=12:">"===e?W():"<"===e?$():(f=4,c--)}function R(e){">"===e?(m=new ne(h(h({},m),{isClosing:!0})),W()):f=4}function M(t){"--"===e.substr(c,2)?(c+=2,m=new ne(h(h({},m),{type:"comment"})),f=14):"DOCTYPE"===e.substr(c,7).toUpperCase()?(c+=7,m=new ne(h(h({},m),{type:"doctype"})),f=20):V()}function D(e){"-"===e?f=15:">"===e?V():f=16}function L(e){"-"===e?f=18:">"===e?V():f=16}function B(e){"-"===e&&(f=17)}function F(e){f="-"===e?18:16}function z(e){">"===e?W():"!"===e?f=19:"-"===e||(f=16)}function U(e){"-"===e?f=17:">"===e?W():f=16}function q(e){">"===e?W():"<"===e&&$()}function V(){f=0,m=u}function $(){f=1,m=new ne({idx:c})}function W(){var t=e.slice(d,m.idx);t&&a(t,d),"comment"===m.type?i(m.idx):"doctype"===m.type?l(m.idx):(m.isOpening&&n(m.name,m.idx),m.isClosing&&o(m.name,m.idx)),V(),d=c+1}function H(){var t=m.idx+(m.isClosing?2:1);return e.slice(t,c).toLowerCase()}d=0&&n++},onText:function(e,r){if(0===n){var a=function(e,t){if(!t.global)throw new Error("`splitRegex` must have the 'g' flag set");for(var r,n=[],o=0;r=t.exec(e);)n.push(e.substring(o,r.index)),n.push(r[0]),o=r.index+r[0].length;return n.push(e.substring(o)),n}(e,/( | |<|<|>|>|"|"|')/gi),i=r;a.forEach((function(e,r){if(r%2==0){var n=t.parseText(e,i);o.push.apply(o,n)}i+=e.length}))}},onCloseTag:function(e){r.indexOf(e)>=0&&(n=Math.max(n-1,0))},onComment:function(e){},onDoctype:function(e){}}),o=this.compactMatches(o),o=this.removeUnwantedMatches(o)},e.prototype.compactMatches=function(e){e.sort((function(e,t){return e.getOffset()-t.getOffset()}));for(var t=0;to?t:t+1;e.splice(i,1);continue}e[t+1].getOffset()/g,">"));for(var t=this.parse(e),r=[],n=0,o=0,a=t.length;o/i.test(e)}function se(){var e=[],t=new oe({stripPrefix:!1,url:!0,email:!0,replaceFn:function(t){switch(t.getType()){case"url":e.push({text:t.matchedText,url:t.getUrl()});break;case"email":e.push({text:t.matchedText,url:"mailto:"+t.getEmail().replace(/^mailto:/i,"")})}return!1}});return{links:e,autolinker:t}}function le(e){var t,r,n,o,a,i,s,l,u,c,p,f,h,d,m=e.tokens,g=null;for(r=0,n=m.length;r=0;t--)if("link_close"!==(a=o[t]).type){if("htmltag"===a.type&&(d=a.content,/^\s]/i.test(d)&&p>0&&p--,ie(a.content)&&p++),!(p>0)&&"text"===a.type&&ae.test(a.content)){if(g||(f=(g=se()).links,h=g.autolinker),i=a.content,f.length=0,h.link(i),!f.length)continue;for(s=[],c=a.level,l=0;l({useUnsafeMarkdown:!1})};const me=de;function ge(e){let{useUnsafeMarkdown:t=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const r=t,n=t?[]:["style","class"];return t&&!ge.hasWarnedAboutDeprecation&&(console.warn("useUnsafeMarkdown display configuration parameter is deprecated since >3.26.0 and will be removed in v4.0.0."),ge.hasWarnedAboutDeprecation=!0),pe().sanitize(e,{ADD_ATTR:["target"],FORBID_TAGS:["style","form"],ALLOW_DATA_ATTR:r,FORBID_ATTR:n})}ge.hasWarnedAboutDeprecation=!1},45308:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>f});var n,o=r(86),a=r.n(o),i=r(8712),s=r.n(i),l=r(90242),u=r(27621);const c=r(95102),p={},f=p;a()(n=s()(c).call(c)).call(n,(function(e){if("./index.js"===e)return;let t=c(e);p[(0,l.Zl)(e)]=t.default?t.default:t})),p.SafeRender=u.default},55812:(e,t,r)=>{"use strict";r.r(t),r.d(t,{SHOW_AUTH_POPUP:()=>p,AUTHORIZE:()=>f,LOGOUT:()=>h,PRE_AUTHORIZE_OAUTH2:()=>d,AUTHORIZE_OAUTH2:()=>m,VALIDATE:()=>g,CONFIGURE_AUTH:()=>v,RESTORE_AUTHORIZATION:()=>y,showDefinitions:()=>b,authorize:()=>w,authorizeWithPersistOption:()=>E,logout:()=>x,logoutWithPersistOption:()=>_,preAuthorizeImplicit:()=>S,authorizeOauth2:()=>A,authorizeOauth2WithPersistOption:()=>k,authorizePassword:()=>C,authorizeApplication:()=>O,authorizeAccessCodeWithFormParams:()=>j,authorizeAccessCodeWithBasicAuthentication:()=>I,authorizeRequest:()=>N,configureAuth:()=>T,restoreAuthorization:()=>P,persistAuthorizationIfNeeded:()=>R,authPopup:()=>M});var n=r(35627),o=r.n(n),a=r(76986),i=r.n(a),s=r(84564),l=r.n(s),u=r(27504),c=r(90242);const p="show_popup",f="authorize",h="logout",d="pre_authorize_oauth2",m="authorize_oauth2",g="validate",v="configure_auth",y="restore_authorization";function b(e){return{type:p,payload:e}}function w(e){return{type:f,payload:e}}const E=e=>t=>{let{authActions:r}=t;r.authorize(e),r.persistAuthorizationIfNeeded()};function x(e){return{type:h,payload:e}}const _=e=>t=>{let{authActions:r}=t;r.logout(e),r.persistAuthorizationIfNeeded()},S=e=>t=>{let{authActions:r,errActions:n}=t,{auth:a,token:i,isValid:s}=e,{schema:l,name:c}=a,p=l.get("flow");delete u.Z.swaggerUIRedirectOauth2,"accessCode"===p||s||n.newAuthErr({authId:c,source:"auth",level:"warning",message:"Authorization may be unsafe, passed state was changed in server Passed state wasn't returned from auth server"}),i.error?n.newAuthErr({authId:c,source:"auth",level:"error",message:o()(i)}):r.authorizeOauth2WithPersistOption({auth:a,token:i})};function A(e){return{type:m,payload:e}}const k=e=>t=>{let{authActions:r}=t;r.authorizeOauth2(e),r.persistAuthorizationIfNeeded()},C=e=>t=>{let{authActions:r}=t,{schema:n,name:o,username:a,password:s,passwordType:l,clientId:u,clientSecret:p}=e,f={grant_type:"password",scope:e.scopes.join(" "),username:a,password:s},h={};switch(l){case"request-body":!function(e,t,r){t&&i()(e,{client_id:t});r&&i()(e,{client_secret:r})}(f,u,p);break;case"basic":h.Authorization="Basic "+(0,c.r3)(u+":"+p);break;default:console.warn(`Warning: invalid passwordType ${l} was passed, not including client id and secret`)}return r.authorizeRequest({body:(0,c.GZ)(f),url:n.get("tokenUrl"),name:o,headers:h,query:{},auth:e})};const O=e=>t=>{let{authActions:r}=t,{schema:n,scopes:o,name:a,clientId:i,clientSecret:s}=e,l={Authorization:"Basic "+(0,c.r3)(i+":"+s)},u={grant_type:"client_credentials",scope:o.join(" ")};return r.authorizeRequest({body:(0,c.GZ)(u),name:a,url:n.get("tokenUrl"),auth:e,headers:l})},j=e=>{let{auth:t,redirectUrl:r}=e;return e=>{let{authActions:n}=e,{schema:o,name:a,clientId:i,clientSecret:s,codeVerifier:l}=t,u={grant_type:"authorization_code",code:t.code,client_id:i,client_secret:s,redirect_uri:r,code_verifier:l};return n.authorizeRequest({body:(0,c.GZ)(u),name:a,url:o.get("tokenUrl"),auth:t})}},I=e=>{let{auth:t,redirectUrl:r}=e;return e=>{let{authActions:n}=e,{schema:o,name:a,clientId:i,clientSecret:s,codeVerifier:l}=t,u={Authorization:"Basic "+(0,c.r3)(i+":"+s)},p={grant_type:"authorization_code",code:t.code,client_id:i,redirect_uri:r,code_verifier:l};return n.authorizeRequest({body:(0,c.GZ)(p),name:a,url:o.get("tokenUrl"),auth:t,headers:u})}},N=e=>t=>{let r,{fn:n,getConfigs:a,authActions:s,errActions:u,oas3Selectors:c,specSelectors:p,authSelectors:f}=t,{body:h,query:d={},headers:m={},name:g,url:v,auth:y}=e,{additionalQueryStringParams:b}=f.getConfigs()||{};if(p.isOAS3()){let e=c.serverEffectiveValue(c.selectedServer());r=l()(v,e,!0)}else r=l()(v,p.url(),!0);"object"==typeof b&&(r.query=i()({},r.query,b));const w=r.toString();let E=i()({Accept:"application/json, text/plain, */*","Content-Type":"application/x-www-form-urlencoded","X-Requested-With":"XMLHttpRequest"},m);n.fetch({url:w,method:"post",headers:E,query:d,body:h,requestInterceptor:a().requestInterceptor,responseInterceptor:a().responseInterceptor}).then((function(e){let t=JSON.parse(e.data),r=t&&(t.error||""),n=t&&(t.parseError||"");e.ok?r||n?u.newAuthErr({authId:g,level:"error",source:"auth",message:o()(t)}):s.authorizeOauth2WithPersistOption({auth:y,token:t}):u.newAuthErr({authId:g,level:"error",source:"auth",message:e.statusText})})).catch((e=>{let t=new Error(e).message;if(e.response&&e.response.data){const r=e.response.data;try{const e="string"==typeof r?JSON.parse(r):r;e.error&&(t+=`, error: ${e.error}`),e.error_description&&(t+=`, description: ${e.error_description}`)}catch(e){}}u.newAuthErr({authId:g,level:"error",source:"auth",message:t})}))};function T(e){return{type:v,payload:e}}function P(e){return{type:y,payload:e}}const R=()=>e=>{let{authSelectors:t,getConfigs:r}=e;if(r().persistAuthorization){const e=t.authorized();localStorage.setItem("authorized",o()(e.toJS()))}},M=(e,t)=>()=>{u.Z.swaggerUIRedirectOauth2=t,u.Z.open(e)}},93705:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>u,preauthorizeBasic:()=>c,preauthorizeApiKey:()=>p});var n=r(11189),o=r.n(n),a=r(43962),i=r(55812),s=r(60035),l=r(48302);function u(){return{afterLoad(e){this.rootInjects=this.rootInjects||{},this.rootInjects.initOAuth=e.authActions.configureAuth,this.rootInjects.preauthorizeApiKey=o()(p).call(p,null,e),this.rootInjects.preauthorizeBasic=o()(c).call(c,null,e)},statePlugins:{auth:{reducers:a.default,actions:i,selectors:s},spec:{wrapActions:l}}}}function c(e,t,r,n){const{authActions:{authorize:o},specSelectors:{specJson:a,isOAS3:i}}=e,s=i()?["components","securitySchemes"]:["securityDefinitions"],l=a().getIn([...s,t]);return l?o({[t]:{value:{username:r,password:n},schema:l.toJS()}}):null}function p(e,t,r){const{authActions:{authorize:n},specSelectors:{specJson:o,isOAS3:a}}=e,i=a()?["components","securitySchemes"]:["securityDefinitions"],s=o().getIn([...i,t]);return s?n({[t]:{value:r,schema:s.toJS()}}):null}},43962:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>c});var n=r(86),o=r.n(n),a=r(76986),i=r.n(a),s=r(43393),l=r(90242),u=r(55812);const c={[u.SHOW_AUTH_POPUP]:(e,t)=>{let{payload:r}=t;return e.set("showDefinitions",r)},[u.AUTHORIZE]:(e,t)=>{var r;let{payload:n}=t,a=(0,s.fromJS)(n),i=e.get("authorized")||(0,s.Map)();return o()(r=a.entrySeq()).call(r,(t=>{let[r,n]=t;if(!(0,l.Wl)(n.getIn))return e.set("authorized",i);let o=n.getIn(["schema","type"]);if("apiKey"===o||"http"===o)i=i.set(r,n);else if("basic"===o){let e=n.getIn(["value","username"]),t=n.getIn(["value","password"]);i=i.setIn([r,"value"],{username:e,header:"Basic "+(0,l.r3)(e+":"+t)}),i=i.setIn([r,"schema"],n.get("schema"))}})),e.set("authorized",i)},[u.AUTHORIZE_OAUTH2]:(e,t)=>{let r,{payload:n}=t,{auth:o,token:a}=n;o.token=i()({},a),r=(0,s.fromJS)(o);let l=e.get("authorized")||(0,s.Map)();return l=l.set(r.get("name"),r),e.set("authorized",l)},[u.LOGOUT]:(e,t)=>{let{payload:r}=t,n=e.get("authorized").withMutations((e=>{o()(r).call(r,(t=>{e.delete(t)}))}));return e.set("authorized",n)},[u.CONFIGURE_AUTH]:(e,t)=>{let{payload:r}=t;return e.set("configs",r)},[u.RESTORE_AUTHORIZATION]:(e,t)=>{let{payload:r}=t;return e.set("authorized",(0,s.fromJS)(r.authorized))}}},60035:(e,t,r)=>{"use strict";r.r(t),r.d(t,{shownDefinitions:()=>y,definitionsToAuthorize:()=>b,getDefinitionsByNames:()=>w,definitionsForRequirements:()=>E,authorized:()=>x,isAuthorized:()=>_,getConfigs:()=>S});var n=r(86),o=r.n(n),a=r(51679),i=r.n(a),s=r(14418),l=r.n(s),u=r(11882),c=r.n(u),p=r(97606),f=r.n(p),h=r(28222),d=r.n(h),m=r(20573),g=r(43393);const v=e=>e,y=(0,m.P1)(v,(e=>e.get("showDefinitions"))),b=(0,m.P1)(v,(()=>e=>{var t;let{specSelectors:r}=e,n=r.securityDefinitions()||(0,g.Map)({}),a=(0,g.List)();return o()(t=n.entrySeq()).call(t,(e=>{let[t,r]=e,n=(0,g.Map)();n=n.set(t,r),a=a.push(n)})),a})),w=(e,t)=>e=>{var r;let{specSelectors:n}=e;console.warn("WARNING: getDefinitionsByNames is deprecated and will be removed in the next major version.");let a=n.securityDefinitions(),i=(0,g.List)();return o()(r=t.valueSeq()).call(r,(e=>{var t;let r=(0,g.Map)();o()(t=e.entrySeq()).call(t,(e=>{let t,[n,i]=e,s=a.get(n);var l;"oauth2"===s.get("type")&&i.size&&(t=s.get("scopes"),o()(l=t.keySeq()).call(l,(e=>{i.contains(e)||(t=t.delete(e))})),s=s.set("allowedScopes",t));r=r.set(n,s)})),i=i.push(r)})),i},E=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(0,g.List)();return e=>{let{authSelectors:r}=e;const n=r.definitionsToAuthorize()||(0,g.List)();let a=(0,g.List)();return o()(n).call(n,(e=>{let r=i()(t).call(t,(t=>t.get(e.keySeq().first())));r&&(o()(e).call(e,((t,n)=>{if("oauth2"===t.get("type")){const i=r.get(n);let s=t.get("scopes");var a;if(g.List.isList(i)&&g.Map.isMap(s))o()(a=s.keySeq()).call(a,(e=>{i.contains(e)||(s=s.delete(e))})),e=e.set(n,t.set("scopes",s))}})),a=a.push(e))})),a}},x=(0,m.P1)(v,(e=>e.get("authorized")||(0,g.Map)())),_=(e,t)=>e=>{var r;let{authSelectors:n}=e,o=n.authorized();return g.List.isList(t)?!!l()(r=t.toJS()).call(r,(e=>{var t,r;return-1===c()(t=f()(r=d()(e)).call(r,(e=>!!o.get(e)))).call(t,!1)})).length:null},S=(0,m.P1)(v,(e=>e.get("configs")))},48302:(e,t,r)=>{"use strict";r.r(t),r.d(t,{execute:()=>n});const n=(e,t)=>{let{authSelectors:r,specSelectors:n}=t;return t=>{let{path:o,method:a,operation:i,extras:s}=t,l={authorized:r.authorized()&&r.authorized().toJS(),definitions:n.securityDefinitions()&&n.securityDefinitions().toJS(),specSecurity:n.security()&&n.security().toJS()};return e({path:o,method:a,operation:i,securities:l,...s})}}},70714:(e,t,r)=>{"use strict";r.r(t),r.d(t,{UPDATE_CONFIGS:()=>n,TOGGLE_CONFIGS:()=>o,update:()=>a,toggle:()=>i,loaded:()=>s});const n="configs_update",o="configs_toggle";function a(e,t){return{type:n,payload:{[e]:t}}}function i(e){return{type:o,payload:e}}const s=()=>e=>{let{getConfigs:t,authActions:r}=e;if(t().persistAuthorization){const e=localStorage.getItem("authorized");e&&r.restoreAuthorization({authorized:JSON.parse(e)})}}},92256:(e,t,r)=>{"use strict";r.r(t),r.d(t,{parseYamlConfig:()=>o});var n=r(1272);const o=(e,t)=>{try{return n.ZP.load(e)}catch(e){return t&&t.errActions.newThrownErr(new Error(e)),{}}}},1661:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>c});var n=r(15163),o=r(92256),a=r(70714),i=r(22698),s=r(69018),l=r(37743);const u={getLocalConfig:()=>(0,o.parseYamlConfig)(n)};function c(){return{statePlugins:{spec:{actions:i,selectors:u},configs:{reducers:l.default,actions:a,selectors:s}}}}},37743:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>a});var n=r(43393),o=r(70714);const a={[o.UPDATE_CONFIGS]:(e,t)=>e.merge((0,n.fromJS)(t.payload)),[o.TOGGLE_CONFIGS]:(e,t)=>{const r=t.payload,n=e.get(r);return e.set(r,!n)}}},69018:(e,t,r)=>{"use strict";r.r(t),r.d(t,{get:()=>a});var n=r(58309),o=r.n(n);const a=(e,t)=>e.getIn(o()(t)?t:[t])},22698:(e,t,r)=>{"use strict";r.r(t),r.d(t,{downloadConfig:()=>o,getConfigByUrl:()=>a});var n=r(92256);const o=e=>t=>{const{fn:{fetch:r}}=t;return r(e)},a=(e,t)=>r=>{let{specActions:o}=r;if(e)return o.downloadConfig(e).then(a,a);function a(r){r instanceof Error||r.status>=400?(o.updateLoadingStatus("failedConfig"),o.updateLoadingStatus("failedConfig"),o.updateUrl(""),console.error(r.statusText+" "+e.url),t(null)):t((0,n.parseYamlConfig)(r.text))}}},31970:(e,t,r)=>{"use strict";r.r(t),r.d(t,{setHash:()=>n});const n=e=>e?history.pushState(null,null,`#${e}`):window.location.hash=""},34980:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>i});var n=r(41599),o=r(60877),a=r(34584);function i(){return[n.default,{statePlugins:{configs:{wrapActions:{loaded:(e,t)=>function(){e(...arguments);const r=decodeURIComponent(window.location.hash);t.layoutActions.parseDeepLinkHash(r)}}}},wrapComponents:{operation:o.default,OperationTag:a.default}}]}},41599:(e,t,r)=>{"use strict";r.r(t),r.d(t,{show:()=>b,scrollTo:()=>w,parseDeepLinkHash:()=>E,readyToScroll:()=>x,scrollToElement:()=>_,clearScrollTo:()=>S,default:()=>A});var n=r(58309),o=r.n(n),a=r(24278),i=r.n(a),s=r(97606),l=r.n(s),u=r(11882),c=r.n(u),p=r(31970),f=r(45172),h=r.n(f),d=r(90242),m=r(43393),g=r.n(m);const v="layout_scroll_to",y="layout_clear_scroll",b=(e,t)=>{let{getConfigs:r,layoutSelectors:n}=t;return function(){for(var t=arguments.length,a=new Array(t),i=0;i({type:v,payload:o()(e)?e:[e]}),E=e=>t=>{let{layoutActions:r,layoutSelectors:n,getConfigs:o}=t;if(o().deepLinking&&e){var a;let t=i()(e).call(e,1);"!"===t[0]&&(t=i()(t).call(t,1)),"/"===t[0]&&(t=i()(t).call(t,1));const o=l()(a=t.split("/")).call(a,(e=>e||"")),s=n.isShownKeyFromUrlHashArray(o),[u,p="",f=""]=s;if("operations"===u){const e=n.isShownKeyFromUrlHashArray([p]);c()(p).call(p,"_")>-1&&(console.warn("Warning: escaping deep link whitespace with `_` will be unsupported in v4.0, use `%20` instead."),r.show(l()(e).call(e,(e=>e.replace(/_/g," "))),!0)),r.show(e,!0)}(c()(p).call(p,"_")>-1||c()(f).call(f,"_")>-1)&&(console.warn("Warning: escaping deep link whitespace with `_` will be unsupported in v4.0, use `%20` instead."),r.show(l()(s).call(s,(e=>e.replace(/_/g," "))),!0)),r.show(s,!0),r.scrollTo(s)}},x=(e,t)=>r=>{const n=r.layoutSelectors.getScrollToKey();g().is(n,(0,m.fromJS)(e))&&(r.layoutActions.scrollToElement(t),r.layoutActions.clearScrollTo())},_=(e,t)=>r=>{try{t=t||r.fn.getScrollParent(e),h().createScroller(t).to(e)}catch(e){console.error(e)}},S=()=>({type:y});const A={fn:{getScrollParent:function(e,t){const r=document.documentElement;let n=getComputedStyle(e);const o="absolute"===n.position,a=t?/(auto|scroll|hidden)/:/(auto|scroll)/;if("fixed"===n.position)return r;for(let t=e;t=t.parentElement;)if(n=getComputedStyle(t),(!o||"static"!==n.position)&&a.test(n.overflow+n.overflowY+n.overflowX))return t;return r}},statePlugins:{layout:{actions:{scrollToElement:_,scrollTo:w,clearScrollTo:S,readyToScroll:x,parseDeepLinkHash:E},selectors:{getScrollToKey:e=>e.get("scrollToKey"),isShownKeyFromUrlHashArray(e,t){const[r,n]=t;return n?["operations",r,n]:r?["operations-tag",r]:[]},urlHashArrayFromIsShownKey(e,t){let[r,n,o]=t;return"operations"==r?[n,o]:"operations-tag"==r?[n]:[]}},reducers:{[v]:(e,t)=>e.set("scrollToKey",g().fromJS(t.payload)),[y]:e=>e.delete("scrollToKey")},wrapActions:{show:b}}}}},34584:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>i});var n=r(61125),o=r.n(n),a=r(67294);const i=(e,t)=>class extends a.Component{constructor(){super(...arguments),o()(this,"onLoad",(e=>{const{tag:r}=this.props,n=["operations-tag",r];t.layoutActions.readyToScroll(n,e)}))}render(){return a.createElement("span",{ref:this.onLoad},a.createElement(e,this.props))}}},60877:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>i});var n=r(61125),o=r.n(n),a=r(67294);r(23930);const i=(e,t)=>class extends a.Component{constructor(){super(...arguments),o()(this,"onLoad",(e=>{const{operation:r}=this.props,{tag:n,operationId:o}=r.toObject();let{isShownKey:a}=r.toObject();a=a||["operations",n,o],t.layoutActions.readyToScroll(a,e)}))}render(){return a.createElement("span",{ref:this.onLoad},a.createElement(e,this.props))}}},48011:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>d});var n=r(76986),o=r.n(n),a=r(63460),i=r.n(a),s=r(11882),l=r.n(s),u=r(35627),c=r.n(u),p=r(20573),f=r(43393),h=r(27504);function d(e){let{fn:t}=e;return{statePlugins:{spec:{actions:{download:e=>r=>{let{errActions:n,specSelectors:a,specActions:s,getConfigs:l}=r,{fetch:u}=t;const c=l();function p(t){if(t instanceof Error||t.status>=400)return s.updateLoadingStatus("failed"),n.newThrownErr(o()(new Error((t.message||t.statusText)+" "+e),{source:"fetch"})),void(!t.status&&t instanceof Error&&function(){try{let t;if("URL"in h.Z?t=new(i())(e):(t=document.createElement("a"),t.href=e),"https:"!==t.protocol&&"https:"===h.Z.location.protocol){const e=o()(new Error(`Possible mixed-content issue? The page was loaded over https:// but a ${t.protocol}// URL was specified. Check that you are not attempting to load mixed content.`),{source:"fetch"});return void n.newThrownErr(e)}if(t.origin!==h.Z.location.origin){const e=o()(new Error(`Possible cross-origin (CORS) issue? The URL origin (${t.origin}) does not match the page (${h.Z.location.origin}). Check the server returns the correct 'Access-Control-Allow-*' headers.`),{source:"fetch"});n.newThrownErr(e)}}catch(e){return}}());s.updateLoadingStatus("success"),s.updateSpec(t.text),a.url()!==e&&s.updateUrl(e)}e=e||a.url(),s.updateLoadingStatus("loading"),n.clear({source:"fetch"}),u({url:e,loadSpec:!0,requestInterceptor:c.requestInterceptor||(e=>e),responseInterceptor:c.responseInterceptor||(e=>e),credentials:"same-origin",headers:{Accept:"application/json,*/*"}}).then(p,p)},updateLoadingStatus:e=>{let t=[null,"loading","failed","success","failedConfig"];return-1===l()(t).call(t,e)&&console.error(`Error: ${e} is not one of ${c()(t)}`),{type:"spec_update_loading_status",payload:e}}},reducers:{spec_update_loading_status:(e,t)=>"string"==typeof t.payload?e.set("loadingStatus",t.payload):e},selectors:{loadingStatus:(0,p.P1)((e=>e||(0,f.Map)()),(e=>e.get("loadingStatus")||null))}}}}}},34966:(e,t,r)=>{"use strict";r.r(t),r.d(t,{NEW_THROWN_ERR:()=>o,NEW_THROWN_ERR_BATCH:()=>a,NEW_SPEC_ERR:()=>i,NEW_SPEC_ERR_BATCH:()=>s,NEW_AUTH_ERR:()=>l,CLEAR:()=>u,CLEAR_BY:()=>c,newThrownErr:()=>p,newThrownErrBatch:()=>f,newSpecErr:()=>h,newSpecErrBatch:()=>d,newAuthErr:()=>m,clear:()=>g,clearBy:()=>v});var n=r(7710);const o="err_new_thrown_err",a="err_new_thrown_err_batch",i="err_new_spec_err",s="err_new_spec_err_batch",l="err_new_auth_err",u="err_clear",c="err_clear_by";function p(e){return{type:o,payload:(0,n.serializeError)(e)}}function f(e){return{type:a,payload:e}}function h(e){return{type:i,payload:e}}function d(e){return{type:s,payload:e}}function m(e){return{type:l,payload:e}}function g(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{type:u,payload:e}}function v(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:()=>!0;return{type:c,payload:e}}},56982:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>c});var n=r(14418),o=r.n(n),a=r(97606),i=r.n(a),s=r(54061),l=r.n(s);const u=[r(2392),r(21835)];function c(e){var t;let r={jsSpec:{}},n=l()(u,((e,t)=>{try{let n=t.transform(e,r);return o()(n).call(n,(e=>!!e))}catch(t){return console.error("Transformer error:",t),e}}),e);return i()(t=o()(n).call(n,(e=>!!e))).call(t,(e=>(!e.get("line")&&e.get("path"),e)))}},2392:(e,t,r)=>{"use strict";r.r(t),r.d(t,{transform:()=>p});var n=r(97606),o=r.n(n),a=r(11882),i=r.n(a),s=r(24278),l=r.n(s),u=r(24282),c=r.n(u);function p(e){return o()(e).call(e,(e=>{var t;let r="is not of a type(s)",n=i()(t=e.get("message")).call(t,r);if(n>-1){var o,a;let t=l()(o=e.get("message")).call(o,n+r.length).split(",");return e.set("message",l()(a=e.get("message")).call(a,0,n)+function(e){return c()(e).call(e,((e,t,r,n)=>r===n.length-1&&n.length>1?e+"or "+t:n[r+1]&&n.length>2?e+t+", ":n[r+1]?e+t+" ":e+t),"should be a")}(t))}return e}))}},21835:(e,t,r)=>{"use strict";r.r(t),r.d(t,{transform:()=>n});r(97606),r(11882),r(27361),r(43393);function n(e,t){let{jsSpec:r}=t;return e}},77793:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>i});var n=r(93527),o=r(34966),a=r(87667);function i(e){return{statePlugins:{err:{reducers:(0,n.default)(e),actions:o,selectors:a}}}}},93527:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>v});var n=r(76986),o=r.n(n),a=r(97606),i=r.n(a),s=r(39022),l=r.n(s),u=r(14418),c=r.n(u),p=r(2250),f=r.n(p),h=r(34966),d=r(43393),m=r(56982);let g={line:0,level:"error",message:"Unknown error"};function v(){return{[h.NEW_THROWN_ERR]:(e,t)=>{let{payload:r}=t,n=o()(g,r,{type:"thrown"});return e.update("errors",(e=>(e||(0,d.List)()).push((0,d.fromJS)(n)))).update("errors",(e=>(0,m.default)(e)))},[h.NEW_THROWN_ERR_BATCH]:(e,t)=>{let{payload:r}=t;return r=i()(r).call(r,(e=>(0,d.fromJS)(o()(g,e,{type:"thrown"})))),e.update("errors",(e=>{var t;return l()(t=e||(0,d.List)()).call(t,(0,d.fromJS)(r))})).update("errors",(e=>(0,m.default)(e)))},[h.NEW_SPEC_ERR]:(e,t)=>{let{payload:r}=t,n=(0,d.fromJS)(r);return n=n.set("type","spec"),e.update("errors",(e=>(e||(0,d.List)()).push((0,d.fromJS)(n)).sortBy((e=>e.get("line"))))).update("errors",(e=>(0,m.default)(e)))},[h.NEW_SPEC_ERR_BATCH]:(e,t)=>{let{payload:r}=t;return r=i()(r).call(r,(e=>(0,d.fromJS)(o()(g,e,{type:"spec"})))),e.update("errors",(e=>{var t;return l()(t=e||(0,d.List)()).call(t,(0,d.fromJS)(r))})).update("errors",(e=>(0,m.default)(e)))},[h.NEW_AUTH_ERR]:(e,t)=>{let{payload:r}=t,n=(0,d.fromJS)(o()({},r));return n=n.set("type","auth"),e.update("errors",(e=>(e||(0,d.List)()).push((0,d.fromJS)(n)))).update("errors",(e=>(0,m.default)(e)))},[h.CLEAR]:(e,t)=>{var r;let{payload:n}=t;if(!n||!e.get("errors"))return e;let o=c()(r=e.get("errors")).call(r,(e=>{var t;return f()(t=e.keySeq()).call(t,(t=>{const r=e.get(t),o=n[t];return!o||r!==o}))}));return e.merge({errors:o})},[h.CLEAR_BY]:(e,t)=>{var r;let{payload:n}=t;if(!n||"function"!=typeof n)return e;let o=c()(r=e.get("errors")).call(r,(e=>n(e)));return e.merge({errors:o})}}}},87667:(e,t,r)=>{"use strict";r.r(t),r.d(t,{allErrors:()=>a,lastError:()=>i});var n=r(43393),o=r(20573);const a=(0,o.P1)((e=>e),(e=>e.get("errors",(0,n.List)()))),i=(0,o.P1)(a,(e=>e.last()))},49978:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>o});var n=r(4309);function o(){return{fn:{opsFilter:n.default}}}},4309:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>s});var n=r(14418),o=r.n(n),a=r(11882),i=r.n(a);function s(e,t){return o()(e).call(e,((e,r)=>-1!==i()(r).call(r,t)))}},25474:(e,t,r)=>{"use strict";r.r(t),r.d(t,{UPDATE_LAYOUT:()=>o,UPDATE_FILTER:()=>a,UPDATE_MODE:()=>i,SHOW:()=>s,updateLayout:()=>l,updateFilter:()=>u,show:()=>c,changeMode:()=>p});var n=r(90242);const o="layout_update_layout",a="layout_update_filter",i="layout_update_mode",s="layout_show";function l(e){return{type:o,payload:e}}function u(e){return{type:a,payload:e}}function c(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return e=(0,n.AF)(e),{type:s,payload:{thing:e,shown:t}}}function p(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return e=(0,n.AF)(e),{type:i,payload:{thing:e,mode:t}}}},26821:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>s});var n=r(5672),o=r(25474),a=r(4400),i=r(28989);function s(){return{statePlugins:{layout:{reducers:n.default,actions:o,selectors:a},spec:{wrapSelectors:i}}}}},5672:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>s});var n=r(39022),o=r.n(n),a=r(43393),i=r(25474);const s={[i.UPDATE_LAYOUT]:(e,t)=>e.set("layout",t.payload),[i.UPDATE_FILTER]:(e,t)=>e.set("filter",t.payload),[i.SHOW]:(e,t)=>{const r=t.payload.shown,n=(0,a.fromJS)(t.payload.thing);return e.update("shown",(0,a.fromJS)({}),(e=>e.set(n,r)))},[i.UPDATE_MODE]:(e,t)=>{var r;let n=t.payload.thing,a=t.payload.mode;return e.setIn(o()(r=["modes"]).call(r,n),(a||"")+"")}}},4400:(e,t,r)=>{"use strict";r.r(t),r.d(t,{current:()=>i,currentFilter:()=>s,isShown:()=>l,whatMode:()=>u,showSummary:()=>c});var n=r(20573),o=r(90242),a=r(43393);const i=e=>e.get("layout"),s=e=>e.get("filter"),l=(e,t,r)=>(t=(0,o.AF)(t),e.get("shown",(0,a.fromJS)({})).get((0,a.fromJS)(t),r)),u=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return t=(0,o.AF)(t),e.getIn(["modes",...t],r)},c=(0,n.P1)((e=>e),(e=>!l(e,"editor")))},28989:(e,t,r)=>{"use strict";r.r(t),r.d(t,{taggedOperations:()=>a});var n=r(24278),o=r.n(n);const a=(e,t)=>function(r){for(var n=arguments.length,a=new Array(n>1?n-1:0),i=1;i=0&&(s=o()(s).call(s,0,f)),s}},9150:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>a});var n=r(11189),o=r.n(n);function a(e){let{configs:t}=e;const r={debug:0,info:1,log:2,warn:3,error:4},n=e=>r[e]||-1;let{logLevel:a}=t,i=n(a);function s(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),o=1;o=i&&console[e](...r)}return s.warn=o()(s).call(s,null,"warn"),s.error=o()(s).call(s,null,"error"),s.info=o()(s).call(s,null,"info"),s.debug=o()(s).call(s,null,"debug"),{rootInjects:{log:s}}}},67002:(e,t,r)=>{"use strict";r.r(t),r.d(t,{UPDATE_SELECTED_SERVER:()=>n,UPDATE_REQUEST_BODY_VALUE:()=>o,UPDATE_REQUEST_BODY_VALUE_RETAIN_FLAG:()=>a,UPDATE_REQUEST_BODY_INCLUSION:()=>i,UPDATE_ACTIVE_EXAMPLES_MEMBER:()=>s,UPDATE_REQUEST_CONTENT_TYPE:()=>l,UPDATE_RESPONSE_CONTENT_TYPE:()=>u,UPDATE_SERVER_VARIABLE_VALUE:()=>c,SET_REQUEST_BODY_VALIDATE_ERROR:()=>p,CLEAR_REQUEST_BODY_VALIDATE_ERROR:()=>f,CLEAR_REQUEST_BODY_VALUE:()=>h,setSelectedServer:()=>d,setRequestBodyValue:()=>m,setRetainRequestBodyValueFlag:()=>g,setRequestBodyInclusion:()=>v,setActiveExamplesMember:()=>y,setRequestContentType:()=>b,setResponseContentType:()=>w,setServerVariableValue:()=>E,setRequestBodyValidateError:()=>x,clearRequestBodyValidateError:()=>_,initRequestBodyValidateError:()=>S,clearRequestBodyValue:()=>A});const n="oas3_set_servers",o="oas3_set_request_body_value",a="oas3_set_request_body_retain_flag",i="oas3_set_request_body_inclusion",s="oas3_set_active_examples_member",l="oas3_set_request_content_type",u="oas3_set_response_content_type",c="oas3_set_server_variable_value",p="oas3_set_request_body_validate_error",f="oas3_clear_request_body_validate_error",h="oas3_clear_request_body_value";function d(e,t){return{type:n,payload:{selectedServerUrl:e,namespace:t}}}function m(e){let{value:t,pathMethod:r}=e;return{type:o,payload:{value:t,pathMethod:r}}}const g=e=>{let{value:t,pathMethod:r}=e;return{type:a,payload:{value:t,pathMethod:r}}};function v(e){let{value:t,pathMethod:r,name:n}=e;return{type:i,payload:{value:t,pathMethod:r,name:n}}}function y(e){let{name:t,pathMethod:r,contextType:n,contextName:o}=e;return{type:s,payload:{name:t,pathMethod:r,contextType:n,contextName:o}}}function b(e){let{value:t,pathMethod:r}=e;return{type:l,payload:{value:t,pathMethod:r}}}function w(e){let{value:t,path:r,method:n}=e;return{type:u,payload:{value:t,path:r,method:n}}}function E(e){let{server:t,namespace:r,key:n,val:o}=e;return{type:c,payload:{server:t,namespace:r,key:n,val:o}}}const x=e=>{let{path:t,method:r,validationErrors:n}=e;return{type:p,payload:{path:t,method:r,validationErrors:n}}},_=e=>{let{path:t,method:r}=e;return{type:f,payload:{path:t,method:r}}},S=e=>{let{pathMethod:t}=e;return{type:f,payload:{path:t[0],method:t[1]}}},A=e=>{let{pathMethod:t}=e;return{type:h,payload:{pathMethod:t}}}},73723:(e,t,r)=>{"use strict";r.r(t),r.d(t,{definitionsToAuthorize:()=>f});var n=r(86),o=r.n(n),a=r(14418),i=r.n(a),s=r(24282),l=r.n(s),u=r(20573),c=r(43393),p=r(7779);const f=(h=(0,u.P1)((e=>e),(e=>{let{specSelectors:t}=e;return t.securityDefinitions()}),((e,t)=>{var r;let n=(0,c.List)();return t?(o()(r=t.entrySeq()).call(r,(e=>{let[t,r]=e;const a=r.get("type");var s;if("oauth2"===a&&o()(s=r.get("flows").entrySeq()).call(s,(e=>{let[o,a]=e,s=(0,c.fromJS)({flow:o,authorizationUrl:a.get("authorizationUrl"),tokenUrl:a.get("tokenUrl"),scopes:a.get("scopes"),type:r.get("type"),description:r.get("description")});n=n.push(new c.Map({[t]:i()(s).call(s,(e=>void 0!==e))}))})),"http"!==a&&"apiKey"!==a||(n=n.push(new c.Map({[t]:r}))),"openIdConnect"===a&&r.get("openIdConnectData")){let e=r.get("openIdConnectData"),a=e.get("grant_types_supported")||["authorization_code","implicit"];o()(a).call(a,(o=>{var a;let s=e.get("scopes_supported")&&l()(a=e.get("scopes_supported")).call(a,((e,t)=>e.set(t,"")),new c.Map),u=(0,c.fromJS)({flow:o,authorizationUrl:e.get("authorization_endpoint"),tokenUrl:e.get("token_endpoint"),scopes:s,type:"oauth2",openIdConnectUrl:r.get("openIdConnectUrl")});n=n.push(new c.Map({[t]:i()(u).call(u,(e=>void 0!==e))}))}))}})),n):n})),(e,t)=>function(){const r=t.getSystem().specSelectors.specJson();for(var n=arguments.length,o=new Array(n),a=0;a{"use strict";r.r(t),r.d(t,{default:()=>u});var n=r(23101),o=r.n(n),a=r(97606),i=r.n(a),s=r(67294),l=(r(23930),r(43393));const u=e=>{var t;let{callbacks:r,getComponent:n,specPath:a}=e;const u=n("OperationContainer",!0);if(!r)return s.createElement("span",null,"No callbacks");let c=i()(t=r.entrySeq()).call(t,(t=>{var r;let[n,c]=t;return s.createElement("div",{key:n},s.createElement("h2",null,n),i()(r=c.entrySeq()).call(r,(t=>{var r;let[c,p]=t;return"$$ref"===c?null:s.createElement("div",{key:c},i()(r=p.entrySeq()).call(r,(t=>{let[r,i]=t;if("$$ref"===r)return null;let p=(0,l.fromJS)({operation:i});return s.createElement(u,o()({},e,{op:p,key:r,tag:"",method:r,path:c,specPath:a.push(n,c,r),allowTryItOut:!1}))})))})))}));return s.createElement("div",null,c)}},86775:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>f});var n=r(61125),o=r.n(n),a=r(76986),i=r.n(a),s=r(14418),l=r.n(s),u=r(97606),c=r.n(u),p=r(67294);class f extends p.Component{constructor(e,t){super(e,t),o()(this,"onChange",(e=>{let{onChange:t}=this.props,{value:r,name:n}=e.target,o=i()({},this.state.value);n?o[n]=r:o=r,this.setState({value:o},(()=>t(this.state)))}));let{name:r,schema:n}=this.props,a=this.getValue();this.state={name:r,schema:n,value:a}}getValue(){let{name:e,authorized:t}=this.props;return t&&t.getIn([e,"value"])}render(){var e;let{schema:t,getComponent:r,errSelectors:n,name:o}=this.props;const a=r("Input"),i=r("Row"),s=r("Col"),u=r("authError"),f=r("Markdown",!0),h=r("JumpToPath",!0),d=(t.get("scheme")||"").toLowerCase();let m=this.getValue(),g=l()(e=n.allErrors()).call(e,(e=>e.get("authId")===o));if("basic"===d){var v;let e=m?m.get("username"):null;return p.createElement("div",null,p.createElement("h4",null,p.createElement("code",null,o||t.get("name")),"  (http, Basic)",p.createElement(h,{path:["securityDefinitions",o]})),e&&p.createElement("h6",null,"Authorized"),p.createElement(i,null,p.createElement(f,{source:t.get("description")})),p.createElement(i,null,p.createElement("label",null,"Username:"),e?p.createElement("code",null," ",e," "):p.createElement(s,null,p.createElement(a,{type:"text",required:"required",name:"username","aria-label":"auth-basic-username",onChange:this.onChange,autoFocus:!0}))),p.createElement(i,null,p.createElement("label",null,"Password:"),e?p.createElement("code",null," ****** "):p.createElement(s,null,p.createElement(a,{autoComplete:"new-password",name:"password",type:"password","aria-label":"auth-basic-password",onChange:this.onChange}))),c()(v=g.valueSeq()).call(v,((e,t)=>p.createElement(u,{error:e,key:t}))))}var y;return"bearer"===d?p.createElement("div",null,p.createElement("h4",null,p.createElement("code",null,o||t.get("name")),"  (http, Bearer)",p.createElement(h,{path:["securityDefinitions",o]})),m&&p.createElement("h6",null,"Authorized"),p.createElement(i,null,p.createElement(f,{source:t.get("description")})),p.createElement(i,null,p.createElement("label",null,"Value:"),m?p.createElement("code",null," ****** "):p.createElement(s,null,p.createElement(a,{type:"text","aria-label":"auth-bearer-value",onChange:this.onChange,autoFocus:!0}))),c()(y=g.valueSeq()).call(y,((e,t)=>p.createElement(u,{error:e,key:t})))):p.createElement("div",null,p.createElement("em",null,p.createElement("b",null,o)," HTTP authentication: unsupported scheme ",`'${d}'`))}}},76467:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>p});var n=r(33427),o=r(42458),a=r(15757),i=r(56617),s=r(9928),l=r(45327),u=r(86775),c=r(96796);const p={Callbacks:n.default,HttpAuth:u.default,RequestBody:o.default,Servers:i.default,ServersContainer:s.default,RequestBodyEditor:l.default,OperationServers:c.default,operationLink:a.default}},15757:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>u});var n=r(35627),o=r.n(n),a=r(97606),i=r.n(a),s=r(67294);r(23930);class l extends s.Component{render(){const{link:e,name:t,getComponent:r}=this.props,n=r("Markdown",!0);let a=e.get("operationId")||e.get("operationRef"),l=e.get("parameters")&&e.get("parameters").toJS(),u=e.get("description");return s.createElement("div",{className:"operation-link"},s.createElement("div",{className:"description"},s.createElement("b",null,s.createElement("code",null,t)),u?s.createElement(n,{source:u}):null),s.createElement("pre",null,"Operation `",a,"`",s.createElement("br",null),s.createElement("br",null),"Parameters ",function(e,t){var r;if("string"!=typeof t)return"";return i()(r=t.split("\n")).call(r,((t,r)=>r>0?Array(e+1).join(" ")+t:t)).join("\n")}(0,o()(l,null,2))||"{}",s.createElement("br",null)))}}const u=l},96796:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>i});var n=r(61125),o=r.n(n),a=r(67294);r(23930);class i extends a.Component{constructor(){super(...arguments),o()(this,"setSelectedServer",(e=>{const{path:t,method:r}=this.props;return this.forceUpdate(),this.props.setSelectedServer(e,`${t}:${r}`)})),o()(this,"setServerVariableValue",(e=>{const{path:t,method:r}=this.props;return this.forceUpdate(),this.props.setServerVariableValue({...e,namespace:`${t}:${r}`})})),o()(this,"getSelectedServer",(()=>{const{path:e,method:t}=this.props;return this.props.getSelectedServer(`${e}:${t}`)})),o()(this,"getServerVariable",((e,t)=>{const{path:r,method:n}=this.props;return this.props.getServerVariable({namespace:`${r}:${n}`,server:e},t)})),o()(this,"getEffectiveServerValue",(e=>{const{path:t,method:r}=this.props;return this.props.getEffectiveServerValue({server:e,namespace:`${t}:${r}`})}))}render(){const{operationServers:e,pathServers:t,getComponent:r}=this.props;if(!e&&!t)return null;const n=r("Servers"),o=e||t,i=e?"operation":"path";return a.createElement("div",{className:"opblock-section operation-servers"},a.createElement("div",{className:"opblock-section-header"},a.createElement("div",{className:"tab-header"},a.createElement("h4",{className:"opblock-title"},"Servers"))),a.createElement("div",{className:"opblock-description-wrapper"},a.createElement("h4",{className:"message"},"These ",i,"-level options override the global server options."),a.createElement(n,{servers:o,currentServer:this.getSelectedServer(),setSelectedServer:this.setSelectedServer,setServerVariableValue:this.setServerVariableValue,getServerVariable:this.getServerVariable,getEffectiveServerValue:this.getEffectiveServerValue})))}}},45327:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>c});var n=r(61125),o=r.n(n),a=r(67294),i=r(94184),s=r.n(i),l=r(90242);const u=Function.prototype;class c extends a.PureComponent{constructor(e,t){super(e,t),o()(this,"applyDefaultValue",(e=>{const{onChange:t,defaultValue:r}=e||this.props;return this.setState({value:r}),t(r)})),o()(this,"onChange",(e=>{this.props.onChange((0,l.Pz)(e))})),o()(this,"onDomChange",(e=>{const t=e.target.value;this.setState({value:t},(()=>this.onChange(t)))})),this.state={value:(0,l.Pz)(e.value)||e.defaultValue},e.onChange(e.value)}UNSAFE_componentWillReceiveProps(e){this.props.value!==e.value&&e.value!==this.state.value&&this.setState({value:(0,l.Pz)(e.value)}),!e.value&&e.defaultValue&&this.state.value&&this.applyDefaultValue(e)}render(){let{getComponent:e,errors:t}=this.props,{value:r}=this.state,n=t.size>0;const o=e("TextArea");return a.createElement("div",{className:"body-param"},a.createElement(o,{className:s()("body-param__text",{invalid:n}),title:t.size?t.join(", "):"",value:r,onChange:this.onDomChange}))}}o()(c,"defaultProps",{onChange:u,userHasEditedBody:!1})},42458:(e,t,r)=>{"use strict";r.r(t),r.d(t,{getDefaultRequestBodyValue:()=>m,default:()=>g});var n=r(97606),o=r.n(n),a=r(11882),i=r.n(a),s=r(58118),l=r.n(s),u=r(58309),c=r.n(u),p=r(67294),f=(r(23930),r(43393)),h=r(90242),d=r(2518);const m=(e,t,r)=>{const n=e.getIn(["content",t]),o=n.get("schema").toJS(),a=void 0!==n.get("examples"),i=n.get("example"),s=a?n.getIn(["examples",r,"value"]):i,l=(0,h.xi)(o,t,{includeWriteOnly:!0},s);return(0,h.Pz)(l)},g=e=>{let{userHasEditedBody:t,requestBody:r,requestBodyValue:n,requestBodyInclusionSetting:a,requestBodyErrors:s,getComponent:u,getConfigs:g,specSelectors:v,fn:y,contentType:b,isExecute:w,specPath:E,onChange:x,onChangeIncludeEmpty:_,activeExamplesKey:S,updateActiveExamplesKey:A,setRetainRequestBodyValueFlag:k}=e;const C=e=>{x(e.target.files[0])},O=e=>{let t={key:e,shouldDispatchInit:!1,defaultValue:!0};return"no value"===a.get(e,"no value")&&(t.shouldDispatchInit=!0),t},j=u("Markdown",!0),I=u("modelExample"),N=u("RequestBodyEditor"),T=u("highlightCode"),P=u("ExamplesSelectValueRetainer"),R=u("Example"),M=u("ParameterIncludeEmpty"),{showCommonExtensions:D}=g(),L=r&&r.get("description")||null,B=r&&r.get("content")||new f.OrderedMap;b=b||B.keySeq().first()||"";const F=B.get(b,(0,f.OrderedMap)()),z=F.get("schema",(0,f.OrderedMap)()),U=F.get("examples",null),q=null==U?void 0:o()(U).call(U,((e,t)=>{var n;const o=null===(n=e)||void 0===n?void 0:n.get("value",null);return o&&(e=e.set("value",m(r,b,t),o)),e}));if(s=f.List.isList(s)?s:(0,f.List)(),!F.size)return null;const V="object"===F.getIn(["schema","type"]),$="binary"===F.getIn(["schema","format"]),W="base64"===F.getIn(["schema","format"]);if("application/octet-stream"===b||0===i()(b).call(b,"image/")||0===i()(b).call(b,"audio/")||0===i()(b).call(b,"video/")||$||W){const e=u("Input");return w?p.createElement(e,{type:"file",onChange:C}):p.createElement("i",null,"Example values are not available for ",p.createElement("code",null,b)," media types.")}if(V&&("application/x-www-form-urlencoded"===b||0===i()(b).call(b,"multipart/"))&&z.get("properties",(0,f.OrderedMap)()).size>0){var H;const e=u("JsonSchemaForm"),t=u("ParameterExt"),r=z.get("properties",(0,f.OrderedMap)());return n=f.Map.isMap(n)?n:(0,f.OrderedMap)(),p.createElement("div",{className:"table-container"},L&&p.createElement(j,{source:L}),p.createElement("table",null,p.createElement("tbody",null,f.Map.isMap(r)&&o()(H=r.entrySeq()).call(H,(r=>{var i,d;let[m,g]=r;if(g.get("readOnly"))return;let v=D?(0,h.po)(g):null;const b=l()(i=z.get("required",(0,f.List)())).call(i,m),E=g.get("type"),S=g.get("format"),A=g.get("description"),k=n.getIn([m,"value"]),C=n.getIn([m,"errors"])||s,I=a.get(m)||!1,N=g.has("default")||g.has("example")||g.hasIn(["items","example"])||g.hasIn(["items","default"]),T=g.has("enum")&&(1===g.get("enum").size||b),P=N||T;let R="";"array"!==E||P||(R=[]),("object"===E||P)&&(R=(0,h.xi)(g,!1,{includeWriteOnly:!0})),"string"!=typeof R&&"object"===E&&(R=(0,h.Pz)(R)),"string"==typeof R&&"array"===E&&(R=JSON.parse(R));const L="string"===E&&("binary"===S||"base64"===S);return p.createElement("tr",{key:m,className:"parameters","data-property-name":m},p.createElement("td",{className:"parameters-col_name"},p.createElement("div",{className:b?"parameter__name required":"parameter__name"},m,b?p.createElement("span",null," *"):null),p.createElement("div",{className:"parameter__type"},E,S&&p.createElement("span",{className:"prop-format"},"($",S,")"),D&&v.size?o()(d=v.entrySeq()).call(d,(e=>{let[r,n]=e;return p.createElement(t,{key:`${r}-${n}`,xKey:r,xVal:n})})):null),p.createElement("div",{className:"parameter__deprecated"},g.get("deprecated")?"deprecated":null)),p.createElement("td",{className:"parameters-col_description"},p.createElement(j,{source:A}),w?p.createElement("div",null,p.createElement(e,{fn:y,dispatchInitialValue:!L,schema:g,description:m,getComponent:u,value:void 0===k?R:k,required:b,errors:C,onChange:e=>{x(e,[m])}}),b?null:p.createElement(M,{onChange:e=>_(m,e),isIncluded:I,isIncludedOptions:O(m),isDisabled:c()(k)?0!==k.length:!(0,h.O2)(k)})):null))})))))}const J=m(r,b,S);let K=null;return(0,d.O)(J)&&(K="json"),p.createElement("div",null,L&&p.createElement(j,{source:L}),q?p.createElement(P,{userHasEditedBody:t,examples:q,currentKey:S,currentUserInputValue:n,onSelect:e=>{A(e)},updateValue:x,defaultToFirstExample:!0,getComponent:u,setRetainRequestBodyValueFlag:k}):null,w?p.createElement("div",null,p.createElement(N,{value:n,errors:s,defaultValue:J,onChange:x,getComponent:u})):p.createElement(I,{getComponent:u,getConfigs:g,specSelectors:v,expandDepth:1,isExecute:w,schema:F.get("schema"),specPath:E.push("content",b),example:p.createElement(T,{className:"body-param__example",getConfigs:g,language:K,value:(0,h.Pz)(n)||J}),includeWriteOnly:!0}),q?p.createElement(R,{example:q.get(S),getComponent:u,getConfigs:g}):null)}},9928:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>o});var n=r(67294);class o extends n.Component{render(){const{specSelectors:e,oas3Selectors:t,oas3Actions:r,getComponent:o}=this.props,a=e.servers(),i=o("Servers");return a&&a.size?n.createElement("div",null,n.createElement("span",{className:"servers-title"},"Servers"),n.createElement(i,{servers:a,currentServer:t.selectedServer(),setSelectedServer:r.setSelectedServer,setServerVariableValue:r.setServerVariableValue,getServerVariable:t.serverVariableValue,getEffectiveServerValue:t.serverEffectiveValue})):null}}},56617:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>p});var n=r(61125),o=r.n(n),a=r(51679),i=r.n(a),s=r(97606),l=r.n(s),u=r(67294),c=r(43393);r(23930);class p extends u.Component{constructor(){super(...arguments),o()(this,"onServerChange",(e=>{this.setServer(e.target.value)})),o()(this,"onServerVariableValueChange",(e=>{let{setServerVariableValue:t,currentServer:r}=this.props,n=e.target.getAttribute("data-variable"),o=e.target.value;"function"==typeof t&&t({server:r,key:n,val:o})})),o()(this,"setServer",(e=>{let{setSelectedServer:t}=this.props;t(e)}))}componentDidMount(){var e;let{servers:t,currentServer:r}=this.props;r||this.setServer(null===(e=t.first())||void 0===e?void 0:e.get("url"))}UNSAFE_componentWillReceiveProps(e){let{servers:t,setServerVariableValue:r,getServerVariable:n}=e;if(this.props.currentServer!==e.currentServer||this.props.servers!==e.servers){var o;let a=i()(t).call(t,(t=>t.get("url")===e.currentServer)),s=i()(o=this.props.servers).call(o,(e=>e.get("url")===this.props.currentServer))||(0,c.OrderedMap)();if(!a)return this.setServer(t.first().get("url"));let u=s.get("variables")||(0,c.OrderedMap)(),p=(i()(u).call(u,(e=>e.get("default")))||(0,c.OrderedMap)()).get("default"),f=a.get("variables")||(0,c.OrderedMap)(),h=(i()(f).call(f,(e=>e.get("default")))||(0,c.OrderedMap)()).get("default");l()(f).call(f,((t,o)=>{n(e.currentServer,o)&&p===h||r({server:e.currentServer,key:o,val:t.get("default")||""})}))}}render(){var e,t;let{servers:r,currentServer:n,getServerVariable:o,getEffectiveServerValue:a}=this.props,s=(i()(r).call(r,(e=>e.get("url")===n))||(0,c.OrderedMap)()).get("variables")||(0,c.OrderedMap)(),p=0!==s.size;return u.createElement("div",{className:"servers"},u.createElement("label",{htmlFor:"servers"},u.createElement("select",{onChange:this.onServerChange,value:n},l()(e=r.valueSeq()).call(e,(e=>u.createElement("option",{value:e.get("url"),key:e.get("url")},e.get("url"),e.get("description")&&` - ${e.get("description")}`))).toArray())),p?u.createElement("div",null,u.createElement("div",{className:"computed-url"},"Computed URL:",u.createElement("code",null,a(n))),u.createElement("h4",null,"Server variables"),u.createElement("table",null,u.createElement("tbody",null,l()(t=s.entrySeq()).call(t,(e=>{var t;let[r,a]=e;return u.createElement("tr",{key:r},u.createElement("td",null,r),u.createElement("td",null,a.get("enum")?u.createElement("select",{"data-variable":r,onChange:this.onServerVariableValueChange},l()(t=a.get("enum")).call(t,(e=>u.createElement("option",{selected:e===o(n,r),key:e,value:e},e)))):u.createElement("input",{type:"text",value:o(n,r)||"",onChange:this.onServerVariableValueChange,"data-variable":r})))}))))):null)}}},7779:(e,t,r)=>{"use strict";r.r(t),r.d(t,{isOAS3:()=>l,isSwagger2:()=>u,OAS3ComponentWrapFactory:()=>c});var n=r(23101),o=r.n(n),a=r(27043),i=r.n(a),s=r(67294);function l(e){const t=e.get("openapi");return"string"==typeof t&&(i()(t).call(t,"3.0.")&&t.length>4)}function u(e){const t=e.get("swagger");return"string"==typeof t&&i()(t).call(t,"2.0")}function c(e){return(t,r)=>n=>{if(r&&r.specSelectors&&r.specSelectors.specJson){return l(r.specSelectors.specJson())?s.createElement(e,o()({},n,r,{Ori:t})):s.createElement(t,n)}return console.warn("OAS3 wrapper: couldn't get spec"),null}}},97451:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>p});var n=r(92044),o=r(73723),a=r(91741),i=r(76467),s=r(37761),l=r(67002),u=r(5065),c=r(62109);function p(){return{components:i.default,wrapComponents:s.default,statePlugins:{spec:{wrapSelectors:n,selectors:a},auth:{wrapSelectors:o},oas3:{actions:l,reducers:c.default,selectors:u}}}}},62109:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>p});var n=r(8712),o=r.n(n),a=r(86),i=r.n(a),s=r(24282),l=r.n(s),u=r(43393),c=r(67002);const p={[c.UPDATE_SELECTED_SERVER]:(e,t)=>{let{payload:{selectedServerUrl:r,namespace:n}}=t;const o=n?[n,"selectedServer"]:["selectedServer"];return e.setIn(o,r)},[c.UPDATE_REQUEST_BODY_VALUE]:(e,t)=>{let{payload:{value:r,pathMethod:n}}=t,[a,s]=n;if(!u.Map.isMap(r))return e.setIn(["requestData",a,s,"bodyValue"],r);let l,c=e.getIn(["requestData",a,s,"bodyValue"])||(0,u.Map)();u.Map.isMap(c)||(c=(0,u.Map)());const[...p]=o()(r).call(r);return i()(p).call(p,(e=>{let t=r.getIn([e]);c.has(e)&&u.Map.isMap(t)||(l=c.setIn([e,"value"],t))})),e.setIn(["requestData",a,s,"bodyValue"],l)},[c.UPDATE_REQUEST_BODY_VALUE_RETAIN_FLAG]:(e,t)=>{let{payload:{value:r,pathMethod:n}}=t,[o,a]=n;return e.setIn(["requestData",o,a,"retainBodyValue"],r)},[c.UPDATE_REQUEST_BODY_INCLUSION]:(e,t)=>{let{payload:{value:r,pathMethod:n,name:o}}=t,[a,i]=n;return e.setIn(["requestData",a,i,"bodyInclusion",o],r)},[c.UPDATE_ACTIVE_EXAMPLES_MEMBER]:(e,t)=>{let{payload:{name:r,pathMethod:n,contextType:o,contextName:a}}=t,[i,s]=n;return e.setIn(["examples",i,s,o,a,"activeExample"],r)},[c.UPDATE_REQUEST_CONTENT_TYPE]:(e,t)=>{let{payload:{value:r,pathMethod:n}}=t,[o,a]=n;return e.setIn(["requestData",o,a,"requestContentType"],r)},[c.UPDATE_RESPONSE_CONTENT_TYPE]:(e,t)=>{let{payload:{value:r,path:n,method:o}}=t;return e.setIn(["requestData",n,o,"responseContentType"],r)},[c.UPDATE_SERVER_VARIABLE_VALUE]:(e,t)=>{let{payload:{server:r,namespace:n,key:o,val:a}}=t;const i=n?[n,"serverVariableValues",r,o]:["serverVariableValues",r,o];return e.setIn(i,a)},[c.SET_REQUEST_BODY_VALIDATE_ERROR]:(e,t)=>{let{payload:{path:r,method:n,validationErrors:o}}=t,a=[];if(a.push("Required field is not provided"),o.missingBodyValue)return e.setIn(["requestData",r,n,"errors"],(0,u.fromJS)(a));if(o.missingRequiredKeys&&o.missingRequiredKeys.length>0){const{missingRequiredKeys:t}=o;return e.updateIn(["requestData",r,n,"bodyValue"],(0,u.fromJS)({}),(e=>l()(t).call(t,((e,t)=>e.setIn([t,"errors"],(0,u.fromJS)(a))),e)))}return console.warn("unexpected result: SET_REQUEST_BODY_VALIDATE_ERROR"),e},[c.CLEAR_REQUEST_BODY_VALIDATE_ERROR]:(e,t)=>{let{payload:{path:r,method:n}}=t;const a=e.getIn(["requestData",r,n,"bodyValue"]);if(!u.Map.isMap(a))return e.setIn(["requestData",r,n,"errors"],(0,u.fromJS)([]));const[...i]=o()(a).call(a);return i?e.updateIn(["requestData",r,n,"bodyValue"],(0,u.fromJS)({}),(e=>l()(i).call(i,((e,t)=>e.setIn([t,"errors"],(0,u.fromJS)([]))),e))):e},[c.CLEAR_REQUEST_BODY_VALUE]:(e,t)=>{let{payload:{pathMethod:r}}=t,[n,o]=r;const a=e.getIn(["requestData",n,o,"bodyValue"]);return a?u.Map.isMap(a)?e.setIn(["requestData",n,o,"bodyValue"],(0,u.Map)()):e.setIn(["requestData",n,o,"bodyValue"],""):e}}},5065:(e,t,r)=>{"use strict";r.r(t),r.d(t,{selectedServer:()=>g,requestBodyValue:()=>v,shouldRetainRequestBodyValue:()=>y,selectDefaultRequestBodyValue:()=>b,hasUserEditedBody:()=>w,requestBodyInclusionSetting:()=>E,requestBodyErrors:()=>x,activeExamplesMember:()=>_,requestContentType:()=>S,responseContentType:()=>A,serverVariableValue:()=>k,serverVariables:()=>C,serverEffectiveValue:()=>O,validateBeforeExecute:()=>j,validateShallowRequired:()=>N});var n=r(97606),o=r.n(n),a=r(86),i=r.n(a),s=r(28222),l=r.n(s),u=r(11882),c=r.n(u),p=r(43393),f=r(7779),h=r(42458),d=r(90242);function m(e){return function(){for(var t=arguments.length,r=new Array(t),n=0;n{const n=t.getSystem().specSelectors.specJson();return(0,f.isOAS3)(n)?e(...r):null}}}const g=m(((e,t)=>{const r=t?[t,"selectedServer"]:["selectedServer"];return e.getIn(r)||""})),v=m(((e,t,r)=>e.getIn(["requestData",t,r,"bodyValue"])||null)),y=m(((e,t,r)=>e.getIn(["requestData",t,r,"retainBodyValue"])||!1)),b=(e,t,r)=>e=>{const{oas3Selectors:n,specSelectors:o}=e.getSystem(),a=o.specJson();if((0,f.isOAS3)(a)){const e=n.requestContentType(t,r);if(e)return(0,h.getDefaultRequestBodyValue)(o.specResolvedSubtree(["paths",t,r,"requestBody"]),e,n.activeExamplesMember(t,r,"requestBody","requestBody"))}return null},w=(e,t,r)=>e=>{const{oas3Selectors:n,specSelectors:o}=e.getSystem(),a=o.specJson();if((0,f.isOAS3)(a)){let e=!1;const a=n.requestContentType(t,r);let i=n.requestBodyValue(t,r);if(p.Map.isMap(i)&&(i=(0,d.Pz)(i.mapEntries((e=>p.Map.isMap(e[1])?[e[0],e[1].get("value")]:e)).toJS())),p.List.isList(i)&&(i=(0,d.Pz)(i)),a){const s=(0,h.getDefaultRequestBodyValue)(o.specResolvedSubtree(["paths",t,r,"requestBody"]),a,n.activeExamplesMember(t,r,"requestBody","requestBody"));e=!!i&&i!==s}return e}return null},E=m(((e,t,r)=>e.getIn(["requestData",t,r,"bodyInclusion"])||(0,p.Map)())),x=m(((e,t,r)=>e.getIn(["requestData",t,r,"errors"])||null)),_=m(((e,t,r,n,o)=>e.getIn(["examples",t,r,n,o,"activeExample"])||null)),S=m(((e,t,r)=>e.getIn(["requestData",t,r,"requestContentType"])||null)),A=m(((e,t,r)=>e.getIn(["requestData",t,r,"responseContentType"])||null)),k=m(((e,t,r)=>{let n;if("string"!=typeof t){const{server:e,namespace:o}=t;n=o?[o,"serverVariableValues",e,r]:["serverVariableValues",e,r]}else{n=["serverVariableValues",t,r]}return e.getIn(n)||null})),C=m(((e,t)=>{let r;if("string"!=typeof t){const{server:e,namespace:n}=t;r=n?[n,"serverVariableValues",e]:["serverVariableValues",e]}else{r=["serverVariableValues",t]}return e.getIn(r)||(0,p.OrderedMap)()})),O=m(((e,t)=>{var r,n;if("string"!=typeof t){const{server:o,namespace:a}=t;n=o,r=a?e.getIn([a,"serverVariableValues",n]):e.getIn(["serverVariableValues",n])}else n=t,r=e.getIn(["serverVariableValues",n]);r=r||(0,p.OrderedMap)();let a=n;return o()(r).call(r,((e,t)=>{a=a.replace(new RegExp(`{${t}}`,"g"),e)})),a})),j=(I=(e,t)=>((e,t)=>(t=t||[],!!e.getIn(["requestData",...t,"bodyValue"])))(e,t),function(){for(var e=arguments.length,t=new Array(e),r=0;r{const r=e.getSystem().specSelectors.specJson();let n=[...t][1]||[];return!r.getIn(["paths",...n,"requestBody","required"])||I(...t)}});var I;const N=(e,t)=>{var r;let{oas3RequiredRequestBodyContentType:n,oas3RequestContentType:o,oas3RequestBodyValue:a}=t,s=[];if(!p.Map.isMap(a))return s;let u=[];return i()(r=l()(n.requestContentType)).call(r,(e=>{if(e===o){let t=n.requestContentType[e];i()(t).call(t,(e=>{c()(u).call(u,e)<0&&u.push(e)}))}})),i()(u).call(u,(e=>{a.getIn([e,"value"])||s.push(e)})),s}},91741:(e,t,r)=>{"use strict";r.r(t),r.d(t,{servers:()=>u,isSwagger2:()=>p});var n=r(20573),o=r(43393),a=r(7779);const i=e=>e||(0,o.Map)(),s=(0,n.P1)(i,(e=>e.get("json",(0,o.Map)()))),l=(0,n.P1)(i,(e=>e.get("resolved",(0,o.Map)()))),u=(c=(0,n.P1)((e=>{let t=l(e);return t.count()<1&&(t=s(e)),t}),(e=>e.getIn(["servers"])||(0,o.Map)())),()=>function(e){const t=e.getSystem().specSelectors.specJson();if((0,a.isOAS3)(t)){for(var r=arguments.length,n=new Array(r>1?r-1:0),o=1;o()=>{const e=t.getSystem().specSelectors.specJson();return(0,a.isSwagger2)(e)}},92044:(e,t,r)=>{"use strict";r.r(t),r.d(t,{definitions:()=>h,hasHost:()=>d,securityDefinitions:()=>m,host:()=>g,basePath:()=>v,consumes:()=>y,produces:()=>b,schemes:()=>w,servers:()=>E,isOAS3:()=>x,isSwagger2:()=>_});var n=r(20573),o=r(33881),a=r(43393),i=r(7779);function s(e){return(t,r)=>function(){const n=r.getSystem().specSelectors.specJson();return(0,i.isOAS3)(n)?e(...arguments):t(...arguments)}}const l=e=>e||(0,a.Map)(),u=s((0,n.P1)((()=>null))),c=(0,n.P1)(l,(e=>e.get("json",(0,a.Map)()))),p=(0,n.P1)(l,(e=>e.get("resolved",(0,a.Map)()))),f=e=>{let t=p(e);return t.count()<1&&(t=c(e)),t},h=s((0,n.P1)(f,(e=>{const t=e.getIn(["components","schemas"]);return a.Map.isMap(t)?t:(0,a.Map)()}))),d=s((e=>f(e).hasIn(["servers",0]))),m=s((0,n.P1)(o.specJsonWithResolvedSubtrees,(e=>e.getIn(["components","securitySchemes"])||null))),g=u,v=u,y=u,b=u,w=u,E=s((0,n.P1)(f,(e=>e.getIn(["servers"])||(0,a.Map)()))),x=(e,t)=>()=>{const e=t.getSystem().specSelectors.specJson();return(0,i.isOAS3)(a.Map.isMap(e)?e:(0,a.Map)())},_=(e,t)=>()=>{const e=t.getSystem().specSelectors.specJson();return(0,i.isSwagger2)(a.Map.isMap(e)?e:(0,a.Map)())}},70356:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>o});var n=r(67294);const o=(0,r(7779).OAS3ComponentWrapFactory)((e=>{let{Ori:t,...r}=e;const{schema:o,getComponent:a,errSelectors:i,authorized:s,onAuthChange:l,name:u}=r,c=a("HttpAuth");return"http"===o.get("type")?n.createElement(c,{key:u,schema:o,name:u,errSelectors:i,authorized:s,getComponent:a,onChange:l}):n.createElement(t,r)}))},37761:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>u});var n=r(22460),o=r(70356),a=r(69487),i=r(50058),s=r(53499),l=r(90287);const u={Markdown:n.default,AuthItem:o.default,JsonSchema_string:l.default,VersionStamp:a.default,model:s.default,onlineValidatorBadge:i.default}},90287:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>o});var n=r(67294);const o=(0,r(7779).OAS3ComponentWrapFactory)((e=>{let{Ori:t,...r}=e;const{schema:o,getComponent:a,errors:i,onChange:s}=r,l=o&&o.get?o.get("format"):null,u=o&&o.get?o.get("type"):null,c=a("Input");return u&&"string"===u&&l&&("binary"===l||"base64"===l)?n.createElement(c,{type:"file",className:i.length?"invalid":"",title:i.length?i:"",onChange:e=>{s(e.target.files[0])},disabled:t.isDisabled}):n.createElement(t,r)}))},22460:(e,t,r)=>{"use strict";r.r(t),r.d(t,{Markdown:()=>f,default:()=>h});var n=r(81607),o=r.n(n),a=r(67294),i=r(94184),s=r.n(i),l=r(89927),u=r(7779),c=r(86019);const p=new l._("commonmark");p.block.ruler.enable(["table"]),p.set({linkTarget:"_blank"});const f=e=>{let{source:t,className:r="",getConfigs:n}=e;if("string"!=typeof t)return null;if(t){const{useUnsafeMarkdown:e}=n(),i=p.render(t),l=(0,c.s)(i,{useUnsafeMarkdown:e});let u;return"string"==typeof l&&(u=o()(l).call(l)),a.createElement("div",{dangerouslySetInnerHTML:{__html:u},className:s()(r,"renderedMarkdown")})}return null};f.defaultProps={getConfigs:()=>({useUnsafeMarkdown:!1})};const h=(0,u.OAS3ComponentWrapFactory)(f)},53499:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>u});var n=r(23101),o=r.n(n),a=r(67294),i=r(7779),s=r(53795);class l extends a.Component{render(){let{getConfigs:e,schema:t}=this.props,r=["model-box"],n=null;return!0===t.get("deprecated")&&(r.push("deprecated"),n=a.createElement("span",{className:"model-deprecated-warning"},"Deprecated:")),a.createElement("div",{className:r.join(" ")},n,a.createElement(s.Z,o()({},this.props,{getConfigs:e,depth:1,expandDepth:this.props.expandDepth||0})))}}const u=(0,i.OAS3ComponentWrapFactory)(l)},50058:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>a});var n=r(7779),o=r(5623);const a=(0,n.OAS3ComponentWrapFactory)(o.Z)},69487:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>o});var n=r(67294);const o=(0,r(7779).OAS3ComponentWrapFactory)((e=>{const{Ori:t}=e;return n.createElement("span",null,n.createElement(t,e),n.createElement("small",{className:"version-stamp"},n.createElement("pre",{className:"version"},"OAS3")))}))},28560:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>i});var n=r(87198),o=r.n(n);let a=!1;function i(){return{statePlugins:{spec:{wrapActions:{updateSpec:e=>function(){return a=!0,e(...arguments)},updateJsonSpec:(e,t)=>function(){const r=t.getConfigs().onComplete;return a&&"function"==typeof r&&(o()(r,0),a=!1),e(...arguments)}}}}}}},92135:(e,t,r)=>{"use strict";r.r(t),r.d(t,{requestSnippetGenerator_curl_powershell:()=>A,requestSnippetGenerator_curl_bash:()=>k,requestSnippetGenerator_curl_cmd:()=>C});var n=r(11882),o=r.n(n),a=r(81607),i=r.n(a),s=r(35627),l=r.n(s),u=r(97606),c=r.n(u),p=r(12196),f=r.n(p),h=r(74386),d=r.n(h),m=r(58118),g=r.n(m),v=r(27504),y=r(43393);const b=e=>{var t;const r="_**[]";return o()(e).call(e,r)<0?e:i()(t=e.split(r)[0]).call(t)},w=e=>"-d "===e||/^[_\/-]/g.test(e)?e:"'"+e.replace(/'/g,"'\\''")+"'",E=e=>"-d "===(e=e.replace(/\^/g,"^^").replace(/\\"/g,'\\\\"').replace(/"/g,'""').replace(/\n/g,"^\n"))?e.replace(/-d /g,"-d ^\n"):/^[_\/-]/g.test(e)?e:'"'+e+'"',x=e=>"-d "===e?e:/\n/.test(e)?'@"\n'+e.replace(/"/g,'\\"').replace(/`/g,"``").replace(/\$/,"`$")+'\n"@':/^[_\/-]/g.test(e)?e:"'"+e.replace(/"/g,'""').replace(/'/g,"''")+"'";function _(e){let t=[];for(let[r,n]of e.get("body").entrySeq()){let e=b(r);n instanceof v.Z.File?t.push(` "${e}": {\n "name": "${n.name}"${n.type?`,\n "type": "${n.type}"`:""}\n }`):t.push(` "${e}": ${l()(n,null,2).replace(/(\r\n|\r|\n)/g,"\n ")}`)}return`{\n${t.join(",\n")}\n}`}const S=function(e,t,r){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"",o=!1,a="";const i=function(){for(var e=arguments.length,r=new Array(e),n=0;na+=` ${r}`,p=function(){var e;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return a+=f()(e=" ").call(e,t)};let h=e.get("headers");if(a+="curl"+n,e.has("curlOptions")&&i(...e.get("curlOptions")),i("-X",e.get("method")),u(),p(),s(`${e.get("url")}`),h&&h.size)for(let t of d()(m=e.get("headers")).call(m)){var m;u(),p();let[e,r]=t;s("-H",`${e}: ${r}`),o=o||/^content-type$/i.test(e)&&/^multipart\/form-data$/i.test(r)}const w=e.get("body");var E;if(w)if(o&&g()(E=["POST","PUT","PATCH"]).call(E,e.get("method")))for(let[e,t]of w.entrySeq()){let r=b(e);u(),p(),s("-F"),t instanceof v.Z.File?i(`${r}=@${t.name}${t.type?`;type=${t.type}`:""}`):i(`${r}=${t}`)}else if(w instanceof v.Z.File)u(),p(),s(`--data-binary '@${w.name}'`);else{u(),p(),s("-d ");let t=w;y.Map.isMap(t)?s(_(e)):("string"!=typeof t&&(t=l()(t)),s(t))}else w||"POST"!==e.get("method")||(u(),p(),s("-d ''"));return a},A=e=>S(e,x,"`\n",".exe"),k=e=>S(e,w,"\\\n"),C=e=>S(e,E,"^\n")},86575:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>i});var n=r(92135),o=r(4669),a=r(84206);const i=()=>({components:{RequestSnippets:a.default},fn:n,statePlugins:{requestSnippets:{selectors:o}}})},84206:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>w});var n=r(14418),o=r.n(n),a=r(25110),i=r.n(a),s=r(86),l=r.n(s),u=r(97606),c=r.n(u),p=r(67294),f=r(27361),h=r.n(f),d=r(23560),m=r.n(d),g=r(74855),v=r(33424);const y={cursor:"pointer",lineHeight:1,display:"inline-flex",backgroundColor:"rgb(250, 250, 250)",paddingBottom:"0",paddingTop:"0",border:"1px solid rgb(51, 51, 51)",borderRadius:"4px 4px 0 0",boxShadow:"none",borderBottom:"none"},b={cursor:"pointer",lineHeight:1,display:"inline-flex",backgroundColor:"rgb(51, 51, 51)",boxShadow:"none",border:"1px solid rgb(51, 51, 51)",paddingBottom:"0",paddingTop:"0",borderRadius:"4px 4px 0 0",marginTop:"-5px",marginRight:"-5px",marginLeft:"-5px",zIndex:"9999",borderBottom:"none"},w=e=>{var t,r;let{request:n,requestSnippetsSelectors:a,getConfigs:s}=e;const u=m()(s)?s():null,f=!1!==h()(u,"syntaxHighlight")&&h()(u,"syntaxHighlight.activated",!0),d=(0,p.useRef)(null),[w,E]=(0,p.useState)(null===(t=a.getSnippetGenerators())||void 0===t?void 0:t.keySeq().first()),[x,_]=(0,p.useState)(null==a?void 0:a.getDefaultExpanded());(0,p.useEffect)((()=>{}),[]),(0,p.useEffect)((()=>{var e;const t=o()(e=i()(d.current.childNodes)).call(e,(e=>{var t;return!!e.nodeType&&(null===(t=e.classList)||void 0===t?void 0:t.contains("curl-command"))}));return l()(t).call(t,(e=>e.addEventListener("mousewheel",j,{passive:!1}))),()=>{l()(t).call(t,(e=>e.removeEventListener("mousewheel",j)))}}),[n]);const S=a.getSnippetGenerators(),A=S.get(w),k=A.get("fn")(n),C=()=>{_(!x)},O=e=>e===w?b:y,j=e=>{const{target:t,deltaY:r}=e,{scrollHeight:n,offsetHeight:o,scrollTop:a}=t;n>o&&(0===a&&r<0||o+a>=n&&r>0)&&e.preventDefault()},I=f?p.createElement(v.d3,{language:A.get("syntax"),className:"curl microlight",style:(0,v.C2)(h()(u,"syntaxHighlight.theme"))},k):p.createElement("textarea",{readOnly:!0,className:"curl",value:k});return p.createElement("div",{className:"request-snippets",ref:d},p.createElement("div",{style:{width:"100%",display:"flex",justifyContent:"flex-start",alignItems:"center",marginBottom:"15px"}},p.createElement("h4",{onClick:()=>C(),style:{cursor:"pointer"}},"Snippets"),p.createElement("button",{onClick:()=>C(),style:{border:"none",background:"none"},title:x?"Collapse operation":"Expand operation"},p.createElement("svg",{className:"arrow",width:"10",height:"10"},p.createElement("use",{href:x?"#large-arrow-down":"#large-arrow",xlinkHref:x?"#large-arrow-down":"#large-arrow"})))),x&&p.createElement("div",{className:"curl-command"},p.createElement("div",{style:{paddingLeft:"15px",paddingRight:"10px",width:"100%",display:"flex"}},c()(r=S.entrySeq()).call(r,(e=>{let[t,r]=e;return p.createElement("div",{style:O(t),className:"btn",key:t,onClick:()=>(e=>{w!==e&&E(e)})(t)},p.createElement("h4",{style:t===w?{color:"white"}:{}},r.get("title")))}))),p.createElement("div",{className:"copy-to-clipboard"},p.createElement(g.CopyToClipboard,{text:k},p.createElement("button",null))),p.createElement("div",null,I)))}},4669:(e,t,r)=>{"use strict";r.r(t),r.d(t,{getGenerators:()=>f,getSnippetGenerators:()=>h,getActiveLanguage:()=>d,getDefaultExpanded:()=>m});var n=r(14418),o=r.n(n),a=r(58118),i=r.n(a),s=r(97606),l=r.n(s),u=r(20573),c=r(43393);const p=e=>e||(0,c.Map)(),f=(0,u.P1)(p,(e=>{const t=e.get("languages"),r=e.get("generators",(0,c.Map)());return!t||t.isEmpty()?r:o()(r).call(r,((e,r)=>i()(t).call(t,r)))})),h=e=>t=>{var r,n;let{fn:a}=t;return o()(r=l()(n=f(e)).call(n,((e,t)=>{const r=(e=>a[`requestSnippetGenerator_${e}`])(t);return"function"!=typeof r?null:e.set("fn",r)}))).call(r,(e=>e))},d=(0,u.P1)(p,(e=>e.get("activeLanguage"))),m=(0,u.P1)(p,(e=>e.get("defaultExpanded")))},36195:(e,t,r)=>{"use strict";r.r(t),r.d(t,{ErrorBoundary:()=>i,default:()=>s});var n=r(67294),o=r(56189),a=r(29403);class i extends n.Component{static getDerivedStateFromError(e){return{hasError:!0,error:e}}constructor(){super(...arguments),this.state={hasError:!1,error:null}}componentDidCatch(e,t){this.props.fn.componentDidCatch(e,t)}render(){const{getComponent:e,targetName:t,children:r}=this.props;if(this.state.hasError){const r=e("Fallback");return n.createElement(r,{name:t})}return r}}i.defaultProps={targetName:"this component",getComponent:()=>a.default,fn:{componentDidCatch:o.componentDidCatch},children:null};const s=i},29403:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>o});var n=r(67294);const o=e=>{let{name:t}=e;return n.createElement("div",{className:"fallback"},"😱 ",n.createElement("i",null,"Could not render ","t"===t?"this component":t,", see the console."))}},56189:(e,t,r)=>{"use strict";r.r(t),r.d(t,{componentDidCatch:()=>i,withErrorBoundary:()=>s});var n=r(23101),o=r.n(n),a=r(67294);const i=console.error,s=e=>t=>{const{getComponent:r,fn:n}=e(),i=r("ErrorBoundary"),s=n.getDisplayName(t);class l extends a.Component{render(){return a.createElement(i,{targetName:s,getComponent:r,fn:n},a.createElement(t,o()({},this.props,this.context)))}}var u;return l.displayName=`WithErrorBoundary(${s})`,(u=t).prototype&&u.prototype.isReactComponent&&(l.prototype.mapStateToProps=t.prototype.mapStateToProps),l}},27621:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>c});var n=r(47475),o=r.n(n),a=r(7287),i=r.n(a),s=r(36195),l=r(29403),u=r(56189);const c=function(){let{componentList:e=[],fullOverride:t=!1}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return r=>{var n;let{getSystem:a}=r;const c=t?e:["App","BaseLayout","VersionPragmaFilter","InfoContainer","ServersContainer","SchemesContainer","AuthorizeBtnContainer","FilterContainer","Operations","OperationContainer","parameters","responses","OperationServers","Models","ModelWrapper",...e],p=i()(c,o()(n=Array(c.length)).call(n,((e,t)=>{let{fn:r}=t;return r.withErrorBoundary(e)})));return{fn:{componentDidCatch:u.componentDidCatch,withErrorBoundary:(0,u.withErrorBoundary)(a)},components:{ErrorBoundary:s.default,Fallback:l.default},wrapComponents:p}}}},57050:(e,t,r)=>{"use strict";r.r(t),r.d(t,{sampleFromSchemaGeneric:()=>F,inferSchema:()=>z,createXMLExample:()=>U,sampleFromSchema:()=>q,memoizedCreateXMLExample:()=>$,memoizedSampleFromSchema:()=>W});var n=r(11882),o=r.n(n),a=r(86),i=r.n(a),s=r(58309),l=r.n(s),u=r(58118),c=r.n(u),p=r(92039),f=r.n(p),h=r(24278),d=r.n(h),m=r(51679),g=r.n(m),v=r(39022),y=r.n(v),b=r(97606),w=r.n(b),E=r(35627),x=r.n(E),_=r(53479),S=r.n(_),A=r(14419),k=r.n(A),C=r(41609),O=r.n(C),j=r(90242),I=r(60314);const N={string:e=>e.pattern?(e=>{try{return new(k())(e).gen()}catch(e){return"string"}})(e.pattern):"string",string_email:()=>"user@example.com","string_date-time":()=>(new Date).toISOString(),string_date:()=>(new Date).toISOString().substring(0,10),string_uuid:()=>"3fa85f64-5717-4562-b3fc-2c963f66afa6",string_hostname:()=>"example.com",string_ipv4:()=>"198.51.100.42",string_ipv6:()=>"2001:0db8:5b96:0000:0000:426f:8e17:642a",number:()=>0,number_float:()=>0,integer:()=>0,boolean:e=>"boolean"!=typeof e.default||e.default},T=e=>{e=(0,j.mz)(e);let{type:t,format:r}=e,n=N[`${t}_${r}`]||N[t];return(0,j.Wl)(n)?n(e):"Unknown Type: "+e.type},P=e=>(0,j.XV)(e,"$$ref",(e=>"string"==typeof e&&o()(e).call(e,"#")>-1)),R=["maxProperties","minProperties"],M=["minItems","maxItems"],D=["minimum","maximum","exclusiveMinimum","exclusiveMaximum"],L=["minLength","maxLength"],B=function(e,t){var r;let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const a=r=>{void 0===t[r]&&void 0!==e[r]&&(t[r]=e[r])};var s;(i()(r=["example","default","enum","xml","type",...R,...M,...D,...L]).call(r,(e=>a(e))),void 0!==e.required&&l()(e.required))&&(void 0!==t.required&&t.required.length||(t.required=[]),i()(s=e.required).call(s,(e=>{var r;c()(r=t.required).call(r,e)||t.required.push(e)})));if(e.properties){t.properties||(t.properties={});let r=(0,j.mz)(e.properties);for(let a in r){var u;if(Object.prototype.hasOwnProperty.call(r,a))if(!r[a]||!r[a].deprecated)if(!r[a]||!r[a].readOnly||n.includeReadOnly)if(!r[a]||!r[a].writeOnly||n.includeWriteOnly)if(!t.properties[a])t.properties[a]=r[a],!e.required&&l()(e.required)&&-1!==o()(u=e.required).call(u,a)&&(t.required?t.required.push(a):t.required=[a])}}return e.items&&(t.items||(t.items={}),t.items=B(e.items,t.items,n)),t},F=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];e&&(0,j.Wl)(e.toJS)&&(e=e.toJS());let a=void 0!==r||e&&void 0!==e.example||e&&void 0!==e.default;const s=!a&&e&&e.oneOf&&e.oneOf.length>0,u=!a&&e&&e.anyOf&&e.anyOf.length>0;if(!a&&(s||u)){const r=(0,j.mz)(s?e.oneOf[0]:e.anyOf[0]);if(B(r,e,t),!e.xml&&r.xml&&(e.xml=r.xml),void 0!==e.example&&void 0!==r.example)a=!0;else if(r.properties){e.properties||(e.properties={});let n=(0,j.mz)(r.properties);for(let a in n){var p;if(Object.prototype.hasOwnProperty.call(n,a))if(!n[a]||!n[a].deprecated)if(!n[a]||!n[a].readOnly||t.includeReadOnly)if(!n[a]||!n[a].writeOnly||t.includeWriteOnly)if(!e.properties[a])e.properties[a]=n[a],!r.required&&l()(r.required)&&-1!==o()(p=r.required).call(p,a)&&(e.required?e.required.push(a):e.required=[a])}}}const h={};let{xml:m,type:v,example:b,properties:E,additionalProperties:x,items:_}=e||{},{includeReadOnly:S,includeWriteOnly:A}=t;m=m||{};let k,{name:C,prefix:I,namespace:N}=m,L={};if(n&&(C=C||"notagname",k=(I?I+":":"")+C,N)){h[I?"xmlns:"+I:"xmlns"]=N}n&&(L[k]=[]);const z=t=>f()(t).call(t,(t=>Object.prototype.hasOwnProperty.call(e,t)));e&&!v&&(E||x||z(R)?v="object":_||z(M)?v="array":z(D)?(v="number",e.type="number"):a||e.enum||(v="string",e.type="string"));const U=t=>{var r,n,o,a,i;null!==(null===(r=e)||void 0===r?void 0:r.maxItems)&&void 0!==(null===(n=e)||void 0===n?void 0:n.maxItems)&&(t=d()(t).call(t,0,null===(i=e)||void 0===i?void 0:i.maxItems));if(null!==(null===(o=e)||void 0===o?void 0:o.minItems)&&void 0!==(null===(a=e)||void 0===a?void 0:a.minItems)){let r=0;for(;t.length<(null===(s=e)||void 0===s?void 0:s.minItems);){var s;t.push(t[r++%t.length])}}return t},q=(0,j.mz)(E);let V,$=0;const W=()=>e&&null!==e.maxProperties&&void 0!==e.maxProperties&&$>=e.maxProperties,H=()=>{if(!e||!e.required)return 0;let t=0;var r,o;n?i()(r=e.required).call(r,(e=>t+=void 0===L[e]?0:1)):i()(o=e.required).call(o,(e=>{var r;return t+=void 0===(null===(r=L[k])||void 0===r?void 0:g()(r).call(r,(t=>void 0!==t[e])))?0:1}));return e.required.length-t},J=t=>{var r;return!(e&&e.required&&e.required.length)||!c()(r=e.required).call(r,t)},K=t=>!e||null===e.maxProperties||void 0===e.maxProperties||!W()&&(!J(t)||e.maxProperties-$-H()>0);if(V=n?function(r){let o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0;if(e&&q[r]){if(q[r].xml=q[r].xml||{},q[r].xml.attribute){const e=l()(q[r].enum)?q[r].enum[0]:void 0,t=q[r].example,n=q[r].default;return void(h[q[r].xml.name||r]=void 0!==t?t:void 0!==n?n:void 0!==e?e:T(q[r]))}q[r].xml.name=q[r].xml.name||r}else q[r]||!1===x||(q[r]={xml:{name:r}});let a=F(e&&q[r]||void 0,t,o,n);var i;K(r)&&($++,l()(a)?L[k]=y()(i=L[k]).call(i,a):L[k].push(a))}:(r,o)=>{if(K(r)){if(Object.prototype.hasOwnProperty.call(e,"discriminator")&&e.discriminator&&Object.prototype.hasOwnProperty.call(e.discriminator,"mapping")&&e.discriminator.mapping&&Object.prototype.hasOwnProperty.call(e,"$$ref")&&e.$$ref&&e.discriminator.propertyName===r){for(let t in e.discriminator.mapping)if(-1!==e.$$ref.search(e.discriminator.mapping[t])){L[r]=t;break}}else L[r]=F(q[r],t,o,n);$++}},a){let o;if(o=P(void 0!==r?r:void 0!==b?b:e.default),!n){if("number"==typeof o&&"string"===v)return`${o}`;if("string"!=typeof o||"string"===v)return o;try{return JSON.parse(o)}catch(e){return o}}if(e||(v=l()(o)?"array":typeof o),"array"===v){if(!l()(o)){if("string"==typeof o)return o;o=[o]}const r=e?e.items:void 0;r&&(r.xml=r.xml||m||{},r.xml.name=r.xml.name||m.name);let a=w()(o).call(o,(e=>F(r,t,e,n)));return a=U(a),m.wrapped?(L[k]=a,O()(h)||L[k].push({_attr:h})):L=a,L}if("object"===v){if("string"==typeof o)return o;for(let t in o)Object.prototype.hasOwnProperty.call(o,t)&&(e&&q[t]&&q[t].readOnly&&!S||e&&q[t]&&q[t].writeOnly&&!A||(e&&q[t]&&q[t].xml&&q[t].xml.attribute?h[q[t].xml.name||t]=o[t]:V(t,o[t])));return O()(h)||L[k].push({_attr:h}),L}return L[k]=O()(h)?o:[{_attr:h},o],L}if("object"===v){for(let e in q)Object.prototype.hasOwnProperty.call(q,e)&&(q[e]&&q[e].deprecated||q[e]&&q[e].readOnly&&!S||q[e]&&q[e].writeOnly&&!A||V(e));if(n&&h&&L[k].push({_attr:h}),W())return L;if(!0===x)n?L[k].push({additionalProp:"Anything can be here"}):L.additionalProp1={},$++;else if(x){const r=(0,j.mz)(x),o=F(r,t,void 0,n);if(n&&r.xml&&r.xml.name&&"notagname"!==r.xml.name)L[k].push(o);else{const t=null!==e.minProperties&&void 0!==e.minProperties&&$F(B(_,e,t),t,void 0,n)));else if(l()(_.oneOf)){var Y;r=w()(Y=_.oneOf).call(Y,(e=>F(B(_,e,t),t,void 0,n)))}else{if(!(!n||n&&m.wrapped))return F(_,t,void 0,n);r=[F(_,t,void 0,n)]}return r=U(r),n&&m.wrapped?(L[k]=r,O()(h)||L[k].push({_attr:h}),L):r}let Q;if(e&&l()(e.enum))Q=(0,j.AF)(e.enum)[0];else{if(!e)return;if(Q=T(e),"number"==typeof Q){let t=e.minimum;null!=t&&(e.exclusiveMinimum&&t++,Q=t);let r=e.maximum;null!=r&&(e.exclusiveMaximum&&r--,Q=r)}if("string"==typeof Q&&(null!==e.maxLength&&void 0!==e.maxLength&&(Q=d()(Q).call(Q,0,e.maxLength)),null!==e.minLength&&void 0!==e.minLength)){let t=0;for(;Q.length(e.schema&&(e=e.schema),e.properties&&(e.type="object"),e),U=(e,t,r)=>{const n=F(e,t,r,!0);if(n)return"string"==typeof n?n:S()(n,{declaration:!0,indent:"\t"})},q=(e,t,r)=>F(e,t,r,!1),V=(e,t,r)=>[e,x()(t),x()(r)],$=(0,I.Z)(U,V),W=(0,I.Z)(q,V)},8883:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>o});var n=r(57050);function o(){return{fn:n}}},51228:(e,t,r)=>{"use strict";r.r(t),r.d(t,{UPDATE_SPEC:()=>U,UPDATE_URL:()=>q,UPDATE_JSON:()=>V,UPDATE_PARAM:()=>$,UPDATE_EMPTY_PARAM_INCLUSION:()=>W,VALIDATE_PARAMS:()=>H,SET_RESPONSE:()=>J,SET_REQUEST:()=>K,SET_MUTATED_REQUEST:()=>G,LOG_REQUEST:()=>Z,CLEAR_RESPONSE:()=>Y,CLEAR_REQUEST:()=>Q,CLEAR_VALIDATE_PARAMS:()=>X,UPDATE_OPERATION_META_VALUE:()=>ee,UPDATE_RESOLVED:()=>te,UPDATE_RESOLVED_SUBTREE:()=>re,SET_SCHEME:()=>ne,updateSpec:()=>oe,updateResolved:()=>ae,updateUrl:()=>ie,updateJsonSpec:()=>se,parseToJson:()=>le,resolveSpec:()=>ce,requestResolvedSubtree:()=>he,changeParam:()=>de,changeParamByIdentity:()=>me,updateResolvedSubtree:()=>ge,invalidateResolvedSubtreeCache:()=>ve,validateParams:()=>ye,updateEmptyParamInclusion:()=>be,clearValidateParams:()=>we,changeConsumesValue:()=>Ee,changeProducesValue:()=>xe,setResponse:()=>_e,setRequest:()=>Se,setMutatedRequest:()=>Ae,logRequest:()=>ke,executeRequest:()=>Ce,execute:()=>Oe,clearResponse:()=>je,clearRequest:()=>Ie,setScheme:()=>Ne});var n=r(58309),o=r.n(n),a=r(97606),i=r.n(a),s=r(96718),l=r.n(s),u=r(24282),c=r.n(u),p=r(2250),f=r.n(p),h=r(6226),d=r.n(h),m=r(14418),g=r.n(m),v=r(3665),y=r.n(v),b=r(11882),w=r.n(b),E=r(86),x=r.n(E),_=r(28222),S=r.n(_),A=r(76986),k=r.n(A),C=r(70586),O=r.n(C),j=r(1272),I=r(43393),N=r(84564),T=r.n(N),P=r(7710),R=r(47037),M=r.n(R),D=r(23279),L=r.n(D),B=r(36968),F=r.n(B),z=r(90242);const U="spec_update_spec",q="spec_update_url",V="spec_update_json",$="spec_update_param",W="spec_update_empty_param_inclusion",H="spec_validate_param",J="spec_set_response",K="spec_set_request",G="spec_set_mutated_request",Z="spec_log_request",Y="spec_clear_response",Q="spec_clear_request",X="spec_clear_validate_param",ee="spec_update_operation_meta_value",te="spec_update_resolved",re="spec_update_resolved_subtree",ne="set_scheme";function oe(e){const t=(r=e,M()(r)?r:"").replace(/\t/g," ");var r;if("string"==typeof e)return{type:U,payload:t}}function ae(e){return{type:te,payload:e}}function ie(e){return{type:q,payload:e}}function se(e){return{type:V,payload:e}}const le=e=>t=>{let{specActions:r,specSelectors:n,errActions:o}=t,{specStr:a}=n,i=null;try{e=e||a(),o.clear({source:"parser"}),i=j.ZP.load(e,{schema:j.A8})}catch(e){return console.error(e),o.newSpecErr({source:"parser",level:"error",message:e.reason,line:e.mark&&e.mark.line?e.mark.line+1:void 0})}return i&&"object"==typeof i?r.updateJsonSpec(i):{}};let ue=!1;const ce=(e,t)=>r=>{let{specActions:n,specSelectors:a,errActions:s,fn:{fetch:u,resolve:c,AST:p={}},getConfigs:f}=r;ue||(console.warn("specActions.resolveSpec is deprecated since v3.10.0 and will be removed in v4.0.0; use requestResolvedSubtree instead!"),ue=!0);const{modelPropertyMacro:h,parameterMacro:d,requestInterceptor:m,responseInterceptor:g}=f();void 0===e&&(e=a.specJson()),void 0===t&&(t=a.url());let v=p.getLineNumberForPath?p.getLineNumberForPath:()=>{},y=a.specStr();return c({fetch:u,spec:e,baseDoc:t,modelPropertyMacro:h,parameterMacro:d,requestInterceptor:m,responseInterceptor:g}).then((e=>{let{spec:t,errors:r}=e;if(s.clear({type:"thrown"}),o()(r)&&r.length>0){let e=i()(r).call(r,(e=>(console.error(e),e.line=e.fullPath?v(y,e.fullPath):null,e.path=e.fullPath?e.fullPath.join("."):null,e.level="error",e.type="thrown",e.source="resolver",l()(e,"message",{enumerable:!0,value:e.message}),e)));s.newThrownErrBatch(e)}return n.updateResolved(t)}))};let pe=[];const fe=L()((async()=>{const e=pe.system;if(!e)return void console.error("debResolveSubtrees: don't have a system to operate on, aborting.");const{errActions:t,errSelectors:r,fn:{resolveSubtree:n,fetch:a,AST:s={}},specSelectors:u,specActions:p}=e;if(!n)return void console.error("Error: Swagger-Client did not provide a `resolveSubtree` method, doing nothing.");let h=s.getLineNumberForPath?s.getLineNumberForPath:()=>{};const m=u.specStr(),{modelPropertyMacro:v,parameterMacro:b,requestInterceptor:w,responseInterceptor:E}=e.getConfigs();try{var x=await c()(pe).call(pe,(async(e,s)=>{const{resultMap:c,specWithCurrentSubtrees:p}=await e,{errors:x,spec:_}=await n(p,s,{baseDoc:u.url(),modelPropertyMacro:v,parameterMacro:b,requestInterceptor:w,responseInterceptor:E});if(r.allErrors().size&&t.clearBy((e=>{var t;return"thrown"!==e.get("type")||"resolver"!==e.get("source")||!f()(t=e.get("fullPath")).call(t,((e,t)=>e===s[t]||void 0===s[t]))})),o()(x)&&x.length>0){let e=i()(x).call(x,(e=>(e.line=e.fullPath?h(m,e.fullPath):null,e.path=e.fullPath?e.fullPath.join("."):null,e.level="error",e.type="thrown",e.source="resolver",l()(e,"message",{enumerable:!0,value:e.message}),e)));t.newThrownErrBatch(e)}var S,A;_&&u.isOAS3()&&"components"===s[0]&&"securitySchemes"===s[1]&&await d().all(i()(S=g()(A=y()(_)).call(A,(e=>"openIdConnect"===e.type))).call(S,(async e=>{const t={url:e.openIdConnectUrl,requestInterceptor:w,responseInterceptor:E};try{const r=await a(t);r instanceof Error||r.status>=400?console.error(r.statusText+" "+t.url):e.openIdConnectData=JSON.parse(r.text)}catch(e){console.error(e)}})));return F()(c,s,_),F()(p,s,_),{resultMap:c,specWithCurrentSubtrees:p}}),d().resolve({resultMap:(u.specResolvedSubtree([])||(0,I.Map)()).toJS(),specWithCurrentSubtrees:u.specJson().toJS()}));delete pe.system,pe=[]}catch(e){console.error(e)}p.updateResolvedSubtree([],x.resultMap)}),35),he=e=>t=>{var r;w()(r=i()(pe).call(pe,(e=>e.join("@@")))).call(r,e.join("@@"))>-1||(pe.push(e),pe.system=t,fe())};function de(e,t,r,n,o){return{type:$,payload:{path:e,value:n,paramName:t,paramIn:r,isXml:o}}}function me(e,t,r,n){return{type:$,payload:{path:e,param:t,value:r,isXml:n}}}const ge=(e,t)=>({type:re,payload:{path:e,value:t}}),ve=()=>({type:re,payload:{path:[],value:(0,I.Map)()}}),ye=(e,t)=>({type:H,payload:{pathMethod:e,isOAS3:t}}),be=(e,t,r,n)=>({type:W,payload:{pathMethod:e,paramName:t,paramIn:r,includeEmptyValue:n}});function we(e){return{type:X,payload:{pathMethod:e}}}function Ee(e,t){return{type:ee,payload:{path:e,value:t,key:"consumes_value"}}}function xe(e,t){return{type:ee,payload:{path:e,value:t,key:"produces_value"}}}const _e=(e,t,r)=>({payload:{path:e,method:t,res:r},type:J}),Se=(e,t,r)=>({payload:{path:e,method:t,req:r},type:K}),Ae=(e,t,r)=>({payload:{path:e,method:t,req:r},type:G}),ke=e=>({payload:e,type:Z}),Ce=e=>t=>{let{fn:r,specActions:n,specSelectors:a,getConfigs:s,oas3Selectors:l}=t,{pathName:u,method:c,operation:p}=e,{requestInterceptor:f,responseInterceptor:h}=s(),d=p.toJS();var m,v;p&&p.get("parameters")&&x()(m=g()(v=p.get("parameters")).call(v,(e=>e&&!0===e.get("allowEmptyValue")))).call(m,(t=>{if(a.parameterInclusionSettingFor([u,c],t.get("name"),t.get("in"))){e.parameters=e.parameters||{};const r=(0,z.cz)(t,e.parameters);(!r||r&&0===r.size)&&(e.parameters[t.get("name")]="")}}));if(e.contextUrl=T()(a.url()).toString(),d&&d.operationId?e.operationId=d.operationId:d&&u&&c&&(e.operationId=r.opId(d,u,c)),a.isOAS3()){const t=`${u}:${c}`;e.server=l.selectedServer(t)||l.selectedServer();const r=l.serverVariables({server:e.server,namespace:t}).toJS(),n=l.serverVariables({server:e.server}).toJS();e.serverVariables=S()(r).length?r:n,e.requestContentType=l.requestContentType(u,c),e.responseContentType=l.responseContentType(u,c)||"*/*";const a=l.requestBodyValue(u,c),s=l.requestBodyInclusionSetting(u,c);var y;if(a&&a.toJS)e.requestBody=g()(y=i()(a).call(a,(e=>I.Map.isMap(e)?e.get("value"):e))).call(y,((e,t)=>(o()(e)?0!==e.length:!(0,z.O2)(e))||s.get(t))).toJS();else e.requestBody=a}let b=k()({},e);b=r.buildRequest(b),n.setRequest(e.pathName,e.method,b);e.requestInterceptor=async t=>{let r=await f.apply(void 0,[t]),o=k()({},r);return n.setMutatedRequest(e.pathName,e.method,o),r},e.responseInterceptor=h;const w=O()();return r.execute(e).then((t=>{t.duration=O()()-w,n.setResponse(e.pathName,e.method,t)})).catch((t=>{"Failed to fetch"===t.message&&(t.name="",t.message='**Failed to fetch.** \n**Possible Reasons:** \n - CORS \n - Network Failure \n - URL scheme must be "http" or "https" for CORS request.'),n.setResponse(e.pathName,e.method,{error:!0,err:(0,P.serializeError)(t)})}))},Oe=function(){let{path:e,method:t,...r}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return n=>{let{fn:{fetch:o},specSelectors:a,specActions:i}=n,s=a.specJsonWithResolvedSubtrees().toJS(),l=a.operationScheme(e,t),{requestContentType:u,responseContentType:c}=a.contentTypeValues([e,t]).toJS(),p=/xml/i.test(u),f=a.parameterValues([e,t],p).toJS();return i.executeRequest({...r,fetch:o,spec:s,pathName:e,method:t,parameters:f,requestContentType:u,scheme:l,responseContentType:c})}};function je(e,t){return{type:Y,payload:{path:e,method:t}}}function Ie(e,t){return{type:Q,payload:{path:e,method:t}}}function Ne(e,t,r){return{type:ne,payload:{scheme:e,path:t,method:r}}}},37038:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>s});var n=r(20032),o=r(51228),a=r(33881),i=r(77508);function s(){return{statePlugins:{spec:{wrapActions:i,reducers:n.default,actions:o,selectors:a}}}}},20032:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>d});var n=r(24282),o=r.n(n),a=r(97606),i=r.n(a),s=r(76986),l=r.n(s),u=r(43393),c=r(90242),p=r(27504),f=r(33881),h=r(51228);const d={[h.UPDATE_SPEC]:(e,t)=>"string"==typeof t.payload?e.set("spec",t.payload):e,[h.UPDATE_URL]:(e,t)=>e.set("url",t.payload+""),[h.UPDATE_JSON]:(e,t)=>e.set("json",(0,c.oG)(t.payload)),[h.UPDATE_RESOLVED]:(e,t)=>e.setIn(["resolved"],(0,c.oG)(t.payload)),[h.UPDATE_RESOLVED_SUBTREE]:(e,t)=>{const{value:r,path:n}=t.payload;return e.setIn(["resolvedSubtrees",...n],(0,c.oG)(r))},[h.UPDATE_PARAM]:(e,t)=>{let{payload:r}=t,{path:n,paramName:o,paramIn:a,param:i,value:s,isXml:l}=r,u=i?(0,c.V9)(i):`${a}.${o}`;const p=l?"value_xml":"value";return e.setIn(["meta","paths",...n,"parameters",u,p],s)},[h.UPDATE_EMPTY_PARAM_INCLUSION]:(e,t)=>{let{payload:r}=t,{pathMethod:n,paramName:o,paramIn:a,includeEmptyValue:i}=r;if(!o||!a)return console.warn("Warning: UPDATE_EMPTY_PARAM_INCLUSION could not generate a paramKey."),e;const s=`${a}.${o}`;return e.setIn(["meta","paths",...n,"parameter_inclusions",s],i)},[h.VALIDATE_PARAMS]:(e,t)=>{let{payload:{pathMethod:r,isOAS3:n}}=t;const a=(0,f.specJsonWithResolvedSubtrees)(e).getIn(["paths",...r]),i=(0,f.parameterValues)(e,r).toJS();return e.updateIn(["meta","paths",...r,"parameters"],(0,u.fromJS)({}),(t=>{var s;return o()(s=a.get("parameters",(0,u.List)())).call(s,((t,o)=>{const a=(0,c.cz)(o,i),s=(0,f.parameterInclusionSettingFor)(e,r,o.get("name"),o.get("in")),l=(0,c.Ik)(o,a,{bypassRequiredCheck:s,isOAS3:n});return t.setIn([(0,c.V9)(o),"errors"],(0,u.fromJS)(l))}),t)}))},[h.CLEAR_VALIDATE_PARAMS]:(e,t)=>{let{payload:{pathMethod:r}}=t;return e.updateIn(["meta","paths",...r,"parameters"],(0,u.fromJS)([]),(e=>i()(e).call(e,(e=>e.set("errors",(0,u.fromJS)([]))))))},[h.SET_RESPONSE]:(e,t)=>{let r,{payload:{res:n,path:o,method:a}}=t;r=n.error?l()({error:!0,name:n.err.name,message:n.err.message,statusCode:n.err.statusCode},n.err.response):n,r.headers=r.headers||{};let i=e.setIn(["responses",o,a],(0,c.oG)(r));return p.Z.Blob&&n.data instanceof p.Z.Blob&&(i=i.setIn(["responses",o,a,"text"],n.data)),i},[h.SET_REQUEST]:(e,t)=>{let{payload:{req:r,path:n,method:o}}=t;return e.setIn(["requests",n,o],(0,c.oG)(r))},[h.SET_MUTATED_REQUEST]:(e,t)=>{let{payload:{req:r,path:n,method:o}}=t;return e.setIn(["mutatedRequests",n,o],(0,c.oG)(r))},[h.UPDATE_OPERATION_META_VALUE]:(e,t)=>{let{payload:{path:r,value:n,key:o}}=t,a=["paths",...r],i=["meta","paths",...r];return e.getIn(["json",...a])||e.getIn(["resolved",...a])||e.getIn(["resolvedSubtrees",...a])?e.setIn([...i,o],(0,u.fromJS)(n)):e},[h.CLEAR_RESPONSE]:(e,t)=>{let{payload:{path:r,method:n}}=t;return e.deleteIn(["responses",r,n])},[h.CLEAR_REQUEST]:(e,t)=>{let{payload:{path:r,method:n}}=t;return e.deleteIn(["requests",r,n])},[h.SET_SCHEME]:(e,t)=>{let{payload:{scheme:r,path:n,method:o}}=t;return n&&o?e.setIn(["scheme",n,o],r):n||o?void 0:e.setIn(["scheme","_defaultScheme"],r)}}},33881:(e,t,r)=>{"use strict";r.r(t),r.d(t,{lastError:()=>O,url:()=>j,specStr:()=>I,specSource:()=>N,specJson:()=>T,specResolved:()=>P,specResolvedSubtree:()=>R,specJsonWithResolvedSubtrees:()=>D,spec:()=>L,isOAS3:()=>B,info:()=>F,externalDocs:()=>z,version:()=>U,semver:()=>q,paths:()=>V,operations:()=>$,consumes:()=>W,produces:()=>H,security:()=>J,securityDefinitions:()=>K,findDefinition:()=>G,definitions:()=>Z,basePath:()=>Y,host:()=>Q,schemes:()=>X,operationsWithRootInherited:()=>ee,tags:()=>te,tagDetails:()=>re,operationsWithTags:()=>ne,taggedOperations:()=>oe,responses:()=>ae,requests:()=>ie,mutatedRequests:()=>se,responseFor:()=>le,requestFor:()=>ue,mutatedRequestFor:()=>ce,allowTryItOutFor:()=>pe,parameterWithMetaByIdentity:()=>fe,parameterInclusionSettingFor:()=>he,parameterWithMeta:()=>de,operationWithMeta:()=>me,getParameter:()=>ge,hasHost:()=>ve,parameterValues:()=>ye,parametersIncludeIn:()=>be,parametersIncludeType:()=>we,contentTypeValues:()=>Ee,currentProducesFor:()=>xe,producesOptionsFor:()=>_e,consumesOptionsFor:()=>Se,operationScheme:()=>Ae,canExecuteScheme:()=>ke,validationErrors:()=>Ce,validateBeforeExecute:()=>Oe,getOAS3RequiredRequestBodyContentType:()=>je,isMediaTypeSchemaPropertiesEqual:()=>Ie});var n=r(24278),o=r.n(n),a=r(86),i=r.n(a),s=r(11882),l=r.n(s),u=r(97606),c=r.n(u),p=r(14418),f=r.n(p),h=r(51679),d=r.n(h),m=r(24282),g=r.n(m),v=r(2578),y=r.n(v),b=r(92039),w=r.n(b),E=r(58309),x=r.n(E),_=r(20573),S=r(90242),A=r(43393);const k=["get","put","post","delete","options","head","patch","trace"],C=e=>e||(0,A.Map)(),O=(0,_.P1)(C,(e=>e.get("lastError"))),j=(0,_.P1)(C,(e=>e.get("url"))),I=(0,_.P1)(C,(e=>e.get("spec")||"")),N=(0,_.P1)(C,(e=>e.get("specSource")||"not-editor")),T=(0,_.P1)(C,(e=>e.get("json",(0,A.Map)()))),P=(0,_.P1)(C,(e=>e.get("resolved",(0,A.Map)()))),R=(e,t)=>e.getIn(["resolvedSubtrees",...t],void 0),M=(e,t)=>A.Map.isMap(e)&&A.Map.isMap(t)?t.get("$$ref")?t:(0,A.OrderedMap)().mergeWith(M,e,t):t,D=(0,_.P1)(C,(e=>(0,A.OrderedMap)().mergeWith(M,e.get("json"),e.get("resolvedSubtrees")))),L=e=>T(e),B=(0,_.P1)(L,(()=>!1)),F=(0,_.P1)(L,(e=>Ne(e&&e.get("info")))),z=(0,_.P1)(L,(e=>Ne(e&&e.get("externalDocs")))),U=(0,_.P1)(F,(e=>e&&e.get("version"))),q=(0,_.P1)(U,(e=>{var t;return o()(t=/v?([0-9]*)\.([0-9]*)\.([0-9]*)/i.exec(e)).call(t,1)})),V=(0,_.P1)(D,(e=>e.get("paths"))),$=(0,_.P1)(V,(e=>{if(!e||e.size<1)return(0,A.List)();let t=(0,A.List)();return e&&i()(e)?(i()(e).call(e,((e,r)=>{if(!e||!i()(e))return{};i()(e).call(e,((e,n)=>{l()(k).call(k,n)<0||(t=t.push((0,A.fromJS)({path:r,method:n,operation:e,id:`${n}-${r}`})))}))})),t):(0,A.List)()})),W=(0,_.P1)(L,(e=>(0,A.Set)(e.get("consumes")))),H=(0,_.P1)(L,(e=>(0,A.Set)(e.get("produces")))),J=(0,_.P1)(L,(e=>e.get("security",(0,A.List)()))),K=(0,_.P1)(L,(e=>e.get("securityDefinitions"))),G=(e,t)=>{const r=e.getIn(["resolvedSubtrees","definitions",t],null),n=e.getIn(["json","definitions",t],null);return r||n||null},Z=(0,_.P1)(L,(e=>{const t=e.get("definitions");return A.Map.isMap(t)?t:(0,A.Map)()})),Y=(0,_.P1)(L,(e=>e.get("basePath"))),Q=(0,_.P1)(L,(e=>e.get("host"))),X=(0,_.P1)(L,(e=>e.get("schemes",(0,A.Map)()))),ee=(0,_.P1)($,W,H,((e,t,r)=>c()(e).call(e,(e=>e.update("operation",(e=>{if(e){if(!A.Map.isMap(e))return;return e.withMutations((e=>(e.get("consumes")||e.update("consumes",(e=>(0,A.Set)(e).merge(t))),e.get("produces")||e.update("produces",(e=>(0,A.Set)(e).merge(r))),e)))}return(0,A.Map)()})))))),te=(0,_.P1)(L,(e=>{const t=e.get("tags",(0,A.List)());return A.List.isList(t)?f()(t).call(t,(e=>A.Map.isMap(e))):(0,A.List)()})),re=(e,t)=>{var r;let n=te(e)||(0,A.List)();return d()(r=f()(n).call(n,A.Map.isMap)).call(r,(e=>e.get("name")===t),(0,A.Map)())},ne=(0,_.P1)(ee,te,((e,t)=>g()(e).call(e,((e,t)=>{let r=(0,A.Set)(t.getIn(["operation","tags"]));return r.count()<1?e.update("default",(0,A.List)(),(e=>e.push(t))):g()(r).call(r,((e,r)=>e.update(r,(0,A.List)(),(e=>e.push(t)))),e)}),g()(t).call(t,((e,t)=>e.set(t.get("name"),(0,A.List)())),(0,A.OrderedMap)())))),oe=e=>t=>{var r;let{getConfigs:n}=t,{tagsSorter:o,operationsSorter:a}=n();return c()(r=ne(e).sortBy(((e,t)=>t),((e,t)=>{let r="function"==typeof o?o:S.wh.tagsSorter[o];return r?r(e,t):null}))).call(r,((t,r)=>{let n="function"==typeof a?a:S.wh.operationsSorter[a],o=n?y()(t).call(t,n):t;return(0,A.Map)({tagDetails:re(e,r),operations:o})}))},ae=(0,_.P1)(C,(e=>e.get("responses",(0,A.Map)()))),ie=(0,_.P1)(C,(e=>e.get("requests",(0,A.Map)()))),se=(0,_.P1)(C,(e=>e.get("mutatedRequests",(0,A.Map)()))),le=(e,t,r)=>ae(e).getIn([t,r],null),ue=(e,t,r)=>ie(e).getIn([t,r],null),ce=(e,t,r)=>se(e).getIn([t,r],null),pe=()=>!0,fe=(e,t,r)=>{const n=D(e).getIn(["paths",...t,"parameters"],(0,A.OrderedMap)()),o=e.getIn(["meta","paths",...t,"parameters"],(0,A.OrderedMap)()),a=c()(n).call(n,(e=>{const t=o.get(`${r.get("in")}.${r.get("name")}`),n=o.get(`${r.get("in")}.${r.get("name")}.hash-${r.hashCode()}`);return(0,A.OrderedMap)().merge(e,t,n)}));return d()(a).call(a,(e=>e.get("in")===r.get("in")&&e.get("name")===r.get("name")),(0,A.OrderedMap)())},he=(e,t,r,n)=>{const o=`${n}.${r}`;return e.getIn(["meta","paths",...t,"parameter_inclusions",o],!1)},de=(e,t,r,n)=>{const o=D(e).getIn(["paths",...t,"parameters"],(0,A.OrderedMap)()),a=d()(o).call(o,(e=>e.get("in")===n&&e.get("name")===r),(0,A.OrderedMap)());return fe(e,t,a)},me=(e,t,r)=>{var n;const o=D(e).getIn(["paths",t,r],(0,A.OrderedMap)()),a=e.getIn(["meta","paths",t,r],(0,A.OrderedMap)()),i=c()(n=o.get("parameters",(0,A.List)())).call(n,(n=>fe(e,[t,r],n)));return(0,A.OrderedMap)().merge(o,a).set("parameters",i)};function ge(e,t,r,n){t=t||[];let o=e.getIn(["meta","paths",...t,"parameters"],(0,A.fromJS)([]));return d()(o).call(o,(e=>A.Map.isMap(e)&&e.get("name")===r&&e.get("in")===n))||(0,A.Map)()}const ve=(0,_.P1)(L,(e=>{const t=e.get("host");return"string"==typeof t&&t.length>0&&"/"!==t[0]}));function ye(e,t,r){t=t||[];let n=me(e,...t).get("parameters",(0,A.List)());return g()(n).call(n,((e,t)=>{let n=r&&"body"===t.get("in")?t.get("value_xml"):t.get("value");return e.set((0,S.V9)(t,{allowHashes:!1}),n)}),(0,A.fromJS)({}))}function be(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(A.List.isList(e))return w()(e).call(e,(e=>A.Map.isMap(e)&&e.get("in")===t))}function we(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(A.List.isList(e))return w()(e).call(e,(e=>A.Map.isMap(e)&&e.get("type")===t))}function Ee(e,t){t=t||[];let r=D(e).getIn(["paths",...t],(0,A.fromJS)({})),n=e.getIn(["meta","paths",...t],(0,A.fromJS)({})),o=xe(e,t);const a=r.get("parameters")||new A.List,i=n.get("consumes_value")?n.get("consumes_value"):we(a,"file")?"multipart/form-data":we(a,"formData")?"application/x-www-form-urlencoded":void 0;return(0,A.fromJS)({requestContentType:i,responseContentType:o})}function xe(e,t){t=t||[];const r=D(e).getIn(["paths",...t],null);if(null===r)return;const n=e.getIn(["meta","paths",...t,"produces_value"],null),o=r.getIn(["produces",0],null);return n||o||"application/json"}function _e(e,t){t=t||[];const r=D(e),n=r.getIn(["paths",...t],null);if(null===n)return;const[o]=t,a=n.get("produces",null),i=r.getIn(["paths",o,"produces"],null),s=r.getIn(["produces"],null);return a||i||s}function Se(e,t){t=t||[];const r=D(e),n=r.getIn(["paths",...t],null);if(null===n)return;const[o]=t,a=n.get("consumes",null),i=r.getIn(["paths",o,"consumes"],null),s=r.getIn(["consumes"],null);return a||i||s}const Ae=(e,t,r)=>{let n=e.get("url").match(/^([a-z][a-z0-9+\-.]*):/),o=x()(n)?n[1]:null;return e.getIn(["scheme",t,r])||e.getIn(["scheme","_defaultScheme"])||o||""},ke=(e,t,r)=>{var n;return l()(n=["http","https"]).call(n,Ae(e,t,r))>-1},Ce=(e,t)=>{t=t||[];let r=e.getIn(["meta","paths",...t,"parameters"],(0,A.fromJS)([]));const n=[];return i()(r).call(r,(e=>{let t=e.get("errors");t&&t.count()&&i()(t).call(t,(e=>n.push(e)))})),n},Oe=(e,t)=>0===Ce(e,t).length,je=(e,t)=>{var r;let n={requestBody:!1,requestContentType:{}},o=e.getIn(["resolvedSubtrees","paths",...t,"requestBody"],(0,A.fromJS)([]));return o.size<1||(o.getIn(["required"])&&(n.requestBody=o.getIn(["required"])),i()(r=o.getIn(["content"]).entrySeq()).call(r,(e=>{const t=e[0];if(e[1].getIn(["schema","required"])){const r=e[1].getIn(["schema","required"]).toJS();n.requestContentType[t]=r}}))),n},Ie=(e,t,r,n)=>{if((r||n)&&r===n)return!0;let o=e.getIn(["resolvedSubtrees","paths",...t,"requestBody","content"],(0,A.fromJS)([]));if(o.size<2||!r||!n)return!1;let a=o.getIn([r,"schema","properties"],(0,A.fromJS)([])),i=o.getIn([n,"schema","properties"],(0,A.fromJS)([]));return!!a.equals(i)};function Ne(e){return A.Map.isMap(e)?e:new A.Map}},77508:(e,t,r)=>{"use strict";r.r(t),r.d(t,{updateSpec:()=>u,updateJsonSpec:()=>c,executeRequest:()=>p,validateParams:()=>f});var n=r(28222),o=r.n(n),a=r(86),i=r.n(a),s=r(27361),l=r.n(s);const u=(e,t)=>{let{specActions:r}=t;return function(){e(...arguments),r.parseToJson(...arguments)}},c=(e,t)=>{let{specActions:r}=t;return function(){for(var t=arguments.length,n=new Array(t),a=0;a{l()(u,[e]).$ref&&r.requestResolvedSubtree(["paths",e])})),r.requestResolvedSubtree(["components","securitySchemes"])}},p=(e,t)=>{let{specActions:r}=t;return t=>(r.logRequest(t),e(t))},f=(e,t)=>{let{specSelectors:r}=t;return t=>e(t,r.isOAS3())}},34852:(e,t,r)=>{"use strict";r.r(t),r.d(t,{loaded:()=>n});const n=(e,t)=>function(){e(...arguments);const r=t.getConfigs().withCredentials;void 0!==r&&(t.fn.fetch.withCredentials="string"==typeof r?"true"===r:!!r)}},48792:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>qr});var n={};r.r(n),r.d(n,{JsonPatchError:()=>Fe,_areEquals:()=>Ge,applyOperation:()=>$e,applyPatch:()=>We,applyReducer:()=>He,deepClone:()=>ze,getValueByPointer:()=>Ve,validate:()=>Ke,validator:()=>Je});var o={};r.r(o),r.d(o,{compare:()=>nt,generate:()=>tt,observe:()=>et,unobserve:()=>Xe});var a={};r.r(a),r.d(a,{cookie:()=>kr,header:()=>Ar,path:()=>xr,query:()=>_r});var i=r(80093),s=r.n(i),l=r(30222),u=r.n(l),c=r(36594),p=r.n(c),f=r(20474),h=r.n(f),d=r(67375),m=r.n(d),g=r(58118),v=r.n(g),y=r(74386),b=r.n(y),w=r(25110),E=r.n(w),x=r(35627),_=r.n(x),S=r(97606),A=r.n(S),k=r(28222),C=r.n(k),O=r(39022),j=r.n(O),I=r(2018),N=r.n(I),T=r(14418),P=r.n(T),R=(r(31905),r(80129)),M=r.n(R),D=r(1272);const L="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:window,{FormData:B,Blob:F,File:z}=L;var U=r(15687),q=r.n(U),V=r(24278),$=r.n(V),W=function(e){return":/?#[]@!$&'()*+,;=".indexOf(e)>-1},H=function(e){return/^[a-z0-9\-._~]+$/i.test(e)};function J(e){var t,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=r.escape,o=arguments.length>2?arguments[2]:void 0;return"number"==typeof e&&(e=e.toString()),"string"==typeof e&&e.length&&n?o?JSON.parse(e):A()(t=q()(e)).call(t,(function(e){var t,r;if(H(e))return e;if(W(e)&&"unsafe"===n)return e;var o=new TextEncoder;return A()(t=A()(r=E()(o.encode(e))).call(r,(function(e){var t;return $()(t="0".concat(e.toString(16).toUpperCase())).call(t,-2)}))).call(t,(function(e){return"%".concat(e)})).join("")})).join(""):e}function K(e){var t=e.value;return Array.isArray(t)?function(e){var t=e.key,r=e.value,n=e.style,o=e.explode,a=e.escape,i=function(e){return J(e,{escape:a})};if("simple"===n)return A()(r).call(r,(function(e){return i(e)})).join(",");if("label"===n)return".".concat(A()(r).call(r,(function(e){return i(e)})).join("."));if("matrix"===n)return A()(r).call(r,(function(e){return i(e)})).reduce((function(e,r){var n,a,i;return!e||o?j()(a=j()(i="".concat(e||"",";")).call(i,t,"=")).call(a,r):j()(n="".concat(e,",")).call(n,r)}),"");if("form"===n){var s=o?"&".concat(t,"="):",";return A()(r).call(r,(function(e){return i(e)})).join(s)}if("spaceDelimited"===n){var l=o?"".concat(t,"="):"";return A()(r).call(r,(function(e){return i(e)})).join(" ".concat(l))}if("pipeDelimited"===n){var u=o?"".concat(t,"="):"";return A()(r).call(r,(function(e){return i(e)})).join("|".concat(u))}return}(e):"object"===h()(t)?function(e){var t=e.key,r=e.value,n=e.style,o=e.explode,a=e.escape,i=function(e){return J(e,{escape:a})},s=C()(r);if("simple"===n)return s.reduce((function(e,t){var n,a,s,l=i(r[t]),u=o?"=":",",c=e?"".concat(e,","):"";return j()(n=j()(a=j()(s="".concat(c)).call(s,t)).call(a,u)).call(n,l)}),"");if("label"===n)return s.reduce((function(e,t){var n,a,s,l=i(r[t]),u=o?"=":".",c=e?"".concat(e,"."):".";return j()(n=j()(a=j()(s="".concat(c)).call(s,t)).call(a,u)).call(n,l)}),"");if("matrix"===n&&o)return s.reduce((function(e,t){var n,o,a=i(r[t]),s=e?"".concat(e,";"):";";return j()(n=j()(o="".concat(s)).call(o,t,"=")).call(n,a)}),"");if("matrix"===n)return s.reduce((function(e,n){var o,a,s=i(r[n]),l=e?"".concat(e,","):";".concat(t,"=");return j()(o=j()(a="".concat(l)).call(a,n,",")).call(o,s)}),"");if("form"===n)return s.reduce((function(e,t){var n,a,s,l,u=i(r[t]),c=e?j()(n="".concat(e)).call(n,o?"&":","):"",p=o?"=":",";return j()(a=j()(s=j()(l="".concat(c)).call(l,t)).call(s,p)).call(a,u)}),"");return}(e):function(e){var t,r=e.key,n=e.value,o=e.style,a=e.escape,i=function(e){return J(e,{escape:a})};if("simple"===o)return i(n);if("label"===o)return".".concat(i(n));if("matrix"===o)return j()(t=";".concat(r,"=")).call(t,i(n));if("form"===o)return i(n);if("deepObject"===o)return i(n,{},!0);return}(e)}const G=function(e,t){t.body=e};var Z={serializeRes:te,mergeInQueryOrForm:fe};function Y(e){return Q.apply(this,arguments)}function Q(){return Q=s()(u().mark((function e(t){var r,n,o,a,i,s=arguments;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=s.length>1&&void 0!==s[1]?s[1]:{},"object"===h()(t)&&(t=(r=t).url),r.headers=r.headers||{},Z.mergeInQueryOrForm(r),r.headers&&C()(r.headers).forEach((function(e){var t=r.headers[e];"string"==typeof t&&(r.headers[e]=t.replace(/\n+/g," "))})),!r.requestInterceptor){e.next=12;break}return e.next=8,r.requestInterceptor(r);case 8:if(e.t0=e.sent,e.t0){e.next=11;break}e.t0=r;case 11:r=e.t0;case 12:return n=r.headers["content-type"]||r.headers["Content-Type"],/multipart\/form-data/i.test(n)&&r.body instanceof B&&(delete r.headers["content-type"],delete r.headers["Content-Type"]),e.prev=14,e.next=17,(r.userFetch||fetch)(r.url,r);case 17:return o=e.sent,e.next=20,Z.serializeRes(o,t,r);case 20:if(o=e.sent,!r.responseInterceptor){e.next=28;break}return e.next=24,r.responseInterceptor(o);case 24:if(e.t1=e.sent,e.t1){e.next=27;break}e.t1=o;case 27:o=e.t1;case 28:e.next=39;break;case 30:if(e.prev=30,e.t2=e.catch(14),o){e.next=34;break}throw e.t2;case 34:throw(a=new Error(o.statusText||"response status is ".concat(o.status))).status=o.status,a.statusCode=o.status,a.responseError=e.t2,a;case 39:if(o.ok){e.next=45;break}throw(i=new Error(o.statusText||"response status is ".concat(o.status))).status=o.status,i.statusCode=o.status,i.response=o,i;case 45:return e.abrupt("return",o);case 46:case"end":return e.stop()}}),e,null,[[14,30]])}))),Q.apply(this,arguments)}var X=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return/(json|xml|yaml|text)\b/.test(e)};function ee(e,t){return t&&(0===t.indexOf("application/json")||t.indexOf("+json")>0)?JSON.parse(e):D.ZP.load(e)}function te(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=r.loadSpec,o=void 0!==n&&n,a={ok:e.ok,url:e.url||t,status:e.status,statusText:e.statusText,headers:ne(e.headers)},i=a.headers["content-type"],s=o||X(i),l=s?e.text:e.blob||e.buffer;return l.call(e).then((function(e){if(a.text=e,a.data=e,s)try{var t=ee(e,i);a.body=t,a.obj=t}catch(e){a.parseError=e}return a}))}function re(e){return v()(e).call(e,", ")?e.split(", "):e}function ne(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return"function"!=typeof b()(e)?{}:E()(b()(e).call(e)).reduce((function(e,t){var r=m()(t,2),n=r[0],o=r[1];return e[n]=re(o),e}),{})}function oe(e,t){return t||"undefined"==typeof navigator||(t=navigator),t&&"ReactNative"===t.product?!(!e||"object"!==h()(e)||"string"!=typeof e.uri):void 0!==z&&e instanceof z||(void 0!==F&&e instanceof F||(!!ArrayBuffer.isView(e)||null!==e&&"object"===h()(e)&&"function"==typeof e.pipe))}function ae(e,t){return Array.isArray(e)&&e.some((function(e){return oe(e,t)}))}var ie={form:",",spaceDelimited:"%20",pipeDelimited:"|"},se={csv:",",ssv:"%20",tsv:"%09",pipes:"|"};function le(e,t){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=t.collectionFormat,o=t.allowEmptyValue,a=t.serializationOption,i=t.encoding,s="object"!==h()(t)||Array.isArray(t)?t:t.value,l=r?function(e){return e.toString()}:function(e){return encodeURIComponent(e)},u=l(e);if(void 0===s&&o)return[[u,""]];if(oe(s)||ae(s))return[[u,s]];if(a)return ue(e,s,r,a);if(i){if([h()(i.style),h()(i.explode),h()(i.allowReserved)].some((function(e){return"undefined"!==e}))){var c=i.style,p=i.explode,f=i.allowReserved;return ue(e,s,r,{style:c,explode:p,allowReserved:f})}if(i.contentType){if("application/json"===i.contentType){var d="string"==typeof s?s:_()(s);return[[u,l(d)]]}return[[u,l(s.toString())]]}return"object"!==h()(s)?[[u,l(s)]]:Array.isArray(s)&&s.every((function(e){return"object"!==h()(e)}))?[[u,A()(s).call(s,l).join(",")]]:[[u,l(_()(s))]]}return"object"!==h()(s)?[[u,l(s)]]:Array.isArray(s)?"multi"===n?[[u,A()(s).call(s,l)]]:[[u,A()(s).call(s,l).join(se[n||"csv"])]]:[[u,""]]}function ue(e,t,r,n){var o,a,i,s=n.style||"form",l=void 0===n.explode?"form"===s:n.explode,u=!r&&(n&&n.allowReserved?"unsafe":"reserved"),c=function(e){return J(e,{escape:u})},p=r?function(e){return e}:function(e){return J(e,{escape:u})};return"object"!==h()(t)?[[p(e),c(t)]]:Array.isArray(t)?l?[[p(e),A()(t).call(t,c)]]:[[p(e),A()(t).call(t,c).join(ie[s])]]:"deepObject"===s?A()(a=C()(t)).call(a,(function(r){var n;return[p(j()(n="".concat(e,"[")).call(n,r,"]")),c(t[r])]})):l?A()(i=C()(t)).call(i,(function(e){return[p(e),c(t[e])]})):[[p(e),A()(o=C()(t)).call(o,(function(e){var r;return[j()(r="".concat(p(e),",")).call(r,c(t[e]))]})).join(",")]]}function ce(e){return N()(e).reduce((function(e,t){var r,n=m()(t,2),o=n[0],a=n[1],i=p()(le(o,a,!0));try{for(i.s();!(r=i.n()).done;){var s=m()(r.value,2),l=s[0],u=s[1];if(Array.isArray(u)){var c,f=p()(u);try{for(f.s();!(c=f.n()).done;){var h=c.value;if(ArrayBuffer.isView(h)){var d=new F([h]);e.append(l,d)}else e.append(l,h)}}catch(e){f.e(e)}finally{f.f()}}else if(ArrayBuffer.isView(u)){var g=new F([u]);e.append(l,g)}else e.append(l,u)}}catch(e){i.e(e)}finally{i.f()}return e}),new B)}function pe(e){var t=C()(e).reduce((function(t,r){var n,o=p()(le(r,e[r]));try{for(o.s();!(n=o.n()).done;){var a=m()(n.value,2),i=a[0],s=a[1];t[i]=s}}catch(e){o.e(e)}finally{o.f()}return t}),{});return M().stringify(t,{encode:!1,indices:!1})||""}function fe(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.url,r=void 0===t?"":t,n=e.query,o=e.form,a=function(){for(var e=arguments.length,t=new Array(e),r=0;r=48&&t<=57))return!1;r++}return!0}function Re(e){return-1===e.indexOf("/")&&-1===e.indexOf("~")?e:e.replace(/~/g,"~0").replace(/\//g,"~1")}function Me(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}function De(e){if(void 0===e)return!0;if(e)if(Array.isArray(e)){for(var t=0,r=e.length;t0&&"constructor"==s[u-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===p&&(void 0===l[f]?p=s.slice(0,u).join("/"):u==c-1&&(p=t.path),void 0!==p&&h(t,0,e,p)),u++,Array.isArray(l)){if("-"===f)f=l.length;else{if(r&&!Pe(f))throw new Fe("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",a,t,e);Pe(f)&&(f=~~f)}if(u>=c){if(r&&"add"===t.op&&f>l.length)throw new Fe("The specified index MUST NOT be greater than the number of elements in the array","OPERATION_VALUE_OUT_OF_BOUNDS",a,t,e);if(!1===(i=qe[t.op].call(t,l,f,e)).test)throw new Fe("Test operation failed","TEST_OPERATION_FAILED",a,t,e);return i}}else if(u>=c){if(!1===(i=Ue[t.op].call(t,l,f,e)).test)throw new Fe("Test operation failed","TEST_OPERATION_FAILED",a,t,e);return i}if(l=l[f],r&&u0)throw new Fe('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 Fe("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 Fe("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)&&De(e.value))throw new Fe("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 o=e.path.split("/").length,a=n.split("/").length;if(o!==a+1&&o!==a)throw new Fe("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!==n)throw new Fe("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 i=Ke([{op:"_get",path:e.from,value:void 0}],r);if(i&&"OPERATION_PATH_UNRESOLVABLE"===i.name)throw new Fe("Cannot perform the operation from a path that does not exist","OPERATION_FROM_UNRESOLVABLE",t,e,r)}}function Ke(e,t,r){try{if(!Array.isArray(e))throw new Fe("Patch sequence must be an array","SEQUENCE_NOT_AN_ARRAY");if(t)We(Te(t),Te(e),r||!0);else{r=r||Je;for(var n=0;n0&&(e.patches=[],e.callback&&e.callback(n)),n}function rt(e,t,r,n,o){if(t!==e){"function"==typeof t.toJSON&&(t=t.toJSON());for(var a=Ne(t),i=Ne(e),s=!1,l=i.length-1;l>=0;l--){var u=e[p=i[l]];if(!Ie(t,p)||void 0===t[p]&&void 0!==u&&!1===Array.isArray(t))Array.isArray(e)===Array.isArray(t)?(o&&r.push({op:"test",path:n+"/"+Re(p),value:Te(u)}),r.push({op:"remove",path:n+"/"+Re(p)}),s=!0):(o&&r.push({op:"test",path:n,value:e}),r.push({op:"replace",path:n,value:t}),!0);else{var c=t[p];"object"==typeof u&&null!=u&&"object"==typeof c&&null!=c&&Array.isArray(u)===Array.isArray(c)?rt(u,c,r,n+"/"+Re(p),o):u!==c&&(!0,o&&r.push({op:"test",path:n+"/"+Re(p),value:Te(u)}),r.push({op:"replace",path:n+"/"+Re(p),value:Te(c)}))}}if(s||a.length!=i.length)for(l=0;l0){var o=t(e,r[r.length-1],r);o&&(n=j()(n).call(n,o))}if(Array.isArray(e)){var a=A()(e).call(e,(function(e,n){return pt(e,t,j()(r).call(r,n))}));a&&(n=j()(n).call(n,a))}else if(mt(e)){var i,s=A()(i=C()(e)).call(i,(function(n){return pt(e[n],t,j()(r).call(r,n))}));s&&(n=j()(n).call(n,s))}return n=ht(n)}function ft(e){return Array.isArray(e)?e:[e]}function ht(e){var t;return j()(t=[]).apply(t,q()(A()(e).call(e,(function(e){return Array.isArray(e)?ht(e):e}))))}function dt(e){return P()(e).call(e,(function(e){return void 0!==e}))}function mt(e){return e&&"object"===h()(e)}function gt(e){return e&&"function"==typeof e}function vt(e){if(wt(e)){var t=e.op;return"add"===t||"remove"===t||"replace"===t}return!1}function yt(e){return vt(e)||wt(e)&&"mutation"===e.type}function bt(e){return yt(e)&&("add"===e.op||"replace"===e.op||"merge"===e.op||"mergeDeep"===e.op)}function wt(e){return e&&"object"===h()(e)}function Et(e,t){try{return Ve(e,t)}catch(e){return console.error(e),{}}}var xt=r(28886),_t=r.n(xt),St=r(37659),At=r.n(St),kt=r(8575);function Ct(e,t){function r(){Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack;for(var e=arguments.length,r=new Array(e),n=0;n-1&&-1===Nt.indexOf(r)||Tt.indexOf(n)>-1||Pt.some((function(e){return n.indexOf(e)>-1}))}function Mt(e,t){var r,n=e.split("#"),o=m()(n,2),a=o[0],i=o[1],s=kt.resolve(a||"",t||"");return i?j()(r="".concat(s,"#")).call(r,i):s}var Dt="application/json, application/yaml",Lt=/^([a-z]+:\/\/|\/\/)/i,Bt=Ct("JSONRefError",(function(e,t,r){this.originalError=r,Ee()(this,t||{})})),Ft={},zt=new(_t()),Ut=[function(e){return"paths"===e[0]&&"responses"===e[3]&&"examples"===e[5]},function(e){return"paths"===e[0]&&"responses"===e[3]&&"content"===e[5]&&"example"===e[7]},function(e){return"paths"===e[0]&&"responses"===e[3]&&"content"===e[5]&&"examples"===e[7]&&"value"===e[9]},function(e){return"paths"===e[0]&&"requestBody"===e[3]&&"content"===e[4]&&"example"===e[6]},function(e){return"paths"===e[0]&&"requestBody"===e[3]&&"content"===e[4]&&"examples"===e[6]&&"value"===e[8]},function(e){return"paths"===e[0]&&"parameters"===e[2]&&"example"===e[4]},function(e){return"paths"===e[0]&&"parameters"===e[3]&&"example"===e[5]},function(e){return"paths"===e[0]&&"parameters"===e[2]&&"examples"===e[4]&&"value"===e[6]},function(e){return"paths"===e[0]&&"parameters"===e[3]&&"examples"===e[5]&&"value"===e[7]},function(e){return"paths"===e[0]&&"parameters"===e[2]&&"content"===e[4]&&"example"===e[6]},function(e){return"paths"===e[0]&&"parameters"===e[2]&&"content"===e[4]&&"examples"===e[6]&&"value"===e[8]},function(e){return"paths"===e[0]&&"parameters"===e[3]&&"content"===e[4]&&"example"===e[7]},function(e){return"paths"===e[0]&&"parameters"===e[3]&&"content"===e[5]&&"examples"===e[7]&&"value"===e[9]}],qt={key:"$ref",plugin:function(e,t,r,n){var o=n.getInstance(),a=$()(r).call(r,0,-1);if(!Rt(a)&&!function(e){return Ut.some((function(t){return t(e)}))}(a)){var i=n.getContext(r).baseDoc;if("string"!=typeof e)return new Bt("$ref: must be a string (JSON-Ref)",{$ref:e,baseDoc:i,fullPath:r});var s,l,u,c=Jt(e),p=c[0],f=c[1]||"";try{s=i||p?Wt(p,i):null}catch(t){return Ht(t,{pointer:f,$ref:e,basePath:s,fullPath:r})}if(function(e,t,r,n){var o,a,i=zt.get(n);i||(i={},zt.set(n,i));var s=function(e){if(0===e.length)return"";return"/".concat(A()(e).call(e,Xt).join("/"))}(r),l=j()(o="".concat(t||"","#")).call(o,e),u=s.replace(/allOf\/\d+\/?/g,""),c=n.contextTree.get([]).baseDoc;if(t===c&&er(u,e))return!0;var p="",f=r.some((function(e){var t;return p=j()(t="".concat(p,"/")).call(t,Xt(e)),i[p]&&i[p].some((function(e){return er(e,l)||er(l,e)}))}));if(f)return!0;return void(i[u]=j()(a=i[u]||[]).call(a,l))}(f,s,a,n)&&!o.useCircularStructures){var h=Mt(e,s);return e===h?null:it.replace(r,h)}if(null==s?(u=Yt(f),void 0===(l=n.get(u))&&(l=new Bt("Could not resolve reference: ".concat(e),{pointer:f,$ref:e,baseDoc:i,fullPath:r}))):l=null!=(l=Kt(s,f)).__value?l.__value:l.catch((function(t){throw Ht(t,{pointer:f,$ref:e,baseDoc:i,fullPath:r})})),l instanceof Error)return[it.remove(r),l];var d=Mt(e,s),m=it.replace(a,l,{$$ref:d});if(s&&s!==i)return[m,it.context(a,{baseDoc:s})];try{if(!function(e,t){var r=[e];return t.path.reduce((function(e,t){return r.push(e[t]),e[t]}),e),n(t.value);function n(e){return it.isObject(e)&&(r.indexOf(e)>=0||C()(e).some((function(t){return n(e[t])})))}}(n.state,m)||o.useCircularStructures)return m}catch(e){return null}}}},Vt=Ee()(qt,{docCache:Ft,absoluteify:Wt,clearCache:function(e){void 0!==e?delete Ft[e]:C()(Ft).forEach((function(e){delete Ft[e]}))},JSONRefError:Bt,wrapError:Ht,getDoc:Gt,split:Jt,extractFromDoc:Kt,fetchJSON:function(e){return fetch(e,{headers:{Accept:Dt},loadSpec:!0}).then((function(e){return e.text()})).then((function(e){return D.ZP.load(e)}))},extract:Zt,jsonPointerToArray:Yt,unescapeJsonPointerToken:Qt});const $t=Vt;function Wt(e,t){if(!Lt.test(e)){var r;if(!t)throw new Bt(j()(r="Tried to resolve a relative URL, without having a basePath. path: '".concat(e,"' basePath: '")).call(r,t,"'"));return kt.resolve(t,e)}return e}function Ht(e,t){var r,n;e&&e.response&&e.response.body?r=j()(n="".concat(e.response.body.code," ")).call(n,e.response.body.message):r=e.message;return new Bt("Could not resolve reference: ".concat(r),t,e)}function Jt(e){return(e+"").split("#")}function Kt(e,t){var r=Ft[e];if(r&&!it.isPromise(r))try{var n=Zt(t,r);return Ee()(Ae().resolve(n),{__value:n})}catch(e){return Ae().reject(e)}return Gt(e).then((function(e){return Zt(t,e)}))}function Gt(e){var t=Ft[e];return t?it.isPromise(t)?t:Ae().resolve(t):(Ft[e]=Vt.fetchJSON(e).then((function(t){return Ft[e]=t,t})),Ft[e])}function Zt(e,t){var r=Yt(e);if(r.length<1)return t;var n=it.getIn(t,r);if(void 0===n)throw new Bt("Could not resolve pointer: ".concat(e," does not exist in document"),{pointer:e});return n}function Yt(e){var t;if("string"!=typeof e)throw new TypeError("Expected a string, got a ".concat(h()(e)));return"/"===e[0]&&(e=e.substr(1)),""===e?[]:A()(t=e.split("/")).call(t,Qt)}function Qt(e){return"string"!=typeof e?e:new(At())("=".concat(e.replace(/~1/g,"/").replace(/~0/g,"~"))).get("")}function Xt(e){var t,r=new(At())([["",e.replace(/~/g,"~0").replace(/\//g,"~1")]]);return $()(t=r.toString()).call(t,1)}function er(e,t){if(!(r=t)||"/"===r||"#"===r)return!0;var r,n=e.charAt(t.length),o=$()(t).call(t,-1);return 0===e.indexOf(t)&&(!n||"/"===n||"#"===n)&&"#"!==o}const tr={key:"allOf",plugin:function(e,t,r,n,o){if(!o.meta||!o.meta.$$ref){var a=$()(r).call(r,0,-1);if(!Rt(a)){if(!Array.isArray(e)){var i=new TypeError("allOf must be an array");return i.fullPath=r,i}var s=!1,l=o.value;if(a.forEach((function(e){l&&(l=l[e])})),l=me()({},l),0!==C()(l).length){delete l.allOf;var u,c,p=[];if(p.push(n.replace(a,{})),e.forEach((function(e,t){if(!n.isObject(e)){if(s)return null;s=!0;var o=new TypeError("Elements in allOf must be objects");return o.fullPath=r,p.push(o)}p.push(n.mergeDeep(a,e));var i=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=r.specmap,o=r.getBaseUrlForNodePath,a=void 0===o?function(e){var r;return n.getContext(j()(r=[]).call(r,q()(t),q()(e))).baseDoc}:o,i=r.targetKeys,s=void 0===i?["$ref","$$ref"]:i,l=[];return jt()(e).forEach((function(){if(v()(s).call(s,this.key)&&"string"==typeof this.node){var e=this.path,r=j()(t).call(t,this.path),o=Mt(this.node,a(e));l.push(n.replace(r,o))}})),l}(e,$()(r).call(r,0,-1),{getBaseUrlForNodePath:function(e){var o;return n.getContext(j()(o=[]).call(o,q()(r),[t],q()(e))).baseDoc},specmap:n});p.push.apply(p,q()(i))})),l.example)p.push(n.remove(j()(u=[]).call(u,a,"example")));if(p.push(n.mergeDeep(a,l)),!l.$$ref)p.push(n.remove(j()(c=[]).call(c,a,"$$ref")));return p}}}}},rr={key:"parameters",plugin:function(e,t,r,n){if(Array.isArray(e)&&e.length){var o=Ee()([],e),a=$()(r).call(r,0,-1),i=me()({},it.getIn(n.spec,a));return e.forEach((function(e,t){try{o[t].default=n.parameterMacro(i,e)}catch(e){var a=new Error(e);return a.fullPath=r,a}})),it.replace(r,o)}return it.replace(r,e)}},nr={key:"properties",plugin:function(e,t,r,n){var o=me()({},e);for(var a in e)try{o[a].default=n.modelPropertyMacro(o[a])}catch(e){var i=new Error(e);return i.fullPath=r,i}return it.replace(r,o)}};var or=function(){function e(t){ve()(this,e),this.root=ar(t||{})}return be()(e,[{key:"set",value:function(e,t){var r=this.getParent(e,!0);if(r){var n=e[e.length-1],o=r.children;o[n]?ir(o[n],t,r):o[n]=ar(t,r)}else ir(this.root,t,null)}},{key:"get",value:function(e){if((e=e||[]).length<1)return this.root.value;for(var t,r,n=this.root,o=0;o1?r-1:0),o=1;o1?n-1:0),a=1;a0}))}},{key:"nextPromisedPatch",value:function(){var e;if(this.promisedPatches.length>0)return Ae().race(A()(e=this.promisedPatches).call(e,(function(e){return e.value})))}},{key:"getPluginHistory",value:function(e){var t=this.constructor.getPluginName(e);return this.pluginHistory[t]||[]}},{key:"getPluginRunCount",value:function(e){return this.getPluginHistory(e).length}},{key:"getPluginHistoryTip",value:function(e){var t=this.getPluginHistory(e);return t&&t[t.length-1]||{}}},{key:"getPluginMutationIndex",value:function(e){var t=this.getPluginHistoryTip(e).mutationIndex;return"number"!=typeof t?-1:t}},{key:"updatePluginHistory",value:function(e,t){var r=this.constructor.getPluginName(e);this.pluginHistory[r]=this.pluginHistory[r]||[],this.pluginHistory[r].push(t)}},{key:"updatePatches",value:function(e){var t=this;it.normalizeArray(e).forEach((function(e){if(e instanceof Error)t.errors.push(e);else try{if(!it.isObject(e))return void t.debug("updatePatches","Got a non-object patch",e);if(t.showDebug&&t.allPatches.push(e),it.isPromise(e.value))return t.promisedPatches.push(e),void t.promisedPatchThen(e);if(it.isContextPatch(e))return void t.setContext(e.path,e.value);if(it.isMutation(e))return void t.updateMutations(e)}catch(e){console.error(e),t.errors.push(e)}}))}},{key:"updateMutations",value:function(e){"object"===h()(e.value)&&!Array.isArray(e.value)&&this.allowMetaPatches&&(e.value=me()({},e.value));var t=it.applyPatch(this.state,e,{allowMetaPatches:this.allowMetaPatches});t&&(this.mutations.push(e),this.state=t)}},{key:"removePromisedPatch",value:function(e){var t,r=this.promisedPatches.indexOf(e);r<0?this.debug("Tried to remove a promisedPatch that isn't there!"):Ce()(t=this.promisedPatches).call(t,r,1)}},{key:"promisedPatchThen",value:function(e){var t=this;return e.value=e.value.then((function(r){var n=me()(me()({},e),{},{value:r});t.removePromisedPatch(e),t.updatePatches(n)})).catch((function(r){t.removePromisedPatch(e),t.updatePatches(r)})),e.value}},{key:"getMutations",value:function(e,t){var r;return e=e||0,"number"!=typeof t&&(t=this.mutations.length),$()(r=this.mutations).call(r,e,t)}},{key:"getCurrentMutations",value:function(){return this.getMutationsForPlugin(this.getCurrentPlugin())}},{key:"getMutationsForPlugin",value:function(e){var t=this.getPluginMutationIndex(e);return this.getMutations(t+1)}},{key:"getCurrentPlugin",value:function(){return this.currentPlugin}},{key:"getLib",value:function(){return this.libMethods}},{key:"_get",value:function(e){return it.getIn(this.state,e)}},{key:"_getContext",value:function(e){return this.contextTree.get(e)}},{key:"setContext",value:function(e,t){return this.contextTree.set(e,t)}},{key:"_hasRun",value:function(e){return this.getPluginRunCount(this.getCurrentPlugin())>(e||0)}},{key:"dispatch",value:function(){var e,t=this,r=this,n=this.nextPlugin();if(!n){var o=this.nextPromisedPatch();if(o)return o.then((function(){return t.dispatch()})).catch((function(){return t.dispatch()}));var a={spec:this.state,errors:this.errors};return this.showDebug&&(a.patches=this.allPatches),Ae().resolve(a)}if(r.pluginCount=r.pluginCount||{},r.pluginCount[n]=(r.pluginCount[n]||0)+1,r.pluginCount[n]>100)return Ae().resolve({spec:r.state,errors:j()(e=r.errors).call(e,new Error("We've reached a hard limit of ".concat(100," plugin runs")))});if(n!==this.currentPlugin&&this.promisedPatches.length){var i,s=A()(i=this.promisedPatches).call(i,(function(e){return e.value}));return Ae().all(A()(s).call(s,(function(e){return e.then(sr,sr)}))).then((function(){return t.dispatch()}))}return function(){r.currentPlugin=n;var e=r.getCurrentMutations(),t=r.mutations.length-1;try{if(n.isGenerator){var o,a=p()(n(e,r.getLib()));try{for(a.s();!(o=a.n()).done;){l(o.value)}}catch(e){a.e(e)}finally{a.f()}}else{l(n(e,r.getLib()))}}catch(e){console.error(e),l([Ee()(Object.create(e),{plugin:n})])}finally{r.updatePluginHistory(n,{mutationIndex:t})}return r.dispatch()}();function l(e){e&&(e=it.fullyNormalizeArray(e),r.updatePatches(e,n))}}}],[{key:"getPluginName",value:function(e){return e.pluginName}},{key:"getPatchesOfType",value:function(e,t){return P()(e).call(e,t)}}]),e}();var ur={refs:$t,allOf:tr,parameters:rr,properties:nr},cr=r(23159);function pr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.requestInterceptor,n=t.responseInterceptor,o=e.withCredentials?"include":"same-origin";return function(t){return e({url:t,loadSpec:!0,requestInterceptor:r,responseInterceptor:n,headers:{Accept:Dt},credentials:o}).then((function(e){return e.body}))}}function fr(e){var t=e.fetch,r=e.spec,n=e.url,o=e.mode,a=e.allowMetaPatches,i=void 0===a||a,l=e.pathDiscriminator,c=e.modelPropertyMacro,p=e.parameterMacro,f=e.requestInterceptor,h=e.responseInterceptor,d=e.skipNormalization,m=e.useCircularStructures,g=e.http,v=e.baseDoc;return v=v||n,g=t||g||Y,r?y(r):pr(g,{requestInterceptor:f,responseInterceptor:h})(v).then(y);function y(e){v&&(ur.refs.docCache[v]=e),ur.refs.fetchJSON=pr(g,{requestInterceptor:f,responseInterceptor:h});var t,r=[ur.refs];return"function"==typeof p&&r.push(ur.parameters),"function"==typeof c&&r.push(ur.properties),"strict"!==o&&r.push(ur.allOf),(t={spec:e,context:{baseDoc:v},plugins:r,allowMetaPatches:i,pathDiscriminator:l,parameterMacro:p,modelPropertyMacro:c,useCircularStructures:m},new lr(t).dispatch()).then(d?function(){var e=s()(u().mark((function e(t){return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",t);case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}():cr.K1)}}var hr=r(88436),dr=r.n(hr),mr=r(27361),gr=r.n(mr),vr=r(76489);function yr(e){return"[object Object]"===Object.prototype.toString.call(e)}function br(e){var t,r;return!1!==yr(e)&&(void 0===(t=e.constructor)||!1!==yr(r=t.prototype)&&!1!==r.hasOwnProperty("isPrototypeOf"))}const wr={body:function(e){var t=e.req,r=e.value;t.body=r},header:function(e){var t=e.req,r=e.parameter,n=e.value;t.headers=t.headers||{},void 0!==n&&(t.headers[r.name]=n)},query:function(e){var t=e.req,r=e.value,n=e.parameter;t.query=t.query||{},!1===r&&"boolean"===n.type&&(r="false");0===r&&["number","integer"].indexOf(n.type)>-1&&(r="0");if(r)t.query[n.name]={collectionFormat:n.collectionFormat,value:r};else if(n.allowEmptyValue&&void 0!==r){var o=n.name;t.query[o]=t.query[o]||{},t.query[o].allowEmptyValue=!0}},path:function(e){var t=e.req,r=e.value,n=e.parameter;t.url=t.url.split("{".concat(n.name,"}")).join(encodeURIComponent(r))},formData:function(e){var t=e.req,r=e.value,n=e.parameter;(r||n.allowEmptyValue)&&(t.form=t.form||{},t.form[n.name]={value:r,allowEmptyValue:n.allowEmptyValue,collectionFormat:n.collectionFormat})}};function Er(e,t){return v()(t).call(t,"application/json")?"string"==typeof e?e:_()(e):e.toString()}function xr(e){var t=e.req,r=e.value,n=e.parameter,o=n.name,a=n.style,i=n.explode,s=n.content;if(s){var l=C()(s)[0];t.url=t.url.split("{".concat(o,"}")).join(J(Er(r,l),{escape:!0}))}else{var u=K({key:n.name,value:r,style:a||"simple",explode:i||!1,escape:!0});t.url=t.url.split("{".concat(o,"}")).join(u)}}function _r(e){var t=e.req,r=e.value,n=e.parameter;if(t.query=t.query||{},n.content){var o=C()(n.content)[0];t.query[n.name]=Er(r,o)}else if(!1===r&&(r="false"),0===r&&(r="0"),r){var a=n.style,i=n.explode,s=n.allowReserved;t.query[n.name]={value:r,serializationOption:{style:a,explode:i,allowReserved:s}}}else if(n.allowEmptyValue&&void 0!==r){var l=n.name;t.query[l]=t.query[l]||{},t.query[l].allowEmptyValue=!0}}var Sr=["accept","authorization","content-type"];function Ar(e){var t=e.req,r=e.parameter,n=e.value;if(t.headers=t.headers||{},!(Sr.indexOf(r.name.toLowerCase())>-1))if(r.content){var o=C()(r.content)[0];t.headers[r.name]=Er(n,o)}else void 0!==n&&(t.headers[r.name]=K({key:r.name,value:n,style:r.style||"simple",explode:void 0!==r.explode&&r.explode,escape:!1}))}function kr(e){var t=e.req,r=e.parameter,n=e.value;t.headers=t.headers||{};var o=h()(n);if(r.content){var a,i=C()(r.content)[0];t.headers.Cookie=j()(a="".concat(r.name,"=")).call(a,Er(n,i))}else if("undefined"!==o){var s="object"===o&&!Array.isArray(n)&&r.explode?"":"".concat(r.name,"=");t.headers.Cookie=s+K({key:r.name,value:n,escape:!1,style:r.style||"form",explode:void 0!==r.explode&&r.explode})}}var Cr=r(92381),Or=r.n(Cr);const jr=(void 0!==Or()?Or():"undefined"!=typeof self?self:window).btoa;function Ir(e,t){var r=e.operation,n=e.requestBody,o=e.securities,a=e.spec,i=e.attachContentTypeForEmptyPayload,s=e.requestContentType;t=function(e){var t=e.request,r=e.securities,n=void 0===r?{}:r,o=e.operation,a=void 0===o?{}:o,i=e.spec,s=me()({},t),l=n.authorized,u=void 0===l?{}:l,c=a.security||i.security||[],p=u&&!!C()(u).length,f=gr()(i,["components","securitySchemes"])||{};if(s.headers=s.headers||{},s.query=s.query||{},!C()(n).length||!p||!c||Array.isArray(a.security)&&!a.security.length)return t;return c.forEach((function(e){C()(e).forEach((function(e){var t=u[e],r=f[e];if(t){var n=t.value||t,o=r.type;if(t)if("apiKey"===o)"query"===r.in&&(s.query[r.name]=n),"header"===r.in&&(s.headers[r.name]=n),"cookie"===r.in&&(s.cookies[r.name]=n);else if("http"===o){if(/^basic$/i.test(r.scheme)){var a,i=n.username||"",l=n.password||"",c=jr(j()(a="".concat(i,":")).call(a,l));s.headers.Authorization="Basic ".concat(c)}/^bearer$/i.test(r.scheme)&&(s.headers.Authorization="Bearer ".concat(n))}else if("oauth2"===o||"openIdConnect"===o){var p,h=t.token||{},d=h[r["x-tokenName"]||"access_token"],m=h.token_type;m&&"bearer"!==m.toLowerCase()||(m="Bearer"),s.headers.Authorization=j()(p="".concat(m," ")).call(p,d)}}}))})),s}({request:t,securities:o,operation:r,spec:a});var l=r.requestBody||{},u=C()(l.content||{}),c=s&&u.indexOf(s)>-1;if(n||i){if(s&&c)t.headers["Content-Type"]=s;else if(!s){var p=u[0];p&&(t.headers["Content-Type"]=p,s=p)}}else s&&c&&(t.headers["Content-Type"]=s);if(!e.responseContentType&&r.responses){var f,d=P()(f=N()(r.responses)).call(f,(function(e){var t=m()(e,2),r=t[0],n=t[1],o=parseInt(r,10);return o>=200&&o<300&&br(n.content)})).reduce((function(e,t){var r=m()(t,2)[1];return j()(e).call(e,C()(r.content))}),[]);d.length>0&&(t.headers.accept=d.join(", "))}if(n)if(s){if(u.indexOf(s)>-1)if("application/x-www-form-urlencoded"===s||"multipart/form-data"===s)if("object"===h()(n)){var g=(l.content[s]||{}).encoding||{};t.form={},C()(n).forEach((function(e){t.form[e]={value:n[e],encoding:g[e]||{}}}))}else t.form=n;else t.body=n}else t.body=n;return t}function Nr(e,t){var r,n,o=e.spec,a=e.operation,i=e.securities,s=e.requestContentType,l=e.responseContentType,u=e.attachContentTypeForEmptyPayload;if(t=function(e){var t=e.request,r=e.securities,n=void 0===r?{}:r,o=e.operation,a=void 0===o?{}:o,i=e.spec,s=me()({},t),l=n.authorized,u=void 0===l?{}:l,c=n.specSecurity,p=void 0===c?[]:c,f=a.security||p,h=u&&!!C()(u).length,d=i.securityDefinitions;if(s.headers=s.headers||{},s.query=s.query||{},!C()(n).length||!h||!f||Array.isArray(a.security)&&!a.security.length)return t;return f.forEach((function(e){C()(e).forEach((function(e){var t=u[e];if(t){var r=t.token,n=t.value||t,o=d[e],a=o.type,i=o["x-tokenName"]||"access_token",l=r&&r[i],c=r&&r.token_type;if(t)if("apiKey"===a){var p="query"===o.in?"query":"headers";s[p]=s[p]||{},s[p][o.name]=n}else if("basic"===a)if(n.header)s.headers.authorization=n.header;else{var f,h=n.username||"",m=n.password||"";n.base64=jr(j()(f="".concat(h,":")).call(f,m)),s.headers.authorization="Basic ".concat(n.base64)}else if("oauth2"===a&&l){var g;c=c&&"bearer"!==c.toLowerCase()?c:"Bearer",s.headers.authorization=j()(g="".concat(c," ")).call(g,l)}}}))})),s}({request:t,securities:i,operation:a,spec:o}),t.body||t.form||u)if(s)t.headers["Content-Type"]=s;else if(Array.isArray(a.consumes)){var c=m()(a.consumes,1);t.headers["Content-Type"]=c[0]}else if(Array.isArray(o.consumes)){var p=m()(o.consumes,1);t.headers["Content-Type"]=p[0]}else a.parameters&&P()(r=a.parameters).call(r,(function(e){return"file"===e.type})).length?t.headers["Content-Type"]="multipart/form-data":a.parameters&&P()(n=a.parameters).call(n,(function(e){return"formData"===e.in})).length&&(t.headers["Content-Type"]="application/x-www-form-urlencoded");else if(s){var f,h,d=a.parameters&&P()(f=a.parameters).call(f,(function(e){return"body"===e.in})).length>0,g=a.parameters&&P()(h=a.parameters).call(h,(function(e){return"formData"===e.in})).length>0;(d||g)&&(t.headers["Content-Type"]=s)}return!l&&Array.isArray(a.produces)&&a.produces.length>0&&(t.headers.accept=a.produces.join(", ")),t}var Tr=["http","fetch","spec","operationId","pathName","method","parameters","securities"],Pr=function(e){return Array.isArray(e)?e:[]},Rr=Ct("OperationNotFoundError",(function(e,t,r){this.originalError=r,Ee()(this,t||{})})),Mr={buildRequest:Lr};function Dr(e){var t=e.http,r=e.fetch,n=e.spec,o=e.operationId,a=e.pathName,i=e.method,s=e.parameters,l=e.securities,u=dr()(e,Tr),c=t||r||Y;a&&i&&!o&&(o=(0,cr.nc)(a,i));var p=Mr.buildRequest(me()({spec:n,operationId:o,parameters:s,securities:l,http:c},u));return p.body&&(br(p.body)||Array.isArray(p.body))&&(p.body=_()(p.body)),c(p)}function Lr(e){var t,r,n=e.spec,o=e.operationId,i=e.responseContentType,s=e.scheme,l=e.requestInterceptor,u=e.responseInterceptor,c=e.contextUrl,p=e.userFetch,f=e.server,h=e.serverVariables,d=e.http,g=e.signal,v=e.parameters,y=e.parameterBuilders,b=(0,cr.z6)(n);y||(y=b?a:wr);var w={url:"",credentials:d&&d.withCredentials?"include":"same-origin",headers:{},cookies:{}};g&&(w.signal=g),l&&(w.requestInterceptor=l),u&&(w.responseInterceptor=u),p&&(w.userFetch=p);var E=(0,cr.$r)(n,o);if(!E)throw new Rr("Operation ".concat(o," not found"));var x,_=E.operation,S=void 0===_?{}:_,k=E.method,O=E.pathName;if(w.url+=(x={spec:n,scheme:s,contextUrl:c,server:f,serverVariables:h,pathName:O,method:k},(0,cr.z6)(x.spec)?function(e){var t=e.spec,r=e.pathName,n=e.method,o=e.server,a=e.contextUrl,i=e.serverVariables,s=void 0===i?{}:i,l=gr()(t,["paths",r,(n||"").toLowerCase(),"servers"])||gr()(t,["paths",r,"servers"])||gr()(t,["servers"]),u="",c=null;if(o&&l&&l.length){var p=A()(l).call(l,(function(e){return e.url}));p.indexOf(o)>-1&&(u=o,c=l[p.indexOf(o)])}if(!u&&l&&l.length){u=l[0].url;var f=m()(l,1);c=f[0]}return u.indexOf("{")>-1&&function(e){for(var t,r=[],n=/{([^}]+)}/g;t=n.exec(e);)r.push(t[1]);return r}(u).forEach((function(e){if(c.variables&&c.variables[e]){var t=c.variables[e],r=s[e]||t.default,n=new RegExp("{".concat(e,"}"),"g");u=u.replace(n,r)}})),function(){var e,t,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",o=r&&n?kt.parse(kt.resolve(n,r)):kt.parse(r),a=kt.parse(n),i=Br(o.protocol)||Br(a.protocol)||"",s=o.host||a.host,l=o.pathname||"";return"/"===(e=i&&s?j()(t="".concat(i,"://")).call(t,s+l):l)[e.length-1]?$()(e).call(e,0,-1):e}(u,a)}(x):function(e){var t,r,n=e.spec,o=e.scheme,a=e.contextUrl,i=void 0===a?"":a,s=kt.parse(i),l=Array.isArray(n.schemes)?n.schemes[0]:null,u=o||l||Br(s.protocol)||"http",c=n.host||s.host||"",p=n.basePath||"";return"/"===(t=u&&c?j()(r="".concat(u,"://")).call(r,c+p):p)[t.length-1]?$()(t).call(t,0,-1):t}(x)),!o)return delete w.cookies,w;w.url+=O,w.method="".concat(k).toUpperCase(),v=v||{};var I=n.paths[O]||{};i&&(w.headers.accept=i);var N=function(e){var t={};e.forEach((function(e){t[e.in]||(t[e.in]={}),t[e.in][e.name]=e}));var r=[];return C()(t).forEach((function(e){C()(t[e]).forEach((function(n){r.push(t[e][n])}))})),r}(j()(t=j()(r=[]).call(r,Pr(S.parameters))).call(t,Pr(I.parameters)));N.forEach((function(e){var t,r,o=y[e.in];if("body"===e.in&&e.schema&&e.schema.properties&&(t=v),void 0===(t=e&&e.name&&v[e.name]))t=e&&e.name&&v[j()(r="".concat(e.in,".")).call(r,e.name)];else if(function(e,t){return P()(t).call(t,(function(t){return t.name===e}))}(e.name,N).length>1){var a;console.warn(j()(a="Parameter '".concat(e.name,"' is ambiguous because the defined spec has more than one parameter with the name: '")).call(a,e.name,"' and the passed-in parameter values did not define an 'in' value."))}if(null!==t){if(void 0!==e.default&&void 0===t&&(t=e.default),void 0===t&&e.required&&!e.allowEmptyValue)throw new Error("Required parameter ".concat(e.name," is not provided"));if(b&&e.schema&&"object"===e.schema.type&&"string"==typeof t)try{t=JSON.parse(t)}catch(e){throw new Error("Could not parse object parameter value string as JSON")}o&&o({req:w,parameter:e,value:t,operation:S,spec:n})}}));var T=me()(me()({},e),{},{operation:S});if((w=b?Ir(T,w):Nr(T,w)).cookies&&C()(w.cookies).length){var R=C()(w.cookies).reduce((function(e,t){var r=w.cookies[t];return e+(e?"&":"")+vr.serialize(t,r)}),"");w.headers.Cookie=R}return w.cookies&&delete w.cookies,fe(w),w}var Br=function(e){return e?e.replace(/\W/g,""):null};function Fr(e,t){return zr.apply(this,arguments)}function zr(){return zr=s()(u().mark((function e(t,r){var n,o,a,i,s,l,c,p,f,h,d,m,g=arguments;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=g.length>2&&void 0!==g[2]?g[2]:{},o=n.returnEntireTree,a=n.baseDoc,i=n.requestInterceptor,s=n.responseInterceptor,l=n.parameterMacro,c=n.modelPropertyMacro,p=n.useCircularStructures,f={pathDiscriminator:r,baseDoc:a,requestInterceptor:i,responseInterceptor:s,parameterMacro:l,modelPropertyMacro:c,useCircularStructures:p},h=(0,cr.K1)({spec:t}),d=h.spec,e.next=6,fr(me()(me()({},f),{},{spec:d,allowMetaPatches:!0,skipNormalization:!0}));case 6:return m=e.sent,!o&&Array.isArray(r)&&r.length&&(m.spec=gr()(m.spec,r)||null),e.abrupt("return",m);case 9:case"end":return e.stop()}}),e)}))),zr.apply(this,arguments)}var Ur=r(34852);function qr(e){let{configs:t,getConfigs:r}=e;return{fn:{fetch:(n=Y,o=t.preFetch,a=t.postFetch,a=a||function(e){return e},o=o||function(e){return e},function(e){return"string"==typeof e&&(e={url:e}),Z.mergeInQueryOrForm(e),e=o(e),a(n(e))}),buildRequest:Lr,execute:Dr,resolve:fr,resolveSubtree:function(e,t,n){if(void 0===n){const e=r();n={modelPropertyMacro:e.modelPropertyMacro,parameterMacro:e.parameterMacro,requestInterceptor:e.requestInterceptor,responseInterceptor:e.responseInterceptor}}for(var o=arguments.length,a=new Array(o>3?o-3:0),i=3;i{"use strict";r.r(t),r.d(t,{default:()=>o});var n=r(90242);function o(){return{fn:{shallowEqualKeys:n.be}}}},48347:(e,t,r)=>{"use strict";r.r(t),r.d(t,{getDisplayName:()=>n});const n=e=>e.displayName||e.name||"Component"},73420:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>u});var n=r(35627),o=r.n(n),a=r(90242),i=r(55776),s=r(48347),l=r(60314);const u=e=>{let{getComponents:t,getStore:r,getSystem:n}=e;const u=(c=(0,i.getComponent)(n,r,t),(0,a.HP)(c,(function(){for(var e=arguments.length,t=new Array(e),r=0;r(0,l.Z)(e,(function(){for(var e=arguments.length,t=new Array(e),r=0;r{"use strict";r.r(t),r.d(t,{getComponent:()=>ne,render:()=>re,withMappedContainer:()=>te});var n=r(23101),o=r.n(n),a=r(28222),i=r.n(a),s=r(67294),l=r(73935),u=r(97779),c=s.createContext(null);var p=function(e){e()},f=function(){return p},h={notify:function(){}};var d=function(){function e(e,t){this.store=e,this.parentSub=t,this.unsubscribe=null,this.listeners=h,this.handleChangeWrapper=this.handleChangeWrapper.bind(this)}var t=e.prototype;return t.addNestedSub=function(e){return this.trySubscribe(),this.listeners.subscribe(e)},t.notifyNestedSubs=function(){this.listeners.notify()},t.handleChangeWrapper=function(){this.onStateChange&&this.onStateChange()},t.isSubscribed=function(){return Boolean(this.unsubscribe)},t.trySubscribe=function(){this.unsubscribe||(this.unsubscribe=this.parentSub?this.parentSub.addNestedSub(this.handleChangeWrapper):this.store.subscribe(this.handleChangeWrapper),this.listeners=function(){var e=f(),t=null,r=null;return{clear:function(){t=null,r=null},notify:function(){e((function(){for(var e=t;e;)e.callback(),e=e.next}))},get:function(){for(var e=[],r=t;r;)e.push(r),r=r.next;return e},subscribe:function(e){var n=!0,o=r={callback:e,next:null,prev:r};return o.prev?o.prev.next=o:t=o,function(){n&&null!==t&&(n=!1,o.next?o.next.prev=o.prev:r=o.prev,o.prev?o.prev.next=o.next:t=o.next)}}}}())},t.tryUnsubscribe=function(){this.unsubscribe&&(this.unsubscribe(),this.unsubscribe=null,this.listeners.clear(),this.listeners=h)},e}(),m="undefined"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement?s.useLayoutEffect:s.useEffect;const g=function(e){var t=e.store,r=e.context,n=e.children,o=(0,s.useMemo)((function(){var e=new d(t);return e.onStateChange=e.notifyNestedSubs,{store:t,subscription:e}}),[t]),a=(0,s.useMemo)((function(){return t.getState()}),[t]);m((function(){var e=o.subscription;return e.trySubscribe(),a!==t.getState()&&e.notifyNestedSubs(),function(){e.tryUnsubscribe(),e.onStateChange=null}}),[o,a]);var i=r||c;return s.createElement(i.Provider,{value:o},n)};var v=r(87462),y=r(63366),b=r(8679),w=r.n(b),E=r(72973),x=[],_=[null,null];function S(e,t){var r=e[1];return[t.payload,r+1]}function A(e,t,r){m((function(){return e.apply(void 0,t)}),r)}function k(e,t,r,n,o,a,i){e.current=n,t.current=o,r.current=!1,a.current&&(a.current=null,i())}function C(e,t,r,n,o,a,i,s,l,u){if(e){var c=!1,p=null,f=function(){if(!c){var e,r,f=t.getState();try{e=n(f,o.current)}catch(e){r=e,p=e}r||(p=null),e===a.current?i.current||l():(a.current=e,s.current=e,i.current=!0,u({type:"STORE_UPDATED",payload:{error:r}}))}};r.onStateChange=f,r.trySubscribe(),f();return function(){if(c=!0,r.tryUnsubscribe(),r.onStateChange=null,p)throw p}}}var O=function(){return[null,0]};function j(e,t){void 0===t&&(t={});var r=t,n=r.getDisplayName,o=void 0===n?function(e){return"ConnectAdvanced("+e+")"}:n,a=r.methodName,i=void 0===a?"connectAdvanced":a,l=r.renderCountProp,u=void 0===l?void 0:l,p=r.shouldHandleStateChanges,f=void 0===p||p,h=r.storeKey,m=void 0===h?"store":h,g=(r.withRef,r.forwardRef),b=void 0!==g&&g,j=r.context,I=void 0===j?c:j,N=(0,y.Z)(r,["getDisplayName","methodName","renderCountProp","shouldHandleStateChanges","storeKey","withRef","forwardRef","context"]),T=I;return function(t){var r=t.displayName||t.name||"Component",n=o(r),a=(0,v.Z)({},N,{getDisplayName:o,methodName:i,renderCountProp:u,shouldHandleStateChanges:f,storeKey:m,displayName:n,wrappedComponentName:r,WrappedComponent:t}),l=N.pure;var c=l?s.useMemo:function(e){return e()};function p(r){var n=(0,s.useMemo)((function(){var e=r.reactReduxForwardedRef,t=(0,y.Z)(r,["reactReduxForwardedRef"]);return[r.context,e,t]}),[r]),o=n[0],i=n[1],l=n[2],u=(0,s.useMemo)((function(){return o&&o.Consumer&&(0,E.isContextConsumer)(s.createElement(o.Consumer,null))?o:T}),[o,T]),p=(0,s.useContext)(u),h=Boolean(r.store)&&Boolean(r.store.getState)&&Boolean(r.store.dispatch);Boolean(p)&&Boolean(p.store);var m=h?r.store:p.store,g=(0,s.useMemo)((function(){return function(t){return e(t.dispatch,a)}(m)}),[m]),b=(0,s.useMemo)((function(){if(!f)return _;var e=new d(m,h?null:p.subscription),t=e.notifyNestedSubs.bind(e);return[e,t]}),[m,h,p]),w=b[0],j=b[1],I=(0,s.useMemo)((function(){return h?p:(0,v.Z)({},p,{subscription:w})}),[h,p,w]),N=(0,s.useReducer)(S,x,O),P=N[0][0],R=N[1];if(P&&P.error)throw P.error;var M=(0,s.useRef)(),D=(0,s.useRef)(l),L=(0,s.useRef)(),B=(0,s.useRef)(!1),F=c((function(){return L.current&&l===D.current?L.current:g(m.getState(),l)}),[m,P,l]);A(k,[D,M,B,l,F,L,j]),A(C,[f,m,w,g,D,M,B,L,j,R],[m,w,g]);var z=(0,s.useMemo)((function(){return s.createElement(t,(0,v.Z)({},F,{ref:i}))}),[i,t,F]);return(0,s.useMemo)((function(){return f?s.createElement(u.Provider,{value:I},z):z}),[u,z,I])}var h=l?s.memo(p):p;if(h.WrappedComponent=t,h.displayName=p.displayName=n,b){var g=s.forwardRef((function(e,t){return s.createElement(h,(0,v.Z)({},e,{reactReduxForwardedRef:t}))}));return g.displayName=n,g.WrappedComponent=t,w()(g,t)}return w()(h,t)}}function I(e,t){return e===t?0!==e||0!==t||1/e==1/t:e!=e&&t!=t}function N(e,t){if(I(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var r=Object.keys(e),n=Object.keys(t);if(r.length!==n.length)return!1;for(var o=0;o=0;n--){var o=t[n](e);if(o)return o}return function(t,n){throw new Error("Invalid value of type "+typeof e+" for "+r+" argument when connecting component "+n.wrappedComponentName+".")}}function V(e,t){return e===t}function $(e){var t=void 0===e?{}:e,r=t.connectHOC,n=void 0===r?j:r,o=t.mapStateToPropsFactories,a=void 0===o?D:o,i=t.mapDispatchToPropsFactories,s=void 0===i?M:i,l=t.mergePropsFactories,u=void 0===l?B:l,c=t.selectorFactory,p=void 0===c?U:c;return function(e,t,r,o){void 0===o&&(o={});var i=o,l=i.pure,c=void 0===l||l,f=i.areStatesEqual,h=void 0===f?V:f,d=i.areOwnPropsEqual,m=void 0===d?N:d,g=i.areStatePropsEqual,b=void 0===g?N:g,w=i.areMergedPropsEqual,E=void 0===w?N:w,x=(0,y.Z)(i,["pure","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","areMergedPropsEqual"]),_=q(e,a,"mapStateToProps"),S=q(t,s,"mapDispatchToProps"),A=q(r,u,"mergeProps");return n(p,(0,v.Z)({methodName:"connect",getDisplayName:function(e){return"Connect("+e+")"},shouldHandleStateChanges:Boolean(e),initMapStateToProps:_,initMapDispatchToProps:S,initMergeProps:A,pure:c,areStatesEqual:h,areOwnPropsEqual:m,areStatePropsEqual:b,areMergedPropsEqual:E},x))}}const W=$();var H;H=l.unstable_batchedUpdates,p=H;var J=r(57557),K=r.n(J),G=r(6557),Z=r.n(G);const Y=e=>t=>{const{fn:r}=e();class n extends s.Component{render(){return s.createElement(t,o()({},e(),this.props,this.context))}}return n.displayName=`WithSystem(${r.getDisplayName(t)})`,n},Q=(e,t)=>r=>{const{fn:n}=e();class a extends s.Component{render(){return s.createElement(g,{store:t},s.createElement(r,o()({},this.props,this.context)))}}return a.displayName=`WithRoot(${n.getDisplayName(r)})`,a},X=(e,t,r)=>(0,u.qC)(r?Q(e,r):Z(),W(((r,n)=>{var o;const a={...n,...e()},i=(null===(o=t.prototype)||void 0===o?void 0:o.mapStateToProps)||(e=>({state:e}));return i(r,a)})),Y(e))(t),ee=(e,t,r,n)=>{for(const o in t){const a=t[o];"function"==typeof a&&a(r[o],n[o],e())}},te=(e,t,r)=>(t,n)=>{const{fn:o}=e(),a=r(t,"root");class l extends s.Component{constructor(t,r){super(t,r),ee(e,n,t,{})}UNSAFE_componentWillReceiveProps(t){ee(e,n,t,this.props)}render(){const e=K()(this.props,n?i()(n):[]);return s.createElement(a,e)}}return l.displayName=`WithMappedContainer(${o.getDisplayName(a)})`,l},re=(e,t,r,n)=>o=>{const a=r(e,t,n)("App","root");l.render(s.createElement(a,null),o)},ne=(e,t,r)=>function(n,o){let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if("string"!=typeof n)throw new TypeError("Need a string, to fetch a component. Was given a "+typeof n);const i=r(n);return i?o?"root"===o?X(e,i,t()):X(e,i):i:(a.failSilently||e().log.warn("Could not find component:",n),null)}},33424:(e,t,r)=>{"use strict";r.d(t,{d3:()=>D,C2:()=>ee});var n=r(28222),o=r.n(n),a=r(58118),i=r.n(a),s=r(63366);function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=4?[t[0],t[1],t[2],t[3],"".concat(t[0],".").concat(t[1]),"".concat(t[0],".").concat(t[2]),"".concat(t[0],".").concat(t[3]),"".concat(t[1],".").concat(t[0]),"".concat(t[1],".").concat(t[2]),"".concat(t[1],".").concat(t[3]),"".concat(t[2],".").concat(t[0]),"".concat(t[2],".").concat(t[1]),"".concat(t[2],".").concat(t[3]),"".concat(t[3],".").concat(t[0]),"".concat(t[3],".").concat(t[1]),"".concat(t[3],".").concat(t[2]),"".concat(t[0],".").concat(t[1],".").concat(t[2]),"".concat(t[0],".").concat(t[1],".").concat(t[3]),"".concat(t[0],".").concat(t[2],".").concat(t[1]),"".concat(t[0],".").concat(t[2],".").concat(t[3]),"".concat(t[0],".").concat(t[3],".").concat(t[1]),"".concat(t[0],".").concat(t[3],".").concat(t[2]),"".concat(t[1],".").concat(t[0],".").concat(t[2]),"".concat(t[1],".").concat(t[0],".").concat(t[3]),"".concat(t[1],".").concat(t[2],".").concat(t[0]),"".concat(t[1],".").concat(t[2],".").concat(t[3]),"".concat(t[1],".").concat(t[3],".").concat(t[0]),"".concat(t[1],".").concat(t[3],".").concat(t[2]),"".concat(t[2],".").concat(t[0],".").concat(t[1]),"".concat(t[2],".").concat(t[0],".").concat(t[3]),"".concat(t[2],".").concat(t[1],".").concat(t[0]),"".concat(t[2],".").concat(t[1],".").concat(t[3]),"".concat(t[2],".").concat(t[3],".").concat(t[0]),"".concat(t[2],".").concat(t[3],".").concat(t[1]),"".concat(t[3],".").concat(t[0],".").concat(t[1]),"".concat(t[3],".").concat(t[0],".").concat(t[2]),"".concat(t[3],".").concat(t[1],".").concat(t[0]),"".concat(t[3],".").concat(t[1],".").concat(t[2]),"".concat(t[3],".").concat(t[2],".").concat(t[0]),"".concat(t[3],".").concat(t[2],".").concat(t[1]),"".concat(t[0],".").concat(t[1],".").concat(t[2],".").concat(t[3]),"".concat(t[0],".").concat(t[1],".").concat(t[3],".").concat(t[2]),"".concat(t[0],".").concat(t[2],".").concat(t[1],".").concat(t[3]),"".concat(t[0],".").concat(t[2],".").concat(t[3],".").concat(t[1]),"".concat(t[0],".").concat(t[3],".").concat(t[1],".").concat(t[2]),"".concat(t[0],".").concat(t[3],".").concat(t[2],".").concat(t[1]),"".concat(t[1],".").concat(t[0],".").concat(t[2],".").concat(t[3]),"".concat(t[1],".").concat(t[0],".").concat(t[3],".").concat(t[2]),"".concat(t[1],".").concat(t[2],".").concat(t[0],".").concat(t[3]),"".concat(t[1],".").concat(t[2],".").concat(t[3],".").concat(t[0]),"".concat(t[1],".").concat(t[3],".").concat(t[0],".").concat(t[2]),"".concat(t[1],".").concat(t[3],".").concat(t[2],".").concat(t[0]),"".concat(t[2],".").concat(t[0],".").concat(t[1],".").concat(t[3]),"".concat(t[2],".").concat(t[0],".").concat(t[3],".").concat(t[1]),"".concat(t[2],".").concat(t[1],".").concat(t[0],".").concat(t[3]),"".concat(t[2],".").concat(t[1],".").concat(t[3],".").concat(t[0]),"".concat(t[2],".").concat(t[3],".").concat(t[0],".").concat(t[1]),"".concat(t[2],".").concat(t[3],".").concat(t[1],".").concat(t[0]),"".concat(t[3],".").concat(t[0],".").concat(t[1],".").concat(t[2]),"".concat(t[3],".").concat(t[0],".").concat(t[2],".").concat(t[1]),"".concat(t[3],".").concat(t[1],".").concat(t[0],".").concat(t[2]),"".concat(t[3],".").concat(t[1],".").concat(t[2],".").concat(t[0]),"".concat(t[3],".").concat(t[2],".").concat(t[0],".").concat(t[1]),"".concat(t[3],".").concat(t[2],".").concat(t[1],".").concat(t[0])]:void 0),m[n]}function v(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2?arguments[2]:void 0,n=e.filter((function(e){return"token"!==e})),o=g(n);return o.reduce((function(e,t){return d(d({},e),r[t])}),t)}function y(e){return e.join(" ")}function b(e){var t=e.node,r=e.stylesheet,n=e.style,o=void 0===n?{}:n,a=e.useInlineStyles,i=e.key,s=t.properties,l=t.type,u=t.tagName,c=t.value;if("text"===l)return c;if(u){var h,m=function(e,t){var r=0;return function(n){return r+=1,n.map((function(n,o){return b({node:n,stylesheet:e,useInlineStyles:t,key:"code-segment-".concat(r,"-").concat(o)})}))}}(r,a);if(a){var g=Object.keys(r).reduce((function(e,t){return t.split(".").forEach((function(t){e.includes(t)||e.push(t)})),e}),[]),w=s.className&&s.className.includes("token")?["token"]:[],E=s.className&&w.concat(s.className.filter((function(e){return!g.includes(e)})));h=d(d({},s),{},{className:y(E)||void 0,style:v(s.className,Object.assign({},s.style,o),r)})}else h=d(d({},s),{},{className:y(s.className)});var x=m(t.children);return p.createElement(u,(0,f.Z)({key:i},h),x)}}var w=["language","children","style","customStyle","codeTagProps","useInlineStyles","showLineNumbers","showInlineLineNumbers","startingLineNumber","lineNumberContainerStyle","lineNumberStyle","wrapLines","wrapLongLines","lineProps","renderer","PreTag","CodeTag","code","astGenerator"];function E(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function x(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:[],r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],n=0;n2&&void 0!==arguments[2]?arguments[2]:[];return C({children:e,lineNumber:t,lineNumberStyle:s,largestLineNumber:i,showInlineLineNumbers:o,lineProps:r,className:a,showLineNumbers:n,wrapLongLines:l})}function m(e,t){if(n&&t&&o){var r=k(s,t,i);e.unshift(A(t,r))}return e}function g(e,r){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return t||n.length>0?d(e,r,n):m(e,r)}for(var v=function(){var e=c[h],t=e.children[0].value;if(t.match(_)){var r=t.split("\n");r.forEach((function(t,o){var i=n&&p.length+a,s={type:"text",value:"".concat(t,"\n")};if(0===o){var l=g(c.slice(f+1,h).concat(C({children:[s],className:e.properties.className})),i);p.push(l)}else if(o===r.length-1){var u=c[h+1]&&c[h+1].children&&c[h+1].children[0],d={type:"text",value:"".concat(t)};if(u){var m=C({children:[d],className:e.properties.className});c.splice(h+1,0,m)}else{var v=g([d],i,e.properties.className);p.push(v)}}else{var y=g([s],i,e.properties.className);p.push(y)}})),f=h}h++};h=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}(e,w);q=q||T;var $=d?p.createElement(S,{containerStyle:b,codeStyle:u.style||{},numberStyle:_,startingLineNumber:y,codeString:U}):null,W=o.hljs||o['pre[class*="language-"]']||{backgroundColor:"#fff"},H=N(q)?"hljs":"prismjs",J=f?Object.assign({},V,{style:Object.assign({},W,i)}):Object.assign({},V,{className:V.className?"".concat(H," ").concat(V.className):H,style:Object.assign({},i)});if(u.style=x(x({},u.style),{},C?{whiteSpace:"pre-wrap"}:{whiteSpace:"pre"}),!q)return p.createElement(L,J,$,p.createElement(F,u,U));(void 0===A&&M||C)&&(A=!0),M=M||I;var K=[{type:"text",value:U}],G=function(e){var t=e.astGenerator,r=e.language,n=e.code,o=e.defaultCodeValue;if(N(t)){var a=function(e,t){return-1!==e.listLanguages().indexOf(t)}(t,r);return"text"===r?{value:o,language:"text"}:a?t.highlight(r,n):t.highlightAuto(n)}try{return r&&"text"!==r?{value:t.highlight(n,r)}:{value:o}}catch(e){return{value:o}}}({astGenerator:q,language:t,code:U,defaultCodeValue:K});null===G.language&&(G.value=K);var Z=j(G,A,R,d,g,y,G.value.length+y,_,C);return p.createElement(L,J,p.createElement(F,u,!g&&$,M({rows:Z,stylesheet:o,useInlineStyles:f})))});M.registerLanguage=R.registerLanguage;const D=M;var L=r(96344);const B=r.n(L)();var F=r(82026);const z=r.n(F)();var U=r(42157);const q=r.n(U)();var V=r(61519);const $=r.n(V)();var W=r(54587);const H=r.n(W)();var J=r(30786);const K=r.n(J)();var G=r(66336);const Z=r.n(G)(),Y={hljs:{display:"block",overflowX:"auto",padding:"0.5em",background:"#333",color:"white"},"hljs-name":{fontWeight:"bold"},"hljs-strong":{fontWeight:"bold"},"hljs-code":{fontStyle:"italic",color:"#888"},"hljs-emphasis":{fontStyle:"italic"},"hljs-tag":{color:"#62c8f3"},"hljs-variable":{color:"#ade5fc"},"hljs-template-variable":{color:"#ade5fc"},"hljs-selector-id":{color:"#ade5fc"},"hljs-selector-class":{color:"#ade5fc"},"hljs-string":{color:"#a2fca2"},"hljs-bullet":{color:"#d36363"},"hljs-type":{color:"#ffa"},"hljs-title":{color:"#ffa"},"hljs-section":{color:"#ffa"},"hljs-attribute":{color:"#ffa"},"hljs-quote":{color:"#ffa"},"hljs-built_in":{color:"#ffa"},"hljs-builtin-name":{color:"#ffa"},"hljs-number":{color:"#d36363"},"hljs-symbol":{color:"#d36363"},"hljs-keyword":{color:"#fcc28c"},"hljs-selector-tag":{color:"#fcc28c"},"hljs-literal":{color:"#fcc28c"},"hljs-comment":{color:"#888"},"hljs-deletion":{color:"#333",backgroundColor:"#fc9b9b"},"hljs-regexp":{color:"#c6b4f0"},"hljs-link":{color:"#c6b4f0"},"hljs-meta":{color:"#fc9b9b"},"hljs-addition":{backgroundColor:"#a2fca2",color:"#333"}};D.registerLanguage("json",z),D.registerLanguage("js",B),D.registerLanguage("xml",q),D.registerLanguage("yaml",H),D.registerLanguage("http",K),D.registerLanguage("bash",$),D.registerLanguage("powershell",Z),D.registerLanguage("javascript",B);const Q={agate:Y,arta:{hljs:{display:"block",overflowX:"auto",padding:"0.5em",background:"#222",color:"#aaa"},"hljs-subst":{color:"#aaa"},"hljs-section":{color:"#fff",fontWeight:"bold"},"hljs-comment":{color:"#444"},"hljs-quote":{color:"#444"},"hljs-meta":{color:"#444"},"hljs-string":{color:"#ffcc33"},"hljs-symbol":{color:"#ffcc33"},"hljs-bullet":{color:"#ffcc33"},"hljs-regexp":{color:"#ffcc33"},"hljs-number":{color:"#00cc66"},"hljs-addition":{color:"#00cc66"},"hljs-built_in":{color:"#32aaee"},"hljs-builtin-name":{color:"#32aaee"},"hljs-literal":{color:"#32aaee"},"hljs-type":{color:"#32aaee"},"hljs-template-variable":{color:"#32aaee"},"hljs-attribute":{color:"#32aaee"},"hljs-link":{color:"#32aaee"},"hljs-keyword":{color:"#6644aa"},"hljs-selector-tag":{color:"#6644aa"},"hljs-name":{color:"#6644aa"},"hljs-selector-id":{color:"#6644aa"},"hljs-selector-class":{color:"#6644aa"},"hljs-title":{color:"#bb1166"},"hljs-variable":{color:"#bb1166"},"hljs-deletion":{color:"#bb1166"},"hljs-template-tag":{color:"#bb1166"},"hljs-doctag":{fontWeight:"bold"},"hljs-strong":{fontWeight:"bold"},"hljs-emphasis":{fontStyle:"italic"}},monokai:{hljs:{display:"block",overflowX:"auto",padding:"0.5em",background:"#272822",color:"#ddd"},"hljs-tag":{color:"#f92672"},"hljs-keyword":{color:"#f92672",fontWeight:"bold"},"hljs-selector-tag":{color:"#f92672",fontWeight:"bold"},"hljs-literal":{color:"#f92672",fontWeight:"bold"},"hljs-strong":{color:"#f92672"},"hljs-name":{color:"#f92672"},"hljs-code":{color:"#66d9ef"},"hljs-class .hljs-title":{color:"white"},"hljs-attribute":{color:"#bf79db"},"hljs-symbol":{color:"#bf79db"},"hljs-regexp":{color:"#bf79db"},"hljs-link":{color:"#bf79db"},"hljs-string":{color:"#a6e22e"},"hljs-bullet":{color:"#a6e22e"},"hljs-subst":{color:"#a6e22e"},"hljs-title":{color:"#a6e22e",fontWeight:"bold"},"hljs-section":{color:"#a6e22e",fontWeight:"bold"},"hljs-emphasis":{color:"#a6e22e"},"hljs-type":{color:"#a6e22e",fontWeight:"bold"},"hljs-built_in":{color:"#a6e22e"},"hljs-builtin-name":{color:"#a6e22e"},"hljs-selector-attr":{color:"#a6e22e"},"hljs-selector-pseudo":{color:"#a6e22e"},"hljs-addition":{color:"#a6e22e"},"hljs-variable":{color:"#a6e22e"},"hljs-template-tag":{color:"#a6e22e"},"hljs-template-variable":{color:"#a6e22e"},"hljs-comment":{color:"#75715e"},"hljs-quote":{color:"#75715e"},"hljs-deletion":{color:"#75715e"},"hljs-meta":{color:"#75715e"},"hljs-doctag":{fontWeight:"bold"},"hljs-selector-id":{fontWeight:"bold"}},nord:{hljs:{display:"block",overflowX:"auto",padding:"0.5em",background:"#2E3440",color:"#D8DEE9"},"hljs-subst":{color:"#D8DEE9"},"hljs-selector-tag":{color:"#81A1C1"},"hljs-selector-id":{color:"#8FBCBB",fontWeight:"bold"},"hljs-selector-class":{color:"#8FBCBB"},"hljs-selector-attr":{color:"#8FBCBB"},"hljs-selector-pseudo":{color:"#88C0D0"},"hljs-addition":{backgroundColor:"rgba(163, 190, 140, 0.5)"},"hljs-deletion":{backgroundColor:"rgba(191, 97, 106, 0.5)"},"hljs-built_in":{color:"#8FBCBB"},"hljs-type":{color:"#8FBCBB"},"hljs-class":{color:"#8FBCBB"},"hljs-function":{color:"#88C0D0"},"hljs-function > .hljs-title":{color:"#88C0D0"},"hljs-keyword":{color:"#81A1C1"},"hljs-literal":{color:"#81A1C1"},"hljs-symbol":{color:"#81A1C1"},"hljs-number":{color:"#B48EAD"},"hljs-regexp":{color:"#EBCB8B"},"hljs-string":{color:"#A3BE8C"},"hljs-title":{color:"#8FBCBB"},"hljs-params":{color:"#D8DEE9"},"hljs-bullet":{color:"#81A1C1"},"hljs-code":{color:"#8FBCBB"},"hljs-emphasis":{fontStyle:"italic"},"hljs-formula":{color:"#8FBCBB"},"hljs-strong":{fontWeight:"bold"},"hljs-link:hover":{textDecoration:"underline"},"hljs-quote":{color:"#4C566A"},"hljs-comment":{color:"#4C566A"},"hljs-doctag":{color:"#8FBCBB"},"hljs-meta":{color:"#5E81AC"},"hljs-meta-keyword":{color:"#5E81AC"},"hljs-meta-string":{color:"#A3BE8C"},"hljs-attr":{color:"#8FBCBB"},"hljs-attribute":{color:"#D8DEE9"},"hljs-builtin-name":{color:"#81A1C1"},"hljs-name":{color:"#81A1C1"},"hljs-section":{color:"#88C0D0"},"hljs-tag":{color:"#81A1C1"},"hljs-variable":{color:"#D8DEE9"},"hljs-template-variable":{color:"#D8DEE9"},"hljs-template-tag":{color:"#5E81AC"},"abnf .hljs-attribute":{color:"#88C0D0"},"abnf .hljs-symbol":{color:"#EBCB8B"},"apache .hljs-attribute":{color:"#88C0D0"},"apache .hljs-section":{color:"#81A1C1"},"arduino .hljs-built_in":{color:"#88C0D0"},"aspectj .hljs-meta":{color:"#D08770"},"aspectj > .hljs-title":{color:"#88C0D0"},"bnf .hljs-attribute":{color:"#8FBCBB"},"clojure .hljs-name":{color:"#88C0D0"},"clojure .hljs-symbol":{color:"#EBCB8B"},"coq .hljs-built_in":{color:"#88C0D0"},"cpp .hljs-meta-string":{color:"#8FBCBB"},"css .hljs-built_in":{color:"#88C0D0"},"css .hljs-keyword":{color:"#D08770"},"diff .hljs-meta":{color:"#8FBCBB"},"ebnf .hljs-attribute":{color:"#8FBCBB"},"glsl .hljs-built_in":{color:"#88C0D0"},"groovy .hljs-meta:not(:first-child)":{color:"#D08770"},"haxe .hljs-meta":{color:"#D08770"},"java .hljs-meta":{color:"#D08770"},"ldif .hljs-attribute":{color:"#8FBCBB"},"lisp .hljs-name":{color:"#88C0D0"},"lua .hljs-built_in":{color:"#88C0D0"},"moonscript .hljs-built_in":{color:"#88C0D0"},"nginx .hljs-attribute":{color:"#88C0D0"},"nginx .hljs-section":{color:"#5E81AC"},"pf .hljs-built_in":{color:"#88C0D0"},"processing .hljs-built_in":{color:"#88C0D0"},"scss .hljs-keyword":{color:"#81A1C1"},"stylus .hljs-keyword":{color:"#81A1C1"},"swift .hljs-meta":{color:"#D08770"},"vim .hljs-built_in":{color:"#88C0D0",fontStyle:"italic"},"yaml .hljs-meta":{color:"#D08770"}},obsidian:{hljs:{display:"block",overflowX:"auto",padding:"0.5em",background:"#282b2e",color:"#e0e2e4"},"hljs-keyword":{color:"#93c763",fontWeight:"bold"},"hljs-selector-tag":{color:"#93c763",fontWeight:"bold"},"hljs-literal":{color:"#93c763",fontWeight:"bold"},"hljs-selector-id":{color:"#93c763"},"hljs-number":{color:"#ffcd22"},"hljs-attribute":{color:"#668bb0"},"hljs-code":{color:"white"},"hljs-class .hljs-title":{color:"white"},"hljs-section":{color:"white",fontWeight:"bold"},"hljs-regexp":{color:"#d39745"},"hljs-link":{color:"#d39745"},"hljs-meta":{color:"#557182"},"hljs-tag":{color:"#8cbbad"},"hljs-name":{color:"#8cbbad",fontWeight:"bold"},"hljs-bullet":{color:"#8cbbad"},"hljs-subst":{color:"#8cbbad"},"hljs-emphasis":{color:"#8cbbad"},"hljs-type":{color:"#8cbbad",fontWeight:"bold"},"hljs-built_in":{color:"#8cbbad"},"hljs-selector-attr":{color:"#8cbbad"},"hljs-selector-pseudo":{color:"#8cbbad"},"hljs-addition":{color:"#8cbbad"},"hljs-variable":{color:"#8cbbad"},"hljs-template-tag":{color:"#8cbbad"},"hljs-template-variable":{color:"#8cbbad"},"hljs-string":{color:"#ec7600"},"hljs-symbol":{color:"#ec7600"},"hljs-comment":{color:"#818e96"},"hljs-quote":{color:"#818e96"},"hljs-deletion":{color:"#818e96"},"hljs-selector-class":{color:"#A082BD"},"hljs-doctag":{fontWeight:"bold"},"hljs-title":{fontWeight:"bold"},"hljs-strong":{fontWeight:"bold"}},"tomorrow-night":{"hljs-comment":{color:"#969896"},"hljs-quote":{color:"#969896"},"hljs-variable":{color:"#cc6666"},"hljs-template-variable":{color:"#cc6666"},"hljs-tag":{color:"#cc6666"},"hljs-name":{color:"#cc6666"},"hljs-selector-id":{color:"#cc6666"},"hljs-selector-class":{color:"#cc6666"},"hljs-regexp":{color:"#cc6666"},"hljs-deletion":{color:"#cc6666"},"hljs-number":{color:"#de935f"},"hljs-built_in":{color:"#de935f"},"hljs-builtin-name":{color:"#de935f"},"hljs-literal":{color:"#de935f"},"hljs-type":{color:"#de935f"},"hljs-params":{color:"#de935f"},"hljs-meta":{color:"#de935f"},"hljs-link":{color:"#de935f"},"hljs-attribute":{color:"#f0c674"},"hljs-string":{color:"#b5bd68"},"hljs-symbol":{color:"#b5bd68"},"hljs-bullet":{color:"#b5bd68"},"hljs-addition":{color:"#b5bd68"},"hljs-title":{color:"#81a2be"},"hljs-section":{color:"#81a2be"},"hljs-keyword":{color:"#b294bb"},"hljs-selector-tag":{color:"#b294bb"},hljs:{display:"block",overflowX:"auto",background:"#1d1f21",color:"#c5c8c6",padding:"0.5em"},"hljs-emphasis":{fontStyle:"italic"},"hljs-strong":{fontWeight:"bold"}}},X=o()(Q),ee=e=>i()(X).call(X,e)?Q[e]:(console.warn(`Request style '${e}' is not available, returning default instead`),Y)},90242:(e,t,r)=>{"use strict";r.d(t,{mz:()=>pe,oG:()=>fe,AF:()=>he,LQ:()=>de,Kn:()=>me,Wl:()=>ge,kJ:()=>ve,HP:()=>ye,Ay:()=>be,Q2:()=>we,_5:()=>Ee,iQ:()=>xe,gp:()=>_e,DR:()=>Se,Zl:()=>Ae,Ik:()=>Ce,xi:()=>Pe,UG:()=>Re,r3:()=>Me,wh:()=>De,GZ:()=>Le,be:()=>Be,Nm:()=>Fe,hW:()=>ze,QG:()=>Ue,oJ:()=>qe,J6:()=>Ve,nX:()=>$e,po:()=>We,XV:()=>He,Pz:()=>Je,D$:()=>Ke,V9:()=>Ge,cz:()=>Ze,Uj:()=>Ye,Xb:()=>Qe,O2:()=>et});var n=r(58309),o=r.n(n),a=r(97606),i=r.n(a),s=r(74386),l=r.n(s),u=r(86),c=r.n(u),p=r(14418),f=r.n(p),h=r(28222),d=r.n(h),m=(r(11189),r(24282)),g=r.n(m),v=r(76986),y=r.n(v),b=r(2578),w=r.n(b),E=r(24278),x=r.n(E),_=(r(39022),r(92039)),S=r.n(_),A=(r(58118),r(35627)),k=r.n(A),C=r(11882),O=r.n(C),j=r(51679),I=r.n(j),N=r(27043),T=r.n(N),P=r(81607),R=r.n(P),M=r(43393),D=r.n(M),L=r(17967),B=r(68929),F=r.n(B),z=r(11700),U=r.n(z),q=r(88306),V=r.n(q),$=r(13311),W=r.n($),H=r(59704),J=r.n(H),K=r(77813),G=r.n(K),Z=r(23560),Y=r.n(Z),Q=r(57050),X=r(27504),ee=r(8269),te=r.n(ee),re=r(19069),ne=r(92282),oe=r.n(ne),ae=r(89072),ie=r.n(ae),se=r(1272),le=r(48764).Buffer;const ue="default",ce=e=>D().Iterable.isIterable(e);function pe(e){return me(e)?ce(e)?e.toJS():e:{}}function fe(e){var t,r;if(ce(e))return e;if(e instanceof X.Z.File)return e;if(!me(e))return e;if(o()(e))return i()(r=D().Seq(e)).call(r,fe).toList();if(Y()(l()(e))){var n;const t=function(e){if(!Y()(l()(e)))return e;const t={},r="_**[]",n={};for(let o of l()(e).call(e))if(t[o[0]]||n[o[0]]&&n[o[0]].containsMultiple){if(!n[o[0]]){n[o[0]]={containsMultiple:!0,length:1},t[`${o[0]}${r}${n[o[0]].length}`]=t[o[0]],delete t[o[0]]}n[o[0]].length+=1,t[`${o[0]}${r}${n[o[0]].length}`]=o[1]}else t[o[0]]=o[1];return t}(e);return i()(n=D().OrderedMap(t)).call(n,fe)}return i()(t=D().OrderedMap(e)).call(t,fe)}function he(e){return o()(e)?e:[e]}function de(e){return"function"==typeof e}function me(e){return!!e&&"object"==typeof e}function ge(e){return"function"==typeof e}function ve(e){return o()(e)}const ye=V();function be(e,t){var r;return g()(r=d()(e)).call(r,((r,n)=>(r[n]=t(e[n],n),r)),{})}function we(e,t){var r;return g()(r=d()(e)).call(r,((r,n)=>{let o=t(e[n],n);return o&&"object"==typeof o&&y()(r,o),r}),{})}function Ee(e){return t=>{let{dispatch:r,getState:n}=t;return t=>r=>"function"==typeof r?r(e()):t(r)}}function xe(e){var t;let r=e.keySeq();return r.contains(ue)?ue:w()(t=f()(r).call(r,(e=>"2"===(e+"")[0]))).call(t).first()}function _e(e,t){if(!D().Iterable.isIterable(e))return D().List();let r=e.getIn(o()(t)?t:[t]);return D().List.isList(r)?r:D().List()}function Se(e){let t,r=[/filename\*=[^']+'\w*'"([^"]+)";?/i,/filename\*=[^']+'\w*'([^;]+);?/i,/filename="([^;]*);?"/i,/filename=([^;]*);?/i];if(S()(r).call(r,(r=>(t=r.exec(e),null!==t))),null!==t&&t.length>1)try{return decodeURIComponent(t[1])}catch(e){console.error(e)}return null}function Ae(e){return t=e.replace(/\.[^./]*$/,""),U()(F()(t));var t}function ke(e,t,r,n,a){if(!t)return[];let s=[],l=t.get("nullable"),u=t.get("required"),p=t.get("maximum"),h=t.get("minimum"),d=t.get("type"),m=t.get("format"),g=t.get("maxLength"),v=t.get("minLength"),y=t.get("uniqueItems"),b=t.get("maxItems"),w=t.get("minItems"),E=t.get("pattern");const x=r||!0===u,_=null!=e;if(l&&null===e||!d||!(x||_&&"array"===d||!(!x&&!_)))return[];let A="string"===d&&e,k="array"===d&&o()(e)&&e.length,C="array"===d&&D().List.isList(e)&&e.count();const O=[A,k,C,"array"===d&&"string"==typeof e&&e,"file"===d&&e instanceof X.Z.File,"boolean"===d&&(e||!1===e),"number"===d&&(e||0===e),"integer"===d&&(e||0===e),"object"===d&&"object"==typeof e&&null!==e,"object"===d&&"string"==typeof e&&e],j=S()(O).call(O,(e=>!!e));if(x&&!j&&!n)return s.push("Required field is not provided"),s;if("object"===d&&(null===a||"application/json"===a)){let r=e;if("string"==typeof e)try{r=JSON.parse(e)}catch(e){return s.push("Parameter string value must be valid JSON"),s}var I;if(t&&t.has("required")&&ge(u.isList)&&u.isList()&&c()(u).call(u,(e=>{void 0===r[e]&&s.push({propKey:e,error:"Required property not found"})})),t&&t.has("properties"))c()(I=t.get("properties")).call(I,((e,t)=>{const o=ke(r[t],e,!1,n,a);s.push(...i()(o).call(o,(e=>({propKey:t,error:e}))))}))}if(E){let t=((e,t)=>{if(!new RegExp(t).test(e))return"Value must follow pattern "+t})(e,E);t&&s.push(t)}if(w&&"array"===d){let t=((e,t)=>{if(!e&&t>=1||e&&e.length{if(e&&e.length>t)return`Array must not contain more then ${t} item${1===t?"":"s"}`})(e,b);t&&s.push({needRemove:!0,error:t})}if(y&&"array"===d){let t=((e,t)=>{if(e&&("true"===t||!0===t)){const t=(0,M.fromJS)(e),r=t.toSet();if(e.length>r.size){let e=(0,M.Set)();if(c()(t).call(t,((r,n)=>{f()(t).call(t,(e=>ge(e.equals)?e.equals(r):e===r)).size>1&&(e=e.add(n))})),0!==e.size)return i()(e).call(e,(e=>({index:e,error:"No duplicates allowed."}))).toArray()}}})(e,y);t&&s.push(...t)}if(g||0===g){let t=((e,t)=>{if(e.length>t)return`Value must be no longer than ${t} character${1!==t?"s":""}`})(e,g);t&&s.push(t)}if(v){let t=((e,t)=>{if(e.length{if(e>t)return`Value must be less than ${t}`})(e,p);t&&s.push(t)}if(h||0===h){let t=((e,t)=>{if(e{if(isNaN(Date.parse(e)))return"Value must be a DateTime"})(e):"uuid"===m?(e=>{if(e=e.toString().toLowerCase(),!/^[{(]?[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}[)}]?$/.test(e))return"Value must be a Guid"})(e):(e=>{if(e&&"string"!=typeof e)return"Value must be a string"})(e),!t)return s;s.push(t)}else if("boolean"===d){let t=(e=>{if("true"!==e&&"false"!==e&&!0!==e&&!1!==e)return"Value must be a boolean"})(e);if(!t)return s;s.push(t)}else if("number"===d){let t=(e=>{if(!/^-?\d+(\.?\d+)?$/.test(e))return"Value must be a number"})(e);if(!t)return s;s.push(t)}else if("integer"===d){let t=(e=>{if(!/^-?\d+$/.test(e))return"Value must be an integer"})(e);if(!t)return s;s.push(t)}else if("array"===d){if(!k&&!C)return s;e&&c()(e).call(e,((e,r)=>{const o=ke(e,t.get("items"),!1,n,a);s.push(...i()(o).call(o,(e=>({index:r,error:e}))))}))}else if("file"===d){let t=(e=>{if(e&&!(e instanceof X.Z.File))return"Value must be a file"})(e);if(!t)return s;s.push(t)}return s}const Ce=function(e,t){let{isOAS3:r=!1,bypassRequiredCheck:n=!1}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=e.get("required"),{schema:a,parameterContentMediaType:i}=(0,re.Z)(e,{isOAS3:r});return ke(t,a,o,n,i)},Oe=(e,t,r)=>{if(e&&!e.xml&&(e.xml={}),e&&!e.xml.name){if(!e.$$ref&&(e.type||e.items||e.properties||e.additionalProperties))return'\n\x3c!-- XML example cannot be generated; root element name is undefined --\x3e';if(e.$$ref){let t=e.$$ref.match(/\S*\/(\S+)$/);e.xml.name=t[1]}}return(0,Q.memoizedCreateXMLExample)(e,t,r)},je=[{when:/json/,shouldStringifyTypes:["string"]}],Ie=["object"],Ne=(e,t,r,n)=>{const o=(0,Q.memoizedSampleFromSchema)(e,t,n),a=typeof o,i=g()(je).call(je,((e,t)=>t.when.test(r)?[...e,...t.shouldStringifyTypes]:e),Ie);return J()(i,(e=>e===a))?k()(o,null,2):o},Te=(e,t,r,n)=>{const o=Ne(e,t,r,n);let a;try{a=se.ZP.dump(se.ZP.load(o),{lineWidth:-1},{schema:se.A8}),"\n"===a[a.length-1]&&(a=x()(a).call(a,0,a.length-1))}catch(e){return console.error(e),"error: could not generate yaml example"}return a.replace(/\t/g," ")},Pe=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:void 0;return e&&ge(e.toJS)&&(e=e.toJS()),n&&ge(n.toJS)&&(n=n.toJS()),/xml/.test(t)?Oe(e,r,n):/(yaml|yml)/.test(t)?Te(e,r,t,n):Ne(e,r,t,n)},Re=()=>{let e={},t=X.Z.location.search;if(!t)return{};if(""!=t){let r=t.substr(1).split("&");for(let t in r)Object.prototype.hasOwnProperty.call(r,t)&&(t=r[t].split("="),e[decodeURIComponent(t[0])]=t[1]&&decodeURIComponent(t[1])||"")}return e},Me=e=>{let t;return t=e instanceof le?e:le.from(e.toString(),"utf-8"),t.toString("base64")},De={operationsSorter:{alpha:(e,t)=>e.get("path").localeCompare(t.get("path")),method:(e,t)=>e.get("method").localeCompare(t.get("method"))},tagsSorter:{alpha:(e,t)=>e.localeCompare(t)}},Le=e=>{let t=[];for(let r in e){let n=e[r];void 0!==n&&""!==n&&t.push([r,"=",encodeURIComponent(n).replace(/%20/g,"+")].join(""))}return t.join("&")},Be=(e,t,r)=>!!W()(r,(r=>G()(e[r],t[r])));function Fe(e){return"string"!=typeof e||""===e?"":(0,L.N)(e)}function ze(e){return!(!e||O()(e).call(e,"localhost")>=0||O()(e).call(e,"127.0.0.1")>=0||"none"===e)}function Ue(e){if(!D().OrderedMap.isOrderedMap(e))return null;if(!e.size)return null;const t=I()(e).call(e,((e,t)=>T()(t).call(t,"2")&&d()(e.get("content")||{}).length>0)),r=e.get("default")||D().OrderedMap(),n=(r.get("content")||D().OrderedMap()).keySeq().toJS().length?r:null;return t||n}const qe=e=>"string"==typeof e||e instanceof String?R()(e).call(e).replace(/\s/g,"%20"):"",Ve=e=>te()(qe(e).replace(/%20/g,"_")),$e=e=>f()(e).call(e,((e,t)=>/^x-/.test(t))),We=e=>f()(e).call(e,((e,t)=>/^pattern|maxLength|minLength|maximum|minimum/.test(t)));function He(e,t){var r;let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:()=>!0;if("object"!=typeof e||o()(e)||null===e||!t)return e;const a=y()({},e);return c()(r=d()(a)).call(r,(e=>{e===t&&n(a[e],e)?delete a[e]:a[e]=He(a[e],t,n)})),a}function Je(e){if("string"==typeof e)return e;if(e&&e.toJS&&(e=e.toJS()),"object"==typeof e&&null!==e)try{return k()(e,null,2)}catch(t){return String(e)}return null==e?"":e.toString()}function Ke(e){return"number"==typeof e?e.toString():e}function Ge(e){let{returnAll:t=!1,allowHashes:r=!0}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!D().Map.isMap(e))throw new Error("paramToIdentifier: received a non-Im.Map parameter as input");const n=e.get("name"),o=e.get("in");let a=[];return e&&e.hashCode&&o&&n&&r&&a.push(`${o}.${n}.hash-${e.hashCode()}`),o&&n&&a.push(`${o}.${n}`),a.push(n),t?a:a[0]||""}function Ze(e,t){var r;const n=Ge(e,{returnAll:!0});return f()(r=i()(n).call(n,(e=>t[e]))).call(r,(e=>void 0!==e))[0]}function Ye(){return Xe(oe()(32).toString("base64"))}function Qe(e){return Xe(ie()("sha256").update(e).digest("base64"))}function Xe(e){return e.replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}const et=e=>!e||!(!ce(e)||!e.isEmpty())},2518:(e,t,r)=>{"use strict";function n(e){return function(e){try{return!!JSON.parse(e)}catch(e){return null}}(e)?"json":null}r.d(t,{O:()=>n})},27504:(e,t,r)=>{"use strict";r.d(t,{Z:()=>n});const n=function(){var e={location:{},history:{},open:()=>{},close:()=>{},File:function(){}};if("undefined"==typeof window)return e;try{e=window;for(var t of["File","Blob","FormData"])t in window&&(e[t]=window[t])}catch(e){console.error(e)}return e}()},19069:(e,t,r)=>{"use strict";r.d(t,{Z:()=>c});var n=r(14418),o=r.n(n),a=r(58118),i=r.n(a),s=r(43393),l=r.n(s);const u=l().Set.of("type","format","items","default","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","maxItems","minItems","uniqueItems","enum","multipleOf");function c(e){let{isOAS3:t}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!l().Map.isMap(e))return{schema:l().Map(),parameterContentMediaType:null};if(!t)return"body"===e.get("in")?{schema:e.get("schema",l().Map()),parameterContentMediaType:null}:{schema:o()(e).call(e,((e,t)=>i()(u).call(u,t))),parameterContentMediaType:null};if(e.get("content")){const t=e.get("content",l().Map({})).keySeq().first();return{schema:e.getIn(["content",t,"schema"],l().Map()),parameterContentMediaType:t}}return{schema:e.get("schema")?e.get("schema",l().Map()):l().Map(),parameterContentMediaType:null}}},60314:(e,t,r)=>{"use strict";r.d(t,{Z:()=>x});var n=r(58309),o=r.n(n),a=r(2250),i=r.n(a),s=r(25110),l=r.n(s),u=r(8712),c=r.n(u),p=r(51679),f=r.n(p),h=r(12373),d=r.n(h),m=r(18492),g=r.n(m),v=r(88306),y=r.n(v);const b=e=>t=>o()(e)&&o()(t)&&e.length===t.length&&i()(e).call(e,((e,r)=>e===t[r])),w=function(){for(var e=arguments.length,t=new Array(e),r=0;r1&&void 0!==arguments[1]?arguments[1]:w;const{Cache:r}=y();y().Cache=E;const n=y()(e,t);return y().Cache=r,n}},79742:(e,t)=>{"use strict";t.byteLength=function(e){var t=l(e),r=t[0],n=t[1];return 3*(r+n)/4-n},t.toByteArray=function(e){var t,r,a=l(e),i=a[0],s=a[1],u=new o(function(e,t,r){return 3*(t+r)/4-r}(0,i,s)),c=0,p=s>0?i-4:i;for(r=0;r>16&255,u[c++]=t>>8&255,u[c++]=255&t;2===s&&(t=n[e.charCodeAt(r)]<<2|n[e.charCodeAt(r+1)]>>4,u[c++]=255&t);1===s&&(t=n[e.charCodeAt(r)]<<10|n[e.charCodeAt(r+1)]<<4|n[e.charCodeAt(r+2)]>>2,u[c++]=t>>8&255,u[c++]=255&t);return u},t.fromByteArray=function(e){for(var t,n=e.length,o=n%3,a=[],i=16383,s=0,l=n-o;sl?l:s+i));1===o?(t=e[n-1],a.push(r[t>>2]+r[t<<4&63]+"==")):2===o&&(t=(e[n-2]<<8)+e[n-1],a.push(r[t>>10]+r[t>>4&63]+r[t<<2&63]+"="));return a.join("")};for(var r=[],n=[],o="undefined"!=typeof Uint8Array?Uint8Array:Array,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",i=0,s=a.length;i0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");return-1===r&&(r=t),[r,r===t?0:4-r%4]}function u(e,t,n){for(var o,a,i=[],s=t;s>18&63]+r[a>>12&63]+r[a>>6&63]+r[63&a]);return i.join("")}n["-".charCodeAt(0)]=62,n["_".charCodeAt(0)]=63},48764:(e,t,r)=>{"use strict";const n=r(79742),o=r(80645),a="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;t.Buffer=l,t.SlowBuffer=function(e){+e!=e&&(e=0);return l.alloc(+e)},t.INSPECT_MAX_BYTES=50;const i=2147483647;function s(e){if(e>i)throw new RangeError('The value "'+e+'" is invalid for option "size"');const t=new Uint8Array(e);return Object.setPrototypeOf(t,l.prototype),t}function l(e,t,r){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return p(e)}return u(e,t,r)}function u(e,t,r){if("string"==typeof e)return function(e,t){"string"==typeof t&&""!==t||(t="utf8");if(!l.isEncoding(t))throw new TypeError("Unknown encoding: "+t);const r=0|m(e,t);let n=s(r);const o=n.write(e,t);o!==r&&(n=n.slice(0,o));return n}(e,t);if(ArrayBuffer.isView(e))return function(e){if(G(e,Uint8Array)){const t=new Uint8Array(e);return h(t.buffer,t.byteOffset,t.byteLength)}return f(e)}(e);if(null==e)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(G(e,ArrayBuffer)||e&&G(e.buffer,ArrayBuffer))return h(e,t,r);if("undefined"!=typeof SharedArrayBuffer&&(G(e,SharedArrayBuffer)||e&&G(e.buffer,SharedArrayBuffer)))return h(e,t,r);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');const n=e.valueOf&&e.valueOf();if(null!=n&&n!==e)return l.from(n,t,r);const o=function(e){if(l.isBuffer(e)){const t=0|d(e.length),r=s(t);return 0===r.length||e.copy(r,0,0,t),r}if(void 0!==e.length)return"number"!=typeof e.length||Z(e.length)?s(0):f(e);if("Buffer"===e.type&&Array.isArray(e.data))return f(e.data)}(e);if(o)return o;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return l.from(e[Symbol.toPrimitive]("string"),t,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function c(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function p(e){return c(e),s(e<0?0:0|d(e))}function f(e){const t=e.length<0?0:0|d(e.length),r=s(t);for(let n=0;n=i)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+i.toString(16)+" bytes");return 0|e}function m(e,t){if(l.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||G(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);const r=e.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;let o=!1;for(;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return H(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return J(e).length;default:if(o)return n?-1:H(e).length;t=(""+t).toLowerCase(),o=!0}}function g(e,t,r){let n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return I(this,t,r);case"utf8":case"utf-8":return k(this,t,r);case"ascii":return O(this,t,r);case"latin1":case"binary":return j(this,t,r);case"base64":return A(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return N(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function v(e,t,r){const n=e[t];e[t]=e[r],e[r]=n}function y(e,t,r,n,o){if(0===e.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),Z(r=+r)&&(r=o?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(o)return-1;r=e.length-1}else if(r<0){if(!o)return-1;r=0}if("string"==typeof t&&(t=l.from(t,n)),l.isBuffer(t))return 0===t.length?-1:b(e,t,r,n,o);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):b(e,[t],r,n,o);throw new TypeError("val must be string, number or Buffer")}function b(e,t,r,n,o){let a,i=1,s=e.length,l=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;i=2,s/=2,l/=2,r/=2}function u(e,t){return 1===i?e[t]:e.readUInt16BE(t*i)}if(o){let n=-1;for(a=r;as&&(r=s-l),a=r;a>=0;a--){let r=!0;for(let n=0;no&&(n=o):n=o;const a=t.length;let i;for(n>a/2&&(n=a/2),i=0;i>8,o=r%256,a.push(o),a.push(n);return a}(t,e.length-r),e,r,n)}function A(e,t,r){return 0===t&&r===e.length?n.fromByteArray(e):n.fromByteArray(e.slice(t,r))}function k(e,t,r){r=Math.min(e.length,r);const n=[];let o=t;for(;o239?4:t>223?3:t>191?2:1;if(o+i<=r){let r,n,s,l;switch(i){case 1:t<128&&(a=t);break;case 2:r=e[o+1],128==(192&r)&&(l=(31&t)<<6|63&r,l>127&&(a=l));break;case 3:r=e[o+1],n=e[o+2],128==(192&r)&&128==(192&n)&&(l=(15&t)<<12|(63&r)<<6|63&n,l>2047&&(l<55296||l>57343)&&(a=l));break;case 4:r=e[o+1],n=e[o+2],s=e[o+3],128==(192&r)&&128==(192&n)&&128==(192&s)&&(l=(15&t)<<18|(63&r)<<12|(63&n)<<6|63&s,l>65535&&l<1114112&&(a=l))}}null===a?(a=65533,i=1):a>65535&&(a-=65536,n.push(a>>>10&1023|55296),a=56320|1023&a),n.push(a),o+=i}return function(e){const t=e.length;if(t<=C)return String.fromCharCode.apply(String,e);let r="",n=0;for(;nn.length?(l.isBuffer(t)||(t=l.from(t)),t.copy(n,o)):Uint8Array.prototype.set.call(n,t,o);else{if(!l.isBuffer(t))throw new TypeError('"list" argument must be an Array of Buffers');t.copy(n,o)}o+=t.length}return n},l.byteLength=m,l.prototype._isBuffer=!0,l.prototype.swap16=function(){const e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let t=0;tr&&(e+=" ... "),""},a&&(l.prototype[a]=l.prototype.inspect),l.prototype.compare=function(e,t,r,n,o){if(G(e,Uint8Array)&&(e=l.from(e,e.offset,e.byteLength)),!l.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===o&&(o=this.length),t<0||r>e.length||n<0||o>this.length)throw new RangeError("out of range index");if(n>=o&&t>=r)return 0;if(n>=o)return-1;if(t>=r)return 1;if(this===e)return 0;let a=(o>>>=0)-(n>>>=0),i=(r>>>=0)-(t>>>=0);const s=Math.min(a,i),u=this.slice(n,o),c=e.slice(t,r);for(let e=0;e>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}const o=this.length-t;if((void 0===r||r>o)&&(r=o),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");let a=!1;for(;;)switch(n){case"hex":return w(this,e,t,r);case"utf8":case"utf-8":return E(this,e,t,r);case"ascii":case"latin1":case"binary":return x(this,e,t,r);case"base64":return _(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return S(this,e,t,r);default:if(a)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),a=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const C=4096;function O(e,t,r){let n="";r=Math.min(e.length,r);for(let o=t;on)&&(r=n);let o="";for(let n=t;nr)throw new RangeError("Trying to access beyond buffer length")}function P(e,t,r,n,o,a){if(!l.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>o||te.length)throw new RangeError("Index out of range")}function R(e,t,r,n,o){q(t,n,o,e,r,7);let a=Number(t&BigInt(4294967295));e[r++]=a,a>>=8,e[r++]=a,a>>=8,e[r++]=a,a>>=8,e[r++]=a;let i=Number(t>>BigInt(32)&BigInt(4294967295));return e[r++]=i,i>>=8,e[r++]=i,i>>=8,e[r++]=i,i>>=8,e[r++]=i,r}function M(e,t,r,n,o){q(t,n,o,e,r,7);let a=Number(t&BigInt(4294967295));e[r+7]=a,a>>=8,e[r+6]=a,a>>=8,e[r+5]=a,a>>=8,e[r+4]=a;let i=Number(t>>BigInt(32)&BigInt(4294967295));return e[r+3]=i,i>>=8,e[r+2]=i,i>>=8,e[r+1]=i,i>>=8,e[r]=i,r+8}function D(e,t,r,n,o,a){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function L(e,t,r,n,a){return t=+t,r>>>=0,a||D(e,0,r,4),o.write(e,t,r,n,23,4),r+4}function B(e,t,r,n,a){return t=+t,r>>>=0,a||D(e,0,r,8),o.write(e,t,r,n,52,8),r+8}l.prototype.slice=function(e,t){const r=this.length;(e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t>>=0,t>>>=0,r||T(e,t,this.length);let n=this[e],o=1,a=0;for(;++a>>=0,t>>>=0,r||T(e,t,this.length);let n=this[e+--t],o=1;for(;t>0&&(o*=256);)n+=this[e+--t]*o;return n},l.prototype.readUint8=l.prototype.readUInt8=function(e,t){return e>>>=0,t||T(e,1,this.length),this[e]},l.prototype.readUint16LE=l.prototype.readUInt16LE=function(e,t){return e>>>=0,t||T(e,2,this.length),this[e]|this[e+1]<<8},l.prototype.readUint16BE=l.prototype.readUInt16BE=function(e,t){return e>>>=0,t||T(e,2,this.length),this[e]<<8|this[e+1]},l.prototype.readUint32LE=l.prototype.readUInt32LE=function(e,t){return e>>>=0,t||T(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},l.prototype.readUint32BE=l.prototype.readUInt32BE=function(e,t){return e>>>=0,t||T(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},l.prototype.readBigUInt64LE=Q((function(e){V(e>>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||$(e,this.length-8);const n=t+256*this[++e]+65536*this[++e]+this[++e]*2**24,o=this[++e]+256*this[++e]+65536*this[++e]+r*2**24;return BigInt(n)+(BigInt(o)<>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||$(e,this.length-8);const n=t*2**24+65536*this[++e]+256*this[++e]+this[++e],o=this[++e]*2**24+65536*this[++e]+256*this[++e]+r;return(BigInt(n)<>>=0,t>>>=0,r||T(e,t,this.length);let n=this[e],o=1,a=0;for(;++a=o&&(n-=Math.pow(2,8*t)),n},l.prototype.readIntBE=function(e,t,r){e>>>=0,t>>>=0,r||T(e,t,this.length);let n=t,o=1,a=this[e+--n];for(;n>0&&(o*=256);)a+=this[e+--n]*o;return o*=128,a>=o&&(a-=Math.pow(2,8*t)),a},l.prototype.readInt8=function(e,t){return e>>>=0,t||T(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},l.prototype.readInt16LE=function(e,t){e>>>=0,t||T(e,2,this.length);const r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},l.prototype.readInt16BE=function(e,t){e>>>=0,t||T(e,2,this.length);const r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},l.prototype.readInt32LE=function(e,t){return e>>>=0,t||T(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},l.prototype.readInt32BE=function(e,t){return e>>>=0,t||T(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},l.prototype.readBigInt64LE=Q((function(e){V(e>>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||$(e,this.length-8);const n=this[e+4]+256*this[e+5]+65536*this[e+6]+(r<<24);return(BigInt(n)<>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||$(e,this.length-8);const n=(t<<24)+65536*this[++e]+256*this[++e]+this[++e];return(BigInt(n)<>>=0,t||T(e,4,this.length),o.read(this,e,!0,23,4)},l.prototype.readFloatBE=function(e,t){return e>>>=0,t||T(e,4,this.length),o.read(this,e,!1,23,4)},l.prototype.readDoubleLE=function(e,t){return e>>>=0,t||T(e,8,this.length),o.read(this,e,!0,52,8)},l.prototype.readDoubleBE=function(e,t){return e>>>=0,t||T(e,8,this.length),o.read(this,e,!1,52,8)},l.prototype.writeUintLE=l.prototype.writeUIntLE=function(e,t,r,n){if(e=+e,t>>>=0,r>>>=0,!n){P(this,e,t,r,Math.pow(2,8*r)-1,0)}let o=1,a=0;for(this[t]=255&e;++a>>=0,r>>>=0,!n){P(this,e,t,r,Math.pow(2,8*r)-1,0)}let o=r-1,a=1;for(this[t+o]=255&e;--o>=0&&(a*=256);)this[t+o]=e/a&255;return t+r},l.prototype.writeUint8=l.prototype.writeUInt8=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,1,255,0),this[t]=255&e,t+1},l.prototype.writeUint16LE=l.prototype.writeUInt16LE=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},l.prototype.writeUint16BE=l.prototype.writeUInt16BE=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},l.prototype.writeUint32LE=l.prototype.writeUInt32LE=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},l.prototype.writeUint32BE=l.prototype.writeUInt32BE=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},l.prototype.writeBigUInt64LE=Q((function(e,t=0){return R(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),l.prototype.writeBigUInt64BE=Q((function(e,t=0){return M(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),l.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t>>>=0,!n){const n=Math.pow(2,8*r-1);P(this,e,t,r,n-1,-n)}let o=0,a=1,i=0;for(this[t]=255&e;++o>0)-i&255;return t+r},l.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t>>>=0,!n){const n=Math.pow(2,8*r-1);P(this,e,t,r,n-1,-n)}let o=r-1,a=1,i=0;for(this[t+o]=255&e;--o>=0&&(a*=256);)e<0&&0===i&&0!==this[t+o+1]&&(i=1),this[t+o]=(e/a>>0)-i&255;return t+r},l.prototype.writeInt8=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},l.prototype.writeInt16LE=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},l.prototype.writeInt16BE=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},l.prototype.writeInt32LE=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},l.prototype.writeInt32BE=function(e,t,r){return e=+e,t>>>=0,r||P(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},l.prototype.writeBigInt64LE=Q((function(e,t=0){return R(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),l.prototype.writeBigInt64BE=Q((function(e,t=0){return M(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),l.prototype.writeFloatLE=function(e,t,r){return L(this,e,t,!0,r)},l.prototype.writeFloatBE=function(e,t,r){return L(this,e,t,!1,r)},l.prototype.writeDoubleLE=function(e,t,r){return B(this,e,t,!0,r)},l.prototype.writeDoubleBE=function(e,t,r){return B(this,e,t,!1,r)},l.prototype.copy=function(e,t,r,n){if(!l.isBuffer(e))throw new TypeError("argument should be a Buffer");if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(o=t;o=n+4;r-=3)t=`_${e.slice(r-3,r)}${t}`;return`${e.slice(0,r)}${t}`}function q(e,t,r,n,o,a){if(e>r||e3?0===t||t===BigInt(0)?`>= 0${n} and < 2${n} ** ${8*(a+1)}${n}`:`>= -(2${n} ** ${8*(a+1)-1}${n}) and < 2 ** ${8*(a+1)-1}${n}`:`>= ${t}${n} and <= ${r}${n}`,new F.ERR_OUT_OF_RANGE("value",o,e)}!function(e,t,r){V(t,"offset"),void 0!==e[t]&&void 0!==e[t+r]||$(t,e.length-(r+1))}(n,o,a)}function V(e,t){if("number"!=typeof e)throw new F.ERR_INVALID_ARG_TYPE(t,"number",e)}function $(e,t,r){if(Math.floor(e)!==e)throw V(e,r),new F.ERR_OUT_OF_RANGE(r||"offset","an integer",e);if(t<0)throw new F.ERR_BUFFER_OUT_OF_BOUNDS;throw new F.ERR_OUT_OF_RANGE(r||"offset",`>= ${r?1:0} and <= ${t}`,e)}z("ERR_BUFFER_OUT_OF_BOUNDS",(function(e){return e?`${e} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),z("ERR_INVALID_ARG_TYPE",(function(e,t){return`The "${e}" argument must be of type number. Received type ${typeof t}`}),TypeError),z("ERR_OUT_OF_RANGE",(function(e,t,r){let n=`The value of "${e}" is out of range.`,o=r;return Number.isInteger(r)&&Math.abs(r)>2**32?o=U(String(r)):"bigint"==typeof r&&(o=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(o=U(o)),o+="n"),n+=` It must be ${t}. Received ${o}`,n}),RangeError);const W=/[^+/0-9A-Za-z-_]/g;function H(e,t){let r;t=t||1/0;const n=e.length;let o=null;const a=[];for(let i=0;i55295&&r<57344){if(!o){if(r>56319){(t-=3)>-1&&a.push(239,191,189);continue}if(i+1===n){(t-=3)>-1&&a.push(239,191,189);continue}o=r;continue}if(r<56320){(t-=3)>-1&&a.push(239,191,189),o=r;continue}r=65536+(o-55296<<10|r-56320)}else o&&(t-=3)>-1&&a.push(239,191,189);if(o=null,r<128){if((t-=1)<0)break;a.push(r)}else if(r<2048){if((t-=2)<0)break;a.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;a.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return a}function J(e){return n.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(W,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function K(e,t,r,n){let o;for(o=0;o=t.length||o>=e.length);++o)t[o+r]=e[o];return o}function G(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function Z(e){return e!=e}const Y=function(){const e="0123456789abcdef",t=new Array(256);for(let r=0;r<16;++r){const n=16*r;for(let o=0;o<16;++o)t[n+o]=e[r]+e[o]}return t}();function Q(e){return"undefined"==typeof BigInt?X:e}function X(){throw new Error("BigInt not supported")}},21924:(e,t,r)=>{"use strict";var n=r(40210),o=r(55559),a=o(n("String.prototype.indexOf"));e.exports=function(e,t){var r=n(e,!!t);return"function"==typeof r&&a(e,".prototype.")>-1?o(r):r}},55559:(e,t,r)=>{"use strict";var n=r(58612),o=r(40210),a=o("%Function.prototype.apply%"),i=o("%Function.prototype.call%"),s=o("%Reflect.apply%",!0)||n.call(i,a),l=o("%Object.getOwnPropertyDescriptor%",!0),u=o("%Object.defineProperty%",!0),c=o("%Math.max%");if(u)try{u({},"a",{value:1})}catch(e){u=null}e.exports=function(e){var t=s(n,i,arguments);if(l&&u){var r=l(t,"length");r.configurable&&u(t,"length",{value:1+c(0,e.length-(arguments.length-1))})}return t};var p=function(){return s(n,a,arguments)};u?u(e.exports,"apply",{value:p}):e.exports.apply=p},94184:(e,t)=>{var r;!function(){"use strict";var n={}.hasOwnProperty;function o(){for(var e=[],t=0;t{"use strict";t.parse=function(e,t){if("string"!=typeof e)throw new TypeError("argument str must be a string");var r={},n=(t||{}).decode||o,a=0;for(;a{"use strict";var n=r(11742),o={"text/plain":"Text","text/html":"Url",default:"Text"};e.exports=function(e,t){var r,a,i,s,l,u,c=!1;t||(t={}),r=t.debug||!1;try{if(i=n(),s=document.createRange(),l=document.getSelection(),(u=document.createElement("span")).textContent=e,u.style.all="unset",u.style.position="fixed",u.style.top=0,u.style.clip="rect(0, 0, 0, 0)",u.style.whiteSpace="pre",u.style.webkitUserSelect="text",u.style.MozUserSelect="text",u.style.msUserSelect="text",u.style.userSelect="text",u.addEventListener("copy",(function(n){if(n.stopPropagation(),t.format)if(n.preventDefault(),void 0===n.clipboardData){r&&console.warn("unable to use e.clipboardData"),r&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var a=o[t.format]||o.default;window.clipboardData.setData(a,e)}else n.clipboardData.clearData(),n.clipboardData.setData(t.format,e);t.onCopy&&(n.preventDefault(),t.onCopy(n.clipboardData))})),document.body.appendChild(u),s.selectNodeContents(u),l.addRange(s),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");c=!0}catch(n){r&&console.error("unable to copy using execCommand: ",n),r&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(t.format||"text",e),t.onCopy&&t.onCopy(window.clipboardData),c=!0}catch(n){r&&console.error("unable to copy using clipboardData: ",n),r&&console.error("falling back to prompt"),a=function(e){var t=(/mac os x/i.test(navigator.userAgent)?"⌘":"Ctrl")+"+C";return e.replace(/#{\s*key\s*}/g,t)}("message"in t?t.message:"Copy to clipboard: #{key}, Enter"),window.prompt(a,e)}}finally{l&&("function"==typeof l.removeRange?l.removeRange(s):l.removeAllRanges()),u&&document.body.removeChild(u),i()}return c}},95299:(e,t,r)=>{var n=r(24848);e.exports=n},83450:(e,t,r)=>{var n=r(83363);e.exports=n},66820:(e,t,r)=>{var n=r(56243);e.exports=n},5023:(e,t,r)=>{var n=r(72369);e.exports=n},90093:(e,t,r)=>{var n=r(28196);e.exports=n},3688:(e,t,r)=>{var n=r(11955);e.exports=n},83838:(e,t,r)=>{var n=r(46279);e.exports=n},15684:(e,t,r)=>{var n=r(19373);e.exports=n},99826:(e,t,r)=>{var n=r(28427);e.exports=n},84234:(e,t,r)=>{var n=r(82073);e.exports=n},65362:(e,t,r)=>{var n=r(63383);e.exports=n},32271:(e,t,r)=>{var n=r(14471);e.exports=n},91254:(e,t,r)=>{var n=r(57396);e.exports=n},43536:(e,t,r)=>{var n=r(41910);e.exports=n},37331:(e,t,r)=>{var n=r(79427);e.exports=n},68522:(e,t,r)=>{var n=r(62857);e.exports=n},73151:(e,t,r)=>{var n=r(9534);e.exports=n},99565:(e,t,r)=>{var n=r(96507);e.exports=n},45012:(e,t,r)=>{var n=r(23059);e.exports=n},78690:(e,t,r)=>{var n=r(16670);e.exports=n},25626:(e,t,r)=>{var n=r(27460);e.exports=n},80281:(e,t,r)=>{var n=r(92547);e.exports=n},40031:(e,t,r)=>{var n=r(46509);e.exports=n},54493:(e,t,r)=>{r(77971),r(53242);var n=r(54058);e.exports=n.Array.from},24034:(e,t,r)=>{r(92737);var n=r(54058);e.exports=n.Array.isArray},15367:(e,t,r)=>{r(85906);var n=r(35703);e.exports=n("Array").concat},12710:(e,t,r)=>{r(66274),r(55967);var n=r(35703);e.exports=n("Array").entries},51459:(e,t,r)=>{r(48851);var n=r(35703);e.exports=n("Array").every},6172:(e,t,r)=>{r(80290);var n=r(35703);e.exports=n("Array").fill},62383:(e,t,r)=>{r(21501);var n=r(35703);e.exports=n("Array").filter},60009:(e,t,r)=>{r(44929);var n=r(35703);e.exports=n("Array").findIndex},17671:(e,t,r)=>{r(80833);var n=r(35703);e.exports=n("Array").find},99324:(e,t,r)=>{r(2437);var n=r(35703);e.exports=n("Array").forEach},80991:(e,t,r)=>{r(97690);var n=r(35703);e.exports=n("Array").includes},8700:(e,t,r)=>{r(99076);var n=r(35703);e.exports=n("Array").indexOf},95909:(e,t,r)=>{r(66274),r(55967);var n=r(35703);e.exports=n("Array").keys},6442:(e,t,r)=>{r(75915);var n=r(35703);e.exports=n("Array").lastIndexOf},23866:(e,t,r)=>{r(68787);var n=r(35703);e.exports=n("Array").map},52999:(e,t,r)=>{r(81876);var n=r(35703);e.exports=n("Array").reduce},91876:(e,t,r)=>{r(11490);var n=r(35703);e.exports=n("Array").reverse},24900:(e,t,r)=>{r(60186);var n=r(35703);e.exports=n("Array").slice},3824:(e,t,r)=>{r(36026);var n=r(35703);e.exports=n("Array").some},2948:(e,t,r)=>{r(4115);var n=r(35703);e.exports=n("Array").sort},78209:(e,t,r)=>{r(98611);var n=r(35703);e.exports=n("Array").splice},14423:(e,t,r)=>{r(66274),r(55967);var n=r(35703);e.exports=n("Array").values},81103:(e,t,r)=>{r(95160);var n=r(54058);e.exports=n.Date.now},27700:(e,t,r)=>{r(73381);var n=r(35703);e.exports=n("Function").bind},13830:(e,t,r)=>{r(66274),r(77971);var n=r(22902);e.exports=n},91031:(e,t,r)=>{r(52595),e.exports=r(21899)},16246:(e,t,r)=>{var n=r(7046),o=r(27700),a=Function.prototype;e.exports=function(e){var t=e.bind;return e===a||n(a,e)&&t===a.bind?o:t}},56043:(e,t,r)=>{var n=r(7046),o=r(15367),a=Array.prototype;e.exports=function(e){var t=e.concat;return e===a||n(a,e)&&t===a.concat?o:t}},13160:(e,t,r)=>{var n=r(7046),o=r(51459),a=Array.prototype;e.exports=function(e){var t=e.every;return e===a||n(a,e)&&t===a.every?o:t}},80446:(e,t,r)=>{var n=r(7046),o=r(6172),a=Array.prototype;e.exports=function(e){var t=e.fill;return e===a||n(a,e)&&t===a.fill?o:t}},2480:(e,t,r)=>{var n=r(7046),o=r(62383),a=Array.prototype;e.exports=function(e){var t=e.filter;return e===a||n(a,e)&&t===a.filter?o:t}},7147:(e,t,r)=>{var n=r(7046),o=r(60009),a=Array.prototype;e.exports=function(e){var t=e.findIndex;return e===a||n(a,e)&&t===a.findIndex?o:t}},32236:(e,t,r)=>{var n=r(7046),o=r(17671),a=Array.prototype;e.exports=function(e){var t=e.find;return e===a||n(a,e)&&t===a.find?o:t}},58557:(e,t,r)=>{var n=r(7046),o=r(80991),a=r(21631),i=Array.prototype,s=String.prototype;e.exports=function(e){var t=e.includes;return e===i||n(i,e)&&t===i.includes?o:"string"==typeof e||e===s||n(s,e)&&t===s.includes?a:t}},34570:(e,t,r)=>{var n=r(7046),o=r(8700),a=Array.prototype;e.exports=function(e){var t=e.indexOf;return e===a||n(a,e)&&t===a.indexOf?o:t}},57564:(e,t,r)=>{var n=r(7046),o=r(6442),a=Array.prototype;e.exports=function(e){var t=e.lastIndexOf;return e===a||n(a,e)&&t===a.lastIndexOf?o:t}},88287:(e,t,r)=>{var n=r(7046),o=r(23866),a=Array.prototype;e.exports=function(e){var t=e.map;return e===a||n(a,e)&&t===a.map?o:t}},68025:(e,t,r)=>{var n=r(7046),o=r(52999),a=Array.prototype;e.exports=function(e){var t=e.reduce;return e===a||n(a,e)&&t===a.reduce?o:t}},59257:(e,t,r)=>{var n=r(7046),o=r(80454),a=String.prototype;e.exports=function(e){var t=e.repeat;return"string"==typeof e||e===a||n(a,e)&&t===a.repeat?o:t}},91060:(e,t,r)=>{var n=r(7046),o=r(91876),a=Array.prototype;e.exports=function(e){var t=e.reverse;return e===a||n(a,e)&&t===a.reverse?o:t}},69601:(e,t,r)=>{var n=r(7046),o=r(24900),a=Array.prototype;e.exports=function(e){var t=e.slice;return e===a||n(a,e)&&t===a.slice?o:t}},28299:(e,t,r)=>{var n=r(7046),o=r(3824),a=Array.prototype;e.exports=function(e){var t=e.some;return e===a||n(a,e)&&t===a.some?o:t}},69355:(e,t,r)=>{var n=r(7046),o=r(2948),a=Array.prototype;e.exports=function(e){var t=e.sort;return e===a||n(a,e)&&t===a.sort?o:t}},18339:(e,t,r)=>{var n=r(7046),o=r(78209),a=Array.prototype;e.exports=function(e){var t=e.splice;return e===a||n(a,e)&&t===a.splice?o:t}},71611:(e,t,r)=>{var n=r(7046),o=r(3269),a=String.prototype;e.exports=function(e){var t=e.startsWith;return"string"==typeof e||e===a||n(a,e)&&t===a.startsWith?o:t}},62774:(e,t,r)=>{var n=r(7046),o=r(13348),a=String.prototype;e.exports=function(e){var t=e.trim;return"string"==typeof e||e===a||n(a,e)&&t===a.trim?o:t}},84426:(e,t,r)=>{r(32619);var n=r(54058),o=r(79730);n.JSON||(n.JSON={stringify:JSON.stringify}),e.exports=function(e,t,r){return o(n.JSON.stringify,null,arguments)}},91018:(e,t,r)=>{r(66274),r(37501),r(55967),r(77971);var n=r(54058);e.exports=n.Map},45999:(e,t,r)=>{r(49221);var n=r(54058);e.exports=n.Object.assign},35254:(e,t,r)=>{r(53882);var n=r(54058).Object;e.exports=function(e,t){return n.create(e,t)}},7702:(e,t,r)=>{r(74979);var n=r(54058).Object,o=e.exports=function(e,t){return n.defineProperties(e,t)};n.defineProperties.sham&&(o.sham=!0)},48171:(e,t,r)=>{r(86450);var n=r(54058).Object,o=e.exports=function(e,t,r){return n.defineProperty(e,t,r)};n.defineProperty.sham&&(o.sham=!0)},73081:(e,t,r)=>{r(94366);var n=r(54058);e.exports=n.Object.entries},286:(e,t,r)=>{r(46924);var n=r(54058).Object,o=e.exports=function(e,t){return n.getOwnPropertyDescriptor(e,t)};n.getOwnPropertyDescriptor.sham&&(o.sham=!0)},92766:(e,t,r)=>{r(88482);var n=r(54058);e.exports=n.Object.getOwnPropertyDescriptors},30498:(e,t,r)=>{r(35824);var n=r(54058);e.exports=n.Object.getOwnPropertySymbols},13966:(e,t,r)=>{r(17405);var n=r(54058);e.exports=n.Object.getPrototypeOf},48494:(e,t,r)=>{r(21724);var n=r(54058);e.exports=n.Object.keys},3065:(e,t,r)=>{r(90108);var n=r(54058);e.exports=n.Object.setPrototypeOf},98430:(e,t,r)=>{r(26614);var n=r(54058);e.exports=n.Object.values},52956:(e,t,r)=>{r(47627),r(66274),r(55967),r(98881),r(4560),r(91302),r(44349),r(77971);var n=r(54058);e.exports=n.Promise},21631:(e,t,r)=>{r(11035);var n=r(35703);e.exports=n("String").includes},80454:(e,t,r)=>{r(60986);var n=r(35703);e.exports=n("String").repeat},3269:(e,t,r)=>{r(94761);var n=r(35703);e.exports=n("String").startsWith},13348:(e,t,r)=>{r(57398);var n=r(35703);e.exports=n("String").trim},57473:(e,t,r)=>{r(85906),r(55967),r(35824),r(8555),r(52615),r(21732),r(35903),r(1825),r(28394),r(45915),r(61766),r(62737),r(89911),r(74315),r(63131),r(64714),r(70659),r(69120),r(79413),r(1502);var n=r(54058);e.exports=n.Symbol},24227:(e,t,r)=>{r(66274),r(55967),r(77971),r(1825);var n=r(11477);e.exports=n.f("iterator")},32304:(e,t,r)=>{r(66274),r(55967),r(54334);var n=r(54058);e.exports=n.WeakMap},27385:(e,t,r)=>{var n=r(95299);e.exports=n},81522:(e,t,r)=>{var n=r(83450);e.exports=n},32209:(e,t,r)=>{var n=r(66820);e.exports=n},30888:(e,t,r)=>{r(9668);var n=r(5023);e.exports=n},14122:(e,t,r)=>{var n=r(90093);e.exports=n},44442:(e,t,r)=>{var n=r(3688);e.exports=n},57152:(e,t,r)=>{var n=r(83838);e.exports=n},69447:(e,t,r)=>{var n=r(15684);e.exports=n},17579:(e,t,r)=>{var n=r(99826);e.exports=n},81493:(e,t,r)=>{var n=r(84234);e.exports=n},60269:(e,t,r)=>{var n=r(65362);e.exports=n},76094:(e,t,r)=>{var n=r(32271);e.exports=n},70573:(e,t,r)=>{var n=r(91254);e.exports=n},73685:(e,t,r)=>{var n=r(43536);e.exports=n},27533:(e,t,r)=>{var n=r(37331);e.exports=n},39057:(e,t,r)=>{var n=r(68522);e.exports=n},84710:(e,t,r)=>{var n=r(73151);e.exports=n},74303:(e,t,r)=>{var n=r(99565);e.exports=n},93799:(e,t,r)=>{var n=r(45012);e.exports=n},55122:(e,t,r)=>{var n=r(78690);e.exports=n},29531:(e,t,r)=>{var n=r(25626);r(89731),r(55708),r(30014),r(88731),e.exports=n},86600:(e,t,r)=>{var n=r(80281);r(28783),r(43975),r(65799),r(45414),r(46774),r(80620),r(36172),e.exports=n},9759:(e,t,r)=>{var n=r(40031);e.exports=n},24883:(e,t,r)=>{var n=r(21899),o=r(57475),a=r(69826),i=n.TypeError;e.exports=function(e){if(o(e))return e;throw i(a(e)+" is not a function")}},174:(e,t,r)=>{var n=r(21899),o=r(24284),a=r(69826),i=n.TypeError;e.exports=function(e){if(o(e))return e;throw i(a(e)+" is not a constructor")}},11851:(e,t,r)=>{var n=r(21899),o=r(57475),a=n.String,i=n.TypeError;e.exports=function(e){if("object"==typeof e||o(e))return e;throw i("Can't set "+a(e)+" as a prototype")}},18479:e=>{e.exports=function(){}},5743:(e,t,r)=>{var n=r(21899),o=r(7046),a=n.TypeError;e.exports=function(e,t){if(o(t,e))return e;throw a("Incorrect invocation")}},96059:(e,t,r)=>{var n=r(21899),o=r(10941),a=n.String,i=n.TypeError;e.exports=function(e){if(o(e))return e;throw i(a(e)+" is not an object")}},97135:(e,t,r)=>{var n=r(95981);e.exports=n((function(){if("function"==typeof ArrayBuffer){var e=new ArrayBuffer(8);Object.isExtensible(e)&&Object.defineProperty(e,"a",{value:8})}}))},91860:(e,t,r)=>{"use strict";var n=r(89678),o=r(59413),a=r(10623);e.exports=function(e){for(var t=n(this),r=a(t),i=arguments.length,s=o(i>1?arguments[1]:void 0,r),l=i>2?arguments[2]:void 0,u=void 0===l?r:o(l,r);u>s;)t[s++]=e;return t}},56837:(e,t,r)=>{"use strict";var n=r(3610).forEach,o=r(34194)("forEach");e.exports=o?[].forEach:function(e){return n(this,e,arguments.length>1?arguments[1]:void 0)}},11354:(e,t,r)=>{"use strict";var n=r(21899),o=r(86843),a=r(78834),i=r(89678),s=r(75196),l=r(6782),u=r(24284),c=r(10623),p=r(55449),f=r(53476),h=r(22902),d=n.Array;e.exports=function(e){var t=i(e),r=u(this),n=arguments.length,m=n>1?arguments[1]:void 0,g=void 0!==m;g&&(m=o(m,n>2?arguments[2]:void 0));var v,y,b,w,E,x,_=h(t),S=0;if(!_||this==d&&l(_))for(v=c(t),y=r?new this(v):d(v);v>S;S++)x=g?m(t[S],S):t[S],p(y,S,x);else for(E=(w=f(t,_)).next,y=r?new this:[];!(b=a(E,w)).done;S++)x=g?s(w,m,[b.value,S],!0):b.value,p(y,S,x);return y.length=S,y}},31692:(e,t,r)=>{var n=r(74529),o=r(59413),a=r(10623),i=function(e){return function(t,r,i){var s,l=n(t),u=a(l),c=o(i,u);if(e&&r!=r){for(;u>c;)if((s=l[c++])!=s)return!0}else for(;u>c;c++)if((e||c in l)&&l[c]===r)return e||c||0;return!e&&-1}};e.exports={includes:i(!0),indexOf:i(!1)}},3610:(e,t,r)=>{var n=r(86843),o=r(95329),a=r(37026),i=r(89678),s=r(10623),l=r(64692),u=o([].push),c=function(e){var t=1==e,r=2==e,o=3==e,c=4==e,p=6==e,f=7==e,h=5==e||p;return function(d,m,g,v){for(var y,b,w=i(d),E=a(w),x=n(m,g),_=s(E),S=0,A=v||l,k=t?A(d,_):r||f?A(d,0):void 0;_>S;S++)if((h||S in E)&&(b=x(y=E[S],S,w),e))if(t)k[S]=b;else if(b)switch(e){case 3:return!0;case 5:return y;case 6:return S;case 2:u(k,y)}else switch(e){case 4:return!1;case 7:u(k,y)}return p?-1:o||c?c:k}};e.exports={forEach:c(0),map:c(1),filter:c(2),some:c(3),every:c(4),find:c(5),findIndex:c(6),filterReject:c(7)}},67145:(e,t,r)=>{"use strict";var n=r(79730),o=r(74529),a=r(62435),i=r(10623),s=r(34194),l=Math.min,u=[].lastIndexOf,c=!!u&&1/[1].lastIndexOf(1,-0)<0,p=s("lastIndexOf"),f=c||!p;e.exports=f?function(e){if(c)return n(u,this,arguments)||0;var t=o(this),r=i(t),s=r-1;for(arguments.length>1&&(s=l(s,a(arguments[1]))),s<0&&(s=r+s);s>=0;s--)if(s in t&&t[s]===e)return s||0;return-1}:u},50568:(e,t,r)=>{var n=r(95981),o=r(99813),a=r(53385),i=o("species");e.exports=function(e){return a>=51||!n((function(){var t=[];return(t.constructor={})[i]=function(){return{foo:1}},1!==t[e](Boolean).foo}))}},34194:(e,t,r)=>{"use strict";var n=r(95981);e.exports=function(e,t){var r=[][e];return!!r&&n((function(){r.call(null,t||function(){throw 1},1)}))}},46499:(e,t,r)=>{var n=r(21899),o=r(24883),a=r(89678),i=r(37026),s=r(10623),l=n.TypeError,u=function(e){return function(t,r,n,u){o(r);var c=a(t),p=i(c),f=s(c),h=e?f-1:0,d=e?-1:1;if(n<2)for(;;){if(h in p){u=p[h],h+=d;break}if(h+=d,e?h<0:f<=h)throw l("Reduce of empty array with no initial value")}for(;e?h>=0:f>h;h+=d)h in p&&(u=r(u,p[h],h,c));return u}};e.exports={left:u(!1),right:u(!0)}},15790:(e,t,r)=>{var n=r(21899),o=r(59413),a=r(10623),i=r(55449),s=n.Array,l=Math.max;e.exports=function(e,t,r){for(var n=a(e),u=o(t,n),c=o(void 0===r?n:r,n),p=s(l(c-u,0)),f=0;u{var n=r(95329);e.exports=n([].slice)},61388:(e,t,r)=>{var n=r(15790),o=Math.floor,a=function(e,t){var r=e.length,l=o(r/2);return r<8?i(e,t):s(e,a(n(e,0,l),t),a(n(e,l),t),t)},i=function(e,t){for(var r,n,o=e.length,a=1;a0;)e[n]=e[--n];n!==a++&&(e[n]=r)}return e},s=function(e,t,r,n){for(var o=t.length,a=r.length,i=0,s=0;i{var n=r(21899),o=r(1052),a=r(24284),i=r(10941),s=r(99813)("species"),l=n.Array;e.exports=function(e){var t;return o(e)&&(t=e.constructor,(a(t)&&(t===l||o(t.prototype))||i(t)&&null===(t=t[s]))&&(t=void 0)),void 0===t?l:t}},64692:(e,t,r)=>{var n=r(5693);e.exports=function(e,t){return new(n(e))(0===t?0:t)}},75196:(e,t,r)=>{var n=r(96059),o=r(7609);e.exports=function(e,t,r,a){try{return a?t(n(r)[0],r[1]):t(r)}catch(t){o(e,"throw",t)}}},21385:(e,t,r)=>{var n=r(99813)("iterator"),o=!1;try{var a=0,i={next:function(){return{done:!!a++}},return:function(){o=!0}};i[n]=function(){return this},Array.from(i,(function(){throw 2}))}catch(e){}e.exports=function(e,t){if(!t&&!o)return!1;var r=!1;try{var a={};a[n]=function(){return{next:function(){return{done:r=!0}}}},e(a)}catch(e){}return r}},82532:(e,t,r)=>{var n=r(95329),o=n({}.toString),a=n("".slice);e.exports=function(e){return a(o(e),8,-1)}},9697:(e,t,r)=>{var n=r(21899),o=r(22885),a=r(57475),i=r(82532),s=r(99813)("toStringTag"),l=n.Object,u="Arguments"==i(function(){return arguments}());e.exports=o?i:function(e){var t,r,n;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(r=function(e,t){try{return e[t]}catch(e){}}(t=l(e),s))?r:u?i(t):"Object"==(n=i(t))&&a(t.callee)?"Arguments":n}},38694:(e,t,r)=>{var n=r(95329)("".replace),o=String(Error("zxcasd").stack),a=/\n\s*at [^:]*:[^\n]*/,i=a.test(o);e.exports=function(e,t){if(i&&"string"==typeof e)for(;t--;)e=n(e,a,"");return e}},85616:(e,t,r)=>{"use strict";var n=r(65988).f,o=r(29290),a=r(87524),i=r(86843),s=r(5743),l=r(93091),u=r(47771),c=r(94431),p=r(55746),f=r(21647).fastKey,h=r(45402),d=h.set,m=h.getterFor;e.exports={getConstructor:function(e,t,r,u){var c=e((function(e,n){s(e,h),d(e,{type:t,index:o(null),first:void 0,last:void 0,size:0}),p||(e.size=0),null!=n&&l(n,e[u],{that:e,AS_ENTRIES:r})})),h=c.prototype,g=m(t),v=function(e,t,r){var n,o,a=g(e),i=y(e,t);return i?i.value=r:(a.last=i={index:o=f(t,!0),key:t,value:r,previous:n=a.last,next:void 0,removed:!1},a.first||(a.first=i),n&&(n.next=i),p?a.size++:e.size++,"F"!==o&&(a.index[o]=i)),e},y=function(e,t){var r,n=g(e),o=f(t);if("F"!==o)return n.index[o];for(r=n.first;r;r=r.next)if(r.key==t)return r};return a(h,{clear:function(){for(var e=g(this),t=e.index,r=e.first;r;)r.removed=!0,r.previous&&(r.previous=r.previous.next=void 0),delete t[r.index],r=r.next;e.first=e.last=void 0,p?e.size=0:this.size=0},delete:function(e){var t=this,r=g(t),n=y(t,e);if(n){var o=n.next,a=n.previous;delete r.index[n.index],n.removed=!0,a&&(a.next=o),o&&(o.previous=a),r.first==n&&(r.first=o),r.last==n&&(r.last=a),p?r.size--:t.size--}return!!n},forEach:function(e){for(var t,r=g(this),n=i(e,arguments.length>1?arguments[1]:void 0);t=t?t.next:r.first;)for(n(t.value,t.key,this);t&&t.removed;)t=t.previous},has:function(e){return!!y(this,e)}}),a(h,r?{get:function(e){var t=y(this,e);return t&&t.value},set:function(e,t){return v(this,0===e?0:e,t)}}:{add:function(e){return v(this,e=0===e?0:e,e)}}),p&&n(h,"size",{get:function(){return g(this).size}}),c},setStrong:function(e,t,r){var n=t+" Iterator",o=m(t),a=m(n);u(e,t,(function(e,t){d(this,{type:n,target:e,state:o(e),kind:t,last:void 0})}),(function(){for(var e=a(this),t=e.kind,r=e.last;r&&r.removed;)r=r.previous;return e.target&&(e.last=r=r?r.next:e.state.first)?"keys"==t?{value:r.key,done:!1}:"values"==t?{value:r.value,done:!1}:{value:[r.key,r.value],done:!1}:(e.target=void 0,{value:void 0,done:!0})}),r?"entries":"values",!r,!0),c(t)}}},8850:(e,t,r)=>{"use strict";var n=r(95329),o=r(87524),a=r(21647).getWeakData,i=r(96059),s=r(10941),l=r(5743),u=r(93091),c=r(3610),p=r(90953),f=r(45402),h=f.set,d=f.getterFor,m=c.find,g=c.findIndex,v=n([].splice),y=0,b=function(e){return e.frozen||(e.frozen=new w)},w=function(){this.entries=[]},E=function(e,t){return m(e.entries,(function(e){return e[0]===t}))};w.prototype={get:function(e){var t=E(this,e);if(t)return t[1]},has:function(e){return!!E(this,e)},set:function(e,t){var r=E(this,e);r?r[1]=t:this.entries.push([e,t])},delete:function(e){var t=g(this.entries,(function(t){return t[0]===e}));return~t&&v(this.entries,t,1),!!~t}},e.exports={getConstructor:function(e,t,r,n){var c=e((function(e,o){l(e,f),h(e,{type:t,id:y++,frozen:void 0}),null!=o&&u(o,e[n],{that:e,AS_ENTRIES:r})})),f=c.prototype,m=d(t),g=function(e,t,r){var n=m(e),o=a(i(t),!0);return!0===o?b(n).set(t,r):o[n.id]=r,e};return o(f,{delete:function(e){var t=m(this);if(!s(e))return!1;var r=a(e);return!0===r?b(t).delete(e):r&&p(r,t.id)&&delete r[t.id]},has:function(e){var t=m(this);if(!s(e))return!1;var r=a(e);return!0===r?b(t).has(e):r&&p(r,t.id)}}),o(f,r?{get:function(e){var t=m(this);if(s(e)){var r=a(e);return!0===r?b(t).get(e):r?r[t.id]:void 0}},set:function(e,t){return g(this,e,t)}}:{add:function(e){return g(this,e,!0)}}),c}}},24683:(e,t,r)=>{"use strict";var n=r(76887),o=r(21899),a=r(21647),i=r(95981),s=r(32029),l=r(93091),u=r(5743),c=r(57475),p=r(10941),f=r(90904),h=r(65988).f,d=r(3610).forEach,m=r(55746),g=r(45402),v=g.set,y=g.getterFor;e.exports=function(e,t,r){var g,b=-1!==e.indexOf("Map"),w=-1!==e.indexOf("Weak"),E=b?"set":"add",x=o[e],_=x&&x.prototype,S={};if(m&&c(x)&&(w||_.forEach&&!i((function(){(new x).entries().next()})))){var A=(g=t((function(t,r){v(u(t,A),{type:e,collection:new x}),null!=r&&l(r,t[E],{that:t,AS_ENTRIES:b})}))).prototype,k=y(e);d(["add","clear","delete","forEach","get","has","set","keys","values","entries"],(function(e){var t="add"==e||"set"==e;!(e in _)||w&&"clear"==e||s(A,e,(function(r,n){var o=k(this).collection;if(!t&&w&&!p(r))return"get"==e&&void 0;var a=o[e](0===r?0:r,n);return t?this:a}))})),w||h(A,"size",{configurable:!0,get:function(){return k(this).collection.size}})}else g=r.getConstructor(t,e,b,E),a.enable();return f(g,e,!1,!0),S[e]=g,n({global:!0,forced:!0},S),w||r.setStrong(g,e,b),g}},23489:(e,t,r)=>{var n=r(90953),o=r(31136),a=r(49677),i=r(65988);e.exports=function(e,t,r){for(var s=o(t),l=i.f,u=a.f,c=0;c{var n=r(99813)("match");e.exports=function(e){var t=/./;try{"/./"[e](t)}catch(r){try{return t[n]=!1,"/./"[e](t)}catch(e){}}return!1}},64160:(e,t,r)=>{var n=r(95981);e.exports=!n((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype}))},31046:(e,t,r)=>{"use strict";var n=r(35143).IteratorPrototype,o=r(29290),a=r(31887),i=r(90904),s=r(12077),l=function(){return this};e.exports=function(e,t,r,u){var c=t+" Iterator";return e.prototype=o(n,{next:a(+!u,r)}),i(e,c,!1,!0),s[c]=l,e}},32029:(e,t,r)=>{var n=r(55746),o=r(65988),a=r(31887);e.exports=n?function(e,t,r){return o.f(e,t,a(1,r))}:function(e,t,r){return e[t]=r,e}},31887:e=>{e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},55449:(e,t,r)=>{"use strict";var n=r(83894),o=r(65988),a=r(31887);e.exports=function(e,t,r){var i=n(t);i in e?o.f(e,i,a(0,r)):e[i]=r}},47771:(e,t,r)=>{"use strict";var n=r(76887),o=r(78834),a=r(82529),i=r(79417),s=r(57475),l=r(31046),u=r(249),c=r(88929),p=r(90904),f=r(32029),h=r(99754),d=r(99813),m=r(12077),g=r(35143),v=i.PROPER,y=i.CONFIGURABLE,b=g.IteratorPrototype,w=g.BUGGY_SAFARI_ITERATORS,E=d("iterator"),x="keys",_="values",S="entries",A=function(){return this};e.exports=function(e,t,r,i,d,g,k){l(r,t,i);var C,O,j,I=function(e){if(e===d&&M)return M;if(!w&&e in P)return P[e];switch(e){case x:case _:case S:return function(){return new r(this,e)}}return function(){return new r(this)}},N=t+" Iterator",T=!1,P=e.prototype,R=P[E]||P["@@iterator"]||d&&P[d],M=!w&&R||I(d),D="Array"==t&&P.entries||R;if(D&&(C=u(D.call(new e)))!==Object.prototype&&C.next&&(a||u(C)===b||(c?c(C,b):s(C[E])||h(C,E,A)),p(C,N,!0,!0),a&&(m[N]=A)),v&&d==_&&R&&R.name!==_&&(!a&&y?f(P,"name",_):(T=!0,M=function(){return o(R,this)})),d)if(O={values:I(_),keys:g?M:I(x),entries:I(S)},k)for(j in O)(w||T||!(j in P))&&h(P,j,O[j]);else n({target:t,proto:!0,forced:w||T},O);return a&&!k||P[E]===M||h(P,E,M,{name:d}),m[t]=M,O}},66349:(e,t,r)=>{var n=r(54058),o=r(90953),a=r(11477),i=r(65988).f;e.exports=function(e){var t=n.Symbol||(n.Symbol={});o(t,e)||i(t,e,{value:a.f(e)})}},55746:(e,t,r)=>{var n=r(95981);e.exports=!n((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},61333:(e,t,r)=>{var n=r(21899),o=r(10941),a=n.document,i=o(a)&&o(a.createElement);e.exports=function(e){return i?a.createElement(e):{}}},63281:e=>{e.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},34342:(e,t,r)=>{var n=r(2861).match(/firefox\/(\d+)/i);e.exports=!!n&&+n[1]},23321:e=>{e.exports="object"==typeof window},81046:(e,t,r)=>{var n=r(2861);e.exports=/MSIE|Trident/.test(n)},4470:(e,t,r)=>{var n=r(2861),o=r(21899);e.exports=/ipad|iphone|ipod/i.test(n)&&void 0!==o.Pebble},22749:(e,t,r)=>{var n=r(2861);e.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(n)},6049:(e,t,r)=>{var n=r(82532),o=r(21899);e.exports="process"==n(o.process)},58045:(e,t,r)=>{var n=r(2861);e.exports=/web0s(?!.*chrome)/i.test(n)},2861:(e,t,r)=>{var n=r(626);e.exports=n("navigator","userAgent")||""},53385:(e,t,r)=>{var n,o,a=r(21899),i=r(2861),s=a.process,l=a.Deno,u=s&&s.versions||l&&l.version,c=u&&u.v8;c&&(o=(n=c.split("."))[0]>0&&n[0]<4?1:+(n[0]+n[1])),!o&&i&&(!(n=i.match(/Edge\/(\d+)/))||n[1]>=74)&&(n=i.match(/Chrome\/(\d+)/))&&(o=+n[1]),e.exports=o},18938:(e,t,r)=>{var n=r(2861).match(/AppleWebKit\/(\d+)\./);e.exports=!!n&&+n[1]},35703:(e,t,r)=>{var n=r(54058);e.exports=function(e){return n[e+"Prototype"]}},56759:e=>{e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},18780:(e,t,r)=>{var n=r(95981),o=r(31887);e.exports=!n((function(){var e=Error("a");return!("stack"in e)||(Object.defineProperty(e,"stack",o(1,7)),7!==e.stack)}))},76887:(e,t,r)=>{"use strict";var n=r(21899),o=r(79730),a=r(95329),i=r(57475),s=r(49677).f,l=r(37252),u=r(54058),c=r(86843),p=r(32029),f=r(90953),h=function(e){var t=function(r,n,a){if(this instanceof t){switch(arguments.length){case 0:return new e;case 1:return new e(r);case 2:return new e(r,n)}return new e(r,n,a)}return o(e,this,arguments)};return t.prototype=e.prototype,t};e.exports=function(e,t){var r,o,d,m,g,v,y,b,w=e.target,E=e.global,x=e.stat,_=e.proto,S=E?n:x?n[w]:(n[w]||{}).prototype,A=E?u:u[w]||p(u,w,{})[w],k=A.prototype;for(d in t)r=!l(E?d:w+(x?".":"#")+d,e.forced)&&S&&f(S,d),g=A[d],r&&(v=e.noTargetGet?(b=s(S,d))&&b.value:S[d]),m=r&&v?v:t[d],r&&typeof g==typeof m||(y=e.bind&&r?c(m,n):e.wrap&&r?h(m):_&&i(m)?a(m):m,(e.sham||m&&m.sham||g&&g.sham)&&p(y,"sham",!0),p(A,d,y),_&&(f(u,o=w+"Prototype")||p(u,o,{}),p(u[o],d,m),e.real&&k&&!k[d]&&p(k,d,m)))}},95981:e=>{e.exports=function(e){try{return!!e()}catch(e){return!0}}},45602:(e,t,r)=>{var n=r(95981);e.exports=!n((function(){return Object.isExtensible(Object.preventExtensions({}))}))},79730:(e,t,r)=>{var n=r(18285),o=Function.prototype,a=o.apply,i=o.call;e.exports="object"==typeof Reflect&&Reflect.apply||(n?i.bind(a):function(){return i.apply(a,arguments)})},86843:(e,t,r)=>{var n=r(95329),o=r(24883),a=r(18285),i=n(n.bind);e.exports=function(e,t){return o(e),void 0===t?e:a?i(e,t):function(){return e.apply(t,arguments)}}},18285:(e,t,r)=>{var n=r(95981);e.exports=!n((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")}))},98308:(e,t,r)=>{"use strict";var n=r(21899),o=r(95329),a=r(24883),i=r(10941),s=r(90953),l=r(93765),u=r(18285),c=n.Function,p=o([].concat),f=o([].join),h={},d=function(e,t,r){if(!s(h,t)){for(var n=[],o=0;o{var n=r(18285),o=Function.prototype.call;e.exports=n?o.bind(o):function(){return o.apply(o,arguments)}},79417:(e,t,r)=>{var n=r(55746),o=r(90953),a=Function.prototype,i=n&&Object.getOwnPropertyDescriptor,s=o(a,"name"),l=s&&"something"===function(){}.name,u=s&&(!n||n&&i(a,"name").configurable);e.exports={EXISTS:s,PROPER:l,CONFIGURABLE:u}},95329:(e,t,r)=>{var n=r(18285),o=Function.prototype,a=o.bind,i=o.call,s=n&&a.bind(i,i);e.exports=n?function(e){return e&&s(e)}:function(e){return e&&function(){return i.apply(e,arguments)}}},626:(e,t,r)=>{var n=r(54058),o=r(21899),a=r(57475),i=function(e){return a(e)?e:void 0};e.exports=function(e,t){return arguments.length<2?i(n[e])||i(o[e]):n[e]&&n[e][t]||o[e]&&o[e][t]}},22902:(e,t,r)=>{var n=r(9697),o=r(14229),a=r(12077),i=r(99813)("iterator");e.exports=function(e){if(null!=e)return o(e,i)||o(e,"@@iterator")||a[n(e)]}},53476:(e,t,r)=>{var n=r(21899),o=r(78834),a=r(24883),i=r(96059),s=r(69826),l=r(22902),u=n.TypeError;e.exports=function(e,t){var r=arguments.length<2?l(e):t;if(a(r))return i(o(r,e));throw u(s(e)+" is not iterable")}},14229:(e,t,r)=>{var n=r(24883);e.exports=function(e,t){var r=e[t];return null==r?void 0:n(r)}},21899:(e,t,r)=>{var n=function(e){return e&&e.Math==Math&&e};e.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof r.g&&r.g)||function(){return this}()||Function("return this")()},90953:(e,t,r)=>{var n=r(95329),o=r(89678),a=n({}.hasOwnProperty);e.exports=Object.hasOwn||function(e,t){return a(o(e),t)}},27748:e=>{e.exports={}},34845:(e,t,r)=>{var n=r(21899);e.exports=function(e,t){var r=n.console;r&&r.error&&(1==arguments.length?r.error(e):r.error(e,t))}},15463:(e,t,r)=>{var n=r(626);e.exports=n("document","documentElement")},2840:(e,t,r)=>{var n=r(55746),o=r(95981),a=r(61333);e.exports=!n&&!o((function(){return 7!=Object.defineProperty(a("div"),"a",{get:function(){return 7}}).a}))},37026:(e,t,r)=>{var n=r(21899),o=r(95329),a=r(95981),i=r(82532),s=n.Object,l=o("".split);e.exports=a((function(){return!s("z").propertyIsEnumerable(0)}))?function(e){return"String"==i(e)?l(e,""):s(e)}:s},81302:(e,t,r)=>{var n=r(95329),o=r(57475),a=r(63030),i=n(Function.toString);o(a.inspectSource)||(a.inspectSource=function(e){return i(e)}),e.exports=a.inspectSource},53794:(e,t,r)=>{var n=r(10941),o=r(32029);e.exports=function(e,t){n(t)&&"cause"in t&&o(e,"cause",t.cause)}},21647:(e,t,r)=>{var n=r(76887),o=r(95329),a=r(27748),i=r(10941),s=r(90953),l=r(65988).f,u=r(10946),c=r(684),p=r(91584),f=r(99418),h=r(45602),d=!1,m=f("meta"),g=0,v=function(e){l(e,m,{value:{objectID:"O"+g++,weakData:{}}})},y=e.exports={enable:function(){y.enable=function(){},d=!0;var e=u.f,t=o([].splice),r={};r[m]=1,e(r).length&&(u.f=function(r){for(var n=e(r),o=0,a=n.length;o{var n,o,a,i=r(38019),s=r(21899),l=r(95329),u=r(10941),c=r(32029),p=r(90953),f=r(63030),h=r(44262),d=r(27748),m="Object already initialized",g=s.TypeError,v=s.WeakMap;if(i||f.state){var y=f.state||(f.state=new v),b=l(y.get),w=l(y.has),E=l(y.set);n=function(e,t){if(w(y,e))throw new g(m);return t.facade=e,E(y,e,t),t},o=function(e){return b(y,e)||{}},a=function(e){return w(y,e)}}else{var x=h("state");d[x]=!0,n=function(e,t){if(p(e,x))throw new g(m);return t.facade=e,c(e,x,t),t},o=function(e){return p(e,x)?e[x]:{}},a=function(e){return p(e,x)}}e.exports={set:n,get:o,has:a,enforce:function(e){return a(e)?o(e):n(e,{})},getterFor:function(e){return function(t){var r;if(!u(t)||(r=o(t)).type!==e)throw g("Incompatible receiver, "+e+" required");return r}}}},6782:(e,t,r)=>{var n=r(99813),o=r(12077),a=n("iterator"),i=Array.prototype;e.exports=function(e){return void 0!==e&&(o.Array===e||i[a]===e)}},1052:(e,t,r)=>{var n=r(82532);e.exports=Array.isArray||function(e){return"Array"==n(e)}},57475:e=>{e.exports=function(e){return"function"==typeof e}},24284:(e,t,r)=>{var n=r(95329),o=r(95981),a=r(57475),i=r(9697),s=r(626),l=r(81302),u=function(){},c=[],p=s("Reflect","construct"),f=/^\s*(?:class|function)\b/,h=n(f.exec),d=!f.exec(u),m=function(e){if(!a(e))return!1;try{return p(u,c,e),!0}catch(e){return!1}},g=function(e){if(!a(e))return!1;switch(i(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return d||!!h(f,l(e))}catch(e){return!0}};g.sham=!0,e.exports=!p||o((function(){var e;return m(m.call)||!m(Object)||!m((function(){e=!0}))||e}))?g:m},37252:(e,t,r)=>{var n=r(95981),o=r(57475),a=/#|\.prototype\./,i=function(e,t){var r=l[s(e)];return r==c||r!=u&&(o(t)?n(t):!!t)},s=i.normalize=function(e){return String(e).replace(a,".").toLowerCase()},l=i.data={},u=i.NATIVE="N",c=i.POLYFILL="P";e.exports=i},10941:(e,t,r)=>{var n=r(57475);e.exports=function(e){return"object"==typeof e?null!==e:n(e)}},82529:e=>{e.exports=!0},60685:(e,t,r)=>{var n=r(10941),o=r(82532),a=r(99813)("match");e.exports=function(e){var t;return n(e)&&(void 0!==(t=e[a])?!!t:"RegExp"==o(e))}},56664:(e,t,r)=>{var n=r(21899),o=r(626),a=r(57475),i=r(7046),s=r(32302),l=n.Object;e.exports=s?function(e){return"symbol"==typeof e}:function(e){var t=o("Symbol");return a(t)&&i(t.prototype,l(e))}},93091:(e,t,r)=>{var n=r(21899),o=r(86843),a=r(78834),i=r(96059),s=r(69826),l=r(6782),u=r(10623),c=r(7046),p=r(53476),f=r(22902),h=r(7609),d=n.TypeError,m=function(e,t){this.stopped=e,this.result=t},g=m.prototype;e.exports=function(e,t,r){var n,v,y,b,w,E,x,_=r&&r.that,S=!(!r||!r.AS_ENTRIES),A=!(!r||!r.IS_ITERATOR),k=!(!r||!r.INTERRUPTED),C=o(t,_),O=function(e){return n&&h(n,"normal",e),new m(!0,e)},j=function(e){return S?(i(e),k?C(e[0],e[1],O):C(e[0],e[1])):k?C(e,O):C(e)};if(A)n=e;else{if(!(v=f(e)))throw d(s(e)+" is not iterable");if(l(v)){for(y=0,b=u(e);b>y;y++)if((w=j(e[y]))&&c(g,w))return w;return new m(!1)}n=p(e,v)}for(E=n.next;!(x=a(E,n)).done;){try{w=j(x.value)}catch(e){h(n,"throw",e)}if("object"==typeof w&&w&&c(g,w))return w}return new m(!1)}},7609:(e,t,r)=>{var n=r(78834),o=r(96059),a=r(14229);e.exports=function(e,t,r){var i,s;o(e);try{if(!(i=a(e,"return"))){if("throw"===t)throw r;return r}i=n(i,e)}catch(e){s=!0,i=e}if("throw"===t)throw r;if(s)throw i;return o(i),r}},35143:(e,t,r)=>{"use strict";var n,o,a,i=r(95981),s=r(57475),l=r(29290),u=r(249),c=r(99754),p=r(99813),f=r(82529),h=p("iterator"),d=!1;[].keys&&("next"in(a=[].keys())?(o=u(u(a)))!==Object.prototype&&(n=o):d=!0),null==n||i((function(){var e={};return n[h].call(e)!==e}))?n={}:f&&(n=l(n)),s(n[h])||c(n,h,(function(){return this})),e.exports={IteratorPrototype:n,BUGGY_SAFARI_ITERATORS:d}},12077:e=>{e.exports={}},10623:(e,t,r)=>{var n=r(43057);e.exports=function(e){return n(e.length)}},66132:(e,t,r)=>{var n,o,a,i,s,l,u,c,p=r(21899),f=r(86843),h=r(49677).f,d=r(42941).set,m=r(22749),g=r(4470),v=r(58045),y=r(6049),b=p.MutationObserver||p.WebKitMutationObserver,w=p.document,E=p.process,x=p.Promise,_=h(p,"queueMicrotask"),S=_&&_.value;S||(n=function(){var e,t;for(y&&(e=E.domain)&&e.exit();o;){t=o.fn,o=o.next;try{t()}catch(e){throw o?i():a=void 0,e}}a=void 0,e&&e.enter()},m||y||v||!b||!w?!g&&x&&x.resolve?((u=x.resolve(void 0)).constructor=x,c=f(u.then,u),i=function(){c(n)}):y?i=function(){E.nextTick(n)}:(d=f(d,p),i=function(){d(n)}):(s=!0,l=w.createTextNode(""),new b(n).observe(l,{characterData:!0}),i=function(){l.data=s=!s})),e.exports=S||function(e){var t={fn:e,next:void 0};a&&(a.next=t),o||(o=t,i()),a=t}},19297:(e,t,r)=>{var n=r(21899);e.exports=n.Promise},72497:(e,t,r)=>{var n=r(53385),o=r(95981);e.exports=!!Object.getOwnPropertySymbols&&!o((function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&n&&n<41}))},28468:(e,t,r)=>{var n=r(95981),o=r(99813),a=r(82529),i=o("iterator");e.exports=!n((function(){var e=new URL("b?a=1&b=2&c=3","http://a"),t=e.searchParams,r="";return e.pathname="c%20d",t.forEach((function(e,n){t.delete("b"),r+=n+e})),a&&!e.toJSON||!t.sort||"http://a/c%20d?a=1&c=3"!==e.href||"3"!==t.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!t[i]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://тест").host||"#%D0%B1"!==new URL("http://a#б").hash||"a1c3"!==r||"x"!==new URL("http://x",void 0).host}))},38019:(e,t,r)=>{var n=r(21899),o=r(57475),a=r(81302),i=n.WeakMap;e.exports=o(i)&&/native code/.test(a(i))},69520:(e,t,r)=>{"use strict";var n=r(24883),o=function(e){var t,r;this.promise=new e((function(e,n){if(void 0!==t||void 0!==r)throw TypeError("Bad Promise constructor");t=e,r=n})),this.resolve=n(t),this.reject=n(r)};e.exports.f=function(e){return new o(e)}},14649:(e,t,r)=>{var n=r(85803);e.exports=function(e,t){return void 0===e?arguments.length<2?"":t:n(e)}},70344:(e,t,r)=>{var n=r(21899),o=r(60685),a=n.TypeError;e.exports=function(e){if(o(e))throw a("The method doesn't accept regular expressions");return e}},24420:(e,t,r)=>{"use strict";var n=r(55746),o=r(95329),a=r(78834),i=r(95981),s=r(14771),l=r(87857),u=r(36760),c=r(89678),p=r(37026),f=Object.assign,h=Object.defineProperty,d=o([].concat);e.exports=!f||i((function(){if(n&&1!==f({b:1},f(h({},"a",{enumerable:!0,get:function(){h(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},r=Symbol(),o="abcdefghijklmnopqrst";return e[r]=7,o.split("").forEach((function(e){t[e]=e})),7!=f({},e)[r]||s(f({},t)).join("")!=o}))?function(e,t){for(var r=c(e),o=arguments.length,i=1,f=l.f,h=u.f;o>i;)for(var m,g=p(arguments[i++]),v=f?d(s(g),f(g)):s(g),y=v.length,b=0;y>b;)m=v[b++],n&&!a(h,g,m)||(r[m]=g[m]);return r}:f},29290:(e,t,r)=>{var n,o=r(96059),a=r(59938),i=r(56759),s=r(27748),l=r(15463),u=r(61333),c=r(44262),p=c("IE_PROTO"),f=function(){},h=function(e){return" + + + + diff --git a/docs/openapi/annotation.json b/docs/openapi/annotation.json new file mode 100644 index 000000000..686771040 --- /dev/null +++ b/docs/openapi/annotation.json @@ -0,0 +1,5765 @@ +{ + "openapi": "3.0.2", + "info": { + "title": "Badgerdoc Annotation", + "version": "0.1.5" + }, + "paths": { + "/annotation/{task_id}": { + "post": { + "tags": [ + "Annotation" + ], + "summary": "Save annotation by user.", + "description": "Saves annotated doc (annotation) by user. For first save base\nrevision of given annotated doc should be null. \"Pages\", \"validated\"\nand \"failed_validation_pages\" arrays should not be empty at the same\ntime, because there will be nothing to save. Tenant in header is the\nname of the bucket in minIO, where annotated pages will be saved.\nPath to pages from bucket (tenant) in minIO is as follows -\nannotation / {job_id} / {file_id}. Job_id and file_id are received from\ntask entity by provided task_id in path. Also, by this path in minIO there\nwill be manifest.json file, that will contain \"pages\" field with hashes\nfor pages of only latest revisions, \"validated\"/\"failed_validation_pages\"\nfields with numbers of validated/failed_validation pages respectively.", + "operationId": "post_annotation_by_user_annotation__task_id__post", + "parameters": [ + { + "required": true, + "schema": { + "title": "Task Id", + "type": "integer" + }, + "example": 5, + "name": "task_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DocForSaveSchema" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AnnotatedDocSchema" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestErrorSchema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/annotation/{job_id}/{file_id}": { + "get": { + "tags": [ + "Annotation", + "Revision" + ], + "summary": "Get all users revisions (or pipeline revision) for particular pages.", + "operationId": "get_all_revisions_annotation__job_id___file_id__get", + "parameters": [ + { + "required": true, + "schema": { + "title": "Job Id", + "type": "integer" + }, + "name": "job_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "File Id", + "type": "integer" + }, + "name": "file_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "Page Numbers", + "minimum": 1.0, + "minItems": 1, + "uniqueItems": true, + "type": "array", + "items": { + "minimum": 1.0, + "type": "integer" + } + }, + "name": "page_numbers", + "in": "query" + }, + { + "description": "Required in case job validation type is extensive_coverage", + "required": false, + "schema": { + "title": "User Id", + "type": "string", + "description": "Required in case job validation type is extensive_coverage", + "format": "uuid" + }, + "example": "1843c251-564b-4c2f-8d42-c61fdac369a1", + "name": "user_id", + "in": "query" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "title": "Response Get All Revisions Annotation Job Id File Id Get", + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PageOutSchema" + } + } + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + }, + "post": { + "tags": [ + "Annotation" + ], + "summary": "Save annotation by pipeline.", + "description": "Saves annotated doc (annotation) by pipeline. Base revision of\ngiven annotated doc should always be null. \"Pages\", \"validated\"\nand \"failed_validation_pages\" arrays should not be empty at the\nsame time, because there will be nothing to save. Tenant in header\nis the name of the bucket in minIO, where annotated pages will\nbe saved. Path to pages from bucket (tenant) in minIO is as follows -\nannotation / {job_id} / {file_id}. Also by this path in minIO there\nwill be manifest.json file, that will contain \"pages\" field with hashes\nfor pages of only latest revisions, \"validated\"/\"failed_validation_pages\"\nfields with numbers of validated/failed_validation pages respectively.", + "operationId": "post_annotation_by_pipeline_annotation__job_id___file_id__post", + "parameters": [ + { + "required": true, + "schema": { + "title": "Job Id", + "type": "integer" + }, + "example": 3, + "name": "job_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "File Id", + "type": "integer" + }, + "example": 4, + "name": "file_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DocForSaveSchema" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AnnotatedDocSchema" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/annotation/{file_id}": { + "get": { + "tags": [ + "Annotation", + "Jobs" + ], + "summary": "Get all job_ids that have annotations for the given file_id.", + "operationId": "get_jobs_by_file_id_annotation__file_id__get", + "parameters": [ + { + "required": true, + "schema": { + "title": "File Id", + "type": "integer" + }, + "example": 4, + "name": "file_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "title": "Response Get Jobs By File Id Annotation File Id Get", + "type": "array", + "items": { + "$ref": "#/components/schemas/JobOutSchema" + } + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/annotation/{job_id}/{file_id}/latest_by_user": { + "get": { + "tags": [ + "Annotation", + "Revision" + ], + "summary": "Get latest revision made by particular user (or by pipeline) for particular pages.", + "operationId": "get_latest_revision_by_user_annotation__job_id___file_id__latest_by_user_get", + "parameters": [ + { + "required": true, + "schema": { + "title": "Job Id", + "type": "integer" + }, + "example": 3, + "name": "job_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "File Id", + "type": "integer" + }, + "example": 4, + "name": "file_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "Page Numbers", + "minimum": 1.0, + "minItems": 1, + "uniqueItems": true, + "type": "array", + "items": { + "minimum": 1.0, + "type": "integer" + } + }, + "example": [ + 1, + 3, + 4 + ], + "name": "page_numbers", + "in": "query" + }, + { + "required": false, + "schema": { + "title": "User Id", + "type": "string", + "format": "uuid" + }, + "example": "1843c251-564b-4c2f-8d42-c61fdac369a1", + "name": "user_id", + "in": "query" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "title": "Response Get Latest Revision By User Annotation Job Id File Id Latest By User Get", + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PageOutSchema" + } + } + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/annotation/{job_id}/{file_id}/{revision}": { + "get": { + "tags": [ + "Annotation", + "Revision" + ], + "summary": "Get annotation for given revision.Info will be accumulated from first revision up togiven.", + "operationId": "get_annotations_up_to_given_revision_annotation__job_id___file_id___revision__get", + "parameters": [ + { + "required": true, + "schema": { + "title": "Job Id", + "type": "integer" + }, + "example": 1, + "name": "job_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "File Id", + "type": "integer" + }, + "example": 1, + "name": "file_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "Revision", + "type": "string" + }, + "example": "latest", + "name": "revision", + "in": "path" + }, + { + "required": false, + "schema": { + "title": "Page Numbers", + "minimum": 1.0, + "minItems": 1, + "uniqueItems": true, + "type": "array", + "items": { + "minimum": 1.0, + "type": "integer" + } + }, + "example": [ + 1, + 3, + 4 + ], + "name": "page_numbers", + "in": "query" + }, + { + "description": "Required in case job validation type is extensive_coverage", + "required": false, + "schema": { + "title": "User Id", + "type": "string", + "description": "Required in case job validation type is extensive_coverage", + "format": "uuid" + }, + "example": "1843c251-564b-4c2f-8d42-c61fdac369a1", + "name": "user_id", + "in": "query" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ParticularRevisionSchema" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/annotation/{job_id}/{file_id}/changes/{revision}": { + "get": { + "tags": [ + "Annotation", + "Revision" + ], + "summary": "Get annotation for latest or particular revision.", + "operationId": "get_annotation_for_given_revision_annotation__job_id___file_id__changes__revision__get", + "parameters": [ + { + "required": true, + "schema": { + "title": "Job Id", + "type": "integer" + }, + "example": 1, + "name": "job_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "File Id", + "type": "integer" + }, + "example": 1, + "name": "file_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "Revision", + "type": "string" + }, + "example": "latest", + "name": "revision", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ParticularRevisionSchema" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/tasks/next": { + "post": { + "tags": [ + "Manual Annotation Tasks" + ], + "summary": "Get one annotation task from assigned to a user.", + "description": "Returns one annotation task from assigned to a user. Current - if\nthere is a task with the \"in_progress\" status, or new, if not.", + "operationId": "get_next_annotation_task_tasks_next_post", + "parameters": [ + { + "required": true, + "schema": { + "title": "User", + "type": "string", + "format": "uuid" + }, + "example": "40b6b526-d6f4-45e8-8af3-d26b5a404018", + "name": "user", + "in": "header" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExpandedManualAnnotationTaskSchema" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/tasks/get_previous_and_next_tasks": { + "get": { + "tags": [ + "Manual Annotation Tasks" + ], + "summary": "Get one previous and one next tasks from the one passed in", + "operationId": "get_next_and_previous_annotation_tasks_tasks_get_previous_and_next_tasks_get", + "parameters": [ + { + "required": true, + "schema": { + "title": "Task Id", + "exclusiveMinimum": 0.0, + "type": "integer" + }, + "example": 1, + "name": "task_id", + "in": "query" + }, + { + "required": true, + "schema": { + "title": "User", + "type": "string", + "format": "uuid" + }, + "example": "40b6b526-d6f4-45e8-8af3-d26b5a404018", + "name": "user", + "in": "header" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PreviousAndNextTasksSchema" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/tasks": { + "get": { + "tags": [ + "Manual Annotation Tasks" + ], + "summary": "Get a list of manual annotation tasks based on search parameters.", + "operationId": "get_tasks_tasks_get", + "parameters": [ + { + "required": false, + "schema": { + "title": "File Id", + "type": "integer" + }, + "example": 5, + "name": "file_id", + "in": "query" + }, + { + "required": false, + "schema": { + "title": "Job Id", + "type": "integer" + }, + "example": 6, + "name": "job_id", + "in": "query" + }, + { + "required": false, + "schema": { + "title": "User Id", + "type": "string", + "format": "uuid" + }, + "example": "2016a913-47f2-417d-afdb-032165b9330d", + "name": "user_id", + "in": "query" + }, + { + "required": false, + "schema": { + "title": "Deadline", + "type": "string", + "format": "date-time" + }, + "example": "2021-10-19 01:01:01", + "name": "deadline", + "in": "query" + }, + { + "required": false, + "schema": { + "title": "Task Status", + "type": "string" + }, + "example": "Ready", + "name": "task_status", + "in": "query" + }, + { + "required": false, + "schema": { + "title": "Pagination Page Size", + "maximum": 100.0, + "exclusiveMinimum": 0.0, + "type": "integer", + "default": 50 + }, + "example": 25, + "name": "pagination_page_size", + "in": "query" + }, + { + "required": false, + "schema": { + "title": "Pagination Start Page", + "exclusiveMinimum": 0.0, + "type": "integer", + "default": 1 + }, + "example": 1, + "name": "pagination_start_page", + "in": "query" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "title": "Response Get Tasks Tasks Get", + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/ExpandedManualAnnotationTaskSchema" + } + } + ] + } + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + }, + "post": { + "tags": [ + "Manual Annotation Tasks" + ], + "summary": "Save one manual annotation task.", + "operationId": "post_task_tasks_post", + "parameters": [ + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ManualAnnotationTaskInSchema" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ManualAnnotationTaskSchema" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + }, + "delete": { + "tags": [ + "Manual Annotation Tasks" + ], + "summary": "Delete batch of tasks.", + "operationId": "delete_batch_tasks_tasks_delete", + "parameters": [ + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "title": "Task Ids", + "type": "array", + "items": { + "type": "integer" + } + }, + "example": [ + 1, + 3, + 4 + ] + } + }, + "required": true + }, + "responses": { + "204": { + "description": "Successful Response" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/tasks/{task_id}/stats": { + "post": { + "tags": [ + "Manual Annotation Tasks" + ], + "summary": "Add task stats record.", + "operationId": "add_task_stats_tasks__task_id__stats_post", + "parameters": [ + { + "required": true, + "schema": { + "title": "Task Id", + "type": "integer" + }, + "name": "task_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AnnotationStatisticsInputSchema" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AnnotationStatisticsResponseSchema" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/tasks/export": { + "post": { + "tags": [ + "Manual Annotation Tasks" + ], + "summary": "Export agreement score statistics for task by user_id and date", + "operationId": "export_stats_tasks_export_post", + "parameters": [ + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExportTaskStatsInput" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/tasks/{task_id}": { + "get": { + "tags": [ + "Manual Annotation Tasks" + ], + "summary": "Get manual annotation task by id.", + "operationId": "get_task_tasks__task_id__get", + "parameters": [ + { + "required": true, + "schema": { + "title": "Task Id", + "type": "integer" + }, + "example": 1, + "name": "task_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExpandedManualAnnotationTaskSchema" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + }, + "delete": { + "tags": [ + "Manual Annotation Tasks" + ], + "summary": "Delete task by id.", + "operationId": "delete_task_tasks__task_id__delete", + "parameters": [ + { + "required": true, + "schema": { + "title": "Task Id", + "type": "integer" + }, + "example": 3, + "name": "task_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "204": { + "description": "Successful Response" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + }, + "patch": { + "tags": [ + "Manual Annotation Tasks" + ], + "summary": "Update task by id.", + "description": "Takes not required fields file_id, pages, job_id,\nuser_id or (and) is_validation. By task`s id\nin path, updates task with tasks file and returns updated task.", + "operationId": "update_task_tasks__task_id__patch", + "parameters": [ + { + "required": true, + "schema": { + "title": "Task Id", + "type": "integer" + }, + "example": 5, + "name": "task_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TaskPatchSchema" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ManualAnnotationTaskSchema" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestErrorSchema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/tasks/search": { + "post": { + "tags": [ + "Manual Annotation Tasks" + ], + "summary": "Search tasks.", + "description": "Searches and returns annotation and validation tasks data according to\nsearch request parameters filters. Supports pagination and ordering.", + "operationId": "search_tasks_tasks_search_post", + "parameters": [ + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/_BadgerdocSearch_tasks_ManualAnnotationTask_" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Page_Any_" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/tasks/{task_id}/pages_summary": { + "get": { + "tags": [ + "Manual Annotation Tasks" + ], + "summary": "Get arrays of pages, that have been validated, marked as failed, annotated and not processed in all saved revisions by task_id", + "operationId": "get_pages_info_tasks__task_id__pages_summary_get", + "parameters": [ + { + "required": true, + "schema": { + "title": "Task Id", + "type": "integer" + }, + "name": "task_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagesInfoSchema" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/tasks/{task_id}/finish": { + "post": { + "tags": [ + "Manual Annotation Tasks" + ], + "summary": "Finish task.", + "description": "Changes task status to Finished by\ngiven id.\n\nIf task was for annotation, searches for validation tasks that can\nbe unblocked (moved from 'pending' to 'ready' status) and updates\ntheir statuses.\nIf task was for validation, there are several\nactions for marked as failed or edited pages.\n\nParameter annotation_user_for_failed_pages can be assigned\nthe following values:\n\ninitial: annotation tasks will be created for user(s), who\nannotated failed pages in 'ready' status. Validation tasks will be\ncreated and distributed automatically in 'pending' status.\n\nauto: annotation tasks (in 'ready' status) and validation tasks\n(in 'pending' status) for failed pages will be created and distributed\nautomatically.\n\nuser_id: annotation task for failed pages will be created in 'ready'\nstatus for user with provided id. Validation tasks will be created\nin 'pending' status and distributed automatically. Note that, if\nvalidation type of job is hierarchical, validator in this job\ncannot be assigned as annotator for marked as failed pages\n\nParameter validation_user_for_reannotated_pages can be assigned\nthe following values:\n\nnot_required: validation for edited pages is not required\n\nauto: validation tasks for edited pages\nwill be created in 'ready' status and distributed automatically\n\nuser_id: validation task for edited pages will be created\nin 'ready' status for user with provided id. Note that,\nif validation type of job\nis not hierarchical, user cannot assign himself for validation\nof edited pages\n\nIf all tasks associated with\njob are finished, sends a request to\njob microservice to put job status to Finished and message to search\nservice via kafka to start indexation for this job.\nSaves annotated/validated pages in the file.\n\nIf all pages of the file are annotated or validated,\nthe status of the file changes accordingly.", + "operationId": "finish_task_tasks__task_id__finish_post", + "parameters": [ + { + "required": true, + "schema": { + "title": "Task Id", + "type": "integer" + }, + "example": 3, + "name": "task_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ValidationEndSchema" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ManualAnnotationTaskSchema" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestErrorSchema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/distribution": { + "post": { + "tags": [ + "Manual Annotation Tasks" + ], + "summary": "Save manual annotation tasks distribution. Distribution between users is automatic.", + "operationId": "post_tasks_distribution_post", + "parameters": [ + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TaskInfoSchema" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "title": "Response Post Tasks Distribution Post", + "type": "array", + "items": { + "$ref": "#/components/schemas/ManualAnnotationTaskSchema" + } + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/distribution/{job_id}": { + "post": { + "tags": [ + "Manual Annotation Tasks" + ], + "summary": "Distribute all remaining unassigned files and pages for given job_id.", + "operationId": "post_tasks_for_unassigned_files_distribution__job_id__post", + "parameters": [ + { + "required": true, + "schema": { + "title": "Job Id", + "type": "integer" + }, + "example": 3, + "name": "job_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "201": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "title": "Response Post Tasks For Unassigned Files Distribution Job Id Post", + "type": "array", + "items": { + "$ref": "#/components/schemas/ManualAnnotationTaskSchema" + } + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/metadata": { + "get": { + "tags": [ + "Metadata" + ], + "summary": "Get list of possible statuses of tasks.", + "operationId": "get_entities_statuses_metadata_get", + "parameters": [ + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EntitiesStatusesSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/jobs/{job_id}": { + "post": { + "tags": [ + "Jobs" + ], + "summary": "Save info about job.", + "operationId": "post_job_jobs__job_id__post", + "parameters": [ + { + "required": true, + "schema": { + "title": "Job Id", + "type": "integer" + }, + "example": 3, + "name": "job_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobInfoSchema" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + }, + "patch": { + "tags": [ + "Jobs" + ], + "summary": "Update job by job_id.", + "operationId": "update_job_jobs__job_id__patch", + "parameters": [ + { + "required": true, + "schema": { + "title": "Job Id", + "type": "integer" + }, + "example": 1, + "name": "job_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobPatchSchema" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "Successful Response" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestErrorSchema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/jobs/{job_id}/files": { + "get": { + "tags": [ + "Jobs" + ], + "summary": "Get list of files for a particular job.", + "operationId": "get_job_files_jobs__job_id__files_get", + "parameters": [ + { + "required": true, + "schema": { + "title": "Job Id", + "type": "integer" + }, + "name": "job_id", + "in": "path" + }, + { + "required": false, + "schema": { + "title": "Page Num", + "exclusiveMinimum": 0.0, + "type": "integer", + "default": 1 + }, + "name": "page_num", + "in": "query" + }, + { + "required": false, + "schema": { + "title": "Page Size", + "maximum": 100.0, + "exclusiveMinimum": 0.0, + "type": "integer", + "default": 50 + }, + "name": "page_size", + "in": "query" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobFilesInfoSchema" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/jobs/{job_id}/files/unassigned": { + "get": { + "tags": [ + "Jobs" + ], + "summary": "Get list of unassigned files by job id.", + "operationId": "get_unassigned_files_jobs__job_id__files_unassigned_get", + "parameters": [ + { + "required": true, + "schema": { + "title": "Job Id", + "type": "integer" + }, + "name": "job_id", + "in": "path" + }, + { + "required": false, + "schema": { + "title": "Page Num", + "exclusiveMinimum": 0.0, + "type": "integer", + "default": 1 + }, + "name": "page_num", + "in": "query" + }, + { + "required": false, + "schema": { + "title": "Page Size", + "maximum": 100.0, + "exclusiveMinimum": 0.0, + "type": "integer", + "default": 50 + }, + "name": "page_size", + "in": "query" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UnassignedFilesInfoSchema" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/jobs/{job_id}/start": { + "post": { + "tags": [ + "Jobs" + ], + "summary": "Start job.", + "description": "Changes status of tasks associated with\ngiven job_id to Ready and sends a request\nto job microservice to change\njob status to In Progress.", + "operationId": "start_job_jobs__job_id__start_post", + "parameters": [ + { + "required": true, + "schema": { + "title": "Job Id", + "type": "integer" + }, + "example": 3, + "name": "job_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "title": "Response Start Job Jobs Job Id Start Post", + "type": "array", + "items": { + "$ref": "#/components/schemas/ManualAnnotationTaskSchema" + } + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/jobs/{job_id}/users": { + "get": { + "tags": [ + "Jobs" + ], + "summary": "Get list of annotators ids and their overall load for job id.", + "operationId": "get_users_for_job_jobs__job_id__users_get", + "parameters": [ + { + "required": true, + "schema": { + "title": "Job Id", + "type": "integer" + }, + "example": 1, + "name": "job_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "title": "Response Get Users For Job Jobs Job Id Users Get", + "type": "array", + "items": { + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "string", + "format": "uuid" + }, + { + "type": "integer" + } + ] + } + } + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/jobs/{job_id}/categories": { + "get": { + "tags": [ + "Jobs" + ], + "summary": "Get list of categories for provided job_id", + "description": "Returns list of categories for provided job_id. Supports pagination", + "operationId": "fetch_job_categories_jobs__job_id__categories_get", + "parameters": [ + { + "required": true, + "schema": { + "title": "Job Id", + "type": "integer" + }, + "example": 1, + "name": "job_id", + "in": "path" + }, + { + "required": false, + "schema": { + "title": "Page Size", + "maximum": 100.0, + "minimum": 1.0, + "type": "integer", + "default": 50 + }, + "example": 15, + "name": "page_size", + "in": "query" + }, + { + "required": false, + "schema": { + "title": "Page Num", + "minimum": 1.0, + "type": "integer", + "default": 1 + }, + "example": 1, + "name": "page_num", + "in": "query" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Page_Union_annotation.schemas.categories.CategoryResponseSchema__str__dict__" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/jobs/{job_id}/categories/search": { + "post": { + "tags": [ + "Jobs" + ], + "summary": "Search categories for provided job_id", + "description": "Searches and returns categories data according to search request parameters\nfilters for the given {job_id}. Supports pagination and ordering.", + "operationId": "search_job_categories_jobs__job_id__categories_search_post", + "parameters": [ + { + "required": true, + "schema": { + "title": "Job Id", + "type": "integer" + }, + "example": 1, + "name": "job_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/_BadgerdocSearch_categories_Category_" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Page_Union_annotation.schemas.categories.CategoryResponseSchema__str__dict__" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/jobs": { + "get": { + "tags": [ + "Jobs" + ], + "summary": "Get info about jobs, in which provided file ids participate", + "operationId": "get_jobs_info_by_files_jobs_get", + "parameters": [ + { + "required": true, + "schema": { + "title": "File Ids", + "minimum": 1.0, + "minItems": 1, + "uniqueItems": true, + "type": "array", + "items": { + "minimum": 1.0, + "type": "integer" + } + }, + "example": [ + 1, + 3, + 4 + ], + "name": "file_ids", + "in": "query" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/jobs/{job_id}/progress": { + "get": { + "tags": [ + "Jobs" + ], + "summary": "Get amount of job's tasks in finished status and total amount of job's tasks.", + "operationId": "get_job_progress_jobs__job_id__progress_get", + "parameters": [ + { + "required": true, + "schema": { + "title": "Job Id", + "type": "integer" + }, + "example": 1, + "name": "job_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobProgressSchema" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/categories": { + "post": { + "tags": [ + "Categories" + ], + "summary": "Save new category and return saved one.", + "operationId": "save_category_categories_post", + "parameters": [ + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CategoryInputSchema" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CategoryResponseSchema" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/categories/{category_id}": { + "get": { + "tags": [ + "Categories" + ], + "summary": "Get category by id.", + "operationId": "fetch_category_categories__category_id__get", + "parameters": [ + { + "required": true, + "schema": { + "title": "Category Id", + "type": "string" + }, + "example": "1", + "name": "category_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CategoryResponseSchema" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + }, + "put": { + "tags": [ + "Categories" + ], + "summary": "Update category.", + "description": "Updates category by id and returns updated category.", + "operationId": "update_category_categories__category_id__put", + "parameters": [ + { + "required": true, + "schema": { + "title": "Category Id", + "type": "string" + }, + "example": "1", + "name": "category_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CategoryBaseSchema" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CategoryResponseSchema" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestErrorSchema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + }, + "delete": { + "tags": [ + "Categories" + ], + "summary": "Delete category by id.", + "operationId": "delete_category_categories__category_id__delete", + "parameters": [ + { + "required": true, + "schema": { + "title": "Category Id", + "type": "string" + }, + "example": "1", + "name": "category_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "204": { + "description": "Successful Response" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/categories/{category_id}/child": { + "get": { + "tags": [ + "Categories" + ], + "summary": "Get list of child categories ids for category with category_id.", + "operationId": "get_child_categories_categories__category_id__child_get", + "parameters": [ + { + "required": true, + "schema": { + "title": "Category Id", + "type": "string" + }, + "example": "Table", + "name": "category_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "title": "Response Get Child Categories Categories Category Id Child Get", + "type": "array", + "items": { + "$ref": "#/components/schemas/SubCategoriesOutSchema" + } + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/categories/search": { + "post": { + "tags": [ + "Categories" + ], + "summary": "Search categories.", + "description": "Searches and returns categories data according to search request parameters\nfilters. Supports pagination and ordering.", + "operationId": "search_categories_categories_search_post", + "parameters": [ + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/_BadgerdocSearch_categories_Category_" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Page_Union_annotation.schemas.categories.CategoryResponseSchema__str__dict__" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/revisions/{job_id}/{file_id}": { + "get": { + "tags": [ + "Revision" + ], + "summary": "Get list of all revisions for provided job_id and file_id without annotation of pages.", + "operationId": "get_revisions_without_annotation_revisions__job_id___file_id__get", + "parameters": [ + { + "required": true, + "schema": { + "title": "Job Id", + "type": "integer" + }, + "example": 1, + "name": "job_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "File Id", + "type": "integer" + }, + "example": 1, + "name": "file_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "title": "Response Get Revisions Without Annotation Revisions Job Id File Id Get", + "type": "array", + "items": { + "$ref": "#/components/schemas/AnnotatedDocSchema" + } + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + } + }, + "components": { + "schemas": { + "AnnotatedDocSchema": { + "title": "AnnotatedDocSchema", + "required": [ + "revision", + "user", + "pipeline", + "date", + "file_id", + "job_id", + "pages", + "validated", + "failed_validation_pages", + "tenant" + ], + "type": "object", + "properties": { + "revision": { + "title": "Revision", + "type": "string", + "example": "20fe52cce6a632c6eb09fdc5b3e1594f926eea69" + }, + "user": { + "title": "User", + "type": "string", + "format": "uuid", + "example": "0b0ea570-e4e8-4664-84ac-dd1122471fc5" + }, + "pipeline": { + "title": "Pipeline", + "type": "integer", + "example": 1 + }, + "date": { + "title": "Date", + "type": "string", + "format": "date-time", + "example": "2021-10-19 01:01:01" + }, + "file_id": { + "title": "File Id", + "type": "integer", + "example": 1 + }, + "job_id": { + "title": "Job Id", + "type": "integer", + "example": 1 + }, + "pages": { + "title": "Pages", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "example": { + "1": "19fe52cce6a632c6eb09fdc5b3e1594f926eea69", + "2": "adda414648714f01c1c9657646b72ebb4433c8b5" + } + }, + "validated": { + "title": "Validated", + "minimum": 1.0, + "uniqueItems": true, + "type": "array", + "items": { + "minimum": 1.0, + "type": "integer" + }, + "example": [ + 1, + 2, + 10 + ] + }, + "failed_validation_pages": { + "title": "Failed Validation Pages", + "minimum": 1.0, + "uniqueItems": true, + "type": "array", + "items": { + "minimum": 1.0, + "type": "integer" + }, + "example": [ + 3, + 4 + ] + }, + "tenant": { + "title": "Tenant", + "type": "string", + "example": "badger-doc" + }, + "task_id": { + "title": "Task Id", + "type": "integer", + "example": 2 + }, + "similar_revisions": { + "title": "Similar Revisions", + "type": "array", + "items": { + "$ref": "#/components/schemas/RevisionLink" + } + }, + "categories": { + "title": "Categories", + "uniqueItems": true, + "type": "array", + "items": { + "type": "string" + }, + "example": [ + "1", + "2" + ] + }, + "links_json": { + "title": "Links Json", + "type": "array", + "items": { + "type": "object" + }, + "example": [ + { + "to": 2, + "category": "my_category", + "type": "directional" + } + ] + } + } + }, + "AnnotationStatisticsEventEnumSchema": { + "title": "AnnotationStatisticsEventEnumSchema", + "enum": [ + "opened", + "closed" + ], + "type": "string", + "description": "An enumeration." + }, + "AnnotationStatisticsInputSchema": { + "title": "AnnotationStatisticsInputSchema", + "required": [ + "event_type" + ], + "type": "object", + "properties": { + "event_type": { + "$ref": "#/components/schemas/AnnotationStatisticsEventEnumSchema" + }, + "additional_data": { + "title": "Additional Data", + "type": "object", + "example": { + "attr1": "value1" + } + } + } + }, + "AnnotationStatisticsResponseSchema": { + "title": "AnnotationStatisticsResponseSchema", + "required": [ + "event_type", + "task_id", + "created" + ], + "type": "object", + "properties": { + "event_type": { + "$ref": "#/components/schemas/AnnotationStatisticsEventEnumSchema" + }, + "additional_data": { + "title": "Additional Data", + "type": "object", + "example": { + "attr1": "value1" + } + }, + "task_id": { + "title": "Task Id", + "type": "integer", + "example": 1 + }, + "created": { + "title": "Created", + "type": "string", + "format": "date-time", + "example": "2022-12-20 01:01:01" + }, + "updated": { + "title": "Updated", + "type": "string", + "format": "date-time", + "example": "2022-12-20 01:01:01" + } + } + }, + "BadRequestErrorSchema": { + "title": "BadRequestErrorSchema", + "required": [ + "detail" + ], + "type": "object", + "properties": { + "detail": { + "title": "Detail", + "type": "string" + } + }, + "example": { + "detail": "Bad request." + } + }, + "CategoryBaseSchema": { + "title": "CategoryBaseSchema", + "required": [ + "name", + "type" + ], + "type": "object", + "properties": { + "name": { + "title": "Name", + "type": "string", + "example": "Title" + }, + "parent": { + "title": "Parent", + "type": "string", + "example": "null" + }, + "metadata": { + "title": "Metadata", + "type": "object", + "example": { + "color": "blue" + } + }, + "type": { + "$ref": "#/components/schemas/CategoryTypeSchema" + }, + "editor": { + "title": "Editor", + "type": "string", + "example": "http://editor/" + }, + "data_attributes": { + "title": "Data Attributes", + "type": "array", + "items": { + "type": "object" + }, + "example": [ + { + "attr_1": "value_1" + }, + { + "attr_2": "value_2" + } + ] + } + } + }, + "CategoryInputSchema": { + "title": "CategoryInputSchema", + "required": [ + "name", + "type" + ], + "type": "object", + "properties": { + "name": { + "title": "Name", + "type": "string", + "example": "Title" + }, + "parent": { + "title": "Parent", + "type": "string", + "example": "null" + }, + "metadata": { + "title": "Metadata", + "type": "object", + "example": { + "color": "blue" + } + }, + "type": { + "$ref": "#/components/schemas/CategoryTypeSchema" + }, + "editor": { + "title": "Editor", + "type": "string", + "example": "http://editor/" + }, + "data_attributes": { + "title": "Data Attributes", + "type": "array", + "items": { + "type": "object" + }, + "example": [ + { + "attr_1": "value_1" + }, + { + "attr_2": "value_2" + } + ] + }, + "id": { + "title": "Id", + "type": "string", + "description": "If id is not provided, generates it as a UUID.", + "example": "my_category" + } + } + }, + "CategoryResponseSchema": { + "title": "CategoryResponseSchema", + "required": [ + "name", + "type" + ], + "type": "object", + "properties": { + "name": { + "title": "Name", + "type": "string", + "example": "Title" + }, + "parent": { + "title": "Parent", + "type": "string", + "example": "null" + }, + "metadata": { + "title": "Metadata", + "type": "object", + "example": { + "color": "blue" + } + }, + "type": { + "$ref": "#/components/schemas/CategoryTypeSchema" + }, + "editor": { + "title": "Editor", + "type": "string", + "example": "http://editor/" + }, + "data_attributes": { + "title": "Data Attributes", + "type": "array", + "items": { + "type": "object" + }, + "example": [ + { + "attr_1": "value_1" + }, + { + "attr_2": "value_2" + } + ] + }, + "id": { + "title": "Id", + "type": "string", + "description": "If id is not provided, generates it as a UUID.", + "example": "my_category" + }, + "parents": { + "title": "Parents", + "type": "array", + "items": { + "type": "object" + } + }, + "is_leaf": { + "title": "Is Leaf", + "type": "boolean" + } + } + }, + "CategoryTypeSchema": { + "title": "CategoryTypeSchema", + "enum": [ + "box", + "link", + "segmentation", + "document", + "document_link" + ], + "type": "string", + "description": "An enumeration." + }, + "ConnectionErrorSchema": { + "title": "ConnectionErrorSchema", + "required": [ + "detail" + ], + "type": "object", + "properties": { + "detail": { + "title": "Detail", + "type": "string" + } + }, + "example": { + "detail": "Error: Connection error." + } + }, + "DocForSaveSchema": { + "title": "DocForSaveSchema", + "type": "object", + "properties": { + "base_revision": { + "title": "Base Revision", + "type": "string", + "example": "20fe52cce6a632c6eb09fdc5b3e1594f926eea69" + }, + "user": { + "title": "User", + "type": "string", + "format": "uuid", + "example": "b0ac6d8c-7b31-4570-a634-c92b07c9e566" + }, + "pipeline": { + "title": "Pipeline", + "type": "integer", + "example": 1 + }, + "pages": { + "title": "Pages", + "type": "array", + "items": { + "$ref": "#/components/schemas/PageSchema" + } + }, + "validated": { + "title": "Validated", + "minimum": 1.0, + "uniqueItems": true, + "type": "array", + "items": { + "minimum": 1.0, + "type": "integer" + }, + "example": [ + 1, + 2, + 10 + ] + }, + "failed_validation_pages": { + "title": "Failed Validation Pages", + "minimum": 1.0, + "uniqueItems": true, + "type": "array", + "items": { + "minimum": 1.0, + "type": "integer" + }, + "example": [ + 3, + 4 + ] + }, + "similar_revisions": { + "title": "Similar Revisions", + "type": "array", + "items": { + "$ref": "#/components/schemas/RevisionLink" + } + }, + "categories": { + "title": "Categories", + "uniqueItems": true, + "type": "array", + "items": { + "type": "string" + }, + "example": [ + "1", + "2" + ] + }, + "links_json": { + "title": "Links Json", + "type": "array", + "items": { + "type": "object" + }, + "example": [ + { + "to": 2, + "category": "my_category", + "type": "directional" + } + ] + } + } + }, + "EntitiesStatusesSchema": { + "title": "EntitiesStatusesSchema", + "type": "object", + "properties": { + "task_statuses": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TaskStatusEnumSchema" + }, + "default": [ + "Pending", + "Ready", + "In Progress", + "Finished" + ] + } + } + }, + "ExpandedManualAnnotationTaskSchema": { + "title": "ExpandedManualAnnotationTaskSchema", + "required": [ + "id", + "pages", + "user", + "file", + "job" + ], + "type": "object", + "properties": { + "id": { + "title": "Id", + "type": "integer", + "example": 4 + }, + "status": { + "allOf": [ + { + "$ref": "#/components/schemas/TaskStatusEnumSchema" + } + ], + "default": "Pending", + "example": "Pending" + }, + "pages": { + "title": "Pages", + "minimum": 1.0, + "minItems": 1, + "uniqueItems": true, + "type": "array", + "items": { + "minimum": 1.0, + "type": "integer" + }, + "example": [ + 1, + 2, + 3 + ] + }, + "user": { + "$ref": "#/components/schemas/UserSchema" + }, + "is_validation": { + "title": "Is Validation", + "type": "boolean", + "default": false, + "example": false + }, + "deadline": { + "title": "Deadline", + "type": "string", + "format": "date-time", + "example": "2021-10-19 01:01:01" + }, + "file": { + "$ref": "#/components/schemas/NameSchema" + }, + "job": { + "$ref": "#/components/schemas/NameSchema" + } + } + }, + "ExportTaskStatsInput": { + "title": "ExportTaskStatsInput", + "required": [ + "user_ids", + "date_from" + ], + "type": "object", + "properties": { + "user_ids": { + "title": "User Ids", + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "example": [ + "e20af190-0f05-4cd8-ad51-811bfb19ad71" + ] + }, + "date_from": { + "title": "Date From", + "type": "string", + "format": "date-time", + "example": "2020-12-20 01:01:01" + }, + "date_to": { + "title": "Date To", + "type": "string", + "format": "date-time", + "example": "2025-12-20 01:01:01" + } + } + }, + "FileInfoSchema": { + "title": "FileInfoSchema", + "required": [ + "id", + "status" + ], + "type": "object", + "properties": { + "id": { + "title": "Id", + "type": "integer", + "example": 1 + }, + "status": { + "$ref": "#/components/schemas/FileStatusEnumSchema" + } + } + }, + "FileStatusEnumSchema": { + "title": "FileStatusEnumSchema", + "enum": [ + "Pending", + "Annotated", + "Validated" + ], + "type": "string", + "description": "An enumeration." + }, + "HTTPValidationError": { + "title": "HTTPValidationError", + "type": "object", + "properties": { + "detail": { + "title": "Detail", + "type": "array", + "items": { + "$ref": "#/components/schemas/ValidationError" + } + } + } + }, + "JobFilesInfoSchema": { + "title": "JobFilesInfoSchema", + "required": [ + "tenant", + "job_id", + "total_objects", + "current_page", + "page_size", + "files" + ], + "type": "object", + "properties": { + "tenant": { + "title": "Tenant", + "type": "string", + "example": "test" + }, + "job_id": { + "title": "Job Id", + "type": "integer", + "example": 1 + }, + "total_objects": { + "title": "Total Objects", + "type": "integer", + "example": 10 + }, + "current_page": { + "title": "Current Page", + "type": "integer", + "example": 1 + }, + "page_size": { + "title": "Page Size", + "type": "integer", + "example": 50 + }, + "files": { + "title": "Files", + "type": "array", + "items": { + "$ref": "#/components/schemas/FileInfoSchema" + } + } + } + }, + "JobInfoSchema": { + "title": "JobInfoSchema", + "required": [ + "callback_url", + "annotators", + "validators", + "owners", + "files", + "datasets", + "categories", + "job_type" + ], + "type": "object", + "properties": { + "callback_url": { + "title": "Callback Url", + "type": "string", + "example": "http://jobs/jobs/1" + }, + "name": { + "title": "Name", + "type": "string", + "example": "job_name" + }, + "annotators": { + "title": "Annotators", + "uniqueItems": true, + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "example": [ + "b44156f8-e634-48a6-b5f3-c8b1462a2d67", + "f0474853-f733-41c0-b897-90b788b822e3" + ] + }, + "validators": { + "title": "Validators", + "uniqueItems": true, + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "example": [ + "b44156f8-e634-48a6-b5f3-c8b1462a2d67", + "f0474853-f733-41c0-b897-90b788b822e3" + ] + }, + "owners": { + "title": "Owners", + "uniqueItems": true, + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "example": [ + "b44156f8-e634-48a6-b5f3-c8b1462a2d67", + "f0474853-f733-41c0-b897-90b788b822e3" + ] + }, + "validation_type": { + "allOf": [ + { + "$ref": "#/components/schemas/ValidationSchema" + } + ], + "default": "cross", + "example": "cross" + }, + "files": { + "title": "Files", + "uniqueItems": true, + "type": "array", + "items": { + "type": "integer" + }, + "example": [ + 1, + 2, + 3 + ] + }, + "datasets": { + "title": "Datasets", + "uniqueItems": true, + "type": "array", + "items": { + "type": "integer" + }, + "example": [ + 1, + 2, + 3 + ] + }, + "is_auto_distribution": { + "title": "Is Auto Distribution", + "type": "boolean", + "default": false, + "example": false + }, + "categories": { + "title": "Categories", + "uniqueItems": true, + "type": "array", + "items": { + "type": "string" + }, + "example": [ + "2", + "1" + ] + }, + "deadline": { + "title": "Deadline", + "type": "string", + "format": "date-time", + "example": "2021-10-19 01:01:01" + }, + "job_type": { + "$ref": "#/components/schemas/JobTypeEnumSchema" + }, + "extensive_coverage": { + "title": "Extensive Coverage", + "type": "integer", + "default": 1, + "example": 1 + } + } + }, + "JobOutSchema": { + "title": "JobOutSchema", + "required": [ + "job_id", + "is_manual" + ], + "type": "object", + "properties": { + "job_id": { + "title": "Job Id", + "type": "integer", + "example": 1 + }, + "is_manual": { + "title": "Is Manual", + "type": "boolean", + "example": true + } + } + }, + "JobPatchSchema": { + "title": "JobPatchSchema", + "type": "object", + "properties": { + "callback_url": { + "title": "Callback Url", + "type": "string", + "example": "http://jobs/jobs/1" + }, + "name": { + "title": "Name", + "type": "string", + "example": "job_name" + }, + "annotators": { + "title": "Annotators", + "uniqueItems": true, + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "example": [ + "f0474853-f733-41c0-b897-90b788b822e3" + ] + }, + "validators": { + "title": "Validators", + "uniqueItems": true, + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "example": [ + "b44156f8-e634-48a6-b5f3-c8b1462a2d67" + ] + }, + "owners": { + "title": "Owners", + "uniqueItems": true, + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "example": [ + "b44156f8-e634-48a6-b5f3-c8b1462a2d67" + ] + }, + "files": { + "title": "Files", + "uniqueItems": true, + "type": "array", + "items": { + "type": "integer" + }, + "example": [ + 1, + 2, + 3 + ] + }, + "datasets": { + "title": "Datasets", + "uniqueItems": true, + "type": "array", + "items": { + "type": "integer" + }, + "example": [ + 1, + 2, + 3 + ] + }, + "categories": { + "title": "Categories", + "uniqueItems": true, + "type": "array", + "items": { + "type": "string" + }, + "example": [ + "2", + "1" + ] + }, + "deadline": { + "title": "Deadline", + "type": "string", + "format": "date-time", + "example": "2021-10-19 01:01:01" + }, + "extensive_coverage": { + "title": "Extensive Coverage", + "type": "integer", + "example": 1 + } + } + }, + "JobProgressSchema": { + "title": "JobProgressSchema", + "required": [ + "finished", + "total" + ], + "type": "object", + "properties": { + "finished": { + "title": "Finished", + "type": "integer", + "example": 1 + }, + "total": { + "title": "Total", + "type": "integer", + "example": 1 + } + } + }, + "JobTypeEnumSchema": { + "title": "JobTypeEnumSchema", + "enum": [ + "ExtractionJob", + "ExtractionWithAnnotationJob", + "AnnotationJob", + "ImportJob" + ], + "type": "string", + "description": "An enumeration." + }, + "ManualAnnotationTaskInSchema": { + "title": "ManualAnnotationTaskInSchema", + "required": [ + "file_id", + "pages", + "job_id", + "user_id" + ], + "type": "object", + "properties": { + "file_id": { + "title": "File Id", + "type": "integer", + "example": 2 + }, + "pages": { + "title": "Pages", + "minimum": 1.0, + "minItems": 1, + "uniqueItems": true, + "type": "array", + "items": { + "minimum": 1.0, + "type": "integer" + }, + "example": [ + 1, + 2, + 3 + ] + }, + "job_id": { + "title": "Job Id", + "type": "integer", + "example": 3 + }, + "user_id": { + "title": "User Id", + "type": "string", + "format": "uuid", + "example": "4e9c5839-f63b-49c8-b918-614b87813e53" + }, + "is_validation": { + "title": "Is Validation", + "type": "boolean", + "default": false, + "example": false + }, + "deadline": { + "title": "Deadline", + "type": "string", + "format": "date-time", + "example": "2021-10-19 01:01:01" + } + } + }, + "ManualAnnotationTaskSchema": { + "title": "ManualAnnotationTaskSchema", + "required": [ + "id", + "file_id", + "pages", + "job_id", + "user_id" + ], + "type": "object", + "properties": { + "id": { + "title": "Id", + "type": "integer", + "example": 4 + }, + "status": { + "allOf": [ + { + "$ref": "#/components/schemas/TaskStatusEnumSchema" + } + ], + "default": "Pending", + "example": "Pending" + }, + "file_id": { + "title": "File Id", + "type": "integer", + "example": 2 + }, + "pages": { + "title": "Pages", + "minimum": 1.0, + "minItems": 1, + "uniqueItems": true, + "type": "array", + "items": { + "minimum": 1.0, + "type": "integer" + }, + "example": [ + 1, + 2, + 3 + ] + }, + "job_id": { + "title": "Job Id", + "type": "integer", + "example": 3 + }, + "user_id": { + "title": "User Id", + "type": "string", + "format": "uuid", + "example": "4e9c5839-f63b-49c8-b918-614b87813e53" + }, + "is_validation": { + "title": "Is Validation", + "type": "boolean", + "default": false, + "example": false + }, + "deadline": { + "title": "Deadline", + "type": "string", + "format": "date-time", + "example": "2021-10-19 01:01:01" + } + } + }, + "NameSchema": { + "title": "NameSchema", + "required": [ + "id" + ], + "type": "object", + "properties": { + "id": { + "title": "Id", + "type": "integer", + "example": 1 + }, + "name": { + "title": "Name", + "type": "string", + "example": "NameOfJobOrFile" + } + } + }, + "NotFoundErrorSchema": { + "title": "NotFoundErrorSchema", + "required": [ + "detail" + ], + "type": "object", + "properties": { + "detail": { + "title": "Detail", + "type": "string" + } + }, + "example": { + "detail": "Resource was not found." + } + }, + "PageOutSchema": { + "title": "PageOutSchema", + "required": [ + "page_num", + "size", + "objs", + "revision", + "user_id", + "pipeline", + "date" + ], + "type": "object", + "properties": { + "page_num": { + "title": "Page Num", + "minimum": 1.0, + "type": "integer", + "example": 2 + }, + "size": { + "title": "Size", + "type": "object", + "additionalProperties": { + "type": "number" + }, + "example": { + "width": 10.2, + "height": 123.34 + } + }, + "objs": { + "title": "Objs", + "type": "array", + "items": { + "type": "object" + }, + "example": [ + { + "id": 2, + "type": "string", + "original_annotation_id": "int", + "segmentation": { + "segment": "string" + }, + "bbox": [ + 10.2, + 123.34, + 34.2, + 43.4 + ], + "links": [ + { + "category_id": "1", + "to": 2, + "page_num": 2 + } + ], + "text": "text in object", + "category": "3", + "data": "string", + "children": [ + 1, + 2, + 3 + ] + }, + { + "id": 3, + "type": "string", + "segmentation": { + "segment": "string" + }, + "tokens": [ + "token-string1", + "token-string2", + "token-string3" + ], + "links": [ + { + "category_id": "1", + "to": 2, + "page_num": 3 + } + ], + "text": "text in object", + "category": "3", + "data": "string", + "children": [ + 1, + 2, + 3 + ] + } + ] + }, + "revision": { + "title": "Revision", + "type": "string", + "example": "20fe52cce6a632c6eb09fdc5b3e1594f926eea69" + }, + "user_id": { + "title": "User Id", + "type": "string", + "format": "uuid", + "example": "c1c76433-5bfb-4c4a-a5b5-93c66fbfe376" + }, + "pipeline": { + "title": "Pipeline", + "type": "integer", + "example": 2 + }, + "date": { + "title": "Date", + "type": "string", + "format": "date-time", + "example": "2021-10-19 01:01:01" + }, + "is_validated": { + "title": "Is Validated", + "type": "boolean", + "default": false, + "example": false + }, + "categories": { + "title": "Categories", + "uniqueItems": true, + "type": "array", + "items": { + "type": "string" + }, + "example": [ + "1", + "2" + ] + } + } + }, + "PageSchema": { + "title": "PageSchema", + "required": [ + "page_num", + "size", + "objs" + ], + "type": "object", + "properties": { + "page_num": { + "title": "Page Num", + "minimum": 1.0, + "type": "integer", + "example": 2 + }, + "size": { + "title": "Size", + "type": "object", + "additionalProperties": { + "type": "number" + }, + "example": { + "width": 10.2, + "height": 123.34 + } + }, + "objs": { + "title": "Objs", + "type": "array", + "items": { + "type": "object" + }, + "example": [ + { + "id": 2, + "type": "string", + "original_annotation_id": "int", + "segmentation": { + "segment": "string" + }, + "bbox": [ + 10.2, + 123.34, + 34.2, + 43.4 + ], + "links": [ + { + "category_id": "1", + "to": 2, + "page_num": 2 + } + ], + "text": "text in object", + "category": "3", + "data": "string", + "children": [ + 1, + 2, + 3 + ] + }, + { + "id": 3, + "type": "string", + "segmentation": { + "segment": "string" + }, + "tokens": [ + "token-string1", + "token-string2", + "token-string3" + ], + "links": [ + { + "category_id": "1", + "to": 2, + "page_num": 3 + } + ], + "text": "text in object", + "category": "3", + "data": "string", + "children": [ + 1, + 2, + 3 + ] + } + ] + } + } + }, + "Page_Any_": { + "title": "Page[Any]", + "required": [ + "pagination", + "data" + ], + "type": "object", + "properties": { + "pagination": { + "$ref": "#/components/schemas/PaginationOut" + }, + "data": { + "title": "Data", + "type": "array", + "items": {} + } + }, + "description": "Abstract base class for generic types.\n\nA generic type is typically declared by inheriting from\nthis class parameterized with one or more type variables.\nFor example, a generic mapping type might be defined as::\n\n class Mapping(Generic[KT, VT]):\n def __getitem__(self, key: KT) -> VT:\n ...\n # Etc.\n\nThis class can then be used as follows::\n\n def lookup_name(mapping: Mapping[KT, VT], key: KT, default: VT) -> VT:\n try:\n return mapping[key]\n except KeyError:\n return default" + }, + "Page_Union_annotation.schemas.categories.CategoryResponseSchema__str__dict__": { + "title": "Page[Union[annotation.schemas.categories.CategoryResponseSchema, str, dict]]", + "required": [ + "pagination", + "data" + ], + "type": "object", + "properties": { + "pagination": { + "$ref": "#/components/schemas/PaginationOut" + }, + "data": { + "title": "Data", + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/CategoryResponseSchema" + }, + { + "type": "string" + }, + { + "type": "object" + } + ] + } + } + }, + "description": "Abstract base class for generic types.\n\nA generic type is typically declared by inheriting from\nthis class parameterized with one or more type variables.\nFor example, a generic mapping type might be defined as::\n\n class Mapping(Generic[KT, VT]):\n def __getitem__(self, key: KT) -> VT:\n ...\n # Etc.\n\nThis class can then be used as follows::\n\n def lookup_name(mapping: Mapping[KT, VT], key: KT, default: VT) -> VT:\n try:\n return mapping[key]\n except KeyError:\n return default" + }, + "PagesInfoSchema": { + "title": "PagesInfoSchema", + "required": [ + "validated", + "failed_validation_pages", + "annotated_pages", + "not_processed" + ], + "type": "object", + "properties": { + "validated": { + "title": "Validated", + "uniqueItems": true, + "type": "array", + "items": { + "type": "integer" + }, + "example": [ + 1, + 2, + 3 + ] + }, + "failed_validation_pages": { + "title": "Failed Validation Pages", + "uniqueItems": true, + "type": "array", + "items": { + "type": "integer" + }, + "example": [ + 4, + 5 + ] + }, + "annotated_pages": { + "title": "Annotated Pages", + "uniqueItems": true, + "type": "array", + "items": { + "type": "integer" + }, + "example": [ + 1, + 2, + 3, + 4 + ] + }, + "not_processed": { + "title": "Not Processed", + "uniqueItems": true, + "type": "array", + "items": { + "type": "integer" + }, + "example": [ + 6 + ] + } + } + }, + "Pagination": { + "title": "Pagination", + "required": [ + "page_size" + ], + "type": "object", + "properties": { + "page_num": { + "title": "Page Num", + "exclusiveMinimum": 0.0, + "type": "integer", + "default": 1 + }, + "page_size": { + "$ref": "#/components/schemas/_FilterPagesize" + } + } + }, + "PaginationOut": { + "title": "PaginationOut", + "required": [ + "page_size", + "min_pages_left", + "total", + "has_more" + ], + "type": "object", + "properties": { + "page_num": { + "title": "Page Num", + "exclusiveMinimum": 0.0, + "type": "integer", + "default": 1 + }, + "page_size": { + "$ref": "#/components/schemas/_FilterPagesize" + }, + "min_pages_left": { + "title": "Min Pages Left", + "type": "integer" + }, + "total": { + "title": "Total", + "type": "integer" + }, + "has_more": { + "title": "Has More", + "type": "boolean" + } + } + }, + "ParticularRevisionSchema": { + "title": "ParticularRevisionSchema", + "required": [ + "revision", + "user", + "pipeline", + "date", + "pages" + ], + "type": "object", + "properties": { + "revision": { + "title": "Revision", + "type": "string", + "example": "20fe52cce6a632c6eb09fdc5b3e1594f926eea69" + }, + "user": { + "title": "User", + "type": "string", + "format": "uuid", + "example": "c7311267-fdfd-4ef1-be44-160d3dd819ca" + }, + "pipeline": { + "title": "Pipeline", + "type": "integer", + "example": 1 + }, + "date": { + "title": "Date", + "type": "string", + "format": "date-time", + "example": "2021-10-19 01:01:01" + }, + "pages": { + "title": "Pages", + "type": "array", + "items": { + "$ref": "#/components/schemas/PageSchema" + } + }, + "validated": { + "title": "Validated", + "minimum": 1.0, + "type": "array", + "items": { + "minimum": 1.0, + "type": "integer" + }, + "example": [ + 2 + ] + }, + "failed_validation_pages": { + "title": "Failed Validation Pages", + "minimum": 1.0, + "type": "array", + "items": { + "minimum": 1.0, + "type": "integer" + }, + "example": [] + }, + "similar_revisions": { + "title": "Similar Revisions", + "type": "array", + "items": { + "$ref": "#/components/schemas/RevisionLink" + } + }, + "categories": { + "title": "Categories", + "uniqueItems": true, + "type": "array", + "items": { + "type": "string" + }, + "example": [ + "1", + "2" + ] + }, + "links_json": { + "title": "Links Json", + "type": "array", + "items": { + "type": "object" + }, + "example": [ + { + "to": 2, + "category": "my_category", + "type": "directional" + } + ] + } + } + }, + "PreviousAndNextTasksSchema": { + "title": "PreviousAndNextTasksSchema", + "type": "object", + "properties": { + "previous_task": { + "$ref": "#/components/schemas/ManualAnnotationTaskSchema" + }, + "next_task": { + "$ref": "#/components/schemas/ManualAnnotationTaskSchema" + } + } + }, + "RevisionLink": { + "title": "RevisionLink", + "required": [ + "revision", + "job_id", + "file_id", + "label" + ], + "type": "object", + "properties": { + "revision": { + "title": "Revision", + "type": "string", + "example": "20fe52cce6a632c6eb09fdc5b3e1594f926eea69" + }, + "job_id": { + "title": "Job Id", + "type": "integer", + "example": 1 + }, + "file_id": { + "title": "File Id", + "type": "integer", + "example": 1 + }, + "label": { + "title": "Label", + "type": "string", + "example": "similar" + } + } + }, + "SubCategoriesOutSchema": { + "title": "SubCategoriesOutSchema", + "required": [ + "id" + ], + "type": "object", + "properties": { + "id": { + "title": "Id", + "type": "string", + "example": "123" + } + } + }, + "TaskInfoSchema": { + "title": "TaskInfoSchema", + "required": [ + "user_ids", + "files", + "datasets", + "job_id" + ], + "type": "object", + "properties": { + "user_ids": { + "title": "User Ids", + "minItems": 1, + "uniqueItems": true, + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "example": [ + "b44156f8-e634-48a6-b5f3-c8b1462a2d67", + "f0474853-f733-41c0-b897-90b788b822e3" + ] + }, + "files": { + "title": "Files", + "uniqueItems": true, + "type": "array", + "items": { + "type": "integer" + }, + "example": [ + 1, + 2, + 3 + ] + }, + "datasets": { + "title": "Datasets", + "uniqueItems": true, + "type": "array", + "items": { + "type": "integer" + }, + "example": [ + 1, + 2, + 3 + ] + }, + "job_id": { + "title": "Job Id", + "type": "integer", + "example": 3 + }, + "deadline": { + "title": "Deadline", + "type": "string", + "format": "date-time", + "example": "2021-10-19 01:01:01" + } + } + }, + "TaskPatchSchema": { + "title": "TaskPatchSchema", + "type": "object", + "properties": { + "file_id": { + "title": "File Id", + "type": "integer", + "example": 2 + }, + "pages": { + "title": "Pages", + "minimum": 1.0, + "minItems": 1, + "uniqueItems": true, + "type": "array", + "items": { + "minimum": 1.0, + "type": "integer" + }, + "example": [ + 1, + 2, + 3 + ] + }, + "job_id": { + "title": "Job Id", + "type": "integer", + "example": 3 + }, + "user_id": { + "title": "User Id", + "type": "string", + "format": "uuid", + "example": "4e9c5839-f63b-49c8-b918-614b87813e53" + }, + "is_validation": { + "title": "Is Validation", + "type": "boolean", + "example": false + }, + "deadline": { + "title": "Deadline", + "type": "string", + "format": "date-time", + "example": "2021-10-19 01:01:01" + } + } + }, + "TaskStatusEnumSchema": { + "title": "TaskStatusEnumSchema", + "enum": [ + "Pending", + "Ready", + "In Progress", + "Finished" + ], + "type": "string", + "description": "An enumeration." + }, + "UnassignedFileSchema": { + "title": "UnassignedFileSchema", + "required": [ + "id", + "pages_to_annotate", + "pages_to_validate" + ], + "type": "object", + "properties": { + "id": { + "title": "Id", + "type": "integer", + "example": 1 + }, + "pages_to_annotate": { + "title": "Pages To Annotate", + "minimum": 1.0, + "uniqueItems": true, + "type": "array", + "items": { + "minimum": 1.0, + "type": "integer" + }, + "example": [ + 1, + 2, + 3 + ] + }, + "pages_to_validate": { + "title": "Pages To Validate", + "minimum": 1.0, + "uniqueItems": true, + "type": "array", + "items": { + "minimum": 1.0, + "type": "integer" + }, + "example": [ + 1, + 2, + 3 + ] + } + } + }, + "UnassignedFilesInfoSchema": { + "title": "UnassignedFilesInfoSchema", + "required": [ + "tenant", + "job_id", + "total_objects", + "current_page", + "page_size", + "unassigned_files" + ], + "type": "object", + "properties": { + "tenant": { + "title": "Tenant", + "type": "string", + "example": "test" + }, + "job_id": { + "title": "Job Id", + "type": "integer", + "example": 1 + }, + "total_objects": { + "title": "Total Objects", + "type": "integer", + "example": 1 + }, + "current_page": { + "title": "Current Page", + "type": "integer", + "example": 1 + }, + "page_size": { + "title": "Page Size", + "type": "integer", + "example": 50 + }, + "unassigned_files": { + "title": "Unassigned Files", + "type": "array", + "items": { + "$ref": "#/components/schemas/UnassignedFileSchema" + } + } + } + }, + "UserSchema": { + "title": "UserSchema", + "required": [ + "id" + ], + "type": "object", + "properties": { + "id": { + "title": "Id", + "type": "string", + "format": "uuid", + "example": "3082242e-15e3-4e18-aad0-e3bf182b8550" + }, + "name": { + "title": "Name", + "type": "string", + "example": "user_login" + } + } + }, + "ValidationEndSchema": { + "title": "ValidationEndSchema", + "type": "object", + "properties": { + "annotation_user_for_failed_pages": { + "title": "Annotation User For Failed Pages", + "type": "string", + "example": "initial" + }, + "validation_user_for_reannotated_pages": { + "title": "Validation User For Reannotated Pages", + "type": "string", + "example": "auto" + } + } + }, + "ValidationError": { + "title": "ValidationError", + "required": [ + "loc", + "msg", + "type" + ], + "type": "object", + "properties": { + "loc": { + "title": "Location", + "type": "array", + "items": { + "type": "string" + } + }, + "msg": { + "title": "Message", + "type": "string" + }, + "type": { + "title": "Error Type", + "type": "string" + } + } + }, + "ValidationSchema": { + "title": "ValidationSchema", + "enum": [ + "cross", + "hierarchical", + "validation only", + "extensive_coverage" + ], + "type": "string", + "description": "An enumeration." + }, + "_BadgerdocSearch_categories_Category_": { + "title": "_BadgerdocSearch[categories_Category]", + "type": "object", + "properties": { + "pagination": { + "$ref": "#/components/schemas/Pagination" + }, + "filters": { + "title": "Filters", + "type": "array", + "items": { + "$ref": "#/components/schemas/_Filters_categories_Category_" + } + }, + "sorting": { + "title": "Sorting", + "type": "array", + "items": { + "$ref": "#/components/schemas/_Sorts_categories_Category_" + } + } + }, + "description": "Abstract base class for generic types.\n\nA generic type is typically declared by inheriting from\nthis class parameterized with one or more type variables.\nFor example, a generic mapping type might be defined as::\n\n class Mapping(Generic[KT, VT]):\n def __getitem__(self, key: KT) -> VT:\n ...\n # Etc.\n\nThis class can then be used as follows::\n\n def lookup_name(mapping: Mapping[KT, VT], key: KT, default: VT) -> VT:\n try:\n return mapping[key]\n except KeyError:\n return default" + }, + "_BadgerdocSearch_tasks_ManualAnnotationTask_": { + "title": "_BadgerdocSearch[tasks_ManualAnnotationTask]", + "type": "object", + "properties": { + "pagination": { + "$ref": "#/components/schemas/Pagination" + }, + "filters": { + "title": "Filters", + "type": "array", + "items": { + "$ref": "#/components/schemas/_Filters_tasks_ManualAnnotationTask_" + } + }, + "sorting": { + "title": "Sorting", + "type": "array", + "items": { + "$ref": "#/components/schemas/_Sorts_tasks_ManualAnnotationTask_" + } + } + }, + "description": "Abstract base class for generic types.\n\nA generic type is typically declared by inheriting from\nthis class parameterized with one or more type variables.\nFor example, a generic mapping type might be defined as::\n\n class Mapping(Generic[KT, VT]):\n def __getitem__(self, key: KT) -> VT:\n ...\n # Etc.\n\nThis class can then be used as follows::\n\n def lookup_name(mapping: Mapping[KT, VT], key: KT, default: VT) -> VT:\n try:\n return mapping[key]\n except KeyError:\n return default" + }, + "_FilterOperations": { + "title": "_FilterOperations", + "enum": [ + "is_null", + "is_not_null", + "eq", + "ne", + "gt", + "lt", + "ge", + "le", + "like", + "ilike", + "not_ilike", + "in", + "not_in", + "any", + "not_any", + "match", + "distinct", + "parent", + "parents_recursive", + "children", + "children_recursive" + ], + "type": "string", + "description": "An enumeration." + }, + "_FilterPagesize": { + "title": "_FilterPagesize", + "enum": [ + 15, + 30, + 50, + 80, + 100 + ], + "type": "integer", + "description": "An enumeration." + }, + "_Filters_categories_Category_": { + "title": "_Filters[categories_Category]", + "required": [ + "field", + "operator" + ], + "type": "object", + "properties": { + "field": { + "$ref": "#/components/schemas/categories_Category" + }, + "operator": { + "$ref": "#/components/schemas/_FilterOperations" + }, + "value": { + "title": "Value" + } + } + }, + "_Filters_tasks_ManualAnnotationTask_": { + "title": "_Filters[tasks_ManualAnnotationTask]", + "required": [ + "field", + "operator" + ], + "type": "object", + "properties": { + "field": { + "$ref": "#/components/schemas/tasks_ManualAnnotationTask" + }, + "operator": { + "$ref": "#/components/schemas/_FilterOperations" + }, + "value": { + "title": "Value" + } + } + }, + "_SortDirection": { + "title": "_SortDirection", + "enum": [ + "asc", + "desc" + ], + "type": "string", + "description": "An enumeration." + }, + "_Sorts_categories_Category_": { + "title": "_Sorts[categories_Category]", + "required": [ + "field", + "direction" + ], + "type": "object", + "properties": { + "field": { + "$ref": "#/components/schemas/categories_Category" + }, + "direction": { + "$ref": "#/components/schemas/_SortDirection" + } + } + }, + "_Sorts_tasks_ManualAnnotationTask_": { + "title": "_Sorts[tasks_ManualAnnotationTask]", + "required": [ + "field", + "direction" + ], + "type": "object", + "properties": { + "field": { + "$ref": "#/components/schemas/tasks_ManualAnnotationTask" + }, + "direction": { + "$ref": "#/components/schemas/_SortDirection" + } + } + }, + "categories_Category": { + "title": "categories_Category", + "enum": [ + "id", + "name", + "parent", + "type", + "editor", + "tree" + ], + "type": "string", + "description": "An enumeration." + }, + "tasks_ManualAnnotationTask": { + "title": "tasks_ManualAnnotationTask", + "enum": [ + "id", + "file_id", + "job_id", + "user_id", + "is_validation", + "status", + "deadline", + "stats.task_id", + "stats.event_type", + "stats.created", + "stats.updated", + "stats.additional_data", + "agreement_metrics.task_from", + "agreement_metrics.task_to", + "agreement_metrics.agreement_metric" + ], + "type": "string", + "description": "An enumeration." + } + }, + "securitySchemes": { + "TenantDependencyDocs": { + "type": "http", + "scheme": "bearer" + } + } + }, + "tags": [ + { + "name": "Manual Annotation Tasks", + "description": "Actions associated with manual annotation tasks." + }, + { + "name": "Jobs", + "description": "Actions associated with jobs." + }, + { + "name": "Annotation", + "description": "Actions associated with annotation." + }, + { + "name": "Revision", + "description": "Actions associated with revisions." + }, + { + "name": "Categories", + "description": "Actions associated with categories." + }, + { + "name": "Files", + "description": "Actions associated with files." + }, + { + "name": "Metadata", + "description": "Get list of possible entities statuses." + } + ] +} diff --git a/docs/openapi/assets.json b/docs/openapi/assets.json new file mode 100644 index 000000000..a405e98c2 --- /dev/null +++ b/docs/openapi/assets.json @@ -0,0 +1,1791 @@ +{ + "openapi": "3.0.2", + "info": { + "title": "assets", + "version": "0.1.7" + }, + "paths": { + "/download": { + "get": { + "tags": [ + "minio" + ], + "summary": "Gets File From Minio With Original Content-Type", + "description": "Takes an id file and a bucket name and returns streaming file with\ncorresponding content-type.\n\n Args:\n\n id: int id of a file in minio\n bucket: a bucket name in minio\n original: determines file format. \"false\" for converted,\n and \"true\" for original\n\n Returns:\n\n Streaming file", + "operationId": "gets_file_from_minio_with_original_content_type_download_get", + "parameters": [ + { + "required": true, + "schema": { + "title": "File Id", + "type": "integer" + }, + "name": "file_id", + "in": "query" + }, + { + "required": false, + "schema": { + "title": "Original", + "type": "boolean", + "default": false + }, + "name": "original", + "in": "query" + }, + { + "required": false, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/download/thumbnail": { + "get": { + "tags": [ + "minio" + ], + "summary": "Get Thumbnail Of Original File In Jpg Format", + "operationId": "get_thumbnail_of_original_file_in_jpg_format_download_thumbnail_get", + "parameters": [ + { + "required": true, + "schema": { + "title": "File Id", + "type": "integer" + }, + "name": "file_id", + "in": "query" + }, + { + "required": false, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/download/piece": { + "get": { + "tags": [ + "minio" + ], + "summary": "Get Image Content With Provided Bbox", + "operationId": "get_image_content_with_provided_bbox_download_piece_get", + "parameters": [ + { + "required": true, + "schema": { + "title": "File Id", + "minimum": 1.0, + "type": "integer" + }, + "example": 42, + "name": "file_id", + "in": "query" + }, + { + "required": true, + "schema": { + "title": "Bbox", + "type": "array", + "items": [ + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + }, + { + "type": "number" + } + ] + }, + "example": [ + 100, + 100, + 200, + 200 + ], + "name": "bbox", + "in": "query" + }, + { + "required": true, + "schema": { + "title": "Page Number", + "minimum": 1.0, + "type": "integer" + }, + "example": 1, + "name": "page_number", + "in": "query" + }, + { + "required": false, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/bucket": { + "post": { + "tags": [ + "minio" + ], + "summary": "Creates New Bucket In Minio", + "description": "Creates bucket into Minio. If bucket exists HTTPException will be\nraised with status code 400. Status code 400 will be raised as well\nif bucket name is less than 3 characters or name is invalid.\n\n Args:\n\n name: name for a new bucket\n\n Returns:\n\n result for creating bucket\n\n Raises:\n\n HTTPException status 400", + "operationId": "creates_new_bucket_in_minio_bucket_post", + "parameters": [ + { + "required": false, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Bucket" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/files/search": { + "post": { + "tags": [ + "files" + ], + "summary": "Searches For Files", + "description": "Allows getting files metadata with filters, sorts and pagination.\n\n Args:\n\n request: a request to get files data, schema for this request\n generated automatically.\n\n Returns:\n\n an array of files metadata", + "operationId": "searches_for_files_files_search_post", + "parameters": [ + { + "required": false, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/_BadgerdocSearch_files_FileObject_" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "title": "Response Searches For Files Files Search Post", + "anyOf": [ + { + "$ref": "#/components/schemas/Page_FileResponse_" + }, + { + "$ref": "#/components/schemas/Page_Any_" + } + ] + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/files": { + "put": { + "tags": [ + "files" + ], + "summary": "Updates File'S Data After Preprocessing", + "operationId": "updates_file_s_data_after_preprocessing_files_put", + "parameters": [ + { + "required": false, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PreprocessResponse" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FileResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + }, + "post": { + "tags": [ + "files" + ], + "summary": "Uploads Files Into Minio Bucket", + "description": "Provides uploading many files. Files are form-data.\nUploaded file goes to Minio storage with changed name and then\nfrom the storage metadata about these files goes to a database.\n\n Args:\n\n x_current_tenant: current bucket in minio\n files: list of files to be uploaded\n\n Returns:\n\n Array of objects, each object contains fields: file_name,\n id, action, status and message. For example:\n\n [\n {\n \"file_name\": \"A17_FlightPlan.pdf\",\n \"id\": 1,\n \"action\": \"upload\",\n \"status\": true,\n \"message\": \"Successfully uploaded\"\n }\n ]\n\n Raises:\n\n HTTPException 404 code if bucket does not exist or 400 if bucket name\n less than 3 characters", + "operationId": "uploads_files_into_minio_bucket_files_post", + "parameters": [ + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "$ref": "#/components/schemas/Body_uploads_files_into_minio_bucket_files_post" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "title": "Response Uploads Files Into Minio Bucket Files Post", + "type": "array", + "items": { + "$ref": "#/components/schemas/ActionResponse" + } + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + }, + "delete": { + "tags": [ + "files" + ], + "summary": "Removes Files From Minio Bucket", + "description": "Deletes objects from minio storage and then their metadata from database.\nIf file does not exist in the bucket, then it will be skipped. The result for\neach file will be written into resulting dict.\n\n Args:\n\n objects: list of object ids to be deleted\n\n Returns:\n\n Array of objects that contain a result for each element in objects arg\n\n Raises:\n\n HTTPException 404 code if bucket does not exist or 400 if bucket name\n less than 3 characters", + "operationId": "removes_files_from_minio_bucket_files_delete", + "parameters": [ + { + "required": false, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MinioObjects" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "title": "Response Removes Files From Minio Bucket Files Delete", + "type": "array", + "items": { + "$ref": "#/components/schemas/ActionResponse" + } + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/datasets/search": { + "post": { + "tags": [ + "datasets" + ], + "summary": "Searches For Datasets", + "description": "Allows getting datasets data with filters, sorts and pagination.\n\n Args:\n\n request: a request to get datasets data, schema for this request\n generated automatically.\n\n Returns:\n\n an array of datasets data", + "operationId": "searches_for_datasets_datasets_search_post", + "parameters": [ + { + "required": false, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/_BadgerdocSearch_datasets_Datasets_" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "title": "Response Searches For Datasets Datasets Search Post", + "anyOf": [ + { + "$ref": "#/components/schemas/Page_DatasetResponse_" + }, + { + "$ref": "#/components/schemas/Page_Any_" + } + ] + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/datasets": { + "post": { + "tags": [ + "datasets" + ], + "summary": "Creates New Dataset", + "description": "Creates a new dataset object in database. If dataset with given name is already exists\nthen HTTPException 400 will be raised.\n\n Args:\n\n item: dataset model, has only \"name\" field which is str\n\n Returns:\n\n a message with a result of creating a dataset\n\n Raises:\n\n HTTPException 400 if dataset already exists", + "operationId": "creates_new_dataset_datasets_post", + "parameters": [ + { + "required": false, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Dataset" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + }, + "delete": { + "tags": [ + "datasets" + ], + "summary": "Removes Dataset By Its Name", + "description": "Deletes a dataset with a given name from a database. If that dataset does not exist\nin a database, then HTTPException 404 will be raised.\n\n Args:\n\n item: dataset model, has only \"name\" field which is str\n\n Returns:\n\n a message with a result of removing a dataset\n\n Raises:\n\n HTTPException 404 if dataset does not exist", + "operationId": "removes_dataset_by_its_name_datasets_delete", + "parameters": [ + { + "required": false, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Dataset" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/datasets/{dataset}/files/search": { + "post": { + "tags": [ + "datasets" + ], + "summary": "Searches For Files Inside Selected Dataset", + "description": "Takes a dataset name and returns all files metadata with this dataset.\nEvery object will be represented as dict.\nIf dataset with that doesn't exist HTTPException 404 will be raised.\n\n Args:\n\n dataset: str name of a Dataset's object\n\n Returns:\n\n List of metadata for all files that have relation\n with provided dataset.\n\n Raises:\n\n HTTPException 404 if dataset doesn't exist", + "operationId": "searches_for_files_inside_selected_dataset_datasets__dataset__files_search_post", + "parameters": [ + { + "required": true, + "schema": { + "title": "Dataset", + "type": "string" + }, + "name": "dataset", + "in": "path" + }, + { + "required": false, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/_BadgerdocSearch_files_FileObject_" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "title": "Response Searches For Files Inside Selected Dataset Datasets Dataset Files Search Post", + "anyOf": [ + { + "$ref": "#/components/schemas/Page_FileResponse_" + }, + { + "$ref": "#/components/schemas/Page_Any_" + } + ] + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/datasets/{dataset_id}/files": { + "get": { + "tags": [ + "datasets" + ], + "summary": "Get All Files By Dataset Id", + "operationId": "get_all_files_by_dataset_id_datasets__dataset_id__files_get", + "parameters": [ + { + "required": true, + "schema": { + "title": "Dataset Id", + "type": "integer" + }, + "name": "dataset_id", + "in": "path" + }, + { + "required": false, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "title": "Response Get All Files By Dataset Id Datasets Dataset Id Files Get", + "type": "array", + "items": { + "$ref": "#/components/schemas/FileResponse" + } + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/datasets/bonds/search": { + "post": { + "tags": [ + "bonds" + ], + "summary": "Gets Pairs Dataset Name - File Id", + "description": "Takes every bounded pair dataset-file and returns them.\n\n Args:\n\n request: a request to get bonds with a pagination.\n\n Returns:\n\n an array of bonds dataset-file", + "operationId": "gets_pairs_Dataset_Name___File_Id_datasets_bonds_search_post", + "parameters": [ + { + "required": false, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BaseSearch" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Page_AssociationResponse_" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/datasets/bonds": { + "post": { + "tags": [ + "bonds" + ], + "summary": "Bounds Array Of Files To A Dataset", + "description": "Bounds file objects to a given dataset. If dataset does not exist HTTPException\n404 will be raised. For each file result will be written into resulting dict.\nIf file doesn't exist or already bounded to that dataset it will be skipped.\n\n Args:\n\n name: str name of a dataset\n objects: list of file ids\n\n\n Returns:\n\n Array that contains result of bounding for each element\n\n Raises:\n\n HTTPException 404 if dataset does not exist", + "operationId": "bounds_array_of_files_to_a_dataset_datasets_bonds_post", + "parameters": [ + { + "required": false, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FilesToDataset" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "title": "Response Bounds Array Of Files To A Dataset Datasets Bonds Post", + "type": "array", + "items": { + "$ref": "#/components/schemas/ActionResponse" + } + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + }, + "delete": { + "tags": [ + "bonds" + ], + "summary": "Removes Array Of Files From Dataset", + "description": "Unbound file objects with a given dataset. If dataset does not exist HTTPException\n404 will be raised. For each file result will be written into resulting dict.\nIf file doesn't exist or not bounded to that dataset it will be skipped.\n\n Args:\n\n item: FilesToDataset model that contains:\n objects: list of file ids\n name: str name of a dataset\n\n Returns:\n\n Array that contains result of un-bounding for each element\n\n Raises:\n\n HTTPException 404 if dataset does not exist", + "operationId": "removes_array_of_files_from_dataset_datasets_bonds_delete", + "parameters": [ + { + "required": false, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FilesToDataset" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "title": "Response Removes Array Of Files From Dataset Datasets Bonds Delete", + "type": "array", + "items": { + "$ref": "#/components/schemas/ActionResponse" + } + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/s3_upload": { + "post": { + "tags": [ + "s_3" + ], + "summary": "Downloads Files From S3", + "description": "Provides uploading many files from one s3 bucket to MinIO\n\nArgs:\n\n access_key_id: storage access key\n secret_access_key: storage secret access key\n storage_url: storage endpoint. Example: \"http://localhost:9000\"\n bucket_s3: s3 storage bucket name from where files to be downloaded\n files_keys: list of files keys, paths to the file in s3 storage.\n bucket_storage: bucket in MinIO storage where files should be\n uploaded", + "operationId": "downloads_files_from_s3_s3_upload_post", + "parameters": [ + { + "required": false, + "schema": { + "title": "Storage Url", + "type": "string" + }, + "name": "storage_url", + "in": "query" + }, + { + "required": false, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/S3Data" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "title": "Response Downloads Files From S3 S3 Upload Post", + "type": "array", + "items": { + "$ref": "#/components/schemas/ActionResponse" + } + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + } + }, + "components": { + "schemas": { + "ActionResponse": { + "title": "ActionResponse", + "required": [ + "action", + "status", + "message" + ], + "type": "object", + "properties": { + "file_name": { + "title": "File Name", + "type": "string" + }, + "id": { + "title": "Id", + "type": "integer" + }, + "action": { + "title": "Action", + "type": "string" + }, + "status": { + "title": "Status", + "type": "boolean" + }, + "message": { + "title": "Message", + "type": "string" + } + } + }, + "AssociationResponse": { + "title": "AssociationResponse", + "required": [ + "dataset_name", + "file_id" + ], + "type": "object", + "properties": { + "dataset_name": { + "title": "Dataset Name", + "type": "string" + }, + "file_id": { + "title": "File Id", + "type": "integer" + } + } + }, + "BaseSearch": { + "title": "BaseSearch", + "type": "object", + "properties": { + "pagination": { + "$ref": "#/components/schemas/Pagination" + } + } + }, + "Body_uploads_files_into_minio_bucket_files_post": { + "title": "Body_uploads_files_into_minio_bucket_files_post", + "required": [ + "files" + ], + "type": "object", + "properties": { + "files": { + "title": "Files", + "type": "array", + "items": { + "type": "string", + "format": "binary" + } + } + } + }, + "Bucket": { + "title": "Bucket", + "required": [ + "name" + ], + "type": "object", + "properties": { + "name": { + "title": "Name", + "type": "string" + } + } + }, + "Dataset": { + "title": "Dataset", + "required": [ + "name" + ], + "type": "object", + "properties": { + "name": { + "title": "Name", + "type": "string" + } + } + }, + "DatasetResponse": { + "title": "DatasetResponse", + "required": [ + "id", + "name", + "created" + ], + "type": "object", + "properties": { + "id": { + "title": "Id", + "type": "integer" + }, + "name": { + "title": "Name", + "type": "string" + }, + "count": { + "title": "Count", + "type": "integer" + }, + "created": { + "title": "Created", + "type": "string", + "format": "date-time" + } + } + }, + "FileProcessingStatus": { + "title": "FileProcessingStatus", + "enum": [ + "uploading", + "uploaded", + "preprocessing in progress", + "preprocessed", + "failed" + ], + "type": "string", + "description": "An enumeration." + }, + "FileProcessingStatusForUpdate": { + "title": "FileProcessingStatusForUpdate", + "enum": [ + "preprocessing in progress", + "preprocessed", + "failed" + ], + "type": "string", + "description": "An enumeration." + }, + "FileResponse": { + "title": "FileResponse", + "required": [ + "id", + "original_name", + "bucket", + "size_in_bytes", + "content_type", + "last_modified", + "status", + "path", + "datasets" + ], + "type": "object", + "properties": { + "id": { + "title": "Id", + "type": "integer" + }, + "original_name": { + "title": "Original Name", + "type": "string" + }, + "bucket": { + "title": "Bucket", + "type": "string" + }, + "size_in_bytes": { + "title": "Size In Bytes", + "type": "integer" + }, + "extension": { + "title": "Extension", + "type": "string" + }, + "original_ext": { + "title": "Original Ext", + "type": "string" + }, + "content_type": { + "title": "Content Type", + "type": "string" + }, + "pages": { + "title": "Pages", + "type": "integer" + }, + "last_modified": { + "title": "Last Modified", + "type": "string", + "format": "date-time" + }, + "status": { + "$ref": "#/components/schemas/FileProcessingStatus" + }, + "path": { + "title": "Path", + "type": "string" + }, + "datasets": { + "title": "Datasets", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "FilesToDataset": { + "title": "FilesToDataset", + "required": [ + "name", + "objects" + ], + "type": "object", + "properties": { + "name": { + "title": "Name", + "type": "string" + }, + "objects": { + "title": "Objects", + "type": "array", + "items": { + "type": "integer" + } + } + } + }, + "HTTPValidationError": { + "title": "HTTPValidationError", + "type": "object", + "properties": { + "detail": { + "title": "Detail", + "type": "array", + "items": { + "$ref": "#/components/schemas/ValidationError" + } + } + } + }, + "MinioObjects": { + "title": "MinioObjects", + "required": [ + "objects" + ], + "type": "object", + "properties": { + "objects": { + "title": "Objects", + "type": "array", + "items": { + "type": "integer" + } + } + } + }, + "Page_Any_": { + "title": "Page[Any]", + "required": [ + "pagination", + "data" + ], + "type": "object", + "properties": { + "pagination": { + "$ref": "#/components/schemas/PaginationOut" + }, + "data": { + "title": "Data", + "type": "array", + "items": {} + } + }, + "description": "Abstract base class for generic types.\n\nA generic type is typically declared by inheriting from\nthis class parameterized with one or more type variables.\nFor example, a generic mapping type might be defined as::\n\n class Mapping(Generic[KT, VT]):\n def __getitem__(self, key: KT) -> VT:\n ...\n # Etc.\n\nThis class can then be used as follows::\n\n def lookup_name(mapping: Mapping[KT, VT], key: KT, default: VT) -> VT:\n try:\n return mapping[key]\n except KeyError:\n return default" + }, + "Page_AssociationResponse_": { + "title": "Page[AssociationResponse]", + "required": [ + "pagination", + "data" + ], + "type": "object", + "properties": { + "pagination": { + "$ref": "#/components/schemas/PaginationOut" + }, + "data": { + "title": "Data", + "type": "array", + "items": { + "$ref": "#/components/schemas/AssociationResponse" + } + } + }, + "description": "Abstract base class for generic types.\n\nA generic type is typically declared by inheriting from\nthis class parameterized with one or more type variables.\nFor example, a generic mapping type might be defined as::\n\n class Mapping(Generic[KT, VT]):\n def __getitem__(self, key: KT) -> VT:\n ...\n # Etc.\n\nThis class can then be used as follows::\n\n def lookup_name(mapping: Mapping[KT, VT], key: KT, default: VT) -> VT:\n try:\n return mapping[key]\n except KeyError:\n return default" + }, + "Page_DatasetResponse_": { + "title": "Page[DatasetResponse]", + "required": [ + "pagination", + "data" + ], + "type": "object", + "properties": { + "pagination": { + "$ref": "#/components/schemas/PaginationOut" + }, + "data": { + "title": "Data", + "type": "array", + "items": { + "$ref": "#/components/schemas/DatasetResponse" + } + } + }, + "description": "Abstract base class for generic types.\n\nA generic type is typically declared by inheriting from\nthis class parameterized with one or more type variables.\nFor example, a generic mapping type might be defined as::\n\n class Mapping(Generic[KT, VT]):\n def __getitem__(self, key: KT) -> VT:\n ...\n # Etc.\n\nThis class can then be used as follows::\n\n def lookup_name(mapping: Mapping[KT, VT], key: KT, default: VT) -> VT:\n try:\n return mapping[key]\n except KeyError:\n return default" + }, + "Page_FileResponse_": { + "title": "Page[FileResponse]", + "required": [ + "pagination", + "data" + ], + "type": "object", + "properties": { + "pagination": { + "$ref": "#/components/schemas/PaginationOut" + }, + "data": { + "title": "Data", + "type": "array", + "items": { + "$ref": "#/components/schemas/FileResponse" + } + } + }, + "description": "Abstract base class for generic types.\n\nA generic type is typically declared by inheriting from\nthis class parameterized with one or more type variables.\nFor example, a generic mapping type might be defined as::\n\n class Mapping(Generic[KT, VT]):\n def __getitem__(self, key: KT) -> VT:\n ...\n # Etc.\n\nThis class can then be used as follows::\n\n def lookup_name(mapping: Mapping[KT, VT], key: KT, default: VT) -> VT:\n try:\n return mapping[key]\n except KeyError:\n return default" + }, + "Pagination": { + "title": "Pagination", + "required": [ + "page_size" + ], + "type": "object", + "properties": { + "page_num": { + "title": "Page Num", + "exclusiveMinimum": 0.0, + "type": "integer", + "default": 1 + }, + "page_size": { + "$ref": "#/components/schemas/_FilterPagesize" + } + } + }, + "PaginationOut": { + "title": "PaginationOut", + "required": [ + "page_size", + "min_pages_left", + "total", + "has_more" + ], + "type": "object", + "properties": { + "page_num": { + "title": "Page Num", + "exclusiveMinimum": 0.0, + "type": "integer", + "default": 1 + }, + "page_size": { + "$ref": "#/components/schemas/_FilterPagesize" + }, + "min_pages_left": { + "title": "Min Pages Left", + "type": "integer" + }, + "total": { + "title": "Total", + "type": "integer" + }, + "has_more": { + "title": "Has More", + "type": "boolean" + } + } + }, + "PreprocessResponse": { + "title": "PreprocessResponse", + "required": [ + "file", + "status" + ], + "type": "object", + "properties": { + "file": { + "title": "File", + "type": "integer" + }, + "status": { + "$ref": "#/components/schemas/FileProcessingStatusForUpdate" + } + } + }, + "S3Data": { + "title": "S3Data", + "required": [ + "access_key_id", + "secret_access_key", + "bucket_s3", + "files_keys" + ], + "type": "object", + "properties": { + "access_key_id": { + "title": "Access Key Id", + "type": "string" + }, + "secret_access_key": { + "title": "Secret Access Key", + "type": "string" + }, + "bucket_s3": { + "title": "Bucket S3", + "type": "string" + }, + "files_keys": { + "title": "Files Keys", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "ValidationError": { + "title": "ValidationError", + "required": [ + "loc", + "msg", + "type" + ], + "type": "object", + "properties": { + "loc": { + "title": "Location", + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer" + } + ] + } + }, + "msg": { + "title": "Message", + "type": "string" + }, + "type": { + "title": "Error Type", + "type": "string" + } + } + }, + "_BadgerdocSearch_datasets_Datasets_": { + "title": "_BadgerdocSearch[datasets_Datasets]", + "type": "object", + "properties": { + "pagination": { + "$ref": "#/components/schemas/Pagination" + }, + "filters": { + "title": "Filters", + "type": "array", + "items": { + "$ref": "#/components/schemas/_Filters_datasets_Datasets_" + } + }, + "sorting": { + "title": "Sorting", + "type": "array", + "items": { + "$ref": "#/components/schemas/_Sorts_datasets_Datasets_" + } + } + }, + "description": "Abstract base class for generic types.\n\nA generic type is typically declared by inheriting from\nthis class parameterized with one or more type variables.\nFor example, a generic mapping type might be defined as::\n\n class Mapping(Generic[KT, VT]):\n def __getitem__(self, key: KT) -> VT:\n ...\n # Etc.\n\nThis class can then be used as follows::\n\n def lookup_name(mapping: Mapping[KT, VT], key: KT, default: VT) -> VT:\n try:\n return mapping[key]\n except KeyError:\n return default" + }, + "_BadgerdocSearch_files_FileObject_": { + "title": "_BadgerdocSearch[files_FileObject]", + "type": "object", + "properties": { + "pagination": { + "$ref": "#/components/schemas/Pagination" + }, + "filters": { + "title": "Filters", + "type": "array", + "items": { + "$ref": "#/components/schemas/_Filters_files_FileObject_" + } + }, + "sorting": { + "title": "Sorting", + "type": "array", + "items": { + "$ref": "#/components/schemas/_Sorts_files_FileObject_" + } + } + }, + "description": "Abstract base class for generic types.\n\nA generic type is typically declared by inheriting from\nthis class parameterized with one or more type variables.\nFor example, a generic mapping type might be defined as::\n\n class Mapping(Generic[KT, VT]):\n def __getitem__(self, key: KT) -> VT:\n ...\n # Etc.\n\nThis class can then be used as follows::\n\n def lookup_name(mapping: Mapping[KT, VT], key: KT, default: VT) -> VT:\n try:\n return mapping[key]\n except KeyError:\n return default" + }, + "_FilterOperations": { + "title": "_FilterOperations", + "enum": [ + "is_null", + "is_not_null", + "eq", + "ne", + "gt", + "lt", + "ge", + "le", + "like", + "ilike", + "not_ilike", + "in", + "not_in", + "any", + "not_any", + "match", + "distinct", + "parent", + "parents_recursive", + "children", + "children_recursive" + ], + "type": "string", + "description": "An enumeration." + }, + "_FilterPagesize": { + "title": "_FilterPagesize", + "enum": [ + 15, + 30, + 50, + 80, + 100 + ], + "type": "integer", + "description": "An enumeration." + }, + "_Filters_datasets_Datasets_": { + "title": "_Filters[datasets_Datasets]", + "required": [ + "field", + "operator" + ], + "type": "object", + "properties": { + "field": { + "$ref": "#/components/schemas/datasets_Datasets" + }, + "operator": { + "$ref": "#/components/schemas/_FilterOperations" + }, + "value": { + "title": "Value" + } + } + }, + "_Filters_files_FileObject_": { + "title": "_Filters[files_FileObject]", + "required": [ + "field", + "operator" + ], + "type": "object", + "properties": { + "field": { + "$ref": "#/components/schemas/files_FileObject" + }, + "operator": { + "$ref": "#/components/schemas/_FilterOperations" + }, + "value": { + "title": "Value" + } + } + }, + "_SortDirection": { + "title": "_SortDirection", + "enum": [ + "asc", + "desc" + ], + "type": "string", + "description": "An enumeration." + }, + "_Sorts_datasets_Datasets_": { + "title": "_Sorts[datasets_Datasets]", + "required": [ + "field", + "direction" + ], + "type": "object", + "properties": { + "field": { + "$ref": "#/components/schemas/datasets_Datasets" + }, + "direction": { + "$ref": "#/components/schemas/_SortDirection" + } + } + }, + "_Sorts_files_FileObject_": { + "title": "_Sorts[files_FileObject]", + "required": [ + "field", + "direction" + ], + "type": "object", + "properties": { + "field": { + "$ref": "#/components/schemas/files_FileObject" + }, + "direction": { + "$ref": "#/components/schemas/_SortDirection" + } + } + }, + "datasets_Datasets": { + "title": "datasets_Datasets", + "enum": [ + "id", + "name", + "count", + "created", + "ts_vector", + "files.id", + "files.original_name", + "files.bucket", + "files.size_in_bytes", + "files.extension", + "files.original_ext", + "files.content_type", + "files.pages", + "files.last_modified", + "files.status", + "files.ts_vector" + ], + "type": "string", + "description": "An enumeration." + }, + "files_FileObject": { + "title": "files_FileObject", + "enum": [ + "id", + "original_name", + "bucket", + "size_in_bytes", + "extension", + "original_ext", + "content_type", + "pages", + "last_modified", + "status", + "ts_vector", + "datasets.id", + "datasets.name", + "datasets.count", + "datasets.created", + "datasets.ts_vector" + ], + "type": "string", + "description": "An enumeration." + } + }, + "securitySchemes": { + "TenantDependencyDocs": { + "type": "http", + "scheme": "bearer" + } + } + } +} diff --git a/docs/openapi/convert.json b/docs/openapi/convert.json new file mode 100644 index 000000000..9298e2fc5 --- /dev/null +++ b/docs/openapi/convert.json @@ -0,0 +1,752 @@ +{ + "openapi": "3.0.2", + "info": { + "title": "convert", + "description": "This service implements converting", + "version": "0.1.0" + }, + "paths": { + "/coco/import": { + "post": { + "tags": [ + "coco" + ], + "summary": "Import Job Create", + "description": "Router gets dataset from s3, converts it to badgerdoc format", + "operationId": "import_job_create_coco_import_post", + "parameters": [ + { + "required": true, + "schema": { + "title": "Import Format", + "type": "string" + }, + "name": "import_format", + "in": "query" + }, + { + "required": false, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DataS3" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImportJobCreatedSuccess" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UnavailableService" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/coco/export": { + "post": { + "tags": [ + "coco" + ], + "summary": "Dataset Export", + "description": "Router get annotation by job_id, converts it to input format and returns\nthe result as a zipfile", + "operationId": "dataset_export_coco_export_post", + "parameters": [ + { + "required": false, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExportInputData" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "201": { + "description": "Conversion is started", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExportConvertStart" + } + } + } + }, + "404": { + "description": "Dataset not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WrongConvertToCoco" + } + } + } + }, + "500": { + "description": "Service is unavailable", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UnavailableService" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/coco/download": { + "get": { + "tags": [ + "coco" + ], + "summary": "Download Dataset", + "operationId": "download_dataset_coco_download_get", + "parameters": [ + { + "required": true, + "schema": { + "title": "Url", + "type": "string" + }, + "name": "url", + "in": "query" + }, + { + "required": false, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "404": { + "description": "Dataset not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WrongConvertToCoco" + } + } + } + }, + "500": { + "description": "Service is unavailable", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UnavailableService" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/labelstudio/import": { + "post": { + "tags": [ + "labelstudio" + ], + "summary": "Import Labelstudio", + "operationId": "import_labelstudio_labelstudio_import_post", + "parameters": [ + { + "required": false, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LabelStudioRequest" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/labelstudio/export": { + "post": { + "tags": [ + "labelstudio" + ], + "summary": "Export Labelstudio", + "operationId": "export_labelstudio_labelstudio_export_post", + "parameters": [ + { + "required": false, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadgerdocToLabelStudioRequest" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/text/import": { + "post": { + "tags": [ + "text" + ], + "summary": "Import Text", + "operationId": "import_text_text_import_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TextRequest" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/pdf/import": { + "post": { + "tags": [ + "pdf" + ], + "summary": "Import Pdf", + "operationId": "import_pdf_pdf_import_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PdfRequest" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + } + }, + "components": { + "schemas": { + "BadgerdocToLabelStudioRequest": { + "title": "BadgerdocToLabelStudioRequest", + "required": [ + "input_tokens", + "input_annotation", + "input_manifest", + "output_annotation" + ], + "type": "object", + "properties": { + "input_tokens": { + "$ref": "#/components/schemas/S3Path" + }, + "input_annotation": { + "$ref": "#/components/schemas/S3Path" + }, + "input_manifest": { + "$ref": "#/components/schemas/S3Path" + }, + "output_annotation": { + "$ref": "#/components/schemas/S3Path" + } + } + }, + "DataS3": { + "title": "DataS3", + "required": [ + "aws_access_key_id", + "aws_secret_access_key", + "bucket_s3", + "files_keys" + ], + "type": "object", + "properties": { + "aws_access_key_id": { + "title": "Aws Access Key Id", + "type": "string" + }, + "aws_secret_access_key": { + "title": "Aws Secret Access Key", + "type": "string" + }, + "bucket_s3": { + "title": "Bucket S3", + "type": "string" + }, + "files_keys": { + "title": "Files Keys", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "ExportConvertStart": { + "title": "ExportConvertStart", + "required": [ + "url", + "bucket", + "minio_path", + "msg" + ], + "type": "object", + "properties": { + "url": { + "title": "Url", + "type": "string" + }, + "bucket": { + "title": "Bucket", + "type": "string" + }, + "minio_path": { + "title": "Minio Path", + "type": "string" + }, + "msg": { + "title": "Msg", + "type": "string", + "example": "Conversion is started" + } + } + }, + "ExportInputData": { + "title": "ExportInputData", + "required": [ + "job_lst", + "export_format" + ], + "type": "object", + "properties": { + "job_lst": { + "title": "Job Lst", + "type": "array", + "items": { + "type": "integer" + } + }, + "export_format": { + "title": "Export Format", + "type": "string" + }, + "validated_only": { + "title": "Validated Only", + "type": "boolean", + "default": false + } + } + }, + "HTTPValidationError": { + "title": "HTTPValidationError", + "type": "object", + "properties": { + "detail": { + "title": "Detail", + "type": "array", + "items": { + "$ref": "#/components/schemas/ValidationError" + } + } + } + }, + "ImportJobCreatedSuccess": { + "title": "ImportJobCreatedSuccess", + "required": [ + "msg", + "job_id" + ], + "type": "object", + "properties": { + "msg": { + "title": "Msg", + "type": "string", + "example": "Import job is created" + }, + "job_id": { + "title": "Job Id", + "type": "integer" + } + } + }, + "LabelStudioRequest": { + "title": "LabelStudioRequest", + "required": [ + "input_annotation", + "output_bucket", + "validation_type" + ], + "type": "object", + "properties": { + "input_annotation": { + "$ref": "#/components/schemas/S3Path" + }, + "output_bucket": { + "title": "Output Bucket", + "type": "string" + }, + "validation_type": { + "$ref": "#/components/schemas/ValidationType" + }, + "deadline": { + "title": "Deadline", + "type": "string", + "format": "date-time" + }, + "extensive_coverage": { + "title": "Extensive Coverage", + "type": "integer" + }, + "annotators": { + "title": "Annotators", + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "validators": { + "title": "Validators", + "type": "array", + "items": { + "type": "string" + }, + "default": [] + } + } + }, + "PdfRequest": { + "title": "PdfRequest", + "required": [ + "input_pdf", + "output_tokens" + ], + "type": "object", + "properties": { + "input_pdf": { + "$ref": "#/components/schemas/S3Path" + }, + "output_tokens": { + "$ref": "#/components/schemas/S3Path" + } + } + }, + "S3Path": { + "title": "S3Path", + "required": [ + "bucket", + "path" + ], + "type": "object", + "properties": { + "bucket": { + "title": "Bucket", + "type": "string" + }, + "path": { + "title": "Path", + "type": "string" + } + } + }, + "TextRequest": { + "title": "TextRequest", + "required": [ + "input_text", + "output_pdf", + "output_tokens" + ], + "type": "object", + "properties": { + "input_text": { + "$ref": "#/components/schemas/S3Path" + }, + "output_pdf": { + "$ref": "#/components/schemas/S3Path" + }, + "output_tokens": { + "$ref": "#/components/schemas/S3Path" + } + } + }, + "UnavailableService": { + "title": "UnavailableService", + "required": [ + "details" + ], + "type": "object", + "properties": { + "details": { + "title": "Details", + "type": "string", + "example": "Service is unavailable" + } + } + }, + "ValidationError": { + "title": "ValidationError", + "required": [ + "loc", + "msg", + "type" + ], + "type": "object", + "properties": { + "loc": { + "title": "Location", + "type": "array", + "items": { + "type": "string" + } + }, + "msg": { + "title": "Message", + "type": "string" + }, + "type": { + "title": "Error Type", + "type": "string" + } + } + }, + "ValidationType": { + "title": "ValidationType", + "enum": [ + "cross", + "hierarchical", + "validation only", + "extensive_coverage" + ], + "type": "string", + "description": "An enumeration." + }, + "WrongConvertToCoco": { + "title": "WrongConvertToCoco", + "required": [ + "details" + ], + "type": "object", + "properties": { + "details": { + "title": "Details", + "type": "string", + "example": "Not existing annotation file" + } + } + } + }, + "securitySchemes": { + "TenantDependencyDocs": { + "type": "http", + "scheme": "bearer" + } + } + } +} diff --git a/docs/openapi/jobs.json b/docs/openapi/jobs.json new file mode 100644 index 000000000..043953c9d --- /dev/null +++ b/docs/openapi/jobs.json @@ -0,0 +1,984 @@ +{ + "openapi": "3.0.2", + "info": { + "title": "Job Manager", + "version": "0.1.9" + }, + "paths": { + "/jobs/create_job": { + "post": { + "summary": "Create Job", + "description": "Creates ExtractionJob, AnnotationJob or ExtractionWithAnnotationJob.\nIf it is not 'Draft' - runs it", + "operationId": "create_job_jobs_create_job_post", + "parameters": [ + { + "required": false, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobParams" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/start/{job_id}": { + "post": { + "summary": "Run Job", + "description": "Runs any type of Job", + "operationId": "run_job_start__job_id__post", + "parameters": [ + { + "required": true, + "schema": { + "title": "Job Id", + "type": "integer" + }, + "name": "job_id", + "in": "path" + }, + { + "required": false, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/jobs/{job_id}": { + "get": { + "summary": "Get Job By Id", + "description": "Getting hold on a job in the database by its id", + "operationId": "get_job_by_id_jobs__job_id__get", + "parameters": [ + { + "required": true, + "schema": { + "title": "Job Id", + "type": "integer" + }, + "name": "job_id", + "in": "path" + }, + { + "required": false, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + }, + "put": { + "summary": "Change Job", + "description": "Provides an ability to change any value\nof any field of any Job in the database", + "operationId": "change_job_jobs__job_id__put", + "parameters": [ + { + "required": true, + "schema": { + "title": "Job Id", + "type": "integer" + }, + "name": "job_id", + "in": "path" + }, + { + "required": false, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobParamsToChange" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + }, + "delete": { + "summary": "Delete Job", + "description": "Deletes Job instance by its id", + "operationId": "delete_job_jobs__job_id__delete", + "parameters": [ + { + "required": true, + "schema": { + "title": "Job Id", + "type": "integer" + }, + "name": "job_id", + "in": "path" + }, + { + "required": false, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/jobs": { + "get": { + "summary": "Get All Jobs", + "description": "Returns a list of all jobs in the database", + "operationId": "get_all_jobs_jobs_get", + "parameters": [ + { + "required": false, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/jobs/search": { + "post": { + "summary": "Search Jobs", + "description": "Returns a list of Jobs in line with filters specified", + "operationId": "search_jobs_jobs_search_post", + "parameters": [ + { + "required": false, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/_BadgerdocSearch_job_CombinedJob_" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/metadata": { + "get": { + "summary": "Get Metadata", + "description": "Provides metadata that contains names\nand values of Enum Classes from schemas", + "operationId": "get_metadata_metadata_get", + "parameters": [ + { + "required": false, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/jobs/progress": { + "post": { + "summary": "Get Jobs Progress", + "operationId": "get_jobs_progress_jobs_progress_post", + "parameters": [ + { + "required": false, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "title": "Job Ids", + "type": "array", + "items": { + "type": "integer" + } + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "title": "Response Get Jobs Progress Jobs Progress Post", + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/JobProgress" + } + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + } + }, + "components": { + "schemas": { + "CategoryLinkInput": { + "title": "CategoryLinkInput", + "required": [ + "category_id", + "taxonomy_id", + "taxonomy_version" + ], + "type": "object", + "properties": { + "category_id": { + "title": "Category Id", + "type": "string", + "example": "123abc" + }, + "taxonomy_id": { + "title": "Taxonomy Id", + "type": "string", + "example": "my_taxonomy_id" + }, + "taxonomy_version": { + "title": "Taxonomy Version", + "type": "integer", + "example": 1 + } + } + }, + "HTTPValidationError": { + "title": "HTTPValidationError", + "type": "object", + "properties": { + "detail": { + "title": "Detail", + "type": "array", + "items": { + "$ref": "#/components/schemas/ValidationError" + } + } + } + }, + "JobMode": { + "title": "JobMode", + "enum": [ + "Automatic", + "Manual" + ], + "type": "string", + "description": "An enumeration." + }, + "JobParams": { + "title": "JobParams", + "required": [ + "name", + "type" + ], + "type": "object", + "properties": { + "name": { + "title": "Name", + "type": "string" + }, + "type": { + "$ref": "#/components/schemas/JobType" + }, + "files": { + "title": "Files", + "type": "array", + "items": { + "type": "integer" + } + }, + "datasets": { + "title": "Datasets", + "type": "array", + "items": { + "type": "integer" + } + }, + "is_draft": { + "title": "Is Draft", + "type": "boolean", + "default": false + }, + "is_auto_distribution": { + "title": "Is Auto Distribution", + "type": "boolean", + "default": false + }, + "validation_type": { + "$ref": "#/components/schemas/ValidationType" + }, + "annotators": { + "title": "Annotators", + "type": "array", + "items": { + "type": "string" + } + }, + "owners": { + "title": "Owners", + "type": "array", + "items": { + "type": "string" + } + }, + "categories": { + "title": "Categories", + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/CategoryLinkInput" + } + ] + } + }, + "deadline": { + "title": "Deadline", + "type": "string", + "format": "date-time" + }, + "validators": { + "title": "Validators", + "type": "array", + "items": { + "type": "string" + } + }, + "extensive_coverage": { + "title": "Extensive Coverage", + "type": "integer" + }, + "pipeline_name": { + "title": "Pipeline Name", + "type": "string" + }, + "pipeline_version": { + "title": "Pipeline Version", + "type": "string" + }, + "start_manual_job_automatically": { + "title": "Start Manual Job Automatically", + "type": "boolean", + "default": true + }, + "import_source": { + "title": "Import Source", + "type": "string" + }, + "import_format": { + "title": "Import Format", + "type": "string" + } + } + }, + "JobParamsToChange": { + "title": "JobParamsToChange", + "type": "object", + "properties": { + "name": { + "title": "Name", + "type": "string" + }, + "type": { + "$ref": "#/components/schemas/JobType" + }, + "files": { + "title": "Files", + "type": "array", + "items": { + "type": "integer" + } + }, + "datasets": { + "title": "Datasets", + "type": "array", + "items": { + "type": "integer" + } + }, + "status": { + "$ref": "#/components/schemas/Status" + }, + "is_draft": { + "title": "Is Draft", + "type": "boolean" + }, + "mode": { + "$ref": "#/components/schemas/JobMode" + }, + "is_auto_distribution": { + "title": "Is Auto Distribution", + "type": "boolean" + }, + "annotators": { + "title": "Annotators", + "type": "array", + "items": { + "type": "string" + } + }, + "validators": { + "title": "Validators", + "type": "array", + "items": { + "type": "string" + } + }, + "owners": { + "title": "Owners", + "type": "array", + "items": { + "type": "string" + } + }, + "categories": { + "title": "Categories", + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/CategoryLinkInput" + } + ] + } + }, + "deadline": { + "title": "Deadline", + "type": "string", + "format": "date-time" + }, + "validation_type": { + "$ref": "#/components/schemas/ValidationType" + }, + "extensive_coverage": { + "title": "Extensive Coverage", + "type": "integer" + }, + "pipeline_id": { + "title": "Pipeline Id", + "type": "integer" + }, + "import_source": { + "title": "Import Source", + "type": "string" + }, + "import_format": { + "title": "Import Format", + "type": "string" + } + } + }, + "JobProgress": { + "title": "JobProgress", + "required": [ + "finished", + "total", + "mode" + ], + "type": "object", + "properties": { + "finished": { + "title": "Finished", + "type": "integer", + "example": 1 + }, + "total": { + "title": "Total", + "type": "integer", + "example": 1 + }, + "mode": { + "title": "Mode", + "type": "string", + "example": "Automatic" + } + } + }, + "JobType": { + "title": "JobType", + "enum": [ + "ExtractionJob", + "ExtractionWithAnnotationJob", + "AnnotationJob", + "ImportJob" + ], + "type": "string", + "description": "An enumeration." + }, + "Pagination": { + "title": "Pagination", + "required": [ + "page_size" + ], + "type": "object", + "properties": { + "page_num": { + "title": "Page Num", + "exclusiveMinimum": 0.0, + "type": "integer", + "default": 1 + }, + "page_size": { + "$ref": "#/components/schemas/_FilterPagesize" + } + } + }, + "Status": { + "title": "Status", + "enum": [ + "Pending", + "In Progress", + "Failed", + "Finished", + "Ready For Annotation", + "Draft" + ], + "type": "string", + "description": "An enumeration." + }, + "ValidationError": { + "title": "ValidationError", + "required": [ + "loc", + "msg", + "type" + ], + "type": "object", + "properties": { + "loc": { + "title": "Location", + "type": "array", + "items": { + "type": "string" + } + }, + "msg": { + "title": "Message", + "type": "string" + }, + "type": { + "title": "Error Type", + "type": "string" + } + } + }, + "ValidationType": { + "title": "ValidationType", + "enum": [ + "cross", + "hierarchical", + "validation only", + "extensive_coverage" + ], + "type": "string", + "description": "An enumeration." + }, + "_BadgerdocSearch_job_CombinedJob_": { + "title": "_BadgerdocSearch[job_CombinedJob]", + "type": "object", + "properties": { + "pagination": { + "$ref": "#/components/schemas/Pagination" + }, + "filters": { + "title": "Filters", + "type": "array", + "items": { + "$ref": "#/components/schemas/_Filters_job_CombinedJob_" + } + }, + "sorting": { + "title": "Sorting", + "type": "array", + "items": { + "$ref": "#/components/schemas/_Sorts_job_CombinedJob_" + } + } + }, + "description": "Abstract base class for generic types.\n\nA generic type is typically declared by inheriting from\nthis class parameterized with one or more type variables.\nFor example, a generic mapping type might be defined as::\n\n class Mapping(Generic[KT, VT]):\n def __getitem__(self, key: KT) -> VT:\n ...\n # Etc.\n\nThis class can then be used as follows::\n\n def lookup_name(mapping: Mapping[KT, VT], key: KT, default: VT) -> VT:\n try:\n return mapping[key]\n except KeyError:\n return default" + }, + "_FilterOperations": { + "title": "_FilterOperations", + "enum": [ + "is_null", + "is_not_null", + "eq", + "ne", + "gt", + "lt", + "ge", + "le", + "like", + "ilike", + "not_ilike", + "in", + "not_in", + "any", + "not_any", + "match", + "distinct", + "parent", + "parents_recursive", + "children", + "children_recursive" + ], + "type": "string", + "description": "An enumeration." + }, + "_FilterPagesize": { + "title": "_FilterPagesize", + "enum": [ + 15, + 30, + 50, + 80, + 100 + ], + "type": "integer", + "description": "An enumeration." + }, + "_Filters_job_CombinedJob_": { + "title": "_Filters[job_CombinedJob]", + "required": [ + "field", + "operator" + ], + "type": "object", + "properties": { + "field": { + "$ref": "#/components/schemas/job_CombinedJob" + }, + "operator": { + "$ref": "#/components/schemas/_FilterOperations" + }, + "value": { + "title": "Value" + } + } + }, + "_SortDirection": { + "title": "_SortDirection", + "enum": [ + "asc", + "desc" + ], + "type": "string", + "description": "An enumeration." + }, + "_Sorts_job_CombinedJob_": { + "title": "_Sorts[job_CombinedJob]", + "required": [ + "field", + "direction" + ], + "type": "object", + "properties": { + "field": { + "$ref": "#/components/schemas/job_CombinedJob" + }, + "direction": { + "$ref": "#/components/schemas/_SortDirection" + } + } + }, + "job_CombinedJob": { + "title": "job_CombinedJob", + "enum": [ + "id", + "name", + "status", + "files", + "datasets", + "creation_datetime", + "type", + "mode", + "annotators", + "validators", + "owners", + "categories", + "is_auto_distribution", + "deadline", + "validation_type", + "extensive_coverage", + "pipeline_id", + "import_source", + "import_format", + "start_manual_job_automatically" + ], + "type": "string", + "description": "An enumeration." + } + }, + "securitySchemes": { + "TenantDependencyDocs": { + "type": "http", + "scheme": "bearer" + } + } + } +} diff --git a/docs/openapi/models.json b/docs/openapi/models.json new file mode 100644 index 000000000..9e140e120 --- /dev/null +++ b/docs/openapi/models.json @@ -0,0 +1,3491 @@ +{ + "openapi": "3.0.2", + "info": { + "title": "models", + "description": "This service implements CRUD operations for models, basements (docker images) and trainings. Also it has endpoints to deploy/undeploy models on Knative.", + "version": "0.1.3" + }, + "paths": { + "/basements/create": { + "post": { + "tags": [ + "basements" + ], + "summary": "Create New Basement", + "operationId": "create_new_basement_basements_create_post", + "parameters": [ + { + "required": false, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "x-current-tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BasementBase" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Successfully created", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Basement" + } + } + } + }, + "400": { + "description": "Request without header", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HeaderResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UnauthorisedResponse" + } + } + } + }, + "409": { + "description": "Such id already exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WrongResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/basements/search": { + "post": { + "tags": [ + "basements" + ], + "summary": "Search Basements", + "operationId": "search_basements_basements_search_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/_BadgerdocSearch_basement_Basement_" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "title": "Response Search Basements Basements Search Post", + "anyOf": [ + { + "$ref": "#/components/schemas/Page_Basement_" + }, + { + "$ref": "#/components/schemas/Page_Any_" + } + ] + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/basements/{basements_id}": { + "get": { + "tags": [ + "basements" + ], + "summary": "Get Basement By Id", + "operationId": "get_basement_by_id_basements__basements_id__get", + "parameters": [ + { + "required": true, + "schema": { + "title": "Basement Id", + "type": "string" + }, + "name": "basement_id", + "in": "query" + } + ], + "responses": { + "200": { + "description": "Basement by id", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Basement" + } + } + } + }, + "404": { + "description": "Docker image was not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WrongResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/basements/update": { + "put": { + "tags": [ + "basements" + ], + "summary": "Update Basement", + "operationId": "update_basement_basements_update_put", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BasementBase" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successfully modified", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Basement" + } + } + } + }, + "404": { + "description": "Docker image was not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WrongResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/basements/delete": { + "delete": { + "tags": [ + "basements" + ], + "summary": "Delete Basement By Id", + "operationId": "delete_basement_by_id_basements_delete_delete", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BasementDelete" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successfully deleted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MsgResponse" + } + } + } + }, + "404": { + "description": "Docker image was not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WrongResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/basements/{basements_id}/files": { + "put": { + "tags": [ + "basements" + ], + "summary": "Upload Files To Object Storage", + "operationId": "upload_files_to_object_storage_basements__basements_id__files_put", + "parameters": [ + { + "required": true, + "schema": { + "title": "Basement Id", + "type": "string" + }, + "name": "basement_id", + "in": "query" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "$ref": "#/components/schemas/Body_upload_files_to_object_storage_basements__basements_id__files_put" + } + } + } + }, + "responses": { + "204": { + "description": "Successful Response" + }, + "404": { + "description": "Basement does not exist", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WrongResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/models/create": { + "post": { + "tags": [ + "models" + ], + "summary": "Create New Model", + "description": "Successfully created", + "operationId": "create_new_model_models_create_post", + "parameters": [ + { + "required": false, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "x-current-tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelWithId" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Model" + } + } + } + }, + "400": { + "description": "Request without header", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HeaderResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UnauthorisedResponse" + } + } + } + }, + "404": { + "description": "Foreign key was not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WrongResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/models/search": { + "post": { + "tags": [ + "models" + ], + "summary": "Search Models", + "operationId": "search_models_models_search_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/_BadgerdocSearch_model_Model_" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "title": "Response Search Models Models Search Post", + "anyOf": [ + { + "$ref": "#/components/schemas/Page_Model_" + }, + { + "$ref": "#/components/schemas/Page_Any_" + } + ] + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/models/{models_id}": { + "get": { + "tags": [ + "models" + ], + "summary": "Get Model By Id", + "operationId": "get_model_by_id_models__models_id__get", + "parameters": [ + { + "required": true, + "schema": { + "title": "Model Id", + "type": "string" + }, + "name": "model_id", + "in": "query" + } + ], + "responses": { + "200": { + "description": "Model by id", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Model" + } + } + } + }, + "404": { + "description": "Model was not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WrongResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/models/{model_id}/{version}": { + "get": { + "tags": [ + "models" + ], + "summary": "Get Model By Id And Version", + "description": "Get model by id and version", + "operationId": "get_model_by_id_and_version_models__model_id___version__get", + "parameters": [ + { + "required": true, + "schema": { + "title": "Model Id", + "type": "string" + }, + "example": "custom", + "name": "model_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "Version", + "type": "integer" + }, + "example": 1, + "name": "version", + "in": "path" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Model" + } + } + } + }, + "404": { + "description": "Model was not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WrongResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "put": { + "tags": [ + "models" + ], + "summary": "Update Model By Id And Version", + "description": "Successfully modified", + "operationId": "update_model_by_id_and_version_models__model_id___version__put", + "parameters": [ + { + "required": true, + "schema": { + "title": "Model Id", + "type": "string" + }, + "example": "custom", + "name": "model_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "Version", + "type": "integer" + }, + "example": 1, + "name": "version", + "in": "path" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelBase" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Model" + } + } + } + }, + "404": { + "description": "Model or foreign keys were not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WrongResponse" + } + } + } + }, + "409": { + "description": "Such name already exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WrongResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "delete": { + "tags": [ + "models" + ], + "summary": "Delete Model By Id And Version", + "operationId": "delete_model_by_id_and_version_models__model_id___version__delete", + "parameters": [ + { + "required": true, + "schema": { + "title": "Model Id", + "type": "string" + }, + "example": "custom", + "name": "model_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "Version", + "type": "integer" + }, + "example": 1, + "name": "version", + "in": "path" + } + ], + "responses": { + "200": { + "description": "Successfully deleted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MsgResponse" + } + } + } + }, + "404": { + "description": "Model was not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WrongResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/models/update": { + "put": { + "tags": [ + "models" + ], + "summary": "Update Model", + "operationId": "update_model_models_update_put", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelWithId" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successfully modified", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Model" + } + } + } + }, + "404": { + "description": "Model or foreign keys were not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WrongResponse" + } + } + } + }, + "409": { + "description": "Such name already exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WrongResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/models/delete": { + "delete": { + "tags": [ + "models" + ], + "summary": "Delete Model By Id", + "operationId": "delete_model_by_id_models_delete_delete", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelId" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successfully deleted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MsgResponse" + } + } + } + }, + "404": { + "description": "Model was not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WrongResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/models/deploy": { + "post": { + "tags": [ + "models" + ], + "summary": "Deploy Model", + "operationId": "deploy_model_models_deploy_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelId" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MsgResponse" + } + } + } + }, + "404": { + "description": "Model was not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WrongResponse" + } + } + } + }, + "409": { + "description": "Already deployed", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WrongResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/models/{model_id}/{version}/deploy": { + "post": { + "tags": [ + "models" + ], + "summary": "Deploy Model By Id And Version", + "operationId": "deploy_model_by_id_and_version_models__model_id___version__deploy_post", + "parameters": [ + { + "required": true, + "schema": { + "title": "Model Id", + "type": "string" + }, + "example": "custom", + "name": "model_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "Version", + "type": "integer" + }, + "example": 1, + "name": "version", + "in": "path" + } + ], + "responses": { + "201": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MsgResponse" + } + } + } + }, + "404": { + "description": "Model was not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WrongResponse" + } + } + } + }, + "409": { + "description": "Already deployed", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WrongResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/models/undeploy": { + "delete": { + "tags": [ + "models" + ], + "summary": "Undeploy Model", + "operationId": "undeploy_model_models_undeploy_delete", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelId" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successfully undeployed", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MsgResponse" + } + } + } + }, + "404": { + "description": "Model was not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WrongResponse" + } + } + } + }, + "409": { + "description": "Fail to undeploy", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WrongResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/models/{model_id}/{version}/undeploy": { + "post": { + "tags": [ + "models" + ], + "summary": "Undeploy Model By Id And Version", + "operationId": "undeploy_model_by_id_and_version_models__model_id___version__undeploy_post", + "parameters": [ + { + "required": true, + "schema": { + "title": "Model Id", + "type": "string" + }, + "example": "custom", + "name": "model_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "Version", + "type": "integer" + }, + "example": 1, + "name": "version", + "in": "path" + } + ], + "responses": { + "200": { + "description": "Successfully undeployed", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MsgResponse" + } + } + } + }, + "404": { + "description": "Model was not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WrongResponse" + } + } + } + }, + "409": { + "description": "Fail to undeploy", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WrongResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/trainings/create": { + "post": { + "tags": [ + "trainings" + ], + "summary": "Create New Training", + "operationId": "create_new_training_trainings_create_post", + "parameters": [ + { + "required": false, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "x-current-tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TrainingBase" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Successfully created", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Training" + } + } + } + }, + "400": { + "description": "Request without header", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HeaderResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UnauthorisedResponse" + } + } + } + }, + "404": { + "description": "Foreign key was not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WrongResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/trainings/{training_id}/files": { + "put": { + "tags": [ + "trainings" + ], + "summary": "Upload Files To Object Storage", + "operationId": "upload_files_to_object_storage_trainings__training_id__files_put", + "parameters": [ + { + "required": true, + "schema": { + "title": "Training Id", + "type": "string" + }, + "example": 1, + "name": "training_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "$ref": "#/components/schemas/Body_upload_files_to_object_storage_trainings__training_id__files_put" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "Successful Response" + }, + "404": { + "description": "Training model was not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WrongResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/trainings/search": { + "post": { + "tags": [ + "trainings" + ], + "summary": "Search Training", + "operationId": "search_training_trainings_search_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/_BadgerdocSearch_training_Training_" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "title": "Response Search Training Trainings Search Post", + "anyOf": [ + { + "$ref": "#/components/schemas/Page_Training_" + }, + { + "$ref": "#/components/schemas/Page_Any_" + } + ] + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/trainings/{trainings_id}": { + "get": { + "tags": [ + "trainings" + ], + "summary": "Get Training By Id", + "operationId": "get_training_by_id_trainings__trainings_id__get", + "parameters": [ + { + "required": true, + "schema": { + "title": "Training Id", + "type": "integer" + }, + "name": "training_id", + "in": "query" + } + ], + "responses": { + "200": { + "description": "Training by id", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Training" + } + } + } + }, + "404": { + "description": "Training was not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WrongResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/trainings/update": { + "put": { + "tags": [ + "trainings" + ], + "summary": "Update Training", + "operationId": "update_training_trainings_update_put", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TrainingUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successfully modified", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Training" + } + } + } + }, + "404": { + "description": "Training or foreign key was not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WrongResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/trainings/delete": { + "delete": { + "tags": [ + "trainings" + ], + "summary": "Delete Training By Id", + "operationId": "delete_training_by_id_trainings_delete_delete", + "parameters": [ + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TrainingDelete" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successfully deleted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MsgResponse" + } + } + } + }, + "404": { + "description": "Training was not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WrongResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/trainings/{training_id}/annotation_dataset": { + "post": { + "tags": [ + "trainings" + ], + "summary": "Prepare Annotation Dataset", + "operationId": "prepare_annotation_dataset_trainings__training_id__annotation_dataset_post", + "parameters": [ + { + "required": true, + "schema": { + "title": "Training Id", + "type": "integer" + }, + "name": "training_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConvertRequestSchema" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Dataset creation is started", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MsgResponse" + } + } + } + }, + "404": { + "description": "Training was not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WrongResponse" + } + } + } + }, + "500": { + "description": "Convert service connection error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/trainings/{training_id}/start": { + "post": { + "tags": [ + "trainings" + ], + "summary": "Start Training", + "description": "Connects to Google Colab's session with provided credentials: user,\npassword, host and port. Copy training script and archive with additional\nfiles (if required for training) for training_id from minio storage into\nColab's file system. Files will be located in \"/content/training/\"\ndirectory. After that starts execution of training script.", + "operationId": "start_training_trainings__training_id__start_post", + "parameters": [ + { + "required": true, + "schema": { + "title": "Training Id", + "type": "integer" + }, + "example": 1, + "name": "training_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "x-current-tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TrainingCredentials" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successfully started", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MsgResponse" + } + } + } + }, + "400": { + "description": "Training has no training script yet", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WrongResponse" + } + } + } + }, + "404": { + "description": "Training was not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WrongResponse" + } + } + } + }, + "500": { + "description": "Connection Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/trainings/{training_id}/results": { + "post": { + "tags": [ + "trainings" + ], + "summary": "Download Training Results", + "description": "Connects to Google Colab's session with provided credentials: user,\npassword, host and port and copy results of training into minio storage.\nResults should be located at in \"/content/training/results\" directory in\ncolab's file system.", + "operationId": "download_training_results_trainings__training_id__results_post", + "parameters": [ + { + "required": true, + "schema": { + "title": "Training Id", + "type": "integer" + }, + "example": 1, + "name": "training_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "x-current-tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TrainingCredentials" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Get results files", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MsgResponse" + } + } + } + }, + "404": { + "description": "Training was not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WrongResponse" + } + } + } + }, + "500": { + "description": "Connection Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/deployed_models/search": { + "get": { + "tags": [ + "deployed_models" + ], + "summary": "Get Deployed Model List", + "operationId": "get_deployed_model_list_deployed_models_search_get", + "responses": { + "200": { + "description": "Models list", + "content": { + "application/json": { + "schema": {} + } + } + } + } + } + }, + "/deployed_models/{model_name}": { + "get": { + "tags": [ + "deployed_models" + ], + "summary": "Get Deployed Model By Name", + "operationId": "get_deployed_model_by_name_deployed_models__model_name__get", + "parameters": [ + { + "required": true, + "schema": { + "title": "Model Name", + "type": "string" + }, + "name": "model_name", + "in": "path" + } + ], + "responses": { + "200": { + "description": "Models by id", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeployedModelDetails" + } + } + } + }, + "404": { + "description": "Model was not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WrongResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/deployed_models/pods/{model_name}": { + "get": { + "tags": [ + "deployed_models" + ], + "summary": "Get Deployed Model Pods", + "operationId": "get_deployed_model_pods_deployed_models_pods__model_name__get", + "parameters": [ + { + "required": true, + "schema": { + "title": "Model Name", + "type": "string" + }, + "name": "model_name", + "in": "path" + } + ], + "responses": { + "200": { + "description": "Pods of the model", + "content": { + "application/json": { + "schema": { + "title": "Response 200 Get Deployed Model Pods Deployed Models Pods Model Name Get", + "type": "array", + "items": { + "$ref": "#/components/schemas/DeployedModelPod" + } + } + } + } + }, + "400": { + "description": "Pod initializing", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WrongResponse" + } + } + } + }, + "404": { + "description": "Model was not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WrongResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + } + }, + "components": { + "schemas": { + "Basement": { + "title": "Basement", + "required": [ + "id", + "name", + "limits", + "gpu_support", + "created_by", + "created_at", + "tenant" + ], + "type": "object", + "properties": { + "id": { + "title": "Docker image's name", + "minLength": 1, + "type": "string", + "description": "Unique name of docker image to build and run", + "example": "custom:v1.1" + }, + "name": { + "title": "Human readable name", + "type": "string", + "example": "some describing name" + }, + "supported_args": { + "title": "Supported Args", + "type": "array", + "items": { + "type": "object" + }, + "example": [ + { + "name": "categories", + "type": "string", + "multiple": true, + "required": false + } + ] + }, + "limits": { + "$ref": "#/components/schemas/BasementLimits" + }, + "gpu_support": { + "title": "Is gpu supported", + "type": "boolean", + "example": false + }, + "created_by": { + "title": "Created By", + "type": "string", + "description": "Author who has created docker image", + "example": "901" + }, + "created_at": { + "title": "Created At", + "type": "string", + "format": "date-time", + "example": "2021-11-09T17:09:43.101004" + }, + "tenant": { + "title": "Tenant", + "type": "string", + "description": "Author's tenant", + "example": "tenant1" + } + } + }, + "BasementBase": { + "title": "BasementBase", + "required": [ + "id", + "name", + "limits", + "gpu_support" + ], + "type": "object", + "properties": { + "id": { + "title": "Docker image's name", + "minLength": 1, + "type": "string", + "description": "Unique name of docker image to build and run", + "example": "custom:v1.1" + }, + "name": { + "title": "Human readable name", + "type": "string", + "example": "some describing name" + }, + "supported_args": { + "title": "Supported Args", + "type": "array", + "items": { + "type": "object" + }, + "example": [ + { + "name": "categories", + "type": "string", + "multiple": true, + "required": false + } + ] + }, + "limits": { + "$ref": "#/components/schemas/BasementLimits" + }, + "gpu_support": { + "title": "Is gpu supported", + "type": "boolean", + "example": false + } + } + }, + "BasementDelete": { + "title": "BasementDelete", + "required": [ + "id" + ], + "type": "object", + "properties": { + "id": { + "title": "Image's name", + "type": "string", + "description": "Unique name of the docker image to be deleted/deployed", + "example": "custom:v1.1" + } + } + }, + "BasementLimits": { + "title": "BasementLimits", + "type": "object", + "properties": { + "pod_cpu": { + "title": "Pod Cpu", + "type": "string", + "default": "1000m", + "example": "1000m" + }, + "pod_memory": { + "title": "Pod Memory", + "type": "string", + "default": "4Gi", + "example": "4Gi" + }, + "concurrency_limit": { + "title": "Concurrency Limit", + "exclusiveMinimum": 0.0, + "type": "integer", + "default": 1, + "example": 1 + } + } + }, + "Body_upload_files_to_object_storage_basements__basements_id__files_put": { + "title": "Body_upload_files_to_object_storage_basements__basements_id__files_put", + "type": "object", + "properties": { + "script": { + "title": "Script", + "type": "string", + "format": "binary" + }, + "archive": { + "title": "Archive", + "type": "string", + "format": "binary" + } + } + }, + "Body_upload_files_to_object_storage_trainings__training_id__files_put": { + "title": "Body_upload_files_to_object_storage_trainings__training_id__files_put", + "required": [ + "archive" + ], + "type": "object", + "properties": { + "archive": { + "title": "Archive", + "type": "string", + "format": "binary" + } + } + }, + "ConnectionErrorResponse": { + "title": "ConnectionErrorResponse", + "required": [ + "detail" + ], + "type": "object", + "properties": { + "detail": { + "title": "Detail", + "type": "string", + "example": "Could not connect to resource" + } + } + }, + "ConvertRequestSchema": { + "title": "ConvertRequestSchema", + "required": [ + "job_lst", + "export_format" + ], + "type": "object", + "properties": { + "job_lst": { + "title": "Job Lst", + "type": "array", + "items": { + "type": "integer" + }, + "description": "Array of job_ids to gather annotations.", + "example": [ + 1, + 3, + 5 + ] + }, + "export_format": { + "title": "Export Format", + "type": "string", + "description": "Annotation data conversion format.", + "example": "coco" + }, + "validated_only": { + "title": "Validated Only", + "type": "boolean", + "description": "If true - export annotations for validated pages only.", + "default": false, + "example": false + } + } + }, + "DeployedModelDetails": { + "title": "DeployedModelDetails", + "required": [ + "apiVersion", + "datetime_creation", + "model_id", + "model_name", + "status", + "namespace", + "resourceVersion", + "uuid", + "image", + "container_name", + "ports", + "url" + ], + "type": "object", + "properties": { + "apiVersion": { + "title": "Apiversion", + "type": "string", + "description": "Version of the Kubernetes API used to create the object" + }, + "datetime_creation": { + "title": "Datetime Creation", + "type": "string", + "example": "2021-11-09T17:09:43.101004" + }, + "model_id": { + "title": "Model Id", + "exclusiveMinimum": 0.0, + "type": "integer", + "description": "Integer which is id of the model", + "example": 1 + }, + "model_name": { + "title": "Model Name", + "type": "string", + "example": "my-model" + }, + "status": { + "title": "Status", + "type": "string", + "description": "Model status, it's running or not", + "example": "False" + }, + "reason": { + "title": "Reason", + "type": "string", + "description": "The reason of failed status if it is false", + "example": "RevisionFailed" + }, + "message": { + "title": "Message", + "type": "string", + "description": "The error message if the status is false", + "example": "Revision failed with message: Unable to fetch image" + }, + "namespace": { + "title": "Namespace", + "type": "string", + "description": "Name of the namespace, where the model was registered", + "example": "default" + }, + "resourceVersion": { + "title": "Resourceversion", + "type": "string", + "example": "916741" + }, + "uuid": { + "title": "Uuid", + "type": "string", + "description": "Unique model identifier", + "example": "e8d6a21c-801b-4ed9-bf1b-8c3df50beb5a" + }, + "image": { + "title": "Image", + "type": "string", + "description": "Path to the docker image", + "example": "localhost:5000/dod:v2.1" + }, + "container_name": { + "title": "Container Name", + "type": "string", + "example": "inferenceservice" + }, + "ports": { + "title": "Ports", + "type": "array", + "items": { + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer" + } + ] + } + }, + "description": "List container ports and protocols" + }, + "url": { + "title": "Url", + "type": "string", + "description": "Url of the deployed model", + "example": "http://dod.dev2.example.com" + } + } + }, + "DeployedModelPod": { + "title": "DeployedModelPod", + "required": [ + "name", + "status", + "failures", + "start_time", + "logs" + ], + "type": "object", + "properties": { + "name": { + "title": "Name", + "type": "string", + "description": "Name of the pod", + "example": "dod-00001-deployment-7656b6dc95-hqwb5" + }, + "status": { + "title": "Status", + "type": "string", + "description": "status of the pod", + "example": "Running" + }, + "failures": { + "title": "Failures", + "type": "array", + "items": { + "$ref": "#/components/schemas/Failures" + }, + "description": "Can contains reasons and messages of any failures" + }, + "start_time": { + "title": "Start Time", + "type": "string", + "example": "2022-01-27 14:26:25+00:00" + }, + "logs": { + "title": "Logs", + "type": "string", + "description": "Recent pods of the model with their logs", + "example": "[2022-01-18 09:46:07,989] - [infer] - [INFO] - [Downloading]" + } + } + }, + "Failures": { + "title": "Failures", + "type": "object", + "properties": { + "reason": { + "title": "Reason", + "type": "string", + "description": "Can point to the error", + "example": "Error" + }, + "message": { + "title": "Message", + "type": "string", + "description": "The error message, can duplicate logs", + "example": "NoSuchKey: message: The specified key doesn't exist" + } + } + }, + "HTTPValidationError": { + "title": "HTTPValidationError", + "type": "object", + "properties": { + "detail": { + "title": "Detail", + "type": "array", + "items": { + "$ref": "#/components/schemas/ValidationError" + } + } + } + }, + "HeaderResponse": { + "title": "HeaderResponse", + "required": [ + "detail" + ], + "type": "object", + "properties": { + "detail": { + "title": "Detail", + "type": "string", + "example": "Header x-current-tenant is required" + } + } + }, + "MinioPath": { + "title": "MinioPath", + "required": [ + "file", + "bucket" + ], + "type": "object", + "properties": { + "file": { + "title": "Path inside the bucket", + "type": "string", + "description": "Path inside the bucket to model's config or checkpoint", + "example": "custom/1.1/config.py" + }, + "bucket": { + "title": "Name of the bucket", + "type": "string", + "description": "Name of bucket where model's config/checkpoint is stored", + "example": "models" + } + } + }, + "Model": { + "title": "Model", + "required": [ + "name", + "basement", + "categories", + "id", + "status", + "created_by", + "created_at", + "tenant", + "latest", + "version" + ], + "type": "object", + "properties": { + "name": { + "title": "Description of model name", + "type": "string", + "example": "custom model based on pytorch" + }, + "basement": { + "title": "Docker image's name", + "type": "string", + "description": "Name of the docker image with model logic - foreign key", + "example": "custom:v1.1" + }, + "data_path": { + "title": "Checkpoint path", + "allOf": [ + { + "$ref": "#/components/schemas/MinioPath" + } + ], + "description": "Json with the path to the model's checkpoint" + }, + "configuration_path": { + "title": "Config path", + "allOf": [ + { + "$ref": "#/components/schemas/MinioPath" + } + ], + "description": "Json with the path to the model's config" + }, + "training_id": { + "title": "Training id", + "exclusiveMinimum": 0.0, + "type": "integer", + "description": "Id of the training for that model. It's a foreign key", + "example": 3 + }, + "score": { + "title": "Score", + "type": "number", + "description": "Score of the model if it has one", + "example": 0.89 + }, + "categories": { + "title": "Categories", + "type": "array", + "items": { + "type": "string" + }, + "description": "Names of supported categories", + "example": [ + "string" + ] + }, + "type": { + "title": "Type", + "type": "string", + "description": "Type of the model", + "example": "preprocessing" + }, + "description": { + "title": "Description", + "type": "string", + "description": "Description of the model", + "example": "New model" + }, + "id": { + "title": "Model's name", + "minLength": 1, + "type": "string", + "description": "Model can be deploy and be accessible with this name. Should be unique, not longer than 15 symbol and not shorter than 1 symbol. Consist of latin lowercase letters, numbers and - only.", + "example": "custom" + }, + "status": { + "title": "Status", + "allOf": [ + { + "$ref": "#/components/schemas/StatusEnum" + } + ], + "description": "Show if this model is available to be deployed or it has been deployed already", + "example": "ready" + }, + "created_by": { + "title": "Created By", + "type": "string", + "description": "Author who has created model", + "example": "901" + }, + "created_at": { + "title": "Created At", + "type": "string", + "format": "date-time", + "example": "2021-11-09T17:09:43.101004" + }, + "tenant": { + "title": "Tenant", + "type": "string", + "description": "Author's tenant", + "example": "tenant1" + }, + "latest": { + "title": "Latest", + "type": "boolean", + "description": "Flag to show if version of model is latest", + "example": true + }, + "version": { + "title": "Version", + "type": "integer", + "description": "Version of model", + "example": 1 + } + } + }, + "ModelBase": { + "title": "ModelBase", + "required": [ + "name", + "basement", + "categories" + ], + "type": "object", + "properties": { + "name": { + "title": "Description of model name", + "type": "string", + "example": "custom model based on pytorch" + }, + "basement": { + "title": "Docker image's name", + "type": "string", + "description": "Name of the docker image with model logic - foreign key", + "example": "custom:v1.1" + }, + "data_path": { + "title": "Checkpoint path", + "allOf": [ + { + "$ref": "#/components/schemas/MinioPath" + } + ], + "description": "Json with the path to the model's checkpoint" + }, + "configuration_path": { + "title": "Config path", + "allOf": [ + { + "$ref": "#/components/schemas/MinioPath" + } + ], + "description": "Json with the path to the model's config" + }, + "training_id": { + "title": "Training id", + "exclusiveMinimum": 0.0, + "type": "integer", + "description": "Id of the training for that model. It's a foreign key", + "example": 3 + }, + "score": { + "title": "Score", + "type": "number", + "description": "Score of the model if it has one", + "example": 0.89 + }, + "categories": { + "title": "Categories", + "type": "array", + "items": { + "type": "string" + }, + "description": "Names of supported categories", + "example": [ + "string" + ] + }, + "type": { + "title": "Type", + "type": "string", + "description": "Type of the model", + "example": "preprocessing" + }, + "description": { + "title": "Description", + "type": "string", + "description": "Description of the model", + "example": "New model" + } + } + }, + "ModelId": { + "title": "ModelId", + "required": [ + "id" + ], + "type": "object", + "properties": { + "id": { + "title": "Model id", + "type": "string", + "description": "Model id which is the name of the model", + "example": "custom" + } + } + }, + "ModelWithId": { + "title": "ModelWithId", + "required": [ + "name", + "basement", + "categories", + "id" + ], + "type": "object", + "properties": { + "name": { + "title": "Description of model name", + "type": "string", + "example": "custom model based on pytorch" + }, + "basement": { + "title": "Docker image's name", + "type": "string", + "description": "Name of the docker image with model logic - foreign key", + "example": "custom:v1.1" + }, + "data_path": { + "title": "Checkpoint path", + "allOf": [ + { + "$ref": "#/components/schemas/MinioPath" + } + ], + "description": "Json with the path to the model's checkpoint" + }, + "configuration_path": { + "title": "Config path", + "allOf": [ + { + "$ref": "#/components/schemas/MinioPath" + } + ], + "description": "Json with the path to the model's config" + }, + "training_id": { + "title": "Training id", + "exclusiveMinimum": 0.0, + "type": "integer", + "description": "Id of the training for that model. It's a foreign key", + "example": 3 + }, + "score": { + "title": "Score", + "type": "number", + "description": "Score of the model if it has one", + "example": 0.89 + }, + "categories": { + "title": "Categories", + "type": "array", + "items": { + "type": "string" + }, + "description": "Names of supported categories", + "example": [ + "string" + ] + }, + "type": { + "title": "Type", + "type": "string", + "description": "Type of the model", + "example": "preprocessing" + }, + "description": { + "title": "Description", + "type": "string", + "description": "Description of the model", + "example": "New model" + }, + "id": { + "title": "Model's name", + "minLength": 1, + "type": "string", + "description": "Model can be deploy and be accessible with this name. Should be unique, not longer than 15 symbol and not shorter than 1 symbol. Consist of latin lowercase letters, numbers and - only.", + "example": "custom" + } + } + }, + "MsgResponse": { + "title": "MsgResponse", + "required": [ + "msg" + ], + "type": "object", + "properties": { + "msg": { + "title": "Msg", + "type": "string", + "example": "Resource was created" + } + } + }, + "Page_Any_": { + "title": "Page[Any]", + "required": [ + "pagination", + "data" + ], + "type": "object", + "properties": { + "pagination": { + "$ref": "#/components/schemas/PaginationOut" + }, + "data": { + "title": "Data", + "type": "array", + "items": {} + } + }, + "description": "Abstract base class for generic types.\n\nA generic type is typically declared by inheriting from\nthis class parameterized with one or more type variables.\nFor example, a generic mapping type might be defined as::\n\n class Mapping(Generic[KT, VT]):\n def __getitem__(self, key: KT) -> VT:\n ...\n # Etc.\n\nThis class can then be used as follows::\n\n def lookup_name(mapping: Mapping[KT, VT], key: KT, default: VT) -> VT:\n try:\n return mapping[key]\n except KeyError:\n return default" + }, + "Page_Basement_": { + "title": "Page[Basement]", + "required": [ + "pagination", + "data" + ], + "type": "object", + "properties": { + "pagination": { + "$ref": "#/components/schemas/PaginationOut" + }, + "data": { + "title": "Data", + "type": "array", + "items": { + "$ref": "#/components/schemas/Basement" + } + } + }, + "description": "Abstract base class for generic types.\n\nA generic type is typically declared by inheriting from\nthis class parameterized with one or more type variables.\nFor example, a generic mapping type might be defined as::\n\n class Mapping(Generic[KT, VT]):\n def __getitem__(self, key: KT) -> VT:\n ...\n # Etc.\n\nThis class can then be used as follows::\n\n def lookup_name(mapping: Mapping[KT, VT], key: KT, default: VT) -> VT:\n try:\n return mapping[key]\n except KeyError:\n return default" + }, + "Page_Model_": { + "title": "Page[Model]", + "required": [ + "pagination", + "data" + ], + "type": "object", + "properties": { + "pagination": { + "$ref": "#/components/schemas/PaginationOut" + }, + "data": { + "title": "Data", + "type": "array", + "items": { + "$ref": "#/components/schemas/Model" + } + } + }, + "description": "Abstract base class for generic types.\n\nA generic type is typically declared by inheriting from\nthis class parameterized with one or more type variables.\nFor example, a generic mapping type might be defined as::\n\n class Mapping(Generic[KT, VT]):\n def __getitem__(self, key: KT) -> VT:\n ...\n # Etc.\n\nThis class can then be used as follows::\n\n def lookup_name(mapping: Mapping[KT, VT], key: KT, default: VT) -> VT:\n try:\n return mapping[key]\n except KeyError:\n return default" + }, + "Page_Training_": { + "title": "Page[Training]", + "required": [ + "pagination", + "data" + ], + "type": "object", + "properties": { + "pagination": { + "$ref": "#/components/schemas/PaginationOut" + }, + "data": { + "title": "Data", + "type": "array", + "items": { + "$ref": "#/components/schemas/Training" + } + } + }, + "description": "Abstract base class for generic types.\n\nA generic type is typically declared by inheriting from\nthis class parameterized with one or more type variables.\nFor example, a generic mapping type might be defined as::\n\n class Mapping(Generic[KT, VT]):\n def __getitem__(self, key: KT) -> VT:\n ...\n # Etc.\n\nThis class can then be used as follows::\n\n def lookup_name(mapping: Mapping[KT, VT], key: KT, default: VT) -> VT:\n try:\n return mapping[key]\n except KeyError:\n return default" + }, + "Pagination": { + "title": "Pagination", + "required": [ + "page_size" + ], + "type": "object", + "properties": { + "page_num": { + "title": "Page Num", + "exclusiveMinimum": 0.0, + "type": "integer", + "default": 1 + }, + "page_size": { + "$ref": "#/components/schemas/_FilterPagesize" + } + } + }, + "PaginationOut": { + "title": "PaginationOut", + "required": [ + "page_size", + "min_pages_left", + "total", + "has_more" + ], + "type": "object", + "properties": { + "page_num": { + "title": "Page Num", + "exclusiveMinimum": 0.0, + "type": "integer", + "default": 1 + }, + "page_size": { + "$ref": "#/components/schemas/_FilterPagesize" + }, + "min_pages_left": { + "title": "Min Pages Left", + "type": "integer" + }, + "total": { + "title": "Total", + "type": "integer" + }, + "has_more": { + "title": "Has More", + "type": "boolean" + } + } + }, + "StatusEnum": { + "title": "StatusEnum", + "enum": [ + "ready", + "deployed" + ], + "type": "string", + "description": "An enumeration." + }, + "Training": { + "title": "Training", + "required": [ + "name", + "jobs", + "basement", + "epochs_count", + "id", + "created_by", + "created_at", + "tenant" + ], + "type": "object", + "properties": { + "name": { + "title": "Training's name", + "type": "string", + "example": "training name" + }, + "jobs": { + "title": "Jobs", + "type": "array", + "items": { + "type": "integer" + }, + "example": [ + 1, + 3, + 5 + ] + }, + "basement": { + "title": "Docker image's name", + "type": "string", + "description": "Name of the docker image for training (foreign key)", + "example": "custom:v1.1" + }, + "epochs_count": { + "title": "Count of training epochs", + "type": "integer", + "example": 13 + }, + "kubeflow_pipeline_id": { + "title": "Kubeflow Pipeline Id", + "type": "string", + "example": "17208425-00e9-49a0-95e7-c99da8f3b053" + }, + "id": { + "title": "Id", + "exclusiveMinimum": 0.0, + "type": "integer", + "description": "Integer which is training's id that should be modified", + "example": 3 + }, + "created_by": { + "title": "Created By", + "type": "string", + "description": "Author who has created training", + "example": "901" + }, + "created_at": { + "title": "Created At", + "type": "string", + "format": "date-time", + "example": "2021-11-09T17:09:43.101004" + }, + "tenant": { + "title": "Tenant", + "type": "string", + "description": "Author's tenant", + "example": "tenant1" + }, + "key_archive": { + "title": "Key Archive", + "type": "string", + "example": "trainings/127/training_archive" + }, + "key_annotation_dataset": { + "title": "Key Annotation Dataset", + "type": "string", + "example": "coco/dfedf2ed-1f11-4e44-bdbd-7c6c25111abc.zip" + } + } + }, + "TrainingBase": { + "title": "TrainingBase", + "required": [ + "name", + "jobs", + "basement", + "epochs_count" + ], + "type": "object", + "properties": { + "name": { + "title": "Training's name", + "type": "string", + "example": "training name" + }, + "jobs": { + "title": "Jobs", + "type": "array", + "items": { + "type": "integer" + }, + "example": [ + 1, + 3, + 5 + ] + }, + "basement": { + "title": "Docker image's name", + "type": "string", + "description": "Name of the docker image for training (foreign key)", + "example": "custom:v1.1" + }, + "epochs_count": { + "title": "Count of training epochs", + "type": "integer", + "example": 13 + }, + "kubeflow_pipeline_id": { + "title": "Kubeflow Pipeline Id", + "type": "string", + "example": "17208425-00e9-49a0-95e7-c99da8f3b053" + } + } + }, + "TrainingCredentials": { + "title": "TrainingCredentials", + "required": [ + "user", + "password", + "host", + "port" + ], + "type": "object", + "properties": { + "user": { + "title": "User", + "type": "string", + "description": "Colab username", + "example": "root" + }, + "password": { + "title": "Password", + "type": "string", + "description": "Colab user password", + "example": "SECRET" + }, + "host": { + "title": "Host", + "type": "string", + "description": "Ngrok host to connect colab", + "example": "tcp.ngrok.io" + }, + "port": { + "title": "Port", + "type": "integer", + "description": "Ngrok port to connect colab", + "example": "12345" + } + } + }, + "TrainingDelete": { + "title": "TrainingDelete", + "required": [ + "id" + ], + "type": "object", + "properties": { + "id": { + "title": "Id", + "exclusiveMinimum": 0.0, + "type": "integer", + "description": "Integer 'id' of training that should be deleted/deployed", + "example": 2 + } + } + }, + "TrainingUpdate": { + "title": "TrainingUpdate", + "required": [ + "name", + "jobs", + "basement", + "epochs_count", + "id" + ], + "type": "object", + "properties": { + "name": { + "title": "Training's name", + "type": "string", + "example": "training name" + }, + "jobs": { + "title": "Jobs", + "type": "array", + "items": { + "type": "integer" + }, + "example": [ + 1, + 3, + 5 + ] + }, + "basement": { + "title": "Docker image's name", + "type": "string", + "description": "Name of the docker image for training (foreign key)", + "example": "custom:v1.1" + }, + "epochs_count": { + "title": "Count of training epochs", + "type": "integer", + "example": 13 + }, + "kubeflow_pipeline_id": { + "title": "Kubeflow Pipeline Id", + "type": "string", + "example": "17208425-00e9-49a0-95e7-c99da8f3b053" + }, + "id": { + "title": "Id", + "exclusiveMinimum": 0.0, + "type": "integer", + "description": "Integer which is training's id that should be modified", + "example": 3 + } + } + }, + "UnauthorisedResponse": { + "title": "UnauthorisedResponse", + "required": [ + "detail" + ], + "type": "object", + "properties": { + "detail": { + "title": "Detail", + "type": "string", + "example": "No authorization provided!" + } + } + }, + "ValidationError": { + "title": "ValidationError", + "required": [ + "loc", + "msg", + "type" + ], + "type": "object", + "properties": { + "loc": { + "title": "Location", + "type": "array", + "items": { + "type": "string" + } + }, + "msg": { + "title": "Message", + "type": "string" + }, + "type": { + "title": "Error Type", + "type": "string" + } + } + }, + "WrongResponse": { + "title": "WrongResponse", + "required": [ + "detail" + ], + "type": "object", + "properties": { + "detail": { + "title": "Detail", + "type": "string", + "example": "Not existing entity" + } + } + }, + "_BadgerdocSearch_basement_Basement_": { + "title": "_BadgerdocSearch[basement_Basement]", + "type": "object", + "properties": { + "pagination": { + "$ref": "#/components/schemas/Pagination" + }, + "filters": { + "title": "Filters", + "type": "array", + "items": { + "$ref": "#/components/schemas/_Filters_basement_Basement_" + } + }, + "sorting": { + "title": "Sorting", + "type": "array", + "items": { + "$ref": "#/components/schemas/_Sorts_basement_Basement_" + } + } + }, + "description": "Abstract base class for generic types.\n\nA generic type is typically declared by inheriting from\nthis class parameterized with one or more type variables.\nFor example, a generic mapping type might be defined as::\n\n class Mapping(Generic[KT, VT]):\n def __getitem__(self, key: KT) -> VT:\n ...\n # Etc.\n\nThis class can then be used as follows::\n\n def lookup_name(mapping: Mapping[KT, VT], key: KT, default: VT) -> VT:\n try:\n return mapping[key]\n except KeyError:\n return default" + }, + "_BadgerdocSearch_model_Model_": { + "title": "_BadgerdocSearch[model_Model]", + "type": "object", + "properties": { + "pagination": { + "$ref": "#/components/schemas/Pagination" + }, + "filters": { + "title": "Filters", + "type": "array", + "items": { + "$ref": "#/components/schemas/_Filters_model_Model_" + } + }, + "sorting": { + "title": "Sorting", + "type": "array", + "items": { + "$ref": "#/components/schemas/_Sorts_model_Model_" + } + } + }, + "description": "Abstract base class for generic types.\n\nA generic type is typically declared by inheriting from\nthis class parameterized with one or more type variables.\nFor example, a generic mapping type might be defined as::\n\n class Mapping(Generic[KT, VT]):\n def __getitem__(self, key: KT) -> VT:\n ...\n # Etc.\n\nThis class can then be used as follows::\n\n def lookup_name(mapping: Mapping[KT, VT], key: KT, default: VT) -> VT:\n try:\n return mapping[key]\n except KeyError:\n return default" + }, + "_BadgerdocSearch_training_Training_": { + "title": "_BadgerdocSearch[training_Training]", + "type": "object", + "properties": { + "pagination": { + "$ref": "#/components/schemas/Pagination" + }, + "filters": { + "title": "Filters", + "type": "array", + "items": { + "$ref": "#/components/schemas/_Filters_training_Training_" + } + }, + "sorting": { + "title": "Sorting", + "type": "array", + "items": { + "$ref": "#/components/schemas/_Sorts_training_Training_" + } + } + }, + "description": "Abstract base class for generic types.\n\nA generic type is typically declared by inheriting from\nthis class parameterized with one or more type variables.\nFor example, a generic mapping type might be defined as::\n\n class Mapping(Generic[KT, VT]):\n def __getitem__(self, key: KT) -> VT:\n ...\n # Etc.\n\nThis class can then be used as follows::\n\n def lookup_name(mapping: Mapping[KT, VT], key: KT, default: VT) -> VT:\n try:\n return mapping[key]\n except KeyError:\n return default" + }, + "_FilterOperations": { + "title": "_FilterOperations", + "enum": [ + "is_null", + "is_not_null", + "eq", + "ne", + "gt", + "lt", + "ge", + "le", + "like", + "ilike", + "not_ilike", + "in", + "not_in", + "any", + "not_any", + "match", + "distinct", + "parent", + "parents_recursive", + "children", + "children_recursive" + ], + "type": "string", + "description": "An enumeration." + }, + "_FilterPagesize": { + "title": "_FilterPagesize", + "enum": [ + 15, + 30, + 50, + 80, + 100 + ], + "type": "integer", + "description": "An enumeration." + }, + "_Filters_basement_Basement_": { + "title": "_Filters[basement_Basement]", + "required": [ + "field", + "operator" + ], + "type": "object", + "properties": { + "field": { + "$ref": "#/components/schemas/basement_Basement" + }, + "operator": { + "$ref": "#/components/schemas/_FilterOperations" + }, + "value": { + "title": "Value" + } + } + }, + "_Filters_model_Model_": { + "title": "_Filters[model_Model]", + "required": [ + "field", + "operator" + ], + "type": "object", + "properties": { + "field": { + "$ref": "#/components/schemas/model_Model" + }, + "operator": { + "$ref": "#/components/schemas/_FilterOperations" + }, + "value": { + "title": "Value" + } + } + }, + "_Filters_training_Training_": { + "title": "_Filters[training_Training]", + "required": [ + "field", + "operator" + ], + "type": "object", + "properties": { + "field": { + "$ref": "#/components/schemas/training_Training" + }, + "operator": { + "$ref": "#/components/schemas/_FilterOperations" + }, + "value": { + "title": "Value" + } + } + }, + "_SortDirection": { + "title": "_SortDirection", + "enum": [ + "asc", + "desc" + ], + "type": "string", + "description": "An enumeration." + }, + "_Sorts_basement_Basement_": { + "title": "_Sorts[basement_Basement]", + "required": [ + "field", + "direction" + ], + "type": "object", + "properties": { + "field": { + "$ref": "#/components/schemas/basement_Basement" + }, + "direction": { + "$ref": "#/components/schemas/_SortDirection" + } + } + }, + "_Sorts_model_Model_": { + "title": "_Sorts[model_Model]", + "required": [ + "field", + "direction" + ], + "type": "object", + "properties": { + "field": { + "$ref": "#/components/schemas/model_Model" + }, + "direction": { + "$ref": "#/components/schemas/_SortDirection" + } + } + }, + "_Sorts_training_Training_": { + "title": "_Sorts[training_Training]", + "required": [ + "field", + "direction" + ], + "type": "object", + "properties": { + "field": { + "$ref": "#/components/schemas/training_Training" + }, + "direction": { + "$ref": "#/components/schemas/_SortDirection" + } + } + }, + "basement_Basement": { + "title": "basement_Basement", + "enum": [ + "id", + "name", + "supported_args", + "limits", + "gpu_support", + "created_by", + "created_at", + "tenant", + "key_script", + "key_archive", + "models.id", + "models.name", + "models.basement", + "models.data_path", + "models.configuration_path", + "models.training_id", + "models.status", + "models.score", + "models.categories", + "models.created_by", + "models.created_at", + "models.tenant", + "models.type", + "models.description", + "models.latest", + "models.version", + "training.id", + "training.name", + "training.jobs", + "training.basement", + "training.epochs_count", + "training.kubeflow_pipeline_id", + "training.created_by", + "training.created_at", + "training.tenant", + "training.key_archive", + "training.key_annotation_dataset" + ], + "type": "string", + "description": "An enumeration." + }, + "model_Model": { + "title": "model_Model", + "enum": [ + "id", + "name", + "basement", + "data_path", + "configuration_path", + "training_id", + "status", + "score", + "categories", + "created_by", + "created_at", + "tenant", + "type", + "description", + "latest", + "version", + "base.id", + "base.name", + "base.supported_args", + "base.limits", + "base.gpu_support", + "base.created_by", + "base.created_at", + "base.tenant", + "base.key_script", + "base.key_archive", + "training.id", + "training.name", + "training.jobs", + "training.basement", + "training.epochs_count", + "training.kubeflow_pipeline_id", + "training.created_by", + "training.created_at", + "training.tenant", + "training.key_archive", + "training.key_annotation_dataset" + ], + "type": "string", + "description": "An enumeration." + }, + "training_Training": { + "title": "training_Training", + "enum": [ + "id", + "name", + "jobs", + "basement", + "epochs_count", + "kubeflow_pipeline_id", + "created_by", + "created_at", + "tenant", + "key_archive", + "key_annotation_dataset", + "models.id", + "models.name", + "models.basement", + "models.data_path", + "models.configuration_path", + "models.training_id", + "models.status", + "models.score", + "models.categories", + "models.created_by", + "models.created_at", + "models.tenant", + "models.type", + "models.description", + "models.latest", + "models.version", + "bases.id", + "bases.name", + "bases.supported_args", + "bases.limits", + "bases.gpu_support", + "bases.created_by", + "bases.created_at", + "bases.tenant", + "bases.key_script", + "bases.key_archive" + ], + "type": "string", + "description": "An enumeration." + } + }, + "securitySchemes": { + "TenantDependencyDocs": { + "type": "http", + "scheme": "bearer" + } + } + } +} diff --git a/taxonomy/taxonomy/taxonomy/__init__.py b/docs/openapi/pipelines.json similarity index 100% rename from taxonomy/taxonomy/taxonomy/__init__.py rename to docs/openapi/pipelines.json diff --git a/docs/openapi/processing.json b/docs/openapi/processing.json new file mode 100644 index 000000000..34a28b7ed --- /dev/null +++ b/docs/openapi/processing.json @@ -0,0 +1,629 @@ +{ + "openapi": "3.0.2", + "info": { + "title": "processing", + "version": "0.1.1" + }, + "paths": { + "/": { + "post": { + "summary": "Run Text Matching", + "description": "Merge words into paragraphs.", + "operationId": "run_text_matching__post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AnnotationData" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AnnotationData" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/tokens/{file_id}": { + "get": { + "summary": "Get data by preprocessing result.", + "description": "Take preprocess data from MinIO for `file_id`, and return it as\narray of pages. If file doesn't contain words, then service return\narray of pages with empty `objs` field. If there are no preprocess result\n(preprocess didn't run or `file_id` is wrong), then return `[]`.", + "operationId": "get_preprocessing_result_tokens__file_id__get", + "parameters": [ + { + "required": true, + "schema": { + "title": "File Id", + "type": "integer" + }, + "example": 4, + "name": "file_id", + "in": "path" + }, + { + "required": false, + "schema": { + "title": "Pages", + "minimum": 1.0, + "minItems": 1, + "uniqueItems": true, + "type": "array", + "items": { + "minimum": 1.0, + "type": "integer" + } + }, + "example": [ + 1, + 3, + 4 + ], + "name": "pages", + "in": "query" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "tenant", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "200": { + "description": "`!`For more information look at preprocessing microservice. This endpoint just glues it's results. https://git.epam.com/epm-uii/badgerdoc/back-end/-/tree/master/preprocessing", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PreprocessingResultResponse" + } + } + } + }, + "400": { + "description": "Some problems with minio", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MinioProblem" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/run_preprocess": { + "post": { + "summary": "Run preprocessing service via pipelines", + "description": "Create task for preprocessing.", + "operationId": "execute_preprocessing_service_run_preprocess_post", + "parameters": [ + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PreprocessExecuteRequest" + } + } + }, + "required": true + }, + "responses": { + "202": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/tasks/{task_id}": { + "put": { + "tags": [ + "Preprocessing tasks" + ], + "summary": "Update Task Status", + "operationId": "update_task_status_tasks__task_id__put", + "parameters": [ + { + "required": true, + "schema": { + "title": "Task Id", + "type": "integer" + }, + "name": "task_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateStatusRequest" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/lang": { + "get": { + "summary": "Return list of available preprocessing languages.", + "operationId": "get_list_language_lang_get", + "parameters": [ + { + "description": "model id", + "required": true, + "schema": { + "title": "Model Id", + "type": "string", + "description": "model id" + }, + "example": "preprocessing", + "name": "model_id", + "in": "query" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/preprocessing_health_check": { + "post": { + "summary": "Return `True` if test succeed, otherwise `False`", + "description": "Test run for preprocessing", + "operationId": "preprocessing_health_check_preprocessing_health_check_post", + "parameters": [ + { + "required": true, + "schema": { + "title": "Model Url", + "type": "string" + }, + "name": "model_url", + "in": "query" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "title": "Languages", + "uniqueItems": true, + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + } + }, + "components": { + "schemas": { + "AnnotationData": { + "title": "AnnotationData", + "required": [ + "file", + "bucket", + "input" + ], + "type": "object", + "properties": { + "file": { + "title": "Path to input PDF", + "type": "string", + "example": "files/4/4.pdf" + }, + "bucket": { + "title": "Bucket in the MinIO", + "type": "string", + "example": "test" + }, + "input": { + "title": "Pages with annotations", + "allOf": [ + { + "$ref": "#/components/schemas/Input" + } + ] + }, + "input_path": { + "title": "Path to ocr JSON", + "type": "string", + "description": "Default path is a folder \"ocr\" nearby `file`.", + "format": "path", + "example": "ocr" + } + }, + "description": "A model for an input request." + }, + "HTTPValidationError": { + "title": "HTTPValidationError", + "type": "object", + "properties": { + "detail": { + "title": "Detail", + "type": "array", + "items": { + "$ref": "#/components/schemas/ValidationError" + } + } + } + }, + "Input": { + "title": "Input", + "required": [ + "pages" + ], + "type": "object", + "properties": { + "pages": { + "title": "Pages", + "type": "array", + "items": { + "$ref": "#/components/schemas/Page" + } + } + } + }, + "MinioProblem": { + "title": "MinioProblem", + "required": [ + "detail" + ], + "type": "object", + "properties": { + "detail": { + "title": "Detail", + "type": "string", + "example": "raw minio exception text" + } + } + }, + "Page": { + "title": "Page", + "required": [ + "page_num", + "size", + "objs" + ], + "type": "object", + "properties": { + "page_num": { + "title": "Page Num", + "type": "integer", + "example": 1 + }, + "size": { + "$ref": "#/components/schemas/PageSize" + }, + "objs": { + "title": "Objs", + "type": "array", + "items": { + "type": "object" + }, + "example": [ + { + "id": 1, + "bbox": [ + 1, + 2, + 3, + 4 + ], + "category": "1", + "text": "string" + } + ] + } + }, + "description": "A model for the field with bboxes." + }, + "PageSize": { + "title": "PageSize", + "required": [ + "width", + "height" + ], + "type": "object", + "properties": { + "width": { + "title": "Width", + "type": "number", + "example": 200.0 + }, + "height": { + "title": "Height", + "type": "number", + "example": 300.0 + } + } + }, + "PreprocessExecuteRequest": { + "title": "PreprocessExecuteRequest", + "required": [ + "file_ids", + "pipeline_id" + ], + "type": "object", + "properties": { + "file_ids": { + "title": "File Ids", + "type": "array", + "items": { + "type": "integer" + }, + "example": [ + 4, + 52 + ] + }, + "pipeline_id": { + "title": "Pipeline Id", + "type": "integer", + "description": "Id of pipeline to executing", + "example": 123 + }, + "languages": { + "title": "Languages", + "type": "array", + "items": { + "type": "string" + }, + "description": "Languages for OCR to recognize text", + "example": [ + "rus", + "eng" + ] + } + }, + "description": "Request body for `/run_preprocess endpoint`" + }, + "PreprocessingResultResponse": { + "title": "PreprocessingResultResponse", + "type": "object", + "description": "Response with preprocessing result.", + "example": [ + { + "size": { + "width": 612, + "height": 792 + }, + "page_num": 2, + "objs": [ + { + "type": "text", + "bbox": [ + 307.14, + 143.27, + 327.14, + 153.27 + ], + "text": "word" + } + ] + }, + { + "size": { + "width": 612, + "height": 792 + }, + "page_num": 1, + "objs": [ + { + "type": "text", + "bbox": [ + 370.52, + 226.934, + 376.08, + 236.934 + ], + "text": "word" + } + ] + } + ] + }, + "StatusForUpdate": { + "title": "StatusForUpdate", + "enum": [ + "Running", + "Finished", + "Failed" + ], + "type": "string", + "description": "An enumeration." + }, + "UpdateStatusRequest": { + "title": "UpdateStatusRequest", + "required": [ + "status" + ], + "type": "object", + "properties": { + "status": { + "$ref": "#/components/schemas/StatusForUpdate" + } + } + }, + "ValidationError": { + "title": "ValidationError", + "required": [ + "loc", + "msg", + "type" + ], + "type": "object", + "properties": { + "loc": { + "title": "Location", + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer" + } + ] + } + }, + "msg": { + "title": "Message", + "type": "string" + }, + "type": { + "title": "Error Type", + "type": "string" + } + } + } + }, + "securitySchemes": { + "TenantDependencyDocs": { + "type": "http", + "scheme": "bearer" + } + } + } +} diff --git a/docs/openapi/scheduler.json b/docs/openapi/scheduler.json new file mode 100644 index 000000000..e69de29bb diff --git a/docs/openapi/search.json b/docs/openapi/search.json new file mode 100644 index 000000000..64a59a25b --- /dev/null +++ b/docs/openapi/search.json @@ -0,0 +1,963 @@ +{ + "openapi": "3.0.2", + "info": { + "title": "Badgerdoc Search", + "version": "0.1.4" + }, + "paths": { + "/pieces": { + "get": { + "tags": [ + "Search" + ], + "summary": "Search text pieces.", + "description": "Searches for text pieces saved in Elastic Search according to query\nparameters. If no parameters specified - returns all text pieces from\nElastic Search index. Supports pagination.", + "operationId": "get_text_piece_pieces_get", + "parameters": [ + { + "required": false, + "schema": { + "title": "Category", + "type": "string" + }, + "example": "Header", + "name": "category", + "in": "query" + }, + { + "required": false, + "schema": { + "title": "Content", + "type": "string" + }, + "example": "Elasticsearch", + "name": "content", + "in": "query" + }, + { + "required": false, + "schema": { + "title": "Document Id", + "minimum": 1.0, + "type": "integer" + }, + "example": 1, + "name": "document_id", + "in": "query" + }, + { + "required": false, + "schema": { + "title": "Page Number", + "minimum": 1.0, + "type": "integer" + }, + "example": 1, + "name": "page_number", + "in": "query" + }, + { + "required": false, + "schema": { + "title": "Page Size", + "maximum": 100.0, + "minimum": 1.0, + "type": "integer", + "default": 50 + }, + "example": 50, + "name": "page_size", + "in": "query" + }, + { + "required": false, + "schema": { + "title": "Page Num", + "minimum": 1.0, + "type": "integer", + "default": 1 + }, + "example": 1, + "name": "page_num", + "in": "query" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "badger-doc", + "name": "x-current-tenant", + "in": "header" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SearchResultSchema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundErrorSchema" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + }, + "post": { + "tags": [ + "Search" + ], + "summary": "Search text pieces.", + "operationId": "search_text_pieces_pieces_post", + "parameters": [ + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "badger-doc", + "name": "x-current-tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PiecesRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SearchResultSchema2" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundErrorSchema" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/indexation/{job_id}": { + "post": { + "tags": [ + "Search" + ], + "summary": "Start text pieces indexation process for provided job_id.", + "description": "Drops all already existing text pieces from Elastic Search index for this\njob if exists and starts indexation process for new text pieces in minio\nfor annotated pages mentioned in manifest.json files for this job.", + "operationId": "start_indexing_indexation__job_id__post", + "parameters": [ + { + "required": true, + "schema": { + "title": "Job Id", + "type": "integer" + }, + "example": 1, + "name": "job_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "badger-doc", + "name": "x-current-tenant", + "in": "header" + } + ], + "responses": { + "204": { + "description": "Successful Response" + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundErrorSchema" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/facets": { + "post": { + "tags": [ + "Facets" + ], + "summary": "API for facets", + "operationId": "search_facets_facets_post", + "parameters": [ + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FacetsRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FacetsResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + } + }, + "components": { + "schemas": { + "AggResult": { + "title": "AggResult", + "required": [ + "id", + "count" + ], + "type": "object", + "properties": { + "id": { + "title": "Id", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "description": "*Aggregation key id*", + "example": "Header" + }, + "count": { + "title": "Count", + "type": "integer", + "description": "*Count of aggregated docs*", + "example": 10 + }, + "name": { + "title": "Name", + "type": "string", + "description": "*A name of a category or a job*" + } + } + }, + "ConnectionErrorSchema": { + "title": "ConnectionErrorSchema", + "required": [ + "detail" + ], + "type": "object", + "properties": { + "detail": { + "title": "Detail", + "type": "string" + } + }, + "example": { + "detail": "Error: Connection error." + } + }, + "FACET_FIELDS": { + "title": "FACET_FIELDS", + "enum": [ + "category", + "document_id", + "page_number", + "job_id" + ], + "type": "string", + "description": "An enumeration." + }, + "FacetBodyResponse": { + "title": "FacetBodyResponse", + "required": [ + "name", + "values" + ], + "type": "object", + "properties": { + "name": { + "title": "Name", + "type": "string", + "description": "*A name of aggregation*", + "example": "category" + }, + "values": { + "title": "Values", + "type": "array", + "items": { + "$ref": "#/components/schemas/AggResult" + }, + "description": "*An array aggregation results*" + } + } + }, + "FacetOperator": { + "title": "FacetOperator", + "enum": [ + "in", + "not_in" + ], + "type": "string", + "description": "An enumeration." + }, + "FacetParams": { + "title": "FacetParams", + "required": [ + "name" + ], + "type": "object", + "properties": { + "name": { + "allOf": [ + { + "$ref": "#/components/schemas/FACET_FIELDS" + } + ], + "description": "*Available fields for facets*", + "example": "category" + }, + "limit": { + "title": "Limit", + "maximum": 100.0, + "minimum": 1.0, + "type": "integer", + "description": "*A limit that will be returned for particular field*", + "default": 10, + "example": 10 + } + } + }, + "FacetsRequest": { + "title": "FacetsRequest", + "required": [ + "facets" + ], + "type": "object", + "properties": { + "query": { + "title": "Query", + "type": "string", + "description": "*Match query in a text type field*", + "example": "Elasticsearch" + }, + "facets": { + "title": "Facets", + "type": "array", + "items": { + "$ref": "#/components/schemas/FacetParams" + }, + "description": "*An array for ES aggregations*" + }, + "filters": { + "title": "Filters", + "type": "array", + "items": { + "$ref": "#/components/schemas/FilterParams" + }, + "description": "*Filters for facets*" + } + } + }, + "FacetsResponse": { + "title": "FacetsResponse", + "required": [ + "facets" + ], + "type": "object", + "properties": { + "facets": { + "title": "Facets", + "type": "array", + "items": { + "$ref": "#/components/schemas/FacetBodyResponse" + }, + "example": [ + { + "name": "category", + "values": [ + { + "id": "Header", + "count": 20 + }, + { + "id": "Title", + "count": 5 + }, + { + "id": "Table", + "count": 1 + } + ] + }, + { + "name": "job_id", + "values": [ + { + "id": 409, + "count": 10 + }, + { + "id": 42, + "count": 20 + } + ] + } + ] + } + } + }, + "FilterParams": { + "title": "FilterParams", + "required": [ + "field", + "operator", + "value" + ], + "type": "object", + "properties": { + "field": { + "allOf": [ + { + "$ref": "#/components/schemas/FACET_FIELDS" + } + ], + "description": "*Available fields for facets*", + "example": "category" + }, + "operator": { + "allOf": [ + { + "$ref": "#/components/schemas/FacetOperator" + } + ], + "description": "*Available filter operators*", + "example": "in" + }, + "value": { + "title": "Value", + "type": "array", + "items": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "number" + }, + { + "type": "string" + } + ] + }, + "description": "*An array of str|float|int values*", + "example": [ + "Header", + "Title" + ] + } + } + }, + "GeomObject": { + "title": "GeomObject", + "required": [ + "category", + "content", + "document_id", + "page_number", + "job_id" + ], + "type": "object", + "properties": { + "category": { + "title": "Category", + "type": "string", + "example": "Header" + }, + "content": { + "title": "Content", + "type": "string", + "example": "ElasticSearch" + }, + "document_id": { + "title": "Document Id", + "minimum": 1.0, + "type": "integer", + "example": 1 + }, + "page_number": { + "title": "Page Number", + "minimum": 1.0, + "type": "integer", + "example": 1 + }, + "bbox": { + "title": "Bbox", + "maxItems": 4, + "minItems": 4, + "type": "array", + "items": { + "type": "number" + }, + "example": [ + 1.5, + 1.5, + 1.5, + 1.5 + ] + }, + "tokens": { + "title": "Tokens", + "type": "array", + "items": { + "type": "string" + }, + "example": [ + "token1", + "token2", + "token3" + ] + }, + "job_id": { + "title": "Job Id", + "minimum": 1.0, + "type": "integer", + "example": 1 + } + } + }, + "HTTPValidationError": { + "title": "HTTPValidationError", + "type": "object", + "properties": { + "detail": { + "title": "Detail", + "type": "array", + "items": { + "$ref": "#/components/schemas/ValidationError" + } + } + } + }, + "NotFoundErrorSchema": { + "title": "NotFoundErrorSchema", + "required": [ + "detail" + ], + "type": "object", + "properties": { + "detail": { + "title": "Detail", + "type": "string" + } + }, + "example": { + "detail": "Resource was not found." + } + }, + "PIECES_ENUM": { + "title": "PIECES_ENUM", + "enum": [ + "category", + "document_id", + "page_number", + "job_id" + ], + "type": "string", + "description": "An enumeration." + }, + "PaginationOut": { + "title": "PaginationOut", + "required": [ + "pages", + "total" + ], + "type": "object", + "properties": { + "page_num": { + "title": "Page Num", + "exclusiveMinimum": 0.0, + "type": "integer", + "default": 1 + }, + "page_size": { + "title": "Page Size", + "exclusiveMinimum": 0.0, + "type": "integer", + "default": 50 + }, + "pages": { + "title": "Pages", + "type": "integer" + }, + "total": { + "title": "Total", + "type": "integer" + } + } + }, + "PieceFilter": { + "title": "PieceFilter", + "required": [ + "field", + "operator", + "value" + ], + "type": "object", + "properties": { + "field": { + "$ref": "#/components/schemas/PIECES_ENUM" + }, + "operator": { + "$ref": "#/components/schemas/PieceOperators" + }, + "value": { + "title": "Value", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "number" + }, + { + "type": "string" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "number" + }, + { + "type": "string" + } + ] + } + } + ] + } + } + }, + "PieceOperators": { + "title": "PieceOperators", + "enum": [ + "eq", + "in", + "not_in" + ], + "type": "string", + "description": "An enumeration." + }, + "PiecePagination": { + "title": "PiecePagination", + "type": "object", + "properties": { + "page_num": { + "title": "Page Num", + "exclusiveMinimum": 0.0, + "type": "integer", + "default": 1 + }, + "page_size": { + "title": "Page Size", + "exclusiveMinimum": 0.0, + "type": "integer", + "default": 50 + } + } + }, + "PieceSort": { + "title": "PieceSort", + "required": [ + "field", + "direction" + ], + "type": "object", + "properties": { + "field": { + "$ref": "#/components/schemas/PIECES_ENUM" + }, + "direction": { + "$ref": "#/components/schemas/PieceSortDirections" + } + } + }, + "PieceSortDirections": { + "title": "PieceSortDirections", + "enum": [ + "asc", + "desc" + ], + "type": "string", + "description": "An enumeration." + }, + "PiecesRequest": { + "title": "PiecesRequest", + "type": "object", + "properties": { + "query": { + "title": "Query", + "type": "string" + }, + "pagination": { + "$ref": "#/components/schemas/PiecePagination" + }, + "filters": { + "title": "Filters", + "type": "array", + "items": { + "$ref": "#/components/schemas/PieceFilter" + } + }, + "sorting": { + "title": "Sorting", + "type": "array", + "items": { + "$ref": "#/components/schemas/PieceSort" + } + } + } + }, + "SearchResultSchema": { + "title": "SearchResultSchema", + "required": [ + "current_page", + "page_size", + "total_objects", + "text_pieces" + ], + "type": "object", + "properties": { + "current_page": { + "title": "Current Page", + "minimum": 1.0, + "type": "integer" + }, + "page_size": { + "title": "Page Size", + "minimum": 1.0, + "type": "integer" + }, + "total_objects": { + "title": "Total Objects", + "minimum": 0.0, + "type": "integer" + }, + "text_pieces": { + "title": "Text Pieces", + "type": "array", + "items": { + "$ref": "#/components/schemas/GeomObject" + } + } + } + }, + "SearchResultSchema2": { + "title": "SearchResultSchema2", + "required": [ + "pagination", + "data" + ], + "type": "object", + "properties": { + "pagination": { + "$ref": "#/components/schemas/PaginationOut" + }, + "data": { + "title": "Data", + "type": "array", + "items": { + "$ref": "#/components/schemas/GeomObject" + } + } + } + }, + "ValidationError": { + "title": "ValidationError", + "required": [ + "loc", + "msg", + "type" + ], + "type": "object", + "properties": { + "loc": { + "title": "Location", + "type": "array", + "items": { + "type": "string" + } + }, + "msg": { + "title": "Message", + "type": "string" + }, + "type": { + "title": "Error Type", + "type": "string" + } + } + } + }, + "securitySchemes": { + "TenantDependencyDocs": { + "type": "http", + "scheme": "bearer" + } + } + }, + "tags": [ + { + "name": "Search", + "description": "Actions associated with search management." + } + ] +} diff --git a/docs/openapi/taxonomy.json b/docs/openapi/taxonomy.json new file mode 100644 index 000000000..c9a384374 --- /dev/null +++ b/docs/openapi/taxonomy.json @@ -0,0 +1,2255 @@ +{ + "openapi": "3.0.2", + "info": { + "title": "Badgerdoc Taxonomy", + "version": "0.0.1" + }, + "paths": { + "/taxons": { + "post": { + "tags": [ + "Taxon" + ], + "summary": "Save new taxon and return saved one.", + "operationId": "save_taxon_taxons_post", + "parameters": [ + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TaxonInputSchema" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TaxonResponseSchema" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/taxons/{taxon_id}": { + "get": { + "tags": [ + "Taxon" + ], + "summary": "Get taxon by id.", + "operationId": "fetch_taxon_taxons__taxon_id__get", + "parameters": [ + { + "required": true, + "schema": { + "title": "Taxon Id", + "type": "string" + }, + "example": "1", + "name": "taxon_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TaxonResponseSchema" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + }, + "put": { + "tags": [ + "Taxon" + ], + "summary": "Update taxon.", + "description": "Updates taxon by id and returns updated taxon.", + "operationId": "update_taxon_taxons__taxon_id__put", + "parameters": [ + { + "required": true, + "schema": { + "title": "Taxon Id", + "type": "string" + }, + "example": "1", + "name": "taxon_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TaxonBaseSchema" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TaxonResponseSchema" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestErrorSchema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + }, + "delete": { + "tags": [ + "Taxon" + ], + "summary": "Delete taxon by id.", + "operationId": "delete_taxon_taxons__taxon_id__delete", + "parameters": [ + { + "required": true, + "schema": { + "title": "Taxon Id", + "type": "string" + }, + "example": "1", + "name": "taxon_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "204": { + "description": "Successful Response" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/taxons/search": { + "post": { + "tags": [ + "Taxon" + ], + "summary": "Search taxons.", + "description": "Searches and returns taxons data according to search request parameters\nfilters. Supports pagination and ordering.", + "operationId": "search_categories_taxons_search_post", + "parameters": [ + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/_BadgerdocSearch_taxon_Taxon_" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Page_Union_taxonomy.schemas.taxon.TaxonResponseSchema__str__dict__" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/taxons/parents_concatenate": { + "post": { + "tags": [ + "Taxon" + ], + "summary": "Get concatenated list of ids and names for taxon's parents.", + "description": "Get concatenated list of ids and names for taxon's parents.", + "operationId": "parents_concatenate_taxons_parents_concatenate_post", + "parameters": [ + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "title": "Request", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "title": "Response Parents Concatenate Taxons Parents Concatenate Post", + "type": "array", + "items": { + "$ref": "#/components/schemas/ParentsConcatenateResponseSchema" + } + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/taxonomy": { + "get": { + "tags": [ + "Taxonomy" + ], + "summary": "Get all taxonomies by job id", + "operationId": "get_job_taxonomies_taxonomy_get", + "parameters": [ + { + "required": true, + "schema": { + "title": "Job Id", + "type": "string" + }, + "name": "job_id", + "in": "query" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "title": "Response Get Job Taxonomies Taxonomy Get", + "type": "array", + "items": { + "$ref": "#/components/schemas/JobTaxonomySchema" + } + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + }, + "put": { + "tags": [ + "Taxonomy" + ], + "summary": "Update taxonomy.", + "description": "Updates taxonomy by id and returns updated taxonomy.", + "operationId": "update_taxonomy_taxonomy_put", + "parameters": [ + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TaxonomyInputSchema" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TaxonomyResponseSchema" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + }, + "post": { + "tags": [ + "Taxonomy" + ], + "summary": "Save new taxonomy and return saved one.", + "operationId": "create_new_taxonomy_taxonomy_post", + "parameters": [ + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TaxonomyInputSchema" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TaxonomyResponseSchema" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/taxonomy/{taxonomy_id}": { + "get": { + "tags": [ + "Taxonomy" + ], + "summary": "Get taxonomy by id.", + "operationId": "get_taxonomy_by_id_taxonomy__taxonomy_id__get", + "parameters": [ + { + "required": true, + "schema": { + "title": "Taxonomy Id", + "type": "string" + }, + "example": "1", + "name": "taxonomy_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TaxonomyResponseSchema" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + }, + "delete": { + "tags": [ + "Taxonomy" + ], + "summary": "Delete latest taxonomy by id.", + "operationId": "delete_taxonomy_taxonomy__taxonomy_id__delete", + "parameters": [ + { + "required": true, + "schema": { + "title": "Taxonomy Id", + "type": "string" + }, + "example": "1", + "name": "taxonomy_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "204": { + "description": "Successful Response" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/taxonomy/{taxonomy_id}/{version}": { + "get": { + "tags": [ + "Taxonomy" + ], + "summary": "Get taxonomy by id and version.", + "operationId": "get_taxonomy_by_id_and_version_taxonomy__taxonomy_id___version__get", + "parameters": [ + { + "required": true, + "schema": { + "title": "Taxonomy Id", + "type": "string" + }, + "example": "1", + "name": "taxonomy_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "Version", + "type": "integer" + }, + "example": 1, + "name": "version", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "404": { + "description": "Taxonomy was not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + }, + "put": { + "tags": [ + "Taxonomy" + ], + "summary": "Update taxonomy by id and version.", + "description": "Updates taxonomy by id and returns updated taxonomy.", + "operationId": "update_taxonomy_by_id_and_version_taxonomy__taxonomy_id___version__put", + "parameters": [ + { + "required": true, + "schema": { + "title": "Taxonomy Id", + "type": "string" + }, + "example": "1", + "name": "taxonomy_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "Version", + "type": "integer" + }, + "example": 1, + "name": "version", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TaxonomyBaseSchema" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TaxonomyResponseSchema" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestErrorSchema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + }, + "delete": { + "tags": [ + "Taxonomy" + ], + "summary": "Delete taxonomy by id and version.", + "operationId": "delete_taxonomy_by_id_and_version_taxonomy__taxonomy_id___version__delete", + "parameters": [ + { + "required": true, + "schema": { + "title": "Taxonomy Id", + "type": "string" + }, + "example": "1", + "name": "taxonomy_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "Version", + "type": "integer" + }, + "example": 1, + "name": "version", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "204": { + "description": "Successful Response" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/taxonomy/link_category": { + "post": { + "tags": [ + "Taxonomy" + ], + "summary": "Creates association between taxonomy and category for exact job.", + "operationId": "associate_taxonomy_to_category_taxonomy_link_category_post", + "parameters": [ + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "title": "Category Links", + "type": "array", + "items": { + "$ref": "#/components/schemas/CategoryLinkSchema" + } + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "title": "Response Associate Taxonomy To Category Taxonomy Link Category Post", + "type": "array", + "items": { + "$ref": "#/components/schemas/CategoryLinkSchema" + } + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/taxonomy/link_category/{job_id}": { + "delete": { + "tags": [ + "Taxonomy" + ], + "summary": "Deletes association between taxonomies for exact job.", + "operationId": "delete_category_link_by_job_id_taxonomy_link_category__job_id__delete", + "parameters": [ + { + "required": true, + "schema": { + "title": "Job Id", + "type": "string" + }, + "example": "123", + "name": "job_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "204": { + "description": "Successful Response" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/taxonomy/link_category/{job_id}/{category_id}": { + "get": { + "tags": [ + "Taxonomy" + ], + "summary": "Get taxonomy by job id and category id.", + "operationId": "get_taxonomy_by_job_and_category_id_taxonomy_link_category__job_id___category_id__get", + "parameters": [ + { + "required": true, + "schema": { + "title": "Job Id", + "type": "string" + }, + "example": "123", + "name": "job_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "Category Id", + "type": "string" + }, + "example": "321", + "name": "category_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "title": "Response Get Taxonomy By Job And Category Id Taxonomy Link Category Job Id Category Id Get", + "type": "array", + "items": { + "$ref": "#/components/schemas/TaxonomyResponseSchema" + } + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "404": { + "description": "Taxonomy was not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + }, + "delete": { + "tags": [ + "Taxonomy" + ], + "summary": "Deletes association between taxonomy and category for exact job.", + "operationId": "delete_category_link_taxonomy_link_category__job_id___category_id__delete", + "parameters": [ + { + "required": true, + "schema": { + "title": "Job Id", + "type": "string" + }, + "example": "123", + "name": "job_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "Category Id", + "type": "string" + }, + "example": "321", + "name": "category_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "204": { + "description": "Successful Response" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/taxonomy/all": { + "post": { + "tags": [ + "Taxonomy" + ], + "summary": "Search all taxonomies.", + "description": "Searches and returns taxonomies according to search request parameters\nfilters. Supports pagination and ordering.", + "operationId": "search_categories_taxonomy_all_post", + "parameters": [ + { + "required": true, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "example": "test", + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/_BadgerdocSearch_taxonomy_Taxonomy_" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Page_Union_taxonomy.schemas.taxonomy.TaxonomyResponseSchema__str__dict__" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectionErrorSchema" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestErrorSchema" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + } + }, + "components": { + "schemas": { + "BadRequestErrorSchema": { + "title": "BadRequestErrorSchema", + "required": [ + "detail" + ], + "type": "object", + "properties": { + "detail": { + "title": "Detail", + "type": "string" + } + }, + "example": { + "detail": "Bad request." + } + }, + "CategoryLinkSchema": { + "title": "CategoryLinkSchema", + "required": [ + "category_id", + "job_id", + "taxonomy_id" + ], + "type": "object", + "properties": { + "category_id": { + "title": "Category Id", + "type": "string", + "description": "Category id to link taxonomy to", + "example": "123abc" + }, + "job_id": { + "title": "Job Id", + "type": "string", + "description": "Job id to link taxonomy to", + "example": "123abc" + }, + "taxonomy_id": { + "title": "Taxonomy Id", + "type": "string", + "example": "my_taxonomy_id" + }, + "taxonomy_version": { + "title": "Taxonomy Version", + "type": "integer", + "description": "Version of taxonomy", + "example": 1 + } + } + }, + "ConnectionErrorSchema": { + "title": "ConnectionErrorSchema", + "required": [ + "detail" + ], + "type": "object", + "properties": { + "detail": { + "title": "Detail", + "type": "string" + } + }, + "example": { + "detail": "Error: Connection error." + } + }, + "HTTPValidationError": { + "title": "HTTPValidationError", + "type": "object", + "properties": { + "detail": { + "title": "Detail", + "type": "array", + "items": { + "$ref": "#/components/schemas/ValidationError" + } + } + } + }, + "JobTaxonomySchema": { + "title": "JobTaxonomySchema", + "required": [ + "name", + "id", + "version", + "category_id" + ], + "type": "object", + "properties": { + "name": { + "title": "Name", + "type": "string", + "description": "Taxonomy name", + "example": "taxonomy_name" + }, + "id": { + "title": "Id", + "type": "string", + "description": "Taxonomy id", + "example": "my_taxonomy_id" + }, + "version": { + "title": "Version", + "type": "integer", + "description": "Version of taxonomy", + "example": 1 + }, + "category_id": { + "title": "Category Id", + "type": "string", + "description": "Category id to link taxonomy to", + "example": "123abc" + } + } + }, + "NotFoundErrorSchema": { + "title": "NotFoundErrorSchema", + "required": [ + "detail" + ], + "type": "object", + "properties": { + "detail": { + "title": "Detail", + "type": "string" + } + }, + "example": { + "detail": "Resource was not found." + } + }, + "Page_Union_taxonomy.schemas.taxon.TaxonResponseSchema__str__dict__": { + "title": "Page[Union[taxonomy.schemas.taxon.TaxonResponseSchema, str, dict]]", + "required": [ + "pagination", + "data" + ], + "type": "object", + "properties": { + "pagination": { + "$ref": "#/components/schemas/PaginationOut" + }, + "data": { + "title": "Data", + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/TaxonResponseSchema" + }, + { + "type": "string" + }, + { + "type": "object" + } + ] + } + } + }, + "description": "Abstract base class for generic types.\n\nA generic type is typically declared by inheriting from\nthis class parameterized with one or more type variables.\nFor example, a generic mapping type might be defined as::\n\n class Mapping(Generic[KT, VT]):\n def __getitem__(self, key: KT) -> VT:\n ...\n # Etc.\n\nThis class can then be used as follows::\n\n def lookup_name(mapping: Mapping[KT, VT], key: KT, default: VT) -> VT:\n try:\n return mapping[key]\n except KeyError:\n return default" + }, + "Page_Union_taxonomy.schemas.taxonomy.TaxonomyResponseSchema__str__dict__": { + "title": "Page[Union[taxonomy.schemas.taxonomy.TaxonomyResponseSchema, str, dict]]", + "required": [ + "pagination", + "data" + ], + "type": "object", + "properties": { + "pagination": { + "$ref": "#/components/schemas/PaginationOut" + }, + "data": { + "title": "Data", + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/TaxonomyResponseSchema" + }, + { + "type": "string" + }, + { + "type": "object" + } + ] + } + } + }, + "description": "Abstract base class for generic types.\n\nA generic type is typically declared by inheriting from\nthis class parameterized with one or more type variables.\nFor example, a generic mapping type might be defined as::\n\n class Mapping(Generic[KT, VT]):\n def __getitem__(self, key: KT) -> VT:\n ...\n # Etc.\n\nThis class can then be used as follows::\n\n def lookup_name(mapping: Mapping[KT, VT], key: KT, default: VT) -> VT:\n try:\n return mapping[key]\n except KeyError:\n return default" + }, + "Pagination": { + "title": "Pagination", + "required": [ + "page_size" + ], + "type": "object", + "properties": { + "page_num": { + "title": "Page Num", + "exclusiveMinimum": 0.0, + "type": "integer", + "default": 1 + }, + "page_size": { + "$ref": "#/components/schemas/_FilterPagesize" + } + } + }, + "PaginationOut": { + "title": "PaginationOut", + "required": [ + "page_size", + "min_pages_left", + "total", + "has_more" + ], + "type": "object", + "properties": { + "page_num": { + "title": "Page Num", + "exclusiveMinimum": 0.0, + "type": "integer", + "default": 1 + }, + "page_size": { + "$ref": "#/components/schemas/_FilterPagesize" + }, + "min_pages_left": { + "title": "Min Pages Left", + "type": "integer" + }, + "total": { + "title": "Total", + "type": "integer" + }, + "has_more": { + "title": "Has More", + "type": "boolean" + } + } + }, + "ParentsConcatenateResponseSchema": { + "title": "ParentsConcatenateResponseSchema", + "required": [ + "taxon_id", + "taxon_name", + "parent_ids_concat", + "parent_names_concat" + ], + "type": "object", + "properties": { + "taxon_id": { + "title": "Taxon Id", + "type": "string", + "example": "my_taxon_id" + }, + "taxon_name": { + "title": "Taxon Name", + "type": "string", + "example": "taxon_name" + }, + "parent_ids_concat": { + "title": "Parent Ids Concat", + "type": "string", + "example": "parent_id_1.parent_id_2" + }, + "parent_names_concat": { + "title": "Parent Names Concat", + "type": "string", + "example": "parent_name_1.parent_name_2" + } + } + }, + "TaxonBaseSchema": { + "title": "TaxonBaseSchema", + "required": [ + "name", + "taxonomy_id" + ], + "type": "object", + "properties": { + "name": { + "title": "Name", + "type": "string", + "example": "taxon_name" + }, + "taxonomy_id": { + "title": "Taxonomy Id", + "type": "string", + "example": "my_taxonomy_id" + }, + "parent_id": { + "title": "Parent Id", + "type": "string", + "example": "null" + }, + "taxonomy_version": { + "title": "Taxonomy Version", + "type": "integer", + "example": 1 + } + } + }, + "TaxonInputSchema": { + "title": "TaxonInputSchema", + "required": [ + "name", + "taxonomy_id" + ], + "type": "object", + "properties": { + "name": { + "title": "Name", + "type": "string", + "example": "taxon_name" + }, + "taxonomy_id": { + "title": "Taxonomy Id", + "type": "string", + "example": "my_taxonomy_id" + }, + "parent_id": { + "title": "Parent Id", + "type": "string", + "example": "null" + }, + "taxonomy_version": { + "title": "Taxonomy Version", + "type": "integer", + "example": 1 + }, + "id": { + "title": "Id", + "type": "string", + "description": "If id is not provided, generates it as a UUID.", + "example": "my_taxon_id" + } + } + }, + "TaxonResponseSchema": { + "title": "TaxonResponseSchema", + "required": [ + "name", + "taxonomy_id" + ], + "type": "object", + "properties": { + "name": { + "title": "Name", + "type": "string", + "example": "taxon_name" + }, + "taxonomy_id": { + "title": "Taxonomy Id", + "type": "string", + "example": "my_taxonomy_id" + }, + "parent_id": { + "title": "Parent Id", + "type": "string", + "example": "null" + }, + "taxonomy_version": { + "title": "Taxonomy Version", + "type": "integer", + "example": 1 + }, + "id": { + "title": "Id", + "type": "string", + "description": "If id is not provided, generates it as a UUID.", + "example": "my_taxon_id" + }, + "parents": { + "title": "Parents", + "type": "array", + "items": { + "type": "object" + }, + "default": [] + }, + "is_leaf": { + "title": "Is Leaf", + "type": "boolean" + } + } + }, + "TaxonomyBaseSchema": { + "title": "TaxonomyBaseSchema", + "required": [ + "name" + ], + "type": "object", + "properties": { + "name": { + "title": "Name", + "type": "string", + "example": "taxonomy_name" + } + } + }, + "TaxonomyInputSchema": { + "title": "TaxonomyInputSchema", + "required": [ + "name" + ], + "type": "object", + "properties": { + "name": { + "title": "Name", + "type": "string", + "example": "taxonomy_name" + }, + "id": { + "title": "Id", + "type": "string", + "description": "If id is not provided, generates it as a UUID.", + "example": "my_taxonomy_id" + } + } + }, + "TaxonomyResponseSchema": { + "title": "TaxonomyResponseSchema", + "required": [ + "name", + "version" + ], + "type": "object", + "properties": { + "name": { + "title": "Name", + "type": "string", + "example": "taxonomy_name" + }, + "id": { + "title": "Id", + "type": "string", + "description": "If id is not provided, generates it as a UUID.", + "example": "my_taxonomy_id" + }, + "version": { + "title": "Version", + "type": "integer", + "description": "Version of taxonomy", + "example": 1 + } + } + }, + "ValidationError": { + "title": "ValidationError", + "required": [ + "loc", + "msg", + "type" + ], + "type": "object", + "properties": { + "loc": { + "title": "Location", + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer" + } + ] + } + }, + "msg": { + "title": "Message", + "type": "string" + }, + "type": { + "title": "Error Type", + "type": "string" + } + } + }, + "_BadgerdocSearch_taxon_Taxon_": { + "title": "_BadgerdocSearch[taxon_Taxon]", + "type": "object", + "properties": { + "pagination": { + "$ref": "#/components/schemas/Pagination" + }, + "filters": { + "title": "Filters", + "type": "array", + "items": { + "$ref": "#/components/schemas/_Filters_taxon_Taxon_" + } + }, + "sorting": { + "title": "Sorting", + "type": "array", + "items": { + "$ref": "#/components/schemas/_Sorts_taxon_Taxon_" + } + } + }, + "description": "Abstract base class for generic types.\n\nA generic type is typically declared by inheriting from\nthis class parameterized with one or more type variables.\nFor example, a generic mapping type might be defined as::\n\n class Mapping(Generic[KT, VT]):\n def __getitem__(self, key: KT) -> VT:\n ...\n # Etc.\n\nThis class can then be used as follows::\n\n def lookup_name(mapping: Mapping[KT, VT], key: KT, default: VT) -> VT:\n try:\n return mapping[key]\n except KeyError:\n return default" + }, + "_BadgerdocSearch_taxonomy_Taxonomy_": { + "title": "_BadgerdocSearch[taxonomy_Taxonomy]", + "type": "object", + "properties": { + "pagination": { + "$ref": "#/components/schemas/Pagination" + }, + "filters": { + "title": "Filters", + "type": "array", + "items": { + "$ref": "#/components/schemas/_Filters_taxonomy_Taxonomy_" + } + }, + "sorting": { + "title": "Sorting", + "type": "array", + "items": { + "$ref": "#/components/schemas/_Sorts_taxonomy_Taxonomy_" + } + } + }, + "description": "Abstract base class for generic types.\n\nA generic type is typically declared by inheriting from\nthis class parameterized with one or more type variables.\nFor example, a generic mapping type might be defined as::\n\n class Mapping(Generic[KT, VT]):\n def __getitem__(self, key: KT) -> VT:\n ...\n # Etc.\n\nThis class can then be used as follows::\n\n def lookup_name(mapping: Mapping[KT, VT], key: KT, default: VT) -> VT:\n try:\n return mapping[key]\n except KeyError:\n return default" + }, + "_FilterOperations": { + "title": "_FilterOperations", + "enum": [ + "is_null", + "is_not_null", + "eq", + "ne", + "gt", + "lt", + "ge", + "le", + "like", + "ilike", + "not_ilike", + "in", + "not_in", + "any", + "not_any", + "match", + "distinct", + "parent", + "parents_recursive", + "children", + "children_recursive" + ], + "type": "string", + "description": "An enumeration." + }, + "_FilterPagesize": { + "title": "_FilterPagesize", + "enum": [ + 15, + 30, + 50, + 80, + 100 + ], + "type": "integer", + "description": "An enumeration." + }, + "_Filters_taxon_Taxon_": { + "title": "_Filters[taxon_Taxon]", + "required": [ + "field", + "operator" + ], + "type": "object", + "properties": { + "field": { + "$ref": "#/components/schemas/taxon_Taxon" + }, + "operator": { + "$ref": "#/components/schemas/_FilterOperations" + }, + "value": { + "title": "Value" + } + } + }, + "_Filters_taxonomy_Taxonomy_": { + "title": "_Filters[taxonomy_Taxonomy]", + "required": [ + "field", + "operator" + ], + "type": "object", + "properties": { + "field": { + "$ref": "#/components/schemas/taxonomy_Taxonomy" + }, + "operator": { + "$ref": "#/components/schemas/_FilterOperations" + }, + "value": { + "title": "Value" + } + } + }, + "_SortDirection": { + "title": "_SortDirection", + "enum": [ + "asc", + "desc" + ], + "type": "string", + "description": "An enumeration." + }, + "_Sorts_taxon_Taxon_": { + "title": "_Sorts[taxon_Taxon]", + "required": [ + "field", + "direction" + ], + "type": "object", + "properties": { + "field": { + "$ref": "#/components/schemas/taxon_Taxon" + }, + "direction": { + "$ref": "#/components/schemas/_SortDirection" + } + } + }, + "_Sorts_taxonomy_Taxonomy_": { + "title": "_Sorts[taxonomy_Taxonomy]", + "required": [ + "field", + "direction" + ], + "type": "object", + "properties": { + "field": { + "$ref": "#/components/schemas/taxonomy_Taxonomy" + }, + "direction": { + "$ref": "#/components/schemas/_SortDirection" + } + } + }, + "taxon_Taxon": { + "title": "taxon_Taxon", + "enum": [ + "id", + "name", + "taxonomy_id", + "taxonomy_version", + "parent_id", + "tree", + "taxonomy.id", + "taxonomy.name", + "taxonomy.version", + "taxonomy.tenant", + "taxonomy.latest", + "parent.id", + "parent.name", + "parent.tenant", + "parent.taxonomy_id", + "parent.taxonomy_version", + "parent.parent_id", + "parent.tree" + ], + "type": "string", + "description": "An enumeration." + }, + "taxonomy_Taxonomy": { + "title": "taxonomy_Taxonomy", + "enum": [ + "id", + "name", + "version", + "latest", + "categories.taxonomy_id", + "categories.taxonomy_version", + "categories.category_id", + "categories.job_id", + "taxons.id", + "taxons.name", + "taxons.tenant", + "taxons.taxonomy_id", + "taxons.taxonomy_version", + "taxons.parent_id", + "taxons.tree" + ], + "type": "string", + "description": "An enumeration." + } + }, + "securitySchemes": { + "TenantDependencyDocs": { + "type": "http", + "scheme": "bearer" + } + } + }, + "tags": [ + { + "name": "Taxonomy", + "description": "Actions associated with taxonomies." + }, + { + "name": "Taxon", + "description": "Actions associated with taxons." + } + ] +} diff --git a/docs/openapi/users.json b/docs/openapi/users.json new file mode 100644 index 000000000..54cc65369 --- /dev/null +++ b/docs/openapi/users.json @@ -0,0 +1,1190 @@ +{ + "openapi": "3.0.2", + "info": { + "title": "users", + "version": "0.1.3" + }, + "paths": { + "/token": { + "post": { + "tags": [ + "auth" + ], + "summary": "Login", + "description": "Get auth token.", + "operationId": "login_token_post", + "requestBody": { + "content": { + "application/x-www-form-urlencoded": { + "schema": { + "$ref": "#/components/schemas/Body_login_token_post" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TokenResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/refresh_token": { + "post": { + "summary": "Refresh Token", + "description": "Refresh token.", + "operationId": "refresh_token_refresh_token_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RefreshTokenRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TokenResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/users/registration": { + "post": { + "tags": [ + "users" + ], + "summary": "User Registration", + "description": "Register new user", + "operationId": "user_registration_users_registration_post", + "parameters": [ + { + "required": true, + "schema": { + "title": "Email", + "type": "string" + }, + "name": "email", + "in": "query" + }, + { + "required": false, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "201": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/users/current": { + "get": { + "tags": [ + "users" + ], + "summary": "Get User Data From Jwt", + "description": "Get user from realm with JWT", + "operationId": "get_user_data_from_jwt_users_current_get", + "parameters": [ + { + "required": false, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/User" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "deprecated": true, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/users/current_v2": { + "get": { + "tags": [ + "users" + ], + "summary": "Get User Info From Token Introspection", + "description": "Get user_info from realm through JWT introspection", + "operationId": "get_user_info_from_token_introspection_users_current_v2_get", + "parameters": [ + { + "required": false, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/users/{user_id}": { + "get": { + "tags": [ + "users" + ], + "summary": "Get User", + "description": "Get user from realm.", + "operationId": "get_user_users__user_id__get", + "parameters": [ + { + "required": true, + "schema": { + "title": "User Id", + "type": "string" + }, + "name": "user_id", + "in": "path" + }, + { + "required": false, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/User" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/get_username_by_user_id": { + "get": { + "tags": [ + "users" + ], + "summary": "Get Username By User Id", + "description": "Get username by its user_id with any valid token.", + "operationId": "get_username_by_user_id_get_username_by_user_id_get", + "parameters": [ + { + "required": true, + "schema": { + "title": "User Id", + "type": "string" + }, + "name": "user_id", + "in": "query" + }, + { + "required": false, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/tenants": { + "get": { + "tags": [ + "tenants" + ], + "summary": "Get Tenants", + "description": "Get all tenants.", + "operationId": "get_tenants_tenants_get", + "parameters": [ + { + "required": false, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "title": "Response Get Tenants Tenants Get", + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + }, + "post": { + "tags": [ + "tenants" + ], + "summary": "Create Tenant", + "description": "Create new tenant.", + "operationId": "create_tenant_tenants_post", + "parameters": [ + { + "required": true, + "schema": { + "title": "Tenant", + "type": "string" + }, + "name": "tenant", + "in": "query" + }, + { + "required": false, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "201": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "title": "Response Create Tenant Tenants Post", + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/tenants/{tenant}/users/{user_id}": { + "put": { + "tags": [ + "tenants" + ], + "summary": "Add User To Tenant", + "description": "Add user to tenant.", + "operationId": "add_user_to_tenant_tenants__tenant__users__user_id__put", + "parameters": [ + { + "required": true, + "schema": { + "title": "User Id", + "type": "string" + }, + "name": "user_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "Tenant", + "type": "string" + }, + "name": "tenant", + "in": "path" + }, + { + "required": false, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "title": "Response Add User To Tenant Tenants Tenant Users User Id Put", + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + }, + "delete": { + "tags": [ + "tenants" + ], + "summary": "Remove User From Tenant", + "description": "Remove user from tenant.", + "operationId": "remove_user_from_tenant_tenants__tenant__users__user_id__delete", + "parameters": [ + { + "required": true, + "schema": { + "title": "User Id", + "type": "string" + }, + "name": "user_id", + "in": "path" + }, + { + "required": true, + "schema": { + "title": "Tenant", + "type": "string" + }, + "name": "tenant", + "in": "path" + }, + { + "required": false, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "X-Current-Tenant", + "in": "header" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "title": "Response Remove User From Tenant Tenants Tenant Users User Id Delete", + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/users/search": { + "post": { + "tags": [ + "users" + ], + "summary": "Get Users By Filter", + "description": "Getting a list of users from keycloak by substring", + "operationId": "get_users_by_filter_users_search_post", + "parameters": [ + { + "required": false, + "schema": { + "title": "X-Current-Tenant", + "type": "string" + }, + "name": "X-Current-Tenant", + "in": "header" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Users" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "TenantDependencyDocs": [] + } + ] + } + }, + "/identity_providers_data": { + "get": { + "tags": [ + "general info" + ], + "summary": "Get Idp Names And Ssoauth Links", + "description": "Provides names and links to authenticate with\nfor all Identity Providers set in Keycloak", + "operationId": "get_idp_names_and_SSOauth_links_identity_providers_data_get", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + } + } + } + } + }, + "components": { + "schemas": { + "Body_login_token_post": { + "title": "Body_login_token_post", + "required": [ + "username", + "password" + ], + "type": "object", + "properties": { + "grant_type": { + "title": "Grant Type", + "pattern": "password", + "type": "string" + }, + "username": { + "title": "Username", + "type": "string" + }, + "password": { + "title": "Password", + "type": "string" + }, + "scope": { + "title": "Scope", + "type": "string", + "default": "" + }, + "client_id": { + "title": "Client Id", + "type": "string" + }, + "client_secret": { + "title": "Client Secret", + "type": "string" + } + } + }, + "Credential": { + "title": "Credential", + "type": "object", + "properties": { + "createdDate": { + "title": "Createddate", + "type": "integer" + }, + "credentialData": { + "title": "Credentialdata", + "type": "string" + }, + "id": { + "title": "Id", + "type": "string" + }, + "priority": { + "title": "Priority", + "type": "integer" + }, + "secretData": { + "title": "Secretdata", + "type": "string" + }, + "temporary": { + "title": "Temporary", + "type": "boolean" + }, + "type": { + "title": "Type", + "type": "string" + }, + "userLabel": { + "title": "Userlabel", + "type": "string" + }, + "value": { + "title": "Value", + "type": "string" + } + }, + "description": "CredentialRepresentation." + }, + "FederatedIdentity": { + "title": "FederatedIdentity", + "type": "object", + "properties": { + "identityProvider": { + "title": "Identityprovider", + "type": "string" + }, + "userId": { + "title": "Userid", + "type": "string" + }, + "userName": { + "title": "Username", + "type": "string" + } + }, + "description": "FederatedIdentityRepresentation." + }, + "FieldRole": { + "title": "FieldRole", + "enum": [ + "role" + ], + "type": "string", + "description": "An enumeration." + }, + "FieldUserUserID": { + "title": "FieldUserUserID", + "enum": [ + "id" + ], + "type": "string", + "description": "An enumeration." + }, + "FieldUserUserName": { + "title": "FieldUserUserName", + "enum": [ + "name" + ], + "type": "string", + "description": "An enumeration." + }, + "FilterRole": { + "title": "FilterRole", + "required": [ + "field", + "operator", + "value" + ], + "type": "object", + "properties": { + "field": { + "$ref": "#/components/schemas/FieldRole" + }, + "operator": { + "$ref": "#/components/schemas/OperatorRole" + }, + "value": { + "$ref": "#/components/schemas/Roles" + } + } + }, + "FilterUserUserID": { + "title": "FilterUserUserID", + "required": [ + "field", + "operator", + "value" + ], + "type": "object", + "properties": { + "field": { + "$ref": "#/components/schemas/FieldUserUserID" + }, + "operator": { + "$ref": "#/components/schemas/OperatorUserUserID" + }, + "value": { + "title": "Value", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "FilterUserUserName": { + "title": "FilterUserUserName", + "required": [ + "field", + "operator", + "value" + ], + "type": "object", + "properties": { + "field": { + "$ref": "#/components/schemas/FieldUserUserName" + }, + "operator": { + "$ref": "#/components/schemas/OperatorUserUserName" + }, + "value": { + "title": "Value", + "minLength": 1, + "type": "string" + } + } + }, + "HTTPValidationError": { + "title": "HTTPValidationError", + "type": "object", + "properties": { + "detail": { + "title": "Detail", + "type": "array", + "items": { + "$ref": "#/components/schemas/ValidationError" + } + } + } + }, + "OperatorRole": { + "title": "OperatorRole", + "enum": [ + "eq" + ], + "type": "string", + "description": "An enumeration." + }, + "OperatorUserUserID": { + "title": "OperatorUserUserID", + "enum": [ + "in" + ], + "type": "string", + "description": "An enumeration." + }, + "OperatorUserUserName": { + "title": "OperatorUserUserName", + "enum": [ + "like" + ], + "type": "string", + "description": "An enumeration." + }, + "RefreshTokenRequest": { + "title": "RefreshTokenRequest", + "required": [ + "refresh_token" + ], + "type": "object", + "properties": { + "client_id": { + "title": "Client Id", + "type": "string", + "default": "admin-cli" + }, + "grant_type": { + "title": "Grant Type", + "type": "string", + "default": "refresh_token" + }, + "client_secret": { + "title": "Client Secret", + "type": "string" + }, + "refresh_token": { + "title": "Refresh Token", + "type": "string" + } + }, + "description": "Represents Keycloak token refreshment request" + }, + "Roles": { + "title": "Roles", + "enum": [ + "role-annotator" + ], + "type": "string", + "description": "An enumeration." + }, + "TokenResponse": { + "title": "TokenResponse", + "required": [ + "access_token", + "token_type" + ], + "type": "object", + "properties": { + "access_token": { + "title": "Access Token", + "type": "string" + }, + "expires_in": { + "title": "Expires In", + "type": "integer" + }, + "refresh_expires_in": { + "title": "Refresh Expires In", + "type": "integer" + }, + "refresh_token": { + "title": "Refresh Token", + "type": "string" + }, + "token_type": { + "title": "Token Type", + "type": "string" + }, + "id_token": { + "title": "Id Token", + "type": "string" + }, + "not-before-policy": { + "title": "Not-Before-Policy", + "type": "integer" + }, + "session_state": { + "title": "Session State", + "type": "string" + }, + "scope": { + "title": "Scope", + "type": "string" + } + }, + "description": "Represent Keycloak token response." + }, + "User": { + "title": "User", + "type": "object", + "properties": { + "access": { + "title": "Access", + "type": "object" + }, + "attributes": { + "title": "Attributes", + "type": "object" + }, + "clientConsents": { + "title": "Clientconsents", + "type": "array", + "items": { + "$ref": "#/components/schemas/UserConsent" + } + }, + "clientRoles": { + "title": "Clientroles", + "type": "object" + }, + "createdTimestamp": { + "title": "Createdtimestamp", + "type": "integer" + }, + "credentials": { + "title": "Credentials", + "type": "array", + "items": { + "$ref": "#/components/schemas/Credential" + } + }, + "disableableCredentialTypes": { + "title": "Disableablecredentialtypes", + "type": "array", + "items": { + "type": "string" + } + }, + "email": { + "title": "Email", + "type": "string" + }, + "emailVerified": { + "title": "Emailverified", + "type": "boolean" + }, + "enabled": { + "title": "Enabled", + "type": "boolean" + }, + "federatedIdentities": { + "title": "Federatedidentities", + "type": "array", + "items": { + "$ref": "#/components/schemas/FederatedIdentity" + } + }, + "federationLink": { + "title": "Federationlink", + "type": "string" + }, + "firstName": { + "title": "Firstname", + "type": "string" + }, + "groups": { + "title": "Groups", + "type": "array", + "items": { + "type": "string" + } + }, + "id": { + "title": "Id", + "type": "string" + }, + "lastName": { + "title": "Lastname", + "type": "string" + }, + "notBefore": { + "title": "Notbefore", + "type": "integer" + }, + "origin": { + "title": "Origin", + "type": "string" + }, + "realmRoles": { + "title": "Realmroles", + "type": "array", + "items": { + "type": "string" + } + }, + "requiredActions": { + "title": "Requiredactions", + "type": "array", + "items": { + "type": "string" + } + }, + "self": { + "title": "Self", + "type": "string" + }, + "serviceAccountClientId": { + "title": "Serviceaccountclientid", + "type": "string" + }, + "username": { + "title": "Username", + "type": "string" + } + }, + "description": "UserRepresentation." + }, + "UserConsent": { + "title": "UserConsent", + "type": "object", + "properties": { + "clientId": { + "title": "Clientid", + "type": "string" + }, + "createdDate": { + "title": "Createddate", + "type": "integer" + }, + "grantedClientScopes": { + "title": "Grantedclientscopes", + "type": "array", + "items": { + "type": "string" + } + }, + "lastUpdateDate": { + "title": "Lastupdatedate", + "type": "integer" + } + }, + "description": "UserConsentRepresentation." + }, + "Users": { + "title": "Users", + "type": "object", + "properties": { + "filters": { + "title": "Filters", + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/FilterUserUserName" + }, + { + "$ref": "#/components/schemas/FilterUserUserID" + }, + { + "$ref": "#/components/schemas/FilterRole" + } + ] + } + } + } + }, + "ValidationError": { + "title": "ValidationError", + "required": [ + "loc", + "msg", + "type" + ], + "type": "object", + "properties": { + "loc": { + "title": "Location", + "type": "array", + "items": { + "type": "string" + } + }, + "msg": { + "title": "Message", + "type": "string" + }, + "type": { + "title": "Error Type", + "type": "string" + } + } + } + }, + "securitySchemes": { + "TenantDependencyDocs": { + "type": "http", + "scheme": "bearer" + } + } + } +} diff --git a/docs/specs-list.json b/docs/specs-list.json new file mode 100644 index 000000000..aec4708c9 --- /dev/null +++ b/docs/specs-list.json @@ -0,0 +1,46 @@ +[ + { + "url": "openapi/annotation.json", + "name": "Annotation Service" + }, + { + "url": "openapi/assets.json", + "name": "Assets Service" + }, + { + "url": "openapi/convert.json", + "name": "Convert Service" + }, + { + "url": "openapi/jobs.json", + "name": "Jobs Service" + }, + { + "url": "openapi/models.json", + "name": "Models Service" + }, + { + "url": "openapi/pipelines.json", + "name": "Pipelines Service" + }, + { + "url": "openapi/processing.json", + "name": "Processing Service" + }, + { + "url": "openapi/scheduler.json", + "name": "Scheduler Service" + }, + { + "url": "openapi/search.json", + "name": "Search Service" + }, + { + "url": "openapi/taxonomy.json", + "name": "Taxonomy Service" + }, + { + "url": "openapi/users.json", + "name": "Users Service" + } +] diff --git a/infra/docker/python_base/Dockerfile b/infra/docker/python_base/Dockerfile index 778a9ead0..dbebaec7d 100644 --- a/infra/docker/python_base/Dockerfile +++ b/infra/docker/python_base/Dockerfile @@ -2,11 +2,14 @@ FROM python:3.8.10-slim-buster AS base COPY lib/filter_lib/ /opt/filter_lib/ COPY lib/tenants/ /opt/tenants/ +COPY lib/badgerdoc_cli/ /opt/badgerdoc_cli + RUN python3 -m pip install --upgrade pip && \ pip3 install poetry==1.4.0 && \ cd /opt/filter_lib && pip3 install . && \ cd /opt/tenants && pip3 install . && \ - cd ../ && rm -rf filter_lib && rm -rf tenants + cd /opt/badgerdoc_cli && pip3 install . && \ + cd ../ && rm -rf filter_lib && rm -rf tenants && rm -rf badgerdoc_cli ENV PYTHONPATH /opt @@ -27,3 +30,10 @@ RUN . env/bin/activate && pip install -r requirements.txt \ && pip install -r requirements-dev.txt && isort src --check \ && black src --check && mypy src && pylint src \ && pytest -vv --cov --cov-report=xml && deactivate \ + + +WORKDIR /opt/badgerdoc_cli +RUN : \ + && python3 -m venv env \ + && source env/bin/activate \ + && pip install .[dev] \ diff --git a/jobs/jobs/main.py b/jobs/jobs/main.py index 626e57726..8272eb105 100644 --- a/jobs/jobs/main.py +++ b/jobs/jobs/main.py @@ -401,3 +401,10 @@ async def get_jobs_progress( for job_id, job_progress in zip(job_ids, jobs_progress) if job_progress is not None } + + +def cli_handler() -> None: + from badgerdoc_cli import cli_handler, init_cli_app + + init_cli_app(app) + cli_handler() diff --git a/jobs/poetry.lock b/jobs/poetry.lock index be1294ed6..31f196d84 100644 --- a/jobs/poetry.lock +++ b/jobs/poetry.lock @@ -1265,7 +1265,7 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] name = "six" version = "1.16.0" description = "Python 2 and 3 compatibility utilities" -category = "main" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -1331,19 +1331,18 @@ pymysql = ["pymysql", "pymysql (<1)"] [[package]] name = "sqlalchemy-utils" -version = "0.37.9" +version = "0.38.3" description = "Various utility functions for SQLAlchemy." category = "main" optional = false -python-versions = "~=3.4" +python-versions = "~=3.6" files = [ - {file = "SQLAlchemy-Utils-0.37.9.tar.gz", hash = "sha256:4667edbdcb1ece011076b69772ef524bfbb17cc97e03f11ee6b85d98e7741d61"}, - {file = "SQLAlchemy_Utils-0.37.9-py3-none-any.whl", hash = "sha256:bb6f4da8ac044cb0dd4d0278b1fb434141a5ee9d1881c757a076830ddbb04160"}, + {file = "SQLAlchemy-Utils-0.38.3.tar.gz", hash = "sha256:9f9afba607a40455cf703adfa9846584bf26168a0c5a60a70063b70d65051f4d"}, + {file = "SQLAlchemy_Utils-0.38.3-py3-none-any.whl", hash = "sha256:5c13b5d08adfaa85f3d4e8ec09a75136216fad41346980d02974a70a77988bf9"}, ] [package.dependencies] -six = "*" -SQLAlchemy = ">=1.0" +SQLAlchemy = ">=1.3" [package.extras] arrow = ["arrow (>=0.3.4)"] @@ -1354,8 +1353,8 @@ intervals = ["intervals (>=0.7.1)"] password = ["passlib (>=1.6,<2.0)"] pendulum = ["pendulum (>=2.0.5)"] phone = ["phonenumbers (>=5.9.2)"] -test = ["Jinja2 (>=2.3)", "Pygments (>=1.2)", "backports.zoneinfo", "docutils (>=0.10)", "flake8 (>=2.4.0)", "flexmock (>=0.9.7)", "isort (>=4.2.2)", "mock (==2.0.0)", "pg8000 (>=1.12.4)", "psycopg2 (>=2.5.1)", "psycopg2cffi (>=2.8.1)", "pymysql", "pyodbc", "pytest (>=2.7.1)", "python-dateutil (>=2.6)", "pytz (>=2014.2)"] -test-all = ["Babel (>=1.3)", "Jinja2 (>=2.3)", "Pygments (>=1.2)", "arrow (>=0.3.4)", "backports.zoneinfo", "colour (>=0.0.4)", "cryptography (>=0.6)", "docutils (>=0.10)", "flake8 (>=2.4.0)", "flexmock (>=0.9.7)", "furl (>=0.4.1)", "intervals (>=0.7.1)", "isort (>=4.2.2)", "mock (==2.0.0)", "passlib (>=1.6,<2.0)", "pendulum (>=2.0.5)", "pg8000 (>=1.12.4)", "phonenumbers (>=5.9.2)", "psycopg2 (>=2.5.1)", "psycopg2cffi (>=2.8.1)", "pymysql", "pyodbc", "pytest (>=2.7.1)", "python-dateutil", "python-dateutil (>=2.6)", "pytz (>=2014.2)"] +test = ["Jinja2 (>=2.3)", "Pygments (>=1.2)", "backports.zoneinfo", "docutils (>=0.10)", "flake8 (>=2.4.0)", "flexmock (>=0.9.7)", "isort (>=4.2.2)", "pg8000 (>=1.12.4)", "psycopg2 (>=2.5.1)", "psycopg2cffi (>=2.8.1)", "pymysql", "pyodbc", "pytest (>=2.7.1)", "python-dateutil (>=2.6)", "pytz (>=2014.2)"] +test-all = ["Babel (>=1.3)", "Jinja2 (>=2.3)", "Pygments (>=1.2)", "arrow (>=0.3.4)", "backports.zoneinfo", "colour (>=0.0.4)", "cryptography (>=0.6)", "docutils (>=0.10)", "flake8 (>=2.4.0)", "flexmock (>=0.9.7)", "furl (>=0.4.1)", "intervals (>=0.7.1)", "isort (>=4.2.2)", "passlib (>=1.6,<2.0)", "pendulum (>=2.0.5)", "pg8000 (>=1.12.4)", "phonenumbers (>=5.9.2)", "psycopg2 (>=2.5.1)", "psycopg2cffi (>=2.8.1)", "pymysql", "pyodbc", "pytest (>=2.7.1)", "python-dateutil", "python-dateutil (>=2.6)", "pytz (>=2014.2)"] timezone = ["python-dateutil"] url = ["furl (>=0.4.1)"] @@ -1678,4 +1677,4 @@ testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more [metadata] lock-version = "2.0" python-versions = "^3.8.0" -content-hash = "a3a98d43e1a03efffaddde5d420819884b357ee753c09ff52796d10dbcdc00ac" +content-hash = "954febf34d1168fc4d89b18c8037dbd5fa406ae5228d416956dcba360681511c" diff --git a/jobs/pyproject.toml b/jobs/pyproject.toml index 8aef87e38..9edcff525 100644 --- a/jobs/pyproject.toml +++ b/jobs/pyproject.toml @@ -8,13 +8,13 @@ authors = ["BadgerDoc team"] python = "^3.8.0" alembic = "^1.7.4" SQLAlchemy = "1.3.24" -sqlalchemy_utils = "^0.37.8" +sqlalchemy_utils = "^0.38.3" fastapi = "^0.68.1" python-dotenv = "^0.19.0" uvicorn = "^0.15.0" aiohttp = "^3.8.1" -[tool.poetry.dev-dependencies] +[tool.poetry.group.dev.dependencies] pytest = "^6.2.5" requests = "^2.26.0" types-requests = "^2.25.11" @@ -27,6 +27,9 @@ freezegun = "^1.1.0" pytest-cov = "*" pytest-asyncio = "^0.20.3" +[tool.poetry.scripts] +badgerdoc = "jobs.main:cli_handler" + [build-system] requires = ["poetry-core"] build-backend = "poetry.core.masonry.api" diff --git a/lib/badgerdoc_cli/.gitignore b/lib/badgerdoc_cli/.gitignore new file mode 100644 index 000000000..6f9a020da --- /dev/null +++ b/lib/badgerdoc_cli/.gitignore @@ -0,0 +1,6 @@ +/venv/ +/.mypy_cache/ +/.pytest_cache/ +/tests/.pytest_cache/ +*.egg-info/ +.pytest_cache/ diff --git a/lib/badgerdoc_cli/.pre-commit-config.yaml b/lib/badgerdoc_cli/.pre-commit-config.yaml new file mode 100644 index 000000000..65b5d6016 --- /dev/null +++ b/lib/badgerdoc_cli/.pre-commit-config.yaml @@ -0,0 +1,44 @@ +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.4.0 + hooks: + - id: trailing-whitespace + - id: end-of-file-fixer + - id: check-yaml + - repo: https://github.com/pycqa/isort + rev: 5.12.0 + hooks: + - id: isort + args: + - --profile=black + - --line-length=79 + - repo: https://github.com/psf/black + rev: 23.1.0 + hooks: + - id: black + language_version: python3 + args: + - --line-length=79 + - repo: https://github.com/pre-commit/mirrors-mypy + rev: v1.1.1 + hooks: + - id: mypy + name: mypy + entry: mypy + language: python + types: [python] + require_serial: true + args: + - --strict + - --ignore-missing-imports + - --allow-untyped-decorators + - --python-version=3.8 + - repo: https://github.com/pycqa/pylint + rev: v2.17.1 + hooks: + - id: pylint + types: [ python ] + args: + - --max-line-length=79 + - --errors-only + - --disable=E0401 diff --git a/lib/badgerdoc_cli/README.md b/lib/badgerdoc_cli/README.md new file mode 100644 index 000000000..f06baac14 --- /dev/null +++ b/lib/badgerdoc_cli/README.md @@ -0,0 +1,94 @@ +

+ Badgerdoc CLI +

+

+ Badgerdoc CLI simplify routine actions for the project, simple and ready to go +

+ +--- +## Requirements +[Python 3.8+ ](https://www.python.org/downloads/) +## Installation +### Install to local environment +- Clone repository `git clone git@github.com:epam/badgerdoc.git` +- Change directory `cd badgerdoc/lib/badgerdoc_cli` +- Create and activate virtualenv `python3.8 -m venv venv` and `source venv/bin/activate` +- Install CLI tool `pip install .` +- Install development dependencies if needed `pip install ."[dev]"` +### Integrate to service +- Add library to service dependencies and install (see [Install to local environment](#install-to-local-environment)) +- Add cli handler for the service to the main module with `FastAPI` +```python +from fastapi import FastAPI +from some_module import another_router + +app = FastAPI( + title="sample app", + description="very important service", +) +app.include_router(another_router) + +def cli_handler() -> None: + from badgerdoc_cli import cli_handler, init_cli_app + + init_cli_app(app) + cli_handler() +``` +NOTICE! Add cli handler at the end of the module after all routers are initialized.
+You can use `cli_handler` from the box without initializing `FastAPI` app, you will simply have less functionality +```python +def cli_handler() -> None: + from badgerdoc_cli import cli_handler + cli_handler() +``` +- [Poetry] Add cli handler entry point to your `pyproject.toml` +```toml +[tool.poetry.scripts] +badgerdoc = "some_package.some_module:cli_handler" +``` +- Now you can use CLI tool using `badgerdoc` command +--- +## Usage +```shell +$ badgerdoc +usage: badgerdoc [-h] [-v] {openapi} ... + +positional arguments: + {openapi} + openapi generate openapi specification + +optional arguments: + -h, --help show this help message and exit + -v, --verbose show full traceback and other debug info (default: False) +``` +### badgerdoc openapi +```shell +$ badgerdoc openapi +usage: badgerdoc openapi [-h] [--indent INDENT] path + +positional arguments: + path path to save spec to + +optional arguments: + -h, --help show this help message and exit + --indent INDENT indents in json open api spec (default: 2) +``` +Example: +```shell +$ badgerdoc openapi example.json +Documentation is saved at /Users/badgerdoc/projects/badgerdoc/annotation/example.json +$ cat example.json +{ + "openapi": "3.0.2", + "info": { + "title": "Badgerdoc Annotation", + "version": "0.1.5" + }, + "paths": { + "/annotation/{task_id}": { + "post": { + "tags": [ + "Annotation" + ], + ... +``` diff --git a/lib/badgerdoc_cli/badgerdoc_cli/__init__.py b/lib/badgerdoc_cli/badgerdoc_cli/__init__.py new file mode 100644 index 000000000..74eb54607 --- /dev/null +++ b/lib/badgerdoc_cli/badgerdoc_cli/__init__.py @@ -0,0 +1,6 @@ +from .main import cli_handler, init_cli_app + +__all__ = [ + "cli_handler", + "init_cli_app", +] diff --git a/lib/badgerdoc_cli/badgerdoc_cli/main.py b/lib/badgerdoc_cli/badgerdoc_cli/main.py new file mode 100644 index 000000000..1daf693c2 --- /dev/null +++ b/lib/badgerdoc_cli/badgerdoc_cli/main.py @@ -0,0 +1,113 @@ +import argparse +import code +import json +import os +import sys +from typing import Any, Dict, Optional, Protocol + +from fastapi import FastAPI +from fastapi.openapi.utils import get_openapi + +APP = None + + +class SupportsAddParser(Protocol): + def add_parser(self, name: str, **kwargs: Any) -> argparse.ArgumentParser: + pass + + +def shell_run() -> None: + code.interact() + + +def inject_shell_commands(subparsers: SupportsAddParser) -> None: + shell_parser = subparsers.add_parser("shell") + shell_parser.set_defaults(func=shell_run) + + +def generate_openapi(app: FastAPI, file_path: str, indent: int = 2) -> None: + with open(file_path, "w") as f_o: + json.dump( + get_openapi( + title=app.title, + version=app.version, + openapi_version=app.openapi_version, + description=app.description, + routes=app.routes, + tags=app.openapi_tags, + ), + f_o, + indent=indent, + ) + f_o.write("\n") + + +def inject_openapi_commands( + app: Optional[FastAPI], subparsers: SupportsAddParser +) -> None: + def _generate_openapi(arguments: Dict[str, Any]) -> None: + if app is None: + raise ValueError( + "CLI is not initialized. Add init_cli_app call to set up CLI" + ) + path: str = arguments["path"] + if not path.endswith(".json"): + raise ValueError("Invalid file format. Must be .json") + generate_openapi(app=app, file_path=path, indent=arguments["indent"]) + print(f"Documentation is saved at {os.path.abspath(path)}") + + openapi_parser = subparsers.add_parser( + "openapi", + help="generate openapi specification", + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + ) + openapi_parser.add_argument("path", help="path to save spec to") + openapi_parser.add_argument( + "--indent", help="indents in json open api spec", type=int, default=2 + ) + openapi_parser.set_defaults(func_with_args=_generate_openapi) + + +def init_cli_handlers(app: Optional[FastAPI], arguments: Any) -> None: + parser = argparse.ArgumentParser( + "badgerdoc", formatter_class=argparse.ArgumentDefaultsHelpFormatter + ) + parser.add_argument( + "-v", + "--verbose", + help="show full traceback and other debug info", + action="store_true", + ) + subparsers: Any = parser.add_subparsers() + inject_openapi_commands(app, subparsers) + params = vars(parser.parse_args(arguments)) + try: + if params.get("func"): + params["func"]() + elif params.get("func_with_args"): + params["func_with_args"]( + { + param: value + for param, value in params.items() + if param not in {"func", "func_with_args"} + } + ) + else: + parser.print_help() + except AttributeError: + parser.print_help() + except Exception as err: + if params.get("verbose"): + raise + print(err) + + +def init_cli_app(app: FastAPI) -> None: + if not isinstance(app, FastAPI): + raise TypeError("Invalid app type. Must be FastAPI") + global APP + APP = app + + +def cli_handler() -> None: + init_cli_handlers(APP, sys.argv[1:]) diff --git a/lib/badgerdoc_cli/pyproject.toml b/lib/badgerdoc_cli/pyproject.toml new file mode 100644 index 000000000..2981960a8 --- /dev/null +++ b/lib/badgerdoc_cli/pyproject.toml @@ -0,0 +1,34 @@ +[project] +name = "badgerdoc_cli" +description = "Package for badgerdoc cli tools" +requires-python = ">=3.8" +version = "0.1.0" +dynamic = ["readme", "dependencies", "optional-dependencies"] + +[tool.setuptools.dynamic] +readme = {file = ["README.md"]} +dependencies = {file = "requirements.txt"} +optional-dependencies.dev = {file = ["badgerdoc_cli", "requirements-dev.txt"]} + +[build-system] +requires = ["setuptools>=67.0.0"] +build-backend = "setuptools.build_meta" + +# Dev tools settings +[tool.black] +line-length = 79 + +[tool.isort] +profile = "black" +line_length = 79 + +[tool.mypy] +python_version = 3.8 +strict = "True" +ignore_missing_imports = "True" +allow_untyped_decorators = "True" + +[tool.pylint.basic] +max-line-length=79 +errors-only = "True" +disable = ["E0401"] diff --git a/lib/badgerdoc_cli/requirements-dev.txt b/lib/badgerdoc_cli/requirements-dev.txt new file mode 100644 index 000000000..5b6d336eb --- /dev/null +++ b/lib/badgerdoc_cli/requirements-dev.txt @@ -0,0 +1,2 @@ +pytest>=7.2.2 +pre-commit>=3.2.1 diff --git a/lib/badgerdoc_cli/requirements.txt b/lib/badgerdoc_cli/requirements.txt new file mode 100644 index 000000000..3f1f56daa --- /dev/null +++ b/lib/badgerdoc_cli/requirements.txt @@ -0,0 +1 @@ +fastapi>=0.68.0 diff --git a/lib/badgerdoc_cli/tests/__init__.py b/lib/badgerdoc_cli/tests/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/lib/badgerdoc_cli/tests/test_main.py b/lib/badgerdoc_cli/tests/test_main.py new file mode 100644 index 000000000..9e040c839 --- /dev/null +++ b/lib/badgerdoc_cli/tests/test_main.py @@ -0,0 +1,68 @@ +from typing import Optional +from unittest.mock import patch + +import pytest +from _pytest.capture import CaptureFixture +from fastapi import FastAPI + +from badgerdoc_cli import main + + +def test_init_cli_app() -> None: + app = FastAPI() + main.init_cli_app(app) + assert main.APP is app + + +def test_init_cli_app_invalid_app() -> None: + fake_app = type("FastAPI", (), {}) + with pytest.raises(TypeError, match="Invalid app type. Must be FastAPI"): + main.init_cli_app(fake_app) + + +def test_verbose_param() -> None: + with patch( + "badgerdoc_cli.main.generate_openapi", + side_effect=ValueError("Foo!"), + ), pytest.raises(ValueError, match="Foo"): + app = FastAPI() + cli_args = ("--verbose", "openapi", "foo.json") + main.init_cli_handlers(app, cli_args) + + +@pytest.mark.parametrize(("indent", "expected_indent"), ((None, 2), ("4", 4))) +def test_openapi_command(indent: Optional[str], expected_indent: int) -> None: + app = FastAPI() + cli_args = ["openapi", "foo.json"] + if indent is not None: + cli_args.append(f"--indent={indent}") + + with patch("badgerdoc_cli.main.generate_openapi") as gendoc_mock: + main.init_cli_handlers(app, cli_args) + gendoc_mock.assert_called_once_with( + app=app, + file_path="foo.json", + indent=expected_indent, + ) + + +def test_openapi_command_non_initialized_cli( + capsys: CaptureFixture[str], +) -> None: + app = None + cli_args = ("openapi", "foo.json") + main.init_cli_handlers(app, cli_args) + captured_stdout = capsys.readouterr().out + expected = "CLI is not initialized. Add init_cli_app call to set up CLI\n" + assert captured_stdout == expected + + +def test_openapi_command_invalid_file_format( + capsys: CaptureFixture[str], +) -> None: + app = FastAPI() + cli_args = ("openapi", "foo.pdf") + main.init_cli_handlers(app, cli_args) + captured_stdout = capsys.readouterr().out + expected = "Invalid file format. Must be .json\n" + assert captured_stdout == expected diff --git a/lib/filter_lib/requirements.txt b/lib/filter_lib/requirements.txt index 096ad7dbd..2fd52b55a 100644 --- a/lib/filter_lib/requirements.txt +++ b/lib/filter_lib/requirements.txt @@ -1,5 +1,5 @@ SQLAlchemy==1.3.24 sqlalchemy-filters==0.12.0 -sqlalchemy_utils==0.38.3 -psycopg2-binary==2.9.1 +sqlalchemy_utils>=0.38.3 +psycopg2-binary>=2.9.1 pydantic==1.8.2 diff --git a/lib/tenants/requirements.txt b/lib/tenants/requirements.txt index bdf6d27eb..a275a0888 100644 --- a/lib/tenants/requirements.txt +++ b/lib/tenants/requirements.txt @@ -1,3 +1,3 @@ fastapi>=0.68.0 httpx -PyJWT[crypto]==2.3.0 +PyJWT[crypto]>=2.3.0 diff --git a/models/models/main.py b/models/models/main.py index 7f2525886..e5bdefd81 100644 --- a/models/models/main.py +++ b/models/models/main.py @@ -71,3 +71,10 @@ def configure_logging() -> None: app.add_exception_handler(SSHException, ssh_connection_error_handler) app.add_exception_handler(SQLAlchemyError, sqlalchemy_db_error_handler) app.add_exception_handler(SubprocessError, subprocess_called_error_handler) + + +def cli_handler() -> None: + from badgerdoc_cli import cli_handler, init_cli_app + + init_cli_app(app) + cli_handler() diff --git a/models/poetry.lock b/models/poetry.lock index 67007115b..7f70c36c7 100644 --- a/models/poetry.lock +++ b/models/poetry.lock @@ -1076,48 +1076,83 @@ wcwidth = "*" [[package]] name = "psycopg2-binary" -version = "2.9.2" +version = "2.9.5" description = "psycopg2 - Python-PostgreSQL Database Adapter" category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "psycopg2-binary-2.9.2.tar.gz", hash = "sha256:234b1f48488b2f86aac04fb00cb04e5e9bcb960f34fa8a8e41b73149d581a93b"}, - {file = "psycopg2_binary-2.9.2-cp310-cp310-macosx_10_14_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:c0e1fb7097ded2cc44d9037cfc68ad86a30341261492e7de95d180e534969fb2"}, - {file = "psycopg2_binary-2.9.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:717525cdc97b23182ff6f470fb5bf6f0bc796b5a7000c6f6699d6679991e4a5e"}, - {file = "psycopg2_binary-2.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3865d0cd919349c45603bd7e80249a382c5ecf8106304cfd153282adf9684b6a"}, - {file = "psycopg2_binary-2.9.2-cp310-cp310-manylinux_2_24_aarch64.whl", hash = "sha256:daf6b5c62eb738872d61a1fa740d7768904911ba5a7e055ed72169d379b58beb"}, - {file = "psycopg2_binary-2.9.2-cp310-cp310-manylinux_2_24_ppc64le.whl", hash = "sha256:3ac83656ff4fbe7f2a956ab085e3eb1d678df54759965d509bdd6a06ce520d49"}, - {file = "psycopg2_binary-2.9.2-cp310-cp310-win32.whl", hash = "sha256:a04cfa231e7d9b63639e62166a4051cb47ca599fa341463fa3e1c48585fcee64"}, - {file = "psycopg2_binary-2.9.2-cp310-cp310-win_amd64.whl", hash = "sha256:c6e16e085fe6dc6c099ee0be56657aa9ad71027465ef9591d302ba230c404c7e"}, - {file = "psycopg2_binary-2.9.2-cp36-cp36m-macosx_10_14_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:53912199abb626a7249c662e72b70b4f57bf37f840599cec68625171435790dd"}, - {file = "psycopg2_binary-2.9.2-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:029e09a892b9ebc3c77851f69ce0720e1b72a9c6850460cee49b14dfbf9ccdd2"}, - {file = "psycopg2_binary-2.9.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db1b03c189f85b8df29030ad32d521dd7dcb862fd5f8892035314f5b886e70ce"}, - {file = "psycopg2_binary-2.9.2-cp36-cp36m-manylinux_2_24_aarch64.whl", hash = "sha256:2eecbdc5fa5886f2dd6cc673ce4291cc0fb8900965315268960ad9c2477f8276"}, - {file = "psycopg2_binary-2.9.2-cp36-cp36m-manylinux_2_24_ppc64le.whl", hash = "sha256:a77e98c68b0e6c51d4d6a994d22b30e77276cbd33e4aabdde03b9ad3a2c148aa"}, - {file = "psycopg2_binary-2.9.2-cp36-cp36m-win32.whl", hash = "sha256:bf31e6fdb4ec1f6d98a07f48836508ed6edd19b48b13bbf168fbc1bd014b4ca2"}, - {file = "psycopg2_binary-2.9.2-cp36-cp36m-win_amd64.whl", hash = "sha256:f9c37ecb173d76cf49e519133fd70851b8f9c38b6b8c1cb7fcfc71368d4cc6fc"}, - {file = "psycopg2_binary-2.9.2-cp37-cp37m-macosx_10_14_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:a507db7758953b1b170c4310691a1a89877029b1e11b08ba5fc8ae3ddb35596b"}, - {file = "psycopg2_binary-2.9.2-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e4bbcfb403221ea1953f3e0a85cef00ed15c1683a66cf35c956a7e37c33a4c4"}, - {file = "psycopg2_binary-2.9.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f4dff0f15af6936c6fe6da7067b4216edbbe076ad8625da819cc066591b1133c"}, - {file = "psycopg2_binary-2.9.2-cp37-cp37m-manylinux_2_24_aarch64.whl", hash = "sha256:8d2aafe46eb87742425ece38130510fbb035787ee89a329af299029c4d9ae318"}, - {file = "psycopg2_binary-2.9.2-cp37-cp37m-manylinux_2_24_ppc64le.whl", hash = "sha256:37c8f00f7a2860bac9f7a54f03c243fc1dd9b367e5b2b52f5a02e5f4e9d8c49b"}, - {file = "psycopg2_binary-2.9.2-cp37-cp37m-win32.whl", hash = "sha256:ef97578fab5115e3af4334dd3376dea3c3a79328a3314b21ec7ced02920b916d"}, - {file = "psycopg2_binary-2.9.2-cp37-cp37m-win_amd64.whl", hash = "sha256:7e6bd4f532c2cd297b81114526176b240109a1c52020adca69c3f3226c65dc18"}, - {file = "psycopg2_binary-2.9.2-cp38-cp38-macosx_10_14_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:eeee7b18c51d02e49bf1984d7af26e8843fe68e31fa1cbab5366ebdfa1c89ade"}, - {file = "psycopg2_binary-2.9.2-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:497372cc76e6cbce2f51b37be141f360a321423c03eb9be45524b1d123f4cd11"}, - {file = "psycopg2_binary-2.9.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5671699aff57d22a245b7f4bba89e3de97dc841c5e98bd7f685429b2b20eca47"}, - {file = "psycopg2_binary-2.9.2-cp38-cp38-manylinux_2_24_aarch64.whl", hash = "sha256:b9d45374ba98c1184df9cce93a0b766097544f8bdfcd5de83ff10f939c193125"}, - {file = "psycopg2_binary-2.9.2-cp38-cp38-manylinux_2_24_ppc64le.whl", hash = "sha256:a1852c5bef7e5f52bd43fde5eda610d4df0fb2efc31028150933e84b4140d47a"}, - {file = "psycopg2_binary-2.9.2-cp38-cp38-win32.whl", hash = "sha256:108b0380969ddab7c8ef2a813a57f87b308b2f88ec15f1a1e7b653964a3cfb25"}, - {file = "psycopg2_binary-2.9.2-cp38-cp38-win_amd64.whl", hash = "sha256:14427437117f38e65f71db65d8eafd0e86837be456567798712b8da89db2b2dd"}, - {file = "psycopg2_binary-2.9.2-cp39-cp39-macosx_10_14_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:578c279cd1ce04f05ae0912530ece00bab92854911808e5aec27588aba87e361"}, - {file = "psycopg2_binary-2.9.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c2dea4deac3dd3687e32daeb0712ee96c535970dfdded37a11de6a21145ab0e"}, - {file = "psycopg2_binary-2.9.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b592f09ff18cfcc9037b9a976fcd62db48cae9dbd5385f2471d4c2ba40c52b4d"}, - {file = "psycopg2_binary-2.9.2-cp39-cp39-manylinux_2_24_aarch64.whl", hash = "sha256:3a320e7a804f3886a599fea507364aaafbb8387027fffcdfbd34d96316c806c7"}, - {file = "psycopg2_binary-2.9.2-cp39-cp39-manylinux_2_24_ppc64le.whl", hash = "sha256:7585ca73dcfe326f31fafa8f96e6bb98ea9e9e46c7a1924ec8101d797914ae27"}, - {file = "psycopg2_binary-2.9.2-cp39-cp39-win32.whl", hash = "sha256:9c0aaad07941419926b9bd00171e49fe6b06e42e5527fb91671e137fe6c93d77"}, - {file = "psycopg2_binary-2.9.2-cp39-cp39-win_amd64.whl", hash = "sha256:aa2847d8073951dbc84c4f8b32c620764db3c2eb0d99a04835fecfab7d04816e"}, + {file = "psycopg2-binary-2.9.5.tar.gz", hash = "sha256:33e632d0885b95a8b97165899006c40e9ecdc634a529dca7b991eb7de4ece41c"}, + {file = "psycopg2_binary-2.9.5-cp310-cp310-macosx_10_15_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:0775d6252ccb22b15da3b5d7adbbf8cfe284916b14b6dc0ff503a23edb01ee85"}, + {file = "psycopg2_binary-2.9.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2ec46ed947801652c9643e0b1dc334cfb2781232e375ba97312c2fc256597632"}, + {file = "psycopg2_binary-2.9.5-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3520d7af1ebc838cc6084a3281145d5cd5bdd43fdef139e6db5af01b92596cb7"}, + {file = "psycopg2_binary-2.9.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5cbc554ba47ecca8cd3396ddaca85e1ecfe3e48dd57dc5e415e59551affe568e"}, + {file = "psycopg2_binary-2.9.5-cp310-cp310-manylinux_2_24_aarch64.whl", hash = "sha256:5d28ecdf191db558d0c07d0f16524ee9d67896edf2b7990eea800abeb23ebd61"}, + {file = "psycopg2_binary-2.9.5-cp310-cp310-manylinux_2_24_ppc64le.whl", hash = "sha256:b9c33d4aef08dfecbd1736ceab8b7b3c4358bf10a0121483e5cd60d3d308cc64"}, + {file = "psycopg2_binary-2.9.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:05b3d479425e047c848b9782cd7aac9c6727ce23181eb9647baf64ffdfc3da41"}, + {file = "psycopg2_binary-2.9.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:1e491e6489a6cb1d079df8eaa15957c277fdedb102b6a68cfbf40c4994412fd0"}, + {file = "psycopg2_binary-2.9.5-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:9e32cedc389bcb76d9f24ea8a012b3cb8385ee362ea437e1d012ffaed106c17d"}, + {file = "psycopg2_binary-2.9.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:46850a640df62ae940e34a163f72e26aca1f88e2da79148e1862faaac985c302"}, + {file = "psycopg2_binary-2.9.5-cp310-cp310-win32.whl", hash = "sha256:3d790f84201c3698d1bfb404c917f36e40531577a6dda02e45ba29b64d539867"}, + {file = "psycopg2_binary-2.9.5-cp310-cp310-win_amd64.whl", hash = "sha256:1764546ffeaed4f9428707be61d68972eb5ede81239b46a45843e0071104d0dd"}, + {file = "psycopg2_binary-2.9.5-cp311-cp311-macosx_10_9_universal2.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:426c2ae999135d64e6a18849a7d1ad0e1bd007277e4a8f4752eaa40a96b550ff"}, + {file = "psycopg2_binary-2.9.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7cf1d44e710ca3a9ce952bda2855830fe9f9017ed6259e01fcd71ea6287565f5"}, + {file = "psycopg2_binary-2.9.5-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:024030b13bdcbd53d8a93891a2cf07719715724fc9fee40243f3bd78b4264b8f"}, + {file = "psycopg2_binary-2.9.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bcda1c84a1c533c528356da5490d464a139b6e84eb77cc0b432e38c5c6dd7882"}, + {file = "psycopg2_binary-2.9.5-cp311-cp311-manylinux_2_24_aarch64.whl", hash = "sha256:2ef892cabdccefe577088a79580301f09f2a713eb239f4f9f62b2b29cafb0577"}, + {file = "psycopg2_binary-2.9.5-cp311-cp311-manylinux_2_24_ppc64le.whl", hash = "sha256:af0516e1711995cb08dc19bbd05bec7dbdebf4185f68870595156718d237df3e"}, + {file = "psycopg2_binary-2.9.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e72c91bda9880f097c8aa3601a2c0de6c708763ba8128006151f496ca9065935"}, + {file = "psycopg2_binary-2.9.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:e67b3c26e9b6d37b370c83aa790bbc121775c57bfb096c2e77eacca25fd0233b"}, + {file = "psycopg2_binary-2.9.5-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:5fc447058d083b8c6ac076fc26b446d44f0145308465d745fba93a28c14c9e32"}, + {file = "psycopg2_binary-2.9.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d892bfa1d023c3781a3cab8dd5af76b626c483484d782e8bd047c180db590e4c"}, + {file = "psycopg2_binary-2.9.5-cp311-cp311-win32.whl", hash = "sha256:2abccab84d057723d2ca8f99ff7b619285d40da6814d50366f61f0fc385c3903"}, + {file = "psycopg2_binary-2.9.5-cp311-cp311-win_amd64.whl", hash = "sha256:bef7e3f9dc6f0c13afdd671008534be5744e0e682fb851584c8c3a025ec09720"}, + {file = "psycopg2_binary-2.9.5-cp36-cp36m-macosx_10_14_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:6e63814ec71db9bdb42905c925639f319c80e7909fb76c3b84edc79dadef8d60"}, + {file = "psycopg2_binary-2.9.5-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:212757ffcecb3e1a5338d4e6761bf9c04f750e7d027117e74aa3cd8a75bb6fbd"}, + {file = "psycopg2_binary-2.9.5-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f8a9bcab7b6db2e3dbf65b214dfc795b4c6b3bb3af922901b6a67f7cb47d5f8"}, + {file = "psycopg2_binary-2.9.5-cp36-cp36m-manylinux_2_24_aarch64.whl", hash = "sha256:56b2957a145f816726b109ee3d4e6822c23f919a7d91af5a94593723ed667835"}, + {file = "psycopg2_binary-2.9.5-cp36-cp36m-manylinux_2_24_ppc64le.whl", hash = "sha256:f95b8aca2703d6a30249f83f4fe6a9abf2e627aa892a5caaab2267d56be7ab69"}, + {file = "psycopg2_binary-2.9.5-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:70831e03bd53702c941da1a1ad36c17d825a24fbb26857b40913d58df82ec18b"}, + {file = "psycopg2_binary-2.9.5-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:dbc332beaf8492b5731229a881807cd7b91b50dbbbaf7fe2faf46942eda64a24"}, + {file = "psycopg2_binary-2.9.5-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:2d964eb24c8b021623df1c93c626671420c6efadbdb8655cb2bd5e0c6fa422ba"}, + {file = "psycopg2_binary-2.9.5-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:95076399ec3b27a8f7fa1cc9a83417b1c920d55cf7a97f718a94efbb96c7f503"}, + {file = "psycopg2_binary-2.9.5-cp36-cp36m-win32.whl", hash = "sha256:3fc33295cfccad697a97a76dec3f1e94ad848b7b163c3228c1636977966b51e2"}, + {file = "psycopg2_binary-2.9.5-cp36-cp36m-win_amd64.whl", hash = "sha256:02551647542f2bf89073d129c73c05a25c372fc0a49aa50e0de65c3c143d8bd0"}, + {file = "psycopg2_binary-2.9.5-cp37-cp37m-macosx_10_15_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:63e318dbe52709ed10d516a356f22a635e07a2e34c68145484ed96a19b0c4c68"}, + {file = "psycopg2_binary-2.9.5-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a7e518a0911c50f60313cb9e74a169a65b5d293770db4770ebf004245f24b5c5"}, + {file = "psycopg2_binary-2.9.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9d38a4656e4e715d637abdf7296e98d6267df0cc0a8e9a016f8ba07e4aa3eeb"}, + {file = "psycopg2_binary-2.9.5-cp37-cp37m-manylinux_2_24_aarch64.whl", hash = "sha256:68d81a2fe184030aa0c5c11e518292e15d342a667184d91e30644c9d533e53e1"}, + {file = "psycopg2_binary-2.9.5-cp37-cp37m-manylinux_2_24_ppc64le.whl", hash = "sha256:7ee3095d02d6f38bd7d9a5358fcc9ea78fcdb7176921528dd709cc63f40184f5"}, + {file = "psycopg2_binary-2.9.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:46512486be6fbceef51d7660dec017394ba3e170299d1dc30928cbedebbf103a"}, + {file = "psycopg2_binary-2.9.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b911dfb727e247340d36ae20c4b9259e4a64013ab9888ccb3cbba69b77fd9636"}, + {file = "psycopg2_binary-2.9.5-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:422e3d43b47ac20141bc84b3d342eead8d8099a62881a501e97d15f6addabfe9"}, + {file = "psycopg2_binary-2.9.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:c5682a45df7d9642eff590abc73157c887a68f016df0a8ad722dcc0f888f56d7"}, + {file = "psycopg2_binary-2.9.5-cp37-cp37m-win32.whl", hash = "sha256:b8104f709590fff72af801e916817560dbe1698028cd0afe5a52d75ceb1fce5f"}, + {file = "psycopg2_binary-2.9.5-cp37-cp37m-win_amd64.whl", hash = "sha256:7b3751857da3e224f5629400736a7b11e940b5da5f95fa631d86219a1beaafec"}, + {file = "psycopg2_binary-2.9.5-cp38-cp38-macosx_10_15_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:043a9fd45a03858ff72364b4b75090679bd875ee44df9c0613dc862ca6b98460"}, + {file = "psycopg2_binary-2.9.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9ffdc51001136b699f9563b1c74cc1f8c07f66ef7219beb6417a4c8aaa896c28"}, + {file = "psycopg2_binary-2.9.5-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c15ba5982c177bc4b23a7940c7e4394197e2d6a424a2d282e7c236b66da6d896"}, + {file = "psycopg2_binary-2.9.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc85b3777068ed30aff8242be2813038a929f2084f69e43ef869daddae50f6ee"}, + {file = "psycopg2_binary-2.9.5-cp38-cp38-manylinux_2_24_aarch64.whl", hash = "sha256:215d6bf7e66732a514f47614f828d8c0aaac9a648c46a831955cb103473c7147"}, + {file = "psycopg2_binary-2.9.5-cp38-cp38-manylinux_2_24_ppc64le.whl", hash = "sha256:7d07f552d1e412f4b4e64ce386d4c777a41da3b33f7098b6219012ba534fb2c2"}, + {file = "psycopg2_binary-2.9.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:a0adef094c49f242122bb145c3c8af442070dc0e4312db17e49058c1702606d4"}, + {file = "psycopg2_binary-2.9.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:00475004e5ed3e3bf5e056d66e5dcdf41a0dc62efcd57997acd9135c40a08a50"}, + {file = "psycopg2_binary-2.9.5-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:7d88db096fa19d94f433420eaaf9f3c45382da2dd014b93e4bf3215639047c16"}, + {file = "psycopg2_binary-2.9.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:902844f9c4fb19b17dfa84d9e2ca053d4a4ba265723d62ea5c9c26b38e0aa1e6"}, + {file = "psycopg2_binary-2.9.5-cp38-cp38-win32.whl", hash = "sha256:4e7904d1920c0c89105c0517dc7e3f5c20fb4e56ba9cdef13048db76947f1d79"}, + {file = "psycopg2_binary-2.9.5-cp38-cp38-win_amd64.whl", hash = "sha256:a36a0e791805aa136e9cbd0ffa040d09adec8610453ee8a753f23481a0057af5"}, + {file = "psycopg2_binary-2.9.5-cp39-cp39-macosx_10_15_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:25382c7d174c679ce6927c16b6fbb68b10e56ee44b1acb40671e02d29f2fce7c"}, + {file = "psycopg2_binary-2.9.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9c38d3869238e9d3409239bc05bc27d6b7c99c2a460ea337d2814b35fb4fea1b"}, + {file = "psycopg2_binary-2.9.5-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5c6527c8efa5226a9e787507652dd5ba97b62d29b53c371a85cd13f957fe4d42"}, + {file = "psycopg2_binary-2.9.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e59137cdb970249ae60be2a49774c6dfb015bd0403f05af1fe61862e9626642d"}, + {file = "psycopg2_binary-2.9.5-cp39-cp39-manylinux_2_24_aarch64.whl", hash = "sha256:d4c7b3a31502184e856df1f7bbb2c3735a05a8ce0ade34c5277e1577738a5c91"}, + {file = "psycopg2_binary-2.9.5-cp39-cp39-manylinux_2_24_ppc64le.whl", hash = "sha256:b9a794cef1d9c1772b94a72eec6da144c18e18041d294a9ab47669bc77a80c1d"}, + {file = "psycopg2_binary-2.9.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c5254cbd4f4855e11cebf678c1a848a3042d455a22a4ce61349c36aafd4c2267"}, + {file = "psycopg2_binary-2.9.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c5e65c6ac0ae4bf5bef1667029f81010b6017795dcb817ba5c7b8a8d61fab76f"}, + {file = "psycopg2_binary-2.9.5-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:74eddec4537ab1f701a1647214734bc52cee2794df748f6ae5908e00771f180a"}, + {file = "psycopg2_binary-2.9.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:01ad49d68dd8c5362e4bfb4158f2896dc6e0c02e87b8a3770fc003459f1a4425"}, + {file = "psycopg2_binary-2.9.5-cp39-cp39-win32.whl", hash = "sha256:937880290775033a743f4836aa253087b85e62784b63fd099ee725d567a48aa1"}, + {file = "psycopg2_binary-2.9.5-cp39-cp39-win_amd64.whl", hash = "sha256:484405b883630f3e74ed32041a87456c5e0e63a8e3429aa93e8714c366d62bd1"}, ] [[package]] @@ -1931,4 +1966,4 @@ testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more [metadata] lock-version = "2.0" python-versions = "^3.8.0" -content-hash = "40c5a8fb9ec12b87c0615f78f295867ee894817ba166a3330e71bbb82309fc2f" +content-hash = "93abc43d397e6d9a73a2bb950f8d6b036c8203b8bb4ca7838ede3ee55a1f728a" diff --git a/models/pyproject.toml b/models/pyproject.toml index 917f58140..f85b69920 100644 --- a/models/pyproject.toml +++ b/models/pyproject.toml @@ -12,14 +12,14 @@ fastapi = "^0.68.0" PyJWT = "^2.3.0" kubernetes = "^19.15.0" SQLAlchemy = "1.3.24" -psycopg2-binary = "2.9.2" +psycopg2-binary = "^2.9.5" alembic = "^1.7.6" python-dotenv = "^0.19.2" boto3 = "^1.21.23" paramiko = "^2.10.3" python-multipart = "^0.0.5" -[tool.poetry.dev-dependencies] +[tool.poetry.group.dev.dependencies] black = "^22.3b0" isort = "5.9.1" mypy = "0.910" @@ -32,6 +32,9 @@ commitizen = "^2.27.0" types-requests = "^2.27.25" SQLAlchemy-Utils = "0.39.0" +[tool.poetry.scripts] +badgerdoc = "models.main:cli_handler" + [tool.isort] profile = "black" diff --git a/pipelines/pipelines/app.py b/pipelines/pipelines/app.py index 5d78b239e..550ac11e0 100644 --- a/pipelines/pipelines/app.py +++ b/pipelines/pipelines/app.py @@ -342,3 +342,10 @@ async def get_job_progress_by_job_id( session=session, job_id=job_id, step_status=schemas.Status.DONE ) return {"finished": finished, "total": total} + + +def cli_handler() -> None: + from badgerdoc_cli import cli_handler, init_cli_app + + init_cli_app(app) + cli_handler() diff --git a/pipelines/poetry.lock b/pipelines/poetry.lock index ed7cf89e3..3f1f30dac 100644 --- a/pipelines/poetry.lock +++ b/pipelines/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.4.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.4.0 and should not be changed by hand. [[package]] name = "aiokafka" @@ -1359,7 +1359,7 @@ testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs ( name = "six" version = "1.16.0" description = "Python 2 and 3 compatibility utilities" -category = "main" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -1437,19 +1437,18 @@ pymysql = ["pymysql", "pymysql (<1)"] [[package]] name = "sqlalchemy-utils" -version = "0.37.9" +version = "0.38.3" description = "Various utility functions for SQLAlchemy." category = "main" optional = false -python-versions = "~=3.4" +python-versions = "~=3.6" files = [ - {file = "SQLAlchemy-Utils-0.37.9.tar.gz", hash = "sha256:4667edbdcb1ece011076b69772ef524bfbb17cc97e03f11ee6b85d98e7741d61"}, - {file = "SQLAlchemy_Utils-0.37.9-py3-none-any.whl", hash = "sha256:bb6f4da8ac044cb0dd4d0278b1fb434141a5ee9d1881c757a076830ddbb04160"}, + {file = "SQLAlchemy-Utils-0.38.3.tar.gz", hash = "sha256:9f9afba607a40455cf703adfa9846584bf26168a0c5a60a70063b70d65051f4d"}, + {file = "SQLAlchemy_Utils-0.38.3-py3-none-any.whl", hash = "sha256:5c13b5d08adfaa85f3d4e8ec09a75136216fad41346980d02974a70a77988bf9"}, ] [package.dependencies] -six = "*" -SQLAlchemy = ">=1.0" +SQLAlchemy = ">=1.3" [package.extras] arrow = ["arrow (>=0.3.4)"] @@ -1460,8 +1459,8 @@ intervals = ["intervals (>=0.7.1)"] password = ["passlib (>=1.6,<2.0)"] pendulum = ["pendulum (>=2.0.5)"] phone = ["phonenumbers (>=5.9.2)"] -test = ["Jinja2 (>=2.3)", "Pygments (>=1.2)", "backports.zoneinfo", "docutils (>=0.10)", "flake8 (>=2.4.0)", "flexmock (>=0.9.7)", "isort (>=4.2.2)", "mock (==2.0.0)", "pg8000 (>=1.12.4)", "psycopg2 (>=2.5.1)", "psycopg2cffi (>=2.8.1)", "pymysql", "pyodbc", "pytest (>=2.7.1)", "python-dateutil (>=2.6)", "pytz (>=2014.2)"] -test-all = ["Babel (>=1.3)", "Jinja2 (>=2.3)", "Pygments (>=1.2)", "arrow (>=0.3.4)", "backports.zoneinfo", "colour (>=0.0.4)", "cryptography (>=0.6)", "docutils (>=0.10)", "flake8 (>=2.4.0)", "flexmock (>=0.9.7)", "furl (>=0.4.1)", "intervals (>=0.7.1)", "isort (>=4.2.2)", "mock (==2.0.0)", "passlib (>=1.6,<2.0)", "pendulum (>=2.0.5)", "pg8000 (>=1.12.4)", "phonenumbers (>=5.9.2)", "psycopg2 (>=2.5.1)", "psycopg2cffi (>=2.8.1)", "pymysql", "pyodbc", "pytest (>=2.7.1)", "python-dateutil", "python-dateutil (>=2.6)", "pytz (>=2014.2)"] +test = ["Jinja2 (>=2.3)", "Pygments (>=1.2)", "backports.zoneinfo", "docutils (>=0.10)", "flake8 (>=2.4.0)", "flexmock (>=0.9.7)", "isort (>=4.2.2)", "pg8000 (>=1.12.4)", "psycopg2 (>=2.5.1)", "psycopg2cffi (>=2.8.1)", "pymysql", "pyodbc", "pytest (>=2.7.1)", "python-dateutil (>=2.6)", "pytz (>=2014.2)"] +test-all = ["Babel (>=1.3)", "Jinja2 (>=2.3)", "Pygments (>=1.2)", "arrow (>=0.3.4)", "backports.zoneinfo", "colour (>=0.0.4)", "cryptography (>=0.6)", "docutils (>=0.10)", "flake8 (>=2.4.0)", "flexmock (>=0.9.7)", "furl (>=0.4.1)", "intervals (>=0.7.1)", "isort (>=4.2.2)", "passlib (>=1.6,<2.0)", "pendulum (>=2.0.5)", "pg8000 (>=1.12.4)", "phonenumbers (>=5.9.2)", "psycopg2 (>=2.5.1)", "psycopg2cffi (>=2.8.1)", "pymysql", "pyodbc", "pytest (>=2.7.1)", "python-dateutil", "python-dateutil (>=2.6)", "pytz (>=2014.2)"] timezone = ["python-dateutil"] url = ["furl (>=0.4.1)"] @@ -1769,4 +1768,4 @@ testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more [metadata] lock-version = "2.0" python-versions = "^3.8.1" -content-hash = "54f14a713357eb83afa78bb0296a7cb73319ba3794891ae55caece1cc8319c5c" +content-hash = "2c56b513b4c6dc099d95825a4b23676259f1f4eaebcac2e89c81173937d96148" diff --git a/pipelines/pyproject.toml b/pipelines/pyproject.toml index 06ace8236..f6e412114 100644 --- a/pipelines/pyproject.toml +++ b/pipelines/pyproject.toml @@ -11,7 +11,7 @@ fastapi = "^0.70.0" pydantic = "^1.8.2" psycopg2-binary = "^2.9.1" sqlalchemy = "1.3.24" -SQLAlchemy-Utils = "^0.37.8" +SQLAlchemy-Utils = "^0.38.3" uvicorn = {extras = ["standard"], version = "^0.15.0"} minio = "^7.1.1" alembic = "^1.7.5" @@ -21,7 +21,7 @@ urllib3 = "^1.26.8" setuptools = "^60.5.0" aiokafka = "^0.7.2" -[tool.poetry.dev-dependencies] +[tool.poetry.group.dev.dependencies] pre-commit = "^2.14.0" pytest = "^6.2.4" pytest-asyncio = "^0.15.1" @@ -33,6 +33,9 @@ mypy = "^0.910" flake8 = "^6.0.0" types-requests = "^2.28.11.15" +[tool.poetry.scripts] +badgerdoc = "pipelines.app:cli_handler" + [build-system] requires = ["poetry-core"] build-backend = "poetry.core.masonry.api" diff --git a/processing/processing/main.py b/processing/processing/main.py index 71679bed4..613a79bfd 100644 --- a/processing/processing/main.py +++ b/processing/processing/main.py @@ -180,3 +180,10 @@ async def preprocessing_health_check( ) -> bool: """Test run for preprocessing""" return await health_check_preprocessing(model_url, languages) + + +def cli_handler() -> None: + from badgerdoc_cli import cli_handler, init_cli_app + + init_cli_app(app) + cli_handler() diff --git a/processing/pyproject.toml b/processing/pyproject.toml index 455bb5922..4823dc989 100644 --- a/processing/pyproject.toml +++ b/processing/pyproject.toml @@ -21,7 +21,7 @@ psycopg2-binary = "^2.9.1" alembic = "^1.7.7" -[tool.poetry.dev-dependencies] +[tool.poetry.group.dev.dependencies] pytest = "^6.2.5" mypy = "^0.910" isort = "^5.9.1" @@ -33,6 +33,8 @@ responses = "^0.20.0" black = "^22.3.0" flake8 = "^6.0.0" +[tool.poetry.scripts] +badgerdoc = "processing.main:cli_handler" [tool.black] line_length = "79" diff --git a/scheduler/poetry.lock b/scheduler/poetry.lock index e16d4d0c0..83813cf74 100644 --- a/scheduler/poetry.lock +++ b/scheduler/poetry.lock @@ -163,14 +163,14 @@ frozenlist = ">=1.1.0" [[package]] name = "alembic" -version = "1.10.1" +version = "1.10.2" description = "A database migration tool for SQLAlchemy." category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "alembic-1.10.1-py3-none-any.whl", hash = "sha256:367370c74ccf4979e658c8404d8c9fac00907313dc8e9225b71eb9b2db77a3ec"}, - {file = "alembic-1.10.1.tar.gz", hash = "sha256:afd5a30dca731aa92808c081272d05787195b42e04df687e81e8c5a950c68c7f"}, + {file = "alembic-1.10.2-py3-none-any.whl", hash = "sha256:8b48368f6533c064b39c024e1daba15ae7f947eac84185c28c06bbe1301a5497"}, + {file = "alembic-1.10.2.tar.gz", hash = "sha256:457eafbdc0769d855c2c92cbafe6b7f319f916c80cf4ed02b8f394f38b51b89d"}, ] [package.dependencies] @@ -412,14 +412,14 @@ files = [ [[package]] name = "exceptiongroup" -version = "1.1.0" +version = "1.1.1" description = "Backport of PEP 654 (exception groups)" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "exceptiongroup-1.1.0-py3-none-any.whl", hash = "sha256:327cbda3da756e2de031a3107b81ab7b3770a602c4d16ca618298c526f4bec1e"}, - {file = "exceptiongroup-1.1.0.tar.gz", hash = "sha256:bcb67d800a4497e1b404c2dd44fca47d3b7a5e5433dbab67f96c1a685cdfdf23"}, + {file = "exceptiongroup-1.1.1-py3-none-any.whl", hash = "sha256:232c37c63e4f682982c8b6459f33a8981039e5fb8756b2074364e5055c498c9e"}, + {file = "exceptiongroup-1.1.1.tar.gz", hash = "sha256:d484c3090ba2889ae2928419117447a14daf3c1231d5e30d0aae34f354f01785"}, ] [package.extras] @@ -691,14 +691,14 @@ files = [ [[package]] name = "importlib-metadata" -version = "6.0.0" +version = "6.1.0" description = "Read metadata from Python packages" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "importlib_metadata-6.0.0-py3-none-any.whl", hash = "sha256:7efb448ec9a5e313a57655d35aa54cd3e01b7e1fbcf72dce1bf06119420f5bad"}, - {file = "importlib_metadata-6.0.0.tar.gz", hash = "sha256:e354bedeb60efa6affdcc8ae121b73544a7aa74156d047311948f6d711cd378d"}, + {file = "importlib_metadata-6.1.0-py3-none-any.whl", hash = "sha256:ff80f3b5394912eb1b108fcfd444dc78b7f1f3e16b16188054bd01cb9cb86f09"}, + {file = "importlib_metadata-6.1.0.tar.gz", hash = "sha256:43ce9281e097583d758c2c708c4376371261a02c34682491a8e98352365aad20"}, ] [package.dependencies] @@ -975,26 +975,26 @@ files = [ [[package]] name = "pathspec" -version = "0.11.0" +version = "0.11.1" description = "Utility library for gitignore style pattern matching of file paths." category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "pathspec-0.11.0-py3-none-any.whl", hash = "sha256:3a66eb970cbac598f9e5ccb5b2cf58930cd8e3ed86d393d541eaf2d8b1705229"}, - {file = "pathspec-0.11.0.tar.gz", hash = "sha256:64d338d4e0914e91c1792321e6907b5a593f1ab1851de7fc269557a21b30ebbc"}, + {file = "pathspec-0.11.1-py3-none-any.whl", hash = "sha256:d8af70af76652554bd134c22b3e8a1cc46ed7d91edcdd721ef1a0c51a84a5293"}, + {file = "pathspec-0.11.1.tar.gz", hash = "sha256:2798de800fa92780e33acca925945e9a19a133b715067cf165b8866c15a31687"}, ] [[package]] name = "platformdirs" -version = "3.1.0" +version = "3.1.1" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "platformdirs-3.1.0-py3-none-any.whl", hash = "sha256:13b08a53ed71021350c9e300d4ea8668438fb0046ab3937ac9a29913a1a1350a"}, - {file = "platformdirs-3.1.0.tar.gz", hash = "sha256:accc3665857288317f32c7bebb5a8e482ba717b474f3fc1d18ca7f9214be0cef"}, + {file = "platformdirs-3.1.1-py3-none-any.whl", hash = "sha256:e5986afb596e4bb5bde29a79ac9061aa955b94fca2399b7aaac4090860920dd8"}, + {file = "platformdirs-3.1.1.tar.gz", hash = "sha256:024996549ee88ec1a9aa99ff7f8fc819bb59e2c3477b410d90a16d32d6e707aa"}, ] [package.extras] @@ -1112,48 +1112,48 @@ files = [ [[package]] name = "pydantic" -version = "1.10.5" +version = "1.10.6" description = "Data validation and settings management using python type hints" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "pydantic-1.10.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5920824fe1e21cbb3e38cf0f3dd24857c8959801d1031ce1fac1d50857a03bfb"}, - {file = "pydantic-1.10.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3bb99cf9655b377db1a9e47fa4479e3330ea96f4123c6c8200e482704bf1eda2"}, - {file = "pydantic-1.10.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2185a3b3d98ab4506a3f6707569802d2d92c3a7ba3a9a35683a7709ea6c2aaa2"}, - {file = "pydantic-1.10.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f582cac9d11c227c652d3ce8ee223d94eb06f4228b52a8adaafa9fa62e73d5c9"}, - {file = "pydantic-1.10.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:c9e5b778b6842f135902e2d82624008c6a79710207e28e86966cd136c621bfee"}, - {file = "pydantic-1.10.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:72ef3783be8cbdef6bca034606a5de3862be6b72415dc5cb1fb8ddbac110049a"}, - {file = "pydantic-1.10.5-cp310-cp310-win_amd64.whl", hash = "sha256:45edea10b75d3da43cfda12f3792833a3fa70b6eee4db1ed6aed528cef17c74e"}, - {file = "pydantic-1.10.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:63200cd8af1af2c07964546b7bc8f217e8bda9d0a2ef0ee0c797b36353914984"}, - {file = "pydantic-1.10.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:305d0376c516b0dfa1dbefeae8c21042b57b496892d721905a6ec6b79494a66d"}, - {file = "pydantic-1.10.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1fd326aff5d6c36f05735c7c9b3d5b0e933b4ca52ad0b6e4b38038d82703d35b"}, - {file = "pydantic-1.10.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6bb0452d7b8516178c969d305d9630a3c9b8cf16fcf4713261c9ebd465af0d73"}, - {file = "pydantic-1.10.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:9a9d9155e2a9f38b2eb9374c88f02fd4d6851ae17b65ee786a87d032f87008f8"}, - {file = "pydantic-1.10.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f836444b4c5ece128b23ec36a446c9ab7f9b0f7981d0d27e13a7c366ee163f8a"}, - {file = "pydantic-1.10.5-cp311-cp311-win_amd64.whl", hash = "sha256:8481dca324e1c7b715ce091a698b181054d22072e848b6fc7895cd86f79b4449"}, - {file = "pydantic-1.10.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:87f831e81ea0589cd18257f84386bf30154c5f4bed373b7b75e5cb0b5d53ea87"}, - {file = "pydantic-1.10.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ce1612e98c6326f10888df951a26ec1a577d8df49ddcaea87773bfbe23ba5cc"}, - {file = "pydantic-1.10.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58e41dd1e977531ac6073b11baac8c013f3cd8706a01d3dc74e86955be8b2c0c"}, - {file = "pydantic-1.10.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:6a4b0aab29061262065bbdede617ef99cc5914d1bf0ddc8bcd8e3d7928d85bd6"}, - {file = "pydantic-1.10.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:36e44a4de37b8aecffa81c081dbfe42c4d2bf9f6dff34d03dce157ec65eb0f15"}, - {file = "pydantic-1.10.5-cp37-cp37m-win_amd64.whl", hash = "sha256:261f357f0aecda005934e413dfd7aa4077004a174dafe414a8325e6098a8e419"}, - {file = "pydantic-1.10.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b429f7c457aebb7fbe7cd69c418d1cd7c6fdc4d3c8697f45af78b8d5a7955760"}, - {file = "pydantic-1.10.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:663d2dd78596c5fa3eb996bc3f34b8c2a592648ad10008f98d1348be7ae212fb"}, - {file = "pydantic-1.10.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51782fd81f09edcf265823c3bf43ff36d00db246eca39ee765ef58dc8421a642"}, - {file = "pydantic-1.10.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c428c0f64a86661fb4873495c4fac430ec7a7cef2b8c1c28f3d1a7277f9ea5ab"}, - {file = "pydantic-1.10.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:76c930ad0746c70f0368c4596020b736ab65b473c1f9b3872310a835d852eb19"}, - {file = "pydantic-1.10.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:3257bd714de9db2102b742570a56bf7978e90441193acac109b1f500290f5718"}, - {file = "pydantic-1.10.5-cp38-cp38-win_amd64.whl", hash = "sha256:f5bee6c523d13944a1fdc6f0525bc86dbbd94372f17b83fa6331aabacc8fd08e"}, - {file = "pydantic-1.10.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:532e97c35719f137ee5405bd3eeddc5c06eb91a032bc755a44e34a712420daf3"}, - {file = "pydantic-1.10.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ca9075ab3de9e48b75fa8ccb897c34ccc1519177ad8841d99f7fd74cf43be5bf"}, - {file = "pydantic-1.10.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd46a0e6296346c477e59a954da57beaf9c538da37b9df482e50f836e4a7d4bb"}, - {file = "pydantic-1.10.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3353072625ea2a9a6c81ad01b91e5c07fa70deb06368c71307529abf70d23325"}, - {file = "pydantic-1.10.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:3f9d9b2be177c3cb6027cd67fbf323586417868c06c3c85d0d101703136e6b31"}, - {file = "pydantic-1.10.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b473d00ccd5c2061fd896ac127b7755baad233f8d996ea288af14ae09f8e0d1e"}, - {file = "pydantic-1.10.5-cp39-cp39-win_amd64.whl", hash = "sha256:5f3bc8f103b56a8c88021d481410874b1f13edf6e838da607dcb57ecff9b4594"}, - {file = "pydantic-1.10.5-py3-none-any.whl", hash = "sha256:7c5b94d598c90f2f46b3a983ffb46ab806a67099d118ae0da7ef21a2a4033b28"}, - {file = "pydantic-1.10.5.tar.gz", hash = "sha256:9e337ac83686645a46db0e825acceea8e02fca4062483f40e9ae178e8bd1103a"}, + {file = "pydantic-1.10.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f9289065611c48147c1dd1fd344e9d57ab45f1d99b0fb26c51f1cf72cd9bcd31"}, + {file = "pydantic-1.10.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8c32b6bba301490d9bb2bf5f631907803135e8085b6aa3e5fe5a770d46dd0160"}, + {file = "pydantic-1.10.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd9b9e98068fa1068edfc9eabde70a7132017bdd4f362f8b4fd0abed79c33083"}, + {file = "pydantic-1.10.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c84583b9df62522829cbc46e2b22e0ec11445625b5acd70c5681ce09c9b11c4"}, + {file = "pydantic-1.10.6-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:b41822064585fea56d0116aa431fbd5137ce69dfe837b599e310034171996084"}, + {file = "pydantic-1.10.6-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:61f1f08adfaa9cc02e0cbc94f478140385cbd52d5b3c5a657c2fceb15de8d1fb"}, + {file = "pydantic-1.10.6-cp310-cp310-win_amd64.whl", hash = "sha256:32937835e525d92c98a1512218db4eed9ddc8f4ee2a78382d77f54341972c0e7"}, + {file = "pydantic-1.10.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:bbd5c531b22928e63d0cb1868dee76123456e1de2f1cb45879e9e7a3f3f1779b"}, + {file = "pydantic-1.10.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e277bd18339177daa62a294256869bbe84df1fb592be2716ec62627bb8d7c81d"}, + {file = "pydantic-1.10.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89f15277d720aa57e173954d237628a8d304896364b9de745dcb722f584812c7"}, + {file = "pydantic-1.10.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b243b564cea2576725e77aeeda54e3e0229a168bc587d536cd69941e6797543d"}, + {file = "pydantic-1.10.6-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:3ce13a558b484c9ae48a6a7c184b1ba0e5588c5525482681db418268e5f86186"}, + {file = "pydantic-1.10.6-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3ac1cd4deed871dfe0c5f63721e29debf03e2deefa41b3ed5eb5f5df287c7b70"}, + {file = "pydantic-1.10.6-cp311-cp311-win_amd64.whl", hash = "sha256:b1eb6610330a1dfba9ce142ada792f26bbef1255b75f538196a39e9e90388bf4"}, + {file = "pydantic-1.10.6-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4ca83739c1263a044ec8b79df4eefc34bbac87191f0a513d00dd47d46e307a65"}, + {file = "pydantic-1.10.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea4e2a7cb409951988e79a469f609bba998a576e6d7b9791ae5d1e0619e1c0f2"}, + {file = "pydantic-1.10.6-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:53de12b4608290992a943801d7756f18a37b7aee284b9ffa794ee8ea8153f8e2"}, + {file = "pydantic-1.10.6-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:60184e80aac3b56933c71c48d6181e630b0fbc61ae455a63322a66a23c14731a"}, + {file = "pydantic-1.10.6-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:415a3f719ce518e95a92effc7ee30118a25c3d032455d13e121e3840985f2efd"}, + {file = "pydantic-1.10.6-cp37-cp37m-win_amd64.whl", hash = "sha256:72cb30894a34d3a7ab6d959b45a70abac8a2a93b6480fc5a7bfbd9c935bdc4fb"}, + {file = "pydantic-1.10.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3091d2eaeda25391405e36c2fc2ed102b48bac4b384d42b2267310abae350ca6"}, + {file = "pydantic-1.10.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:751f008cd2afe812a781fd6aa2fb66c620ca2e1a13b6a2152b1ad51553cb4b77"}, + {file = "pydantic-1.10.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:12e837fd320dd30bd625be1b101e3b62edc096a49835392dcf418f1a5ac2b832"}, + {file = "pydantic-1.10.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:587d92831d0115874d766b1f5fddcdde0c5b6c60f8c6111a394078ec227fca6d"}, + {file = "pydantic-1.10.6-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:476f6674303ae7965730a382a8e8d7fae18b8004b7b69a56c3d8fa93968aa21c"}, + {file = "pydantic-1.10.6-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:3a2be0a0f32c83265fd71a45027201e1278beaa82ea88ea5b345eea6afa9ac7f"}, + {file = "pydantic-1.10.6-cp38-cp38-win_amd64.whl", hash = "sha256:0abd9c60eee6201b853b6c4be104edfba4f8f6c5f3623f8e1dba90634d63eb35"}, + {file = "pydantic-1.10.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6195ca908045054dd2d57eb9c39a5fe86409968b8040de8c2240186da0769da7"}, + {file = "pydantic-1.10.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:43cdeca8d30de9a897440e3fb8866f827c4c31f6c73838e3a01a14b03b067b1d"}, + {file = "pydantic-1.10.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c19eb5163167489cb1e0161ae9220dadd4fc609a42649e7e84a8fa8fff7a80f"}, + {file = "pydantic-1.10.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:012c99a9c0d18cfde7469aa1ebff922e24b0c706d03ead96940f5465f2c9cf62"}, + {file = "pydantic-1.10.6-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:528dcf7ec49fb5a84bf6fe346c1cc3c55b0e7603c2123881996ca3ad79db5bfc"}, + {file = "pydantic-1.10.6-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:163e79386c3547c49366e959d01e37fc30252285a70619ffc1b10ede4758250a"}, + {file = "pydantic-1.10.6-cp39-cp39-win_amd64.whl", hash = "sha256:189318051c3d57821f7233ecc94708767dd67687a614a4e8f92b4a020d4ffd06"}, + {file = "pydantic-1.10.6-py3-none-any.whl", hash = "sha256:acc6783751ac9c9bc4680379edd6d286468a1dc8d7d9906cd6f1186ed682b2b0"}, + {file = "pydantic-1.10.6.tar.gz", hash = "sha256:cf95adb0d1671fc38d8c43dd921ad5814a735e7d9b4d9e437c088002863854fd"}, ] [package.dependencies] @@ -1327,53 +1327,53 @@ files = [ [[package]] name = "sqlalchemy" -version = "1.4.46" +version = "1.4.47" description = "Database Abstraction Library" category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ - {file = "SQLAlchemy-1.4.46-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:7001f16a9a8e06488c3c7154827c48455d1c1507d7228d43e781afbc8ceccf6d"}, - {file = "SQLAlchemy-1.4.46-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:c7a46639ba058d320c9f53a81db38119a74b8a7a1884df44d09fbe807d028aaf"}, - {file = "SQLAlchemy-1.4.46-cp27-cp27m-win32.whl", hash = "sha256:c04144a24103135ea0315d459431ac196fe96f55d3213bfd6d39d0247775c854"}, - {file = "SQLAlchemy-1.4.46-cp27-cp27m-win_amd64.whl", hash = "sha256:7b81b1030c42b003fc10ddd17825571603117f848814a344d305262d370e7c34"}, - {file = "SQLAlchemy-1.4.46-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:939f9a018d2ad04036746e15d119c0428b1e557470361aa798e6e7d7f5875be0"}, - {file = "SQLAlchemy-1.4.46-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:b7f4b6aa6e87991ec7ce0e769689a977776db6704947e562102431474799a857"}, - {file = "SQLAlchemy-1.4.46-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dbf17ac9a61e7a3f1c7ca47237aac93cabd7f08ad92ac5b96d6f8dea4287fc1"}, - {file = "SQLAlchemy-1.4.46-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7f8267682eb41a0584cf66d8a697fef64b53281d01c93a503e1344197f2e01fe"}, - {file = "SQLAlchemy-1.4.46-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64cb0ad8a190bc22d2112001cfecdec45baffdf41871de777239da6a28ed74b6"}, - {file = "SQLAlchemy-1.4.46-cp310-cp310-win32.whl", hash = "sha256:5f752676fc126edc1c4af0ec2e4d2adca48ddfae5de46bb40adbd3f903eb2120"}, - {file = "SQLAlchemy-1.4.46-cp310-cp310-win_amd64.whl", hash = "sha256:31de1e2c45e67a5ec1ecca6ec26aefc299dd5151e355eb5199cd9516b57340be"}, - {file = "SQLAlchemy-1.4.46-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d68e1762997bfebf9e5cf2a9fd0bcf9ca2fdd8136ce7b24bbd3bbfa4328f3e4a"}, - {file = "SQLAlchemy-1.4.46-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d112b0f3c1bc5ff70554a97344625ef621c1bfe02a73c5d97cac91f8cd7a41e"}, - {file = "SQLAlchemy-1.4.46-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:69fac0a7054d86b997af12dc23f581cf0b25fb1c7d1fed43257dee3af32d3d6d"}, - {file = "SQLAlchemy-1.4.46-cp311-cp311-win32.whl", hash = "sha256:887865924c3d6e9a473dc82b70977395301533b3030d0f020c38fd9eba5419f2"}, - {file = "SQLAlchemy-1.4.46-cp311-cp311-win_amd64.whl", hash = "sha256:984ee13543a346324319a1fb72b698e521506f6f22dc37d7752a329e9cd00a32"}, - {file = "SQLAlchemy-1.4.46-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:9167d4227b56591a4cc5524f1b79ccd7ea994f36e4c648ab42ca995d28ebbb96"}, - {file = "SQLAlchemy-1.4.46-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d61e9ecc849d8d44d7f80894ecff4abe347136e9d926560b818f6243409f3c86"}, - {file = "SQLAlchemy-1.4.46-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3ec187acf85984263299a3f15c34a6c0671f83565d86d10f43ace49881a82718"}, - {file = "SQLAlchemy-1.4.46-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9883f5fae4fd8e3f875adc2add69f8b945625811689a6c65866a35ee9c0aea23"}, - {file = "SQLAlchemy-1.4.46-cp36-cp36m-win32.whl", hash = "sha256:535377e9b10aff5a045e3d9ada8a62d02058b422c0504ebdcf07930599890eb0"}, - {file = "SQLAlchemy-1.4.46-cp36-cp36m-win_amd64.whl", hash = "sha256:18cafdb27834fa03569d29f571df7115812a0e59fd6a3a03ccb0d33678ec8420"}, - {file = "SQLAlchemy-1.4.46-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:a1ad90c97029cc3ab4ffd57443a20fac21d2ec3c89532b084b073b3feb5abff3"}, - {file = "SQLAlchemy-1.4.46-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4847f4b1d822754e35707db913396a29d874ee77b9c3c3ef3f04d5a9a6209618"}, - {file = "SQLAlchemy-1.4.46-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c5a99282848b6cae0056b85da17392a26b2d39178394fc25700bcf967e06e97a"}, - {file = "SQLAlchemy-1.4.46-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4b1cc7835b39835c75cf7c20c926b42e97d074147c902a9ebb7cf2c840dc4e2"}, - {file = "SQLAlchemy-1.4.46-cp37-cp37m-win32.whl", hash = "sha256:c522e496f9b9b70296a7675272ec21937ccfc15da664b74b9f58d98a641ce1b6"}, - {file = "SQLAlchemy-1.4.46-cp37-cp37m-win_amd64.whl", hash = "sha256:ae067ab639fa499f67ded52f5bc8e084f045d10b5ac7bb928ae4ca2b6c0429a5"}, - {file = "SQLAlchemy-1.4.46-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:e3c1808008124850115a3f7e793a975cfa5c8a26ceeeb9ff9cbb4485cac556df"}, - {file = "SQLAlchemy-1.4.46-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4d164df3d83d204c69f840da30b292ac7dc54285096c6171245b8d7807185aa"}, - {file = "SQLAlchemy-1.4.46-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b33ffbdbbf5446cf36cd4cc530c9d9905d3c2fe56ed09e25c22c850cdb9fac92"}, - {file = "SQLAlchemy-1.4.46-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d94682732d1a0def5672471ba42a29ff5e21bb0aae0afa00bb10796fc1e28dd"}, - {file = "SQLAlchemy-1.4.46-cp38-cp38-win32.whl", hash = "sha256:f8cb80fe8d14307e4124f6fad64dfd87ab749c9d275f82b8b4ec84c84ecebdbe"}, - {file = "SQLAlchemy-1.4.46-cp38-cp38-win_amd64.whl", hash = "sha256:07e48cbcdda6b8bc7a59d6728bd3f5f574ffe03f2c9fb384239f3789c2d95c2e"}, - {file = "SQLAlchemy-1.4.46-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:1b1e5e96e2789d89f023d080bee432e2fef64d95857969e70d3cadec80bd26f0"}, - {file = "SQLAlchemy-1.4.46-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3714e5b33226131ac0da60d18995a102a17dddd42368b7bdd206737297823ad"}, - {file = "SQLAlchemy-1.4.46-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:955162ad1a931fe416eded6bb144ba891ccbf9b2e49dc7ded39274dd9c5affc5"}, - {file = "SQLAlchemy-1.4.46-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6e4cb5c63f705c9d546a054c60d326cbde7421421e2d2565ce3e2eee4e1a01f"}, - {file = "SQLAlchemy-1.4.46-cp39-cp39-win32.whl", hash = "sha256:51e1ba2884c6a2b8e19109dc08c71c49530006c1084156ecadfaadf5f9b8b053"}, - {file = "SQLAlchemy-1.4.46-cp39-cp39-win_amd64.whl", hash = "sha256:315676344e3558f1f80d02535f410e80ea4e8fddba31ec78fe390eff5fb8f466"}, - {file = "SQLAlchemy-1.4.46.tar.gz", hash = "sha256:6913b8247d8a292ef8315162a51931e2b40ce91681f1b6f18f697045200c4a30"}, + {file = "SQLAlchemy-1.4.47-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:dcfb480bfc9e1fab726003ae00a6bfc67a29bad275b63a4e36d17fe7f13a624e"}, + {file = "SQLAlchemy-1.4.47-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:28fda5a69d6182589892422c5a9b02a8fd1125787aab1d83f1392aa955bf8d0a"}, + {file = "SQLAlchemy-1.4.47-cp27-cp27m-win32.whl", hash = "sha256:45e799c1a41822eba6bee4e59b0e38764e1a1ee69873ab2889079865e9ea0e23"}, + {file = "SQLAlchemy-1.4.47-cp27-cp27m-win_amd64.whl", hash = "sha256:10edbb92a9ef611f01b086e271a9f6c1c3e5157c3b0c5ff62310fb2187acbd4a"}, + {file = "SQLAlchemy-1.4.47-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:7a4df53472c9030a8ddb1cce517757ba38a7a25699bbcabd57dcc8a5d53f324e"}, + {file = "SQLAlchemy-1.4.47-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:511d4abc823152dec49461209607bbfb2df60033c8c88a3f7c93293b8ecbb13d"}, + {file = "SQLAlchemy-1.4.47-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dbe57f39f531c5d68d5594ea4613daa60aba33bb51a8cc42f96f17bbd6305e8d"}, + {file = "SQLAlchemy-1.4.47-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ca8ab6748e3ec66afccd8b23ec2f92787a58d5353ce9624dccd770427ee67c82"}, + {file = "SQLAlchemy-1.4.47-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:299b5c5c060b9fbe51808d0d40d8475f7b3873317640b9b7617c7f988cf59fda"}, + {file = "SQLAlchemy-1.4.47-cp310-cp310-win32.whl", hash = "sha256:684e5c773222781775c7f77231f412633d8af22493bf35b7fa1029fdf8066d10"}, + {file = "SQLAlchemy-1.4.47-cp310-cp310-win_amd64.whl", hash = "sha256:2bba39b12b879c7b35cde18b6e14119c5f1a16bd064a48dd2ac62d21366a5e17"}, + {file = "SQLAlchemy-1.4.47-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:795b5b9db573d3ed61fae74285d57d396829e3157642794d3a8f72ec2a5c719b"}, + {file = "SQLAlchemy-1.4.47-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:989c62b96596b7938cbc032e39431e6c2d81b635034571d6a43a13920852fb65"}, + {file = "SQLAlchemy-1.4.47-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3b67bda733da1dcdccaf354e71ef01b46db483a4f6236450d3f9a61efdba35a"}, + {file = "SQLAlchemy-1.4.47-cp311-cp311-win32.whl", hash = "sha256:9a198f690ac12a3a807e03a5a45df6a30cd215935f237a46f4248faed62e69c8"}, + {file = "SQLAlchemy-1.4.47-cp311-cp311-win_amd64.whl", hash = "sha256:03be6f3cb66e69fb3a09b5ea89d77e4bc942f3bf84b207dba84666a26799c166"}, + {file = "SQLAlchemy-1.4.47-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:16ee6fea316790980779268da47a9260d5dd665c96f225d28e7750b0bb2e2a04"}, + {file = "SQLAlchemy-1.4.47-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:557675e0befafa08d36d7a9284e8761c97490a248474d778373fb96b0d7fd8de"}, + {file = "SQLAlchemy-1.4.47-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:bb2797fee8a7914fb2c3dc7de404d3f96eb77f20fc60e9ee38dc6b0ca720f2c2"}, + {file = "SQLAlchemy-1.4.47-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28297aa29e035f29cba6b16aacd3680fbc6a9db682258d5f2e7b49ec215dbe40"}, + {file = "SQLAlchemy-1.4.47-cp36-cp36m-win32.whl", hash = "sha256:998e782c8d9fd57fa8704d149ccd52acf03db30d7dd76f467fd21c1c21b414fa"}, + {file = "SQLAlchemy-1.4.47-cp36-cp36m-win_amd64.whl", hash = "sha256:dde4d02213f1deb49eaaf8be8a6425948963a7af84983b3f22772c63826944de"}, + {file = "SQLAlchemy-1.4.47-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:e98ef1babe34f37f443b7211cd3ee004d9577a19766e2dbacf62fce73c76245a"}, + {file = "SQLAlchemy-1.4.47-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:14a3879853208a242b5913f3a17c6ac0eae9dc210ff99c8f10b19d4a1ed8ed9b"}, + {file = "SQLAlchemy-1.4.47-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7120a2f72599d4fed7c001fa1cbbc5b4d14929436135768050e284f53e9fbe5e"}, + {file = "SQLAlchemy-1.4.47-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:048509d7f3ac27b83ad82fd96a1ab90a34c8e906e4e09c8d677fc531d12c23c5"}, + {file = "SQLAlchemy-1.4.47-cp37-cp37m-win32.whl", hash = "sha256:6572d7c96c2e3e126d0bb27bfb1d7e2a195b68d951fcc64c146b94f088e5421a"}, + {file = "SQLAlchemy-1.4.47-cp37-cp37m-win_amd64.whl", hash = "sha256:a6c3929df5eeaf3867724003d5c19fed3f0c290f3edc7911616616684f200ecf"}, + {file = "SQLAlchemy-1.4.47-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:71d4bf7768169c4502f6c2b0709a02a33703544f611810fb0c75406a9c576ee1"}, + {file = "SQLAlchemy-1.4.47-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd45c60cc4f6d68c30d5179e2c2c8098f7112983532897566bb69c47d87127d3"}, + {file = "SQLAlchemy-1.4.47-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0fdbb8e9d4e9003f332a93d6a37bca48ba8095086c97a89826a136d8eddfc455"}, + {file = "SQLAlchemy-1.4.47-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f216a51451a0a0466e082e163591f6dcb2f9ec182adb3f1f4b1fd3688c7582c"}, + {file = "SQLAlchemy-1.4.47-cp38-cp38-win32.whl", hash = "sha256:bd988b3362d7e586ef581eb14771bbb48793a4edb6fcf62da75d3f0f3447060b"}, + {file = "SQLAlchemy-1.4.47-cp38-cp38-win_amd64.whl", hash = "sha256:32ab09f2863e3de51529aa84ff0e4fe89a2cb1bfbc11e225b6dbc60814e44c94"}, + {file = "SQLAlchemy-1.4.47-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:07764b240645627bc3e82596435bd1a1884646bfc0721642d24c26b12f1df194"}, + {file = "SQLAlchemy-1.4.47-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e2a42017984099ef6f56438a6b898ce0538f6fadddaa902870c5aa3e1d82583"}, + {file = "SQLAlchemy-1.4.47-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6b6d807c76c20b4bc143a49ad47782228a2ac98bdcdcb069da54280e138847fc"}, + {file = "SQLAlchemy-1.4.47-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a94632ba26a666e7be0a7d7cc3f7acab622a04259a3aa0ee50ff6d44ba9df0d"}, + {file = "SQLAlchemy-1.4.47-cp39-cp39-win32.whl", hash = "sha256:f80915681ea9001f19b65aee715115f2ad310730c8043127cf3e19b3009892dd"}, + {file = "SQLAlchemy-1.4.47-cp39-cp39-win_amd64.whl", hash = "sha256:fc700b862e0a859a37faf85367e205e7acaecae5a098794aff52fdd8aea77b12"}, + {file = "SQLAlchemy-1.4.47.tar.gz", hash = "sha256:95fc02f7fc1f3199aaa47a8a757437134cf618e9d994c84effd53f530c38586f"}, ] [package.dependencies] @@ -1471,14 +1471,14 @@ files = [ [[package]] name = "urllib3" -version = "1.26.14" +version = "1.26.15" description = "HTTP library with thread-safe connection pooling, file post, and more." category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ - {file = "urllib3-1.26.14-py2.py3-none-any.whl", hash = "sha256:75edcdc2f7d85b137124a6c3c9fc3933cdeaa12ecb9a6a959f22797a0feca7e1"}, - {file = "urllib3-1.26.14.tar.gz", hash = "sha256:076907bf8fd355cde77728471316625a4d2f7e713c125f51953bb5b3eecf4f72"}, + {file = "urllib3-1.26.15-py2.py3-none-any.whl", hash = "sha256:aa751d169e23c7479ce47a0cb0da579e3ede798f994f5816a74e4f4500dcea42"}, + {file = "urllib3-1.26.15.tar.gz", hash = "sha256:8a388717b9476f934a21484e8c8e61875ab60644d29b9b39e11e4b9dc1c6b305"}, ] [package.extras] diff --git a/scheduler/pyproject.toml b/scheduler/pyproject.toml index 8df3305e4..c9596149c 100644 --- a/scheduler/pyproject.toml +++ b/scheduler/pyproject.toml @@ -16,7 +16,7 @@ alembic = "^1.7.5" fastapi = "^0.68.0" uvicorn = {extras = ["standard"], version = "^0.15.0"} -[tool.poetry.dev-dependencies] +[tool.poetry.group.dev.dependencies] pytest = "^7.2.0" requests = "^2.28.1" freezegun = "^1.2.2" @@ -24,6 +24,9 @@ flake8 = "^6.0.0" black = "^22.12.0" isort = "^5.11.4" +[tool.poetry.scripts] +badgerdoc = "scheduler.app:cli_handler" + [build-system] requires = ["poetry-core"] build-backend = "poetry.core.masonry.api" diff --git a/scheduler/scheduler/app.py b/scheduler/scheduler/app.py index 99c8b402f..ed8a31f05 100644 --- a/scheduler/scheduler/app.py +++ b/scheduler/scheduler/app.py @@ -46,3 +46,10 @@ async def get_status( detail=NO_TENANT, ) return {"status": unit.status} + + +def cli_handler() -> None: + from badgerdoc_cli import cli_handler, init_cli_app + + init_cli_app(app) + cli_handler() diff --git a/search/pyproject.toml b/search/pyproject.toml index 1462f49ea..6ca034c15 100644 --- a/search/pyproject.toml +++ b/search/pyproject.toml @@ -17,7 +17,7 @@ kafka-python = "^2.0.2" elasticsearch = {version = "7.13.4", extras = ["async"]} aiocache = "^0.11.1" -[tool.poetry.dev-dependencies] +[tool.poetry.group.dev.dependencies] black = "^21.7b0" flake8 = "^3.9.2" pre-commit = "^2.14.0" @@ -29,6 +29,9 @@ pytest-asyncio = "^0.18.1" moto = "^3.0.3" responses = "^0.18.0" +[tool.poetry.scripts] +badgerdoc = "search.main:cli_handler" + [tool.commitizen] name = "cz_conventional_commits" version = "0.1.0" diff --git a/search/search/main.py b/search/search/main.py index 86185784f..957e71e57 100644 --- a/search/search/main.py +++ b/search/search/main.py @@ -189,3 +189,10 @@ async def search_facets( ) await response.adjust_facet_result(x_current_tenant, token.token) return response + + +def cli_handler() -> None: + from badgerdoc_cli import cli_handler, init_cli_app + + init_cli_app(app) + cli_handler() diff --git a/taxonomy/pyproject.toml b/taxonomy/pyproject.toml index e6b1427ba..fe81892e3 100644 --- a/taxonomy/pyproject.toml +++ b/taxonomy/pyproject.toml @@ -15,7 +15,7 @@ alembic = "^1.8.1" python-dotenv = "^0.21.0" psycopg2-binary = "^2.9.5" -[tool.poetry.dev-dependencies] +[tool.poetry.group.dev.dependencies] pre-commit = "^2.14.0" black = "^22.3.0" flake8 = "^3.9.2" @@ -25,6 +25,9 @@ responses = "^0.14.0" httpx = "^0.23.1" pytest-cov = "^3.0.0" +[tool.poetry.scripts] +badgerdoc = "taxonomy.main:cli_handler" + [build-system] requires = ["poetry-core"] build-backend = "poetry.core.masonry.api" diff --git a/taxonomy/taxonomy/main.py b/taxonomy/taxonomy/main.py index a52726e81..1808bda36 100644 --- a/taxonomy/taxonomy/main.py +++ b/taxonomy/taxonomy/main.py @@ -61,3 +61,10 @@ def get_version() -> str: app.add_exception_handler(SelfParentError, taxon_parent_child_error_handler) app.add_exception_handler(SQLAlchemyError, db_sa_error_handler) app.add_exception_handler(DBAPIError, db_dbapi_error_handler) + + +def cli_handler() -> None: + from badgerdoc_cli import cli_handler, init_cli_app + + init_cli_app(app) + cli_handler() diff --git a/users/pyproject.toml b/users/pyproject.toml index 8928ae9fa..c80abb38a 100644 --- a/users/pyproject.toml +++ b/users/pyproject.toml @@ -19,13 +19,14 @@ email-validator = "^1.1.3" apscheduler = "^3.9.1" pyjwt = "^2.6.0" -[tool.poetry.dev-dependencies] +[tool.poetry.group.dev.dependencies] +isort = "^5.12.0" pytest = "^6.2.5" pre-commit = "^2.15.0" pytest-asyncio = "^0.15.1" -[tool.poetry.group.dev.dependencies] -isort = "^5.12.0" +[tool.poetry.scripts] +badgerdoc = "users.main:cli_handler" [build-system] requires = ["poetry-core"] diff --git a/users/users/main.py b/users/users/main.py index 6c8428b0e..886938738 100644 --- a/users/users/main.py +++ b/users/users/main.py @@ -283,3 +283,10 @@ def periodic() -> None: hour="*/1", ) scheduler.start() + + +def cli_handler() -> None: + from badgerdoc_cli import cli_handler, init_cli_app + + init_cli_app(app) + cli_handler()