From 77c3914146a0821afeda30b5325bf86e1d1cdb14 Mon Sep 17 00:00:00 2001 From: tibz Date: Mon, 6 Jul 2026 17:24:29 +0200 Subject: [PATCH 01/21] feat(redis): implement redis keys reset --- api/helpers/_limiter.py | 11 +-- api/tests/unit/test_helpers/test_limiter.py | 78 --------------------- api/utils/lifespan.py | 3 +- api/utils/redis.py | 16 +++++ scripts/gunicorn.conf.py | 8 +++ 5 files changed, 26 insertions(+), 90 deletions(-) diff --git a/api/helpers/_limiter.py b/api/helpers/_limiter.py index f2a0fbcd7..287f4ce18 100644 --- a/api/helpers/_limiter.py +++ b/api/helpers/_limiter.py @@ -2,7 +2,7 @@ from limits import RateLimitItemPerDay, RateLimitItemPerMinute from limits.aio import storage, strategies -from redis.asyncio import ConnectionPool, Redis, RedisError +from redis.asyncio import ConnectionPool, Redis from api.domain.role.entities import PermissionType from api.schemas.admin.roles import LimitType @@ -27,15 +27,6 @@ def __init__(self, redis_pool: ConnectionPool, strategy: LimitingStrategy): else: # SLIDING_WINDOW self.strategy = strategies.SlidingWindowCounterRateLimiter(storage=self.redis_storage) - async def reset(self) -> None: - """ - Reset the limits when starting the API. - """ - try: - await self.redis_storage.reset() - except RedisError: - logger.error(msg="Redis error during rate limit reset.", exc_info=True) - async def _get_limit(self, type: LimitType, value: int | None = None) -> RateLimitItemPerMinute | RateLimitItemPerDay | None: if value is None: return None diff --git a/api/tests/unit/test_helpers/test_limiter.py b/api/tests/unit/test_helpers/test_limiter.py index 8c5c69e0f..3db4fc3c0 100644 --- a/api/tests/unit/test_helpers/test_limiter.py +++ b/api/tests/unit/test_helpers/test_limiter.py @@ -4,7 +4,6 @@ from limits.aio import strategies from limits.aio.storage import RedisStorage import pytest -from redis.exceptions import RedisError from api.helpers._limiter import Limiter from api.schemas.admin.roles import Limit, LimitType, PermissionType @@ -38,83 +37,6 @@ async def test_limiter_initialization_strategies(strategy, expected_class): assert isinstance(limiter.strategy, expected_class) -# =========================== RESET METHOD ============================ - - -@pytest.mark.asyncio -@pytest.mark.parametrize( - "strategy", - [ - LimitingStrategy.MOVING_WINDOW, - LimitingStrategy.FIXED_WINDOW, - LimitingStrategy.SLIDING_WINDOW, - ], -) -async def test_limiter_reset_success(strategy): - """Test that reset successfully calls redis_client.reset().""" - # Mock the Redis pool instead of using global_context - mock_redis_pool = MagicMock() - mock_redis_pool.url = "redis://localhost:6379" - - with patch("api.helpers._limiter.storage.RedisStorage") as MockStorage, patch("api.helpers._limiter.Redis") as MockRedis: - mock_storage_instance = AsyncMock(spec=RedisStorage) - MockStorage.return_value = mock_storage_instance - - mock_internal_redis = AsyncMock() - MockRedis.return_value = mock_internal_redis - - redis_state = ["LIMITS:key1", "LIMITS:key2"] - mock_internal_redis.keys.side_effect = lambda pattern: redis_state - # When storage.reset() is called, clear the state - - async def simulate_reset(): - redis_state.clear() - - mock_storage_instance.reset.side_effect = simulate_reset - - limiter = Limiter(mock_redis_pool, strategy=strategy) - - # Verify keys exist before reset - initial_keys = await limiter.redis_client.keys("LIMITS*") - assert len(initial_keys) == 2 - - await limiter.reset() - - mock_storage_instance.reset.assert_awaited_once() - - final_keys = await limiter.redis_client.keys("LIMITS*") - assert len(final_keys) == 0 - - -@pytest.mark.asyncio -async def test_limiter_reset_handles_redis_error(): - """Test that reset handles RedisError gracefully.""" - mock_redis_pool = MagicMock() - mock_redis_pool.url = "redis://localhost:6379" - strategy = LimitingStrategy.FIXED_WINDOW - - with ( - patch("api.helpers._limiter.storage.RedisStorage") as MockStorage, - patch("api.helpers._limiter.Redis") as MockRedis, - patch("api.helpers._limiter.logger") as mock_logger, - ): - mock_storage_instance = AsyncMock(spec=RedisStorage) - mock_storage_instance.reset.side_effect = RedisError("Test Error") - MockStorage.return_value = mock_storage_instance - - mock_internal_redis = AsyncMock() - MockRedis.return_value = mock_internal_redis - - limiter = Limiter(mock_redis_pool, strategy) - - await limiter.reset() - - mock_storage_instance.reset.assert_awaited_once() - mock_logger.error.assert_called_once() - logged_msg = mock_logger.error.call_args[1]["msg"] - assert "Redis error during rate limit reset." in logged_msg - - # =========================== HIT METHOD ============================ diff --git a/api/utils/lifespan.py b/api/utils/lifespan.py index e099784bc..2a927f926 100755 --- a/api/utils/lifespan.py +++ b/api/utils/lifespan.py @@ -73,8 +73,6 @@ async def lifespan(_: FastAPI): global_context.parser = await create_parser(configuration=configuration) global_context.document_manager = create_document_manager(configuration, elasticsearch_vector_store=global_context.elasticsearch_vector_store) - await global_context.limiter.reset() - yield if global_context.elasticsearch_client: @@ -93,6 +91,7 @@ async def create_redis_pool(configuration: Configuration) -> redis.ConnectionPoo client = redis.Redis(connection_pool=pool) if not await client.ping(): raise RuntimeError("Redis database is not reachable.") + # await client.flushdb() await client.aclose() return pool diff --git a/api/utils/redis.py b/api/utils/redis.py index b007862ce..0ceb09201 100644 --- a/api/utils/redis.py +++ b/api/utils/redis.py @@ -6,6 +6,7 @@ from collections.abc import Callable import logging +from redis import Redis as SyncRedis from redis.asyncio import Redis as AsyncRedis from redis.exceptions import ( ConnectionError, @@ -16,6 +17,21 @@ logger = logging.getLogger(__name__) +def reset_redis_keys(url: str) -> None: + """ + Flush all Redis keys, once per API process start. + + Called from the gunicorn master (``on_starting`` hook) before workers are forked, so a crashed + worker respawn does not wipe the Redis state (rate limits, inflight gauges, metrics) still in use + by the live sibling workers. Synchronous because the gunicorn master runs outside the event loop. + """ + client = SyncRedis.from_url(url) + try: + client.flushdb() + finally: + client.close() + + async def redis_retry[T]( func: Callable[..., T], *args, diff --git a/scripts/gunicorn.conf.py b/scripts/gunicorn.conf.py index aa3e7ae0b..d096460f5 100644 --- a/scripts/gunicorn.conf.py +++ b/scripts/gunicorn.conf.py @@ -1,5 +1,13 @@ from prometheus_client import multiprocess +from api.utils.configuration import get_configuration +from api.utils.redis import reset_redis_keys + + +def on_starting(server): + reset_redis_keys(get_configuration().dependencies.redis.url) + server.log.info("Redis keys flushed on API startup.") + def child_exit(server, worker): multiprocess.mark_process_dead(worker.pid) From 9afa62b6a692937d590ef826ef354194e265a106 Mon Sep 17 00:00:00 2001 From: tibo-pdn Date: Mon, 6 Jul 2026 15:49:25 +0000 Subject: [PATCH 02/21] Update unit coverage badge --- .github/badges/coverage.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/badges/coverage.json b/.github/badges/coverage.json index b292e65ac..8607da9e1 100644 --- a/.github/badges/coverage.json +++ b/.github/badges/coverage.json @@ -1 +1 @@ -{"schemaVersion":1,"label":"coverage","message":"55.64%","color":"red"} +{"schemaVersion":1,"label":"coverage","message":"55.61%","color":"red"} From f36c4f2638714402827b432fdf4878c72099178b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Guillaume?= <62661249+leoguillaume@users.noreply.github.com> Date: Sat, 11 Jul 2026 11:40:48 +0200 Subject: [PATCH 03/21] fix(cicd): semgrep and release update improvments (#957) * fix: semgrep full * fix: release update --- .env.example | 1 + .github/workflows/build.yml | 30 ++------ .github/workflows/deploy.yml | 45 +++++++----- .github/workflows/release_updates.yml | 54 +++++++-------- .github/workflows/run_tests.yml | 68 +++++++++++-------- .github/workflows/semgrep.yml | 7 +- compose.example.yml | 5 +- config.example.yml | 6 +- .../docs/configuration/configuration_file.mdx | 14 +--- pyproject.toml | 1 + 10 files changed, 110 insertions(+), 121 deletions(-) diff --git a/.env.example b/.env.example index 7be5ab5ac..717650c50 100644 --- a/.env.example +++ b/.env.example @@ -16,3 +16,4 @@ RABBITMQ_HOST=rabbitmq REDIS_PORT=6379 REDIS_USER=redis REDIS_PASSWORD=changeme + \ No newline at end of file diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c42e8b623..e1101e2cb 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -15,11 +15,11 @@ on: jobs: prepare: name: Prepare build + if: >- + github.event_name == 'workflow_dispatch' || + github.event_name == 'release' || + github.actor != 'github-actions[bot]' runs-on: ubuntu-latest - # Builds triggered by a PR commit wait here for a manual approval from the GitHub Actions UI - # (configure required reviewers on the "build-approval" environment in repo settings). - # Builds triggered by push/release/workflow_dispatch use the unprotected "build-auto" environment - # and therefore run immediately, exactly like before. environment: ${{ github.event_name == 'pull_request' && 'build-approval' || 'build-auto' }} outputs: image_tag: ${{ steps.set_tag.outputs.tag }} @@ -49,17 +49,12 @@ jobs: env: API_IMAGE_NAME: ghcr.io/etalab-ia/opengatellm/api IMAGE_TAG: ${{ needs.prepare.outputs.image_tag }} - outputs: - commit_title: ${{ steps.get_head_commit_title.outputs.title }} steps: - name: Checkout repository uses: actions/checkout@v4 with: ref: ${{ github.head_ref || github.ref_name }} - - id: get_head_commit_title - run: echo "title=$(git log --format=%B -n 1 HEAD | head -n 1)" >> $GITHUB_OUTPUT - - name: Log in to GitHub Container Registry uses: docker/login-action@v3 with: @@ -206,20 +201,3 @@ jobs: with: image-name: ghcr.io/etalab-ia/opengatellm/playground image-tag: ${{ needs.prepare.outputs.image_tag }} - - deploy-dev: - # Only chain automatically into the deploy workflow for the pre-existing, auto-triggered flow - # (push to main). Builds approved manually from a PR are not deployed automatically. - if: github.event_name == 'push' - name: Deploy to dev - needs: - - build-opengatellm-api - - trivy-scan-api - - build-opengatellm-playground - - trivy-scan-playground - - build-albert-playground - uses: ./.github/workflows/deploy.yml - with: - commit_title: ${{ needs.build-opengatellm-api.outputs.commit_title }} - secrets: - GITLAB_CI_TOKEN: ${{ secrets.GITLAB_CI_TOKEN }} diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index deb8296df..b44835853 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,20 +1,10 @@ name: Deploy on: - workflow_call: - inputs: - commit_title: - description: "Title of the commit that triggered the build, used for the GitLab pipeline name" - required: true - type: string - environment: - description: "Deployment environment" - required: false - type: string - default: dev - secrets: - GITLAB_CI_TOKEN: - required: true + workflow_run: + workflows: ["Build and scan images"] + types: + - completed workflow_dispatch: inputs: commit_title: @@ -30,14 +20,35 @@ on: jobs: deploy-dev: - name: Deploy from ${{ github.ref_name }}/${{ github.sha }} + if: >- + github.event_name == 'workflow_dispatch' || + ( + github.event.workflow_run.conclusion == 'success' && + github.event.workflow_run.event == 'push' && + github.event.workflow_run.actor.login != 'github-actions[bot]' + ) + name: Deploy from ${{ github.event.workflow_run.head_branch || github.ref_name }}/${{ github.event.workflow_run.head_sha || github.sha }} runs-on: ubuntu-latest steps: + - name: Get commit title + id: commit_title + env: + HEAD_COMMIT_MESSAGE: ${{ github.event.workflow_run.head_commit.message }} + EVENT_NAME: ${{ github.event_name }} + COMMIT_TITLE_INPUT: ${{ inputs.commit_title }} + run: | + if [ "$EVENT_NAME" = "workflow_dispatch" ]; then + TITLE="$COMMIT_TITLE_INPUT" + else + TITLE="$(echo "$HEAD_COMMIT_MESSAGE" | head -n 1)" + fi + echo "title=$TITLE" >> "$GITHUB_OUTPUT" + - name: Trigger dev deployment env: GITLAB_CI_TOKEN: ${{ secrets.GITLAB_CI_TOKEN }} - PIPELINE_NAME: ${{ github.event.repository.name }} - ${{ inputs.commit_title }} - DEPLOYMENT_ENVIRONMENT: ${{ inputs.environment }} + PIPELINE_NAME: ${{ github.event.repository.name }} - ${{ steps.commit_title.outputs.title }} + DEPLOYMENT_ENVIRONMENT: ${{ inputs.environment || 'dev' }} run: | RESPONSE="$(curl --request POST \ --form token="$GITLAB_CI_TOKEN" \ diff --git a/.github/workflows/release_updates.yml b/.github/workflows/release_updates.yml index ea638d09e..97eac83f7 100644 --- a/.github/workflows/release_updates.yml +++ b/.github/workflows/release_updates.yml @@ -18,22 +18,14 @@ jobs: runs-on: ubuntu-latest steps: + - uses: astral-sh/setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 # v5.4.2 + - name: Checkout du code uses: actions/checkout@v4 with: - ref: main + ref: ${{ github.event_name == 'pull_request' && github.sha || 'main' }} fetch-depth: 0 - - name: Configure Python - uses: actions/setup-python@v5 - with: - python-version: '3.12' - - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install ".[api,playground,dev]" - - name: Update project version run: | git fetch --tags --force @@ -43,34 +35,36 @@ jobs: exit 0 fi sed -i -E "s/^[[:space:]]*version[[:space:]]*=.*/version = \"${latest_version}\"/" pyproject.toml - sed -i -E "s|(image:[[:space:]]*ghcr.io/etalab-ia/opengatellm/api:).*|\\1${latest_version}|" compose.example.yml - sed -i -E "s|(image:[[:space:]]*ghcr.io/etalab-ia/opengatellm/playground:).*|\\1${latest_version}|" compose.example.yml sed -i -E "s/^[[:space:]]*swagger_version:[[:space:]]*.*/ swagger_version: ${latest_version}/" config.example.yml sed -i -E "s/(badge:[[:space:]]*)'[^']*'/\1'v${latest_version}'/" docs/astro.config.mjs - + - name: Generate documentation + env: + DOCS_DIR: ${{ github.workspace }}/docs + CONFIG_FILE: ${{ github.workspace }}/config.example.yml run: | + uv venv + uv pip install -p .venv/bin/python ".[api,playground,dev]" + . .venv/bin/activate PYTHONPATH=. python ./scripts/docs/generate_configuration_documentation.py --output ./docs/src/content/docs/configuration/configuration_file.mdx - make quickstart - api_health=unknown - for _ in $(seq 1 30); do - api_container_id="$(docker compose --env-file .env --file compose.example.yml ps -q api)" - if [ -n "$api_container_id" ]; then - api_health="$(docker inspect --format='{{if .State.Health}}{{.State.Health.Status}}{{else}}none{{end}}' "$api_container_id")" - if [ "$api_health" = "healthy" ]; then - break - fi - fi - sleep 2 - done - if [ "$api_health" != "healthy" ]; then - echo "API container is not healthy (status: $api_health)" - docker compose --env-file .env --file compose.yml logs --no-color api + if ! docker compose --file ./compose.example.yml up --detach --wait; then + echo "Services did not become healthy." >&2 + echo "::group::Docker Compose status" + docker compose --file ./compose.example.yml ps || true + echo "::endgroup::" + + echo "::group::Docker Compose logs (all services)" + docker compose --file ./compose.example.yml logs --no-color || true + echo "::endgroup::" + + echo "::group::API health probe" + curl -sv "http://localhost:8000/health" || true + echo "::endgroup::" exit 1 fi curl -fSL --retry 8 --retry-all-errors --retry-delay 2 http://localhost:8000/openapi.json -o ./docs/openapi.json docker pull redocly/cli - docker run --rm -v ${{ github.workspace }}/docs:/spec redocly/cli build-docs /spec/openapi.json --output /spec/redoc-static.html + docker run --rm -v "$DOCS_DIR:/spec" redocly/cli build-docs /spec/openapi.json --output /spec/redoc-static.html - name: Create pull request for release updates uses: peter-evans/create-pull-request@v6 diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml index 98b26c080..b861f4884 100644 --- a/.github/workflows/run_tests.yml +++ b/.github/workflows/run_tests.yml @@ -11,6 +11,10 @@ on: jobs: unit-tests: name: Unit tests + if: >- + github.event_name == 'workflow_call' || + github.event_name == 'workflow_dispatch' || + github.actor != 'github-actions[bot]' runs-on: ubuntu-latest steps: @@ -18,19 +22,17 @@ jobs: with: ref: ${{ github.head_ref || github.ref_name }} + - uses: astral-sh/setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 # v5.4.2 + - name: Set up Docker Compose run: | cp config.example.yml config.yml - name: Run unit tests with coverage and publish unit badge run: | - # Install uv - curl -LsSf https://astral.sh/uv/install.sh | sh - echo "$HOME/.local/bin" >> $GITHUB_PATH - # Create a local virtual environment and install dependencies - "$HOME/.local/bin/uv" venv - "$HOME/.local/bin/uv" pip install -p .venv/bin/python ".[api,playground,dev,test]" + uv venv + uv pip install -p .venv/bin/python ".[test]" # Activate venv for the test run . .venv/bin/activate @@ -43,9 +45,28 @@ jobs: # Build unit coverage badge JSON mkdir -p .github/badges - COVERAGE=$(python -c "import xml.etree.ElementTree as ET; print(ET.parse('coverage.xml').getroot().get('line-rate'))") - COVERAGE_PCT=$(printf "%.2f" $(echo "${COVERAGE} * 100" | bc)) - echo "{\"schemaVersion\":1,\"label\":\"coverage\",\"message\":\"${COVERAGE_PCT}%\",\"color\":\"$(if (( $(echo \"${COVERAGE_PCT} >= 80\" | bc -l) )); then echo "green"; elif (( $(echo \"${COVERAGE_PCT} >= 70\" | bc -l) )); then echo "yellow"; else echo "red"; fi)\"}" > .github/badges/coverage.json + python - <<'PY' + import json + import xml.etree.ElementTree as ET + + coverage = float(ET.parse("coverage.xml").getroot().get("line-rate")) + coverage_pct = f"{coverage * 100:.2f}" + if float(coverage_pct) >= 80: + color = "green" + elif float(coverage_pct) >= 70: + color = "yellow" + else: + color = "red" + + badge = { + "schemaVersion": 1, + "label": "coverage", + "message": f"{coverage_pct}%", + "color": color, + } + with open(".github/badges/coverage.json", "w", encoding="utf-8") as badge_file: + json.dump(badge, badge_file) + PY - name: Commit unit coverage badge if: github.event.pull_request.base.ref == 'main' @@ -56,38 +77,31 @@ jobs: commit_user_name: "GitHub Actions" commit_user_email: "actions@github.com" - integration-tests: - name: Integration tests + e2e-tests: + name: e2e tests + if: >- + github.event_name == 'workflow_call' || + github.event_name == 'workflow_dispatch' || + github.actor != 'github-actions[bot]' runs-on: ubuntu-latest - strategy: - matrix: - config_file: [api/tests/integ/config.test.yml] - steps: - uses: actions/checkout@v4 + - uses: astral-sh/setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 # v5.4.2 + - name: Run integration tests run: | cp .github/.env.ci.example .github/.env.ci - # Install uv - curl -LsSf https://astral.sh/uv/install.sh | sh - echo "$HOME/.local/bin" >> $GITHUB_PATH - # Create a local virtual environment and install dependencies - "$HOME/.local/bin/uv" venv - "$HOME/.local/bin/uv" pip install -p .venv/bin/python ".[api,playground,dev,test]" + uv venv + uv pip install -p .venv/bin/python ".[test]" # Activate venv for the test run . .venv/bin/activate - echo "Listing files in root:" - ls -la . - echo "Listing files in api/tests/integ:" - ls -la api/tests/integ - # Run integration tests make test-integ env: - CONFIG_FILE: ${{ matrix.config_file }} + CONFIG_FILE: api/tests/integ/config.test.yml ALBERT_API_KEY: ${{ secrets.ALBERT_API_KEY }} diff --git a/.github/workflows/semgrep.yml b/.github/workflows/semgrep.yml index 462f049f4..13410c954 100644 --- a/.github/workflows/semgrep.yml +++ b/.github/workflows/semgrep.yml @@ -16,7 +16,7 @@ on: jobs: semgrep-diff: name: Semgrep SAST (diff) - if: github.event_name == 'pull_request' + if: github.event_name == 'pull_request' && github.actor != 'github-actions[bot]' runs-on: ubuntu-latest container: image: semgrep/semgrep @@ -27,7 +27,10 @@ jobs: semgrep-full: name: Semgrep SAST (full) - if: github.event_name == 'release' || github.event_name == 'workflow_dispatch' || (github.event_name == 'push' && github.ref == 'refs/heads/main') + if: >- + github.event_name == 'release' || + github.event_name == 'workflow_dispatch' || + (github.event_name == 'push' && github.ref == 'refs/heads/main' && github.actor != 'github-actions[bot]') runs-on: ubuntu-latest container: image: semgrep/semgrep diff --git a/compose.example.yml b/compose.example.yml index 0cc57f0a2..352579d09 100644 --- a/compose.example.yml +++ b/compose.example.yml @@ -2,9 +2,8 @@ name: opengatellm services: api: - image: ghcr.io/etalab-ia/opengatellm/api:0.4.7 + image: ghcr.io/etalab-ia/opengatellm/api:latest restart: always - env_file: .env ports: - "${API_PORT:-8000}:8000" volumes: @@ -22,7 +21,7 @@ services: condition: service_healthy playground: - image: ghcr.io/etalab-ia/opengatellm/playground:0.4.7 + image: ghcr.io/etalab-ia/opengatellm/playground:latest environment: - "OPENGATELLM_URL=${OPENGATELLM_URL:-http://api:8000}" - "REDIS_HOST=redis" diff --git a/config.example.yml b/config.example.yml index a1b1a80a4..c92f342e1 100644 --- a/config.example.yml +++ b/config.example.yml @@ -1,7 +1,7 @@ # -------------------------------- dependencies --------------------------------- dependencies: postgres: # required - url: postgresql+asyncpg://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD:-changeme}@${POSTGRES_HOST:-localhost}:${POSTGRES_PORT:-5432}/postgres + url: postgresql+asyncpg://postgres:${POSTGRES_PASSWORD:-changeme}@${POSTGRES_HOST:-postgres}:${POSTGRES_PORT:-5432}/postgres echo: False pool_size: 5 connect_args: @@ -10,7 +10,7 @@ dependencies: command_timeout: 60 redis: # required - url: redis://:${REDIS_PASSWORD:-changeme}@${REDIS_HOST:-localhost}:${REDIS_PORT:-6379} + url: redis://:${REDIS_PASSWORD:-changeme}@${REDIS_HOST:-redis}:${REDIS_PORT:-6379} max_connections: 200 socket_connect_timeout: 5 retry_on_timeout: True @@ -53,7 +53,7 @@ settings: # monitoring_postgres_enabled: True # monitoring_prometheus_enabled: True - playground_opengatellm_url: ${OPENGATELLM_URL} + playground_opengatellm_url: ${OPENGATELLM_URL:-http://api:8000} # playground_opengatellm_timeout: 60 # playground_disabled_pages: [] # playground_default_model: my-model diff --git a/docs/src/content/docs/configuration/configuration_file.mdx b/docs/src/content/docs/configuration/configuration_file.mdx index 5729bd736..df0fdbdf9 100644 --- a/docs/src/content/docs/configuration/configuration_file.mdx +++ b/docs/src/content/docs/configuration/configuration_file.mdx @@ -58,16 +58,6 @@ dependencies: decode_responses: False socket_keepalive: True - elasticsearch: # optional - index_name: opengatellm - index_language: english - number_of_shards: 1 - number_of_replicas: 0 - refresh_interval: 1s - hosts: "http://${ELASTICSEARCH_HOST:-localhost}:${ELASTICSEARCH_PORT:-9200}" - basic_auth: - - "elastic" - - ${ELASTICSEARCH_PASSWORD} # sentry: # dsn: ${SENTRY_DSN} @@ -103,8 +93,6 @@ settings: # monitoring_postgres_enabled: True # monitoring_prometheus_enabled: True - # vector_store_model: my-model - playground_opengatellm_url: ${OPENGATELLM_URL} # playground_opengatellm_timeout: 60 # playground_disabled_pages: [] @@ -348,7 +336,7 @@ General settings configuration fields. routing_max_priority Maximum allowed priority in routing tasks. 4 (API)
10 (Playground) routing_max_retries Maximum number of retries for routing tasks. 3 routing_retry_countdown Number of seconds before retrying a failed routing task. 3 -swagger_contact Contact informations of the API in swagger UI, see https://fastapi.tiangolo.com/tutorial/metadata for more information. None +swagger_contact Contact informations of the API in swagger UI, see https://fastapi.tiangolo.com/tutorial/metadata for more information. None swagger_description Display description of your API in swagger UI, see https://fastapi.tiangolo.com/tutorial/metadata for more information. See documentation See documentation swagger_docs_url Docs URL of swagger UI, see https://fastapi.tiangolo.com/tutorial/metadata for more information. /docs swagger_license_info Licence informations of the API in swagger UI, see https://fastapi.tiangolo.com/tutorial/metadata for more information. \{'name': 'MIT Licence', 'identifier': 'MIT', 'url': 'https://raw.githubusercontent.com/etalab-ia/opengatellm/refs/heads/main/LICENSE'\} diff --git a/pyproject.toml b/pyproject.toml index 8b1f0abc8..6ca1f47d0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -48,6 +48,7 @@ worker = [ dev = [ "pre-commit>=4.5.1", "ruff>=0.15.2", + "tabulate==0.10.0", ] test = [ "factory-boy>=3.3.3", From 2342f8a38ba474399effd0d158c00ee7a03a2b7d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 11 Jul 2026 11:42:10 +0200 Subject: [PATCH 04/21] chore(doc): update generated documentation and release versions (#958) Co-authored-by: leoguillaume <62661249+leoguillaume@users.noreply.github.com> --- config.example.yml | 2 +- docs/astro.config.mjs | 2 +- docs/openapi.json | 2 +- docs/redoc-static.html | 419 +++++------------- .../docs/configuration/configuration_file.mdx | 8 +- pyproject.toml | 2 +- 6 files changed, 123 insertions(+), 312 deletions(-) diff --git a/config.example.yml b/config.example.yml index c92f342e1..e5b99a54a 100644 --- a/config.example.yml +++ b/config.example.yml @@ -37,7 +37,7 @@ settings: # log_level: INFO # log_format: [%(asctime)s][%(process)d:%(name)s][%(levelname)s] %(client_ip)s - %(message)s - swagger_version: 0.4.7 + swagger_version: 0.4.9 # swagger_contact_url: https://github.com/etalab-ia/OpenGateLLM # swagger_contact_email: john.doe@example.com # swagger_docs_url: /docs diff --git a/docs/astro.config.mjs b/docs/astro.config.mjs index 8e7c35e6f..d820ba5ef 100644 --- a/docs/astro.config.mjs +++ b/docs/astro.config.mjs @@ -85,7 +85,7 @@ export default defineConfig({ }, { label: '[lucide:rocket] Release notes', link: 'https://github.com/etalab-ia/OpenGateLLM/releases', - badge: 'v0.4.7', + badge: 'v0.4.9', attrs: { target: '_blank', style: 'font-size: 0.875rem;' }, }, { diff --git a/docs/openapi.json b/docs/openapi.json index a238383fe..0bbcbfca7 100644 --- a/docs/openapi.json +++ b/docs/openapi.json @@ -1 +1 @@ -{"openapi":"3.1.0","info":{"title":"OpenGateLLM","summary":"OpenGateLLM connect to your models. You can configuration this swagger UI in the configuration file, like hide routes or change the title.","description":"[See documentation](https://github.com/etalab-ia/opengatellm/blob/main/README.md)","license":{"name":"MIT Licence","identifier":"MIT","url":"https://raw.githubusercontent.com/etalab-ia/opengatellm/refs/heads/main/LICENSE"},"version":"0.4.7"},"paths":{"/v1/admin/providers":{"post":{"tags":["Admin"],"summary":"Create Provider","operationId":"create_provider_v1_admin_providers_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProviderBody"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProviderResponse"}}}},"403":{"description":"Inconsistent max context length for {model_name}. Expected: {expected_length}. Actual: {actual_length}
Inconsistent vector size for {model_name}. Expected: {expected_size}. Actual: {actual_size}
User has no admin rights.
Your account has expired. Please contact support to renew your account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"400":{"description":"Invalid model provider type {input_type} for {expected_type} router.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"424":{"description":"Model provider {name} not reachable ({status_code}): {detail}","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"409":{"description":"Model provider {model_name} for url {url} already exists for router {router_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"404":{"description":"Model router {router_id} not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"401":{"description":"Invalid authentication scheme.
Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Admin"],"summary":"Get Providers","operationId":"get_providers_v1_admin_providers_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"router_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter providers by router ID.","title":"Router Id"},"description":"Filter providers by router ID."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Number of providers to skip.","default":0,"title":"Offset"},"description":"Number of providers to skip."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum number of providers to return.","default":10,"title":"Limit"},"description":"Maximum number of providers to return."},{"name":"sort_by","in":"query","required":false,"schema":{"$ref":"#/components/schemas/ProviderSortField","description":"Field to sort by.","default":"id"},"description":"Field to sort by."},{"name":"sort_order","in":"query","required":false,"schema":{"$ref":"#/components/schemas/SortOrder","description":"Sort order.","default":"asc"},"description":"Sort order."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProvidersResponse"}}}},"403":{"description":"User has no admin rights.
Your account has expired. Please contact support to renew your account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"401":{"description":"Invalid authentication scheme.
Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/providers/{provider_id}":{"delete":{"tags":["Admin"],"summary":"Delete Provider","operationId":"delete_provider_v1_admin_providers__provider_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"provider_id","in":"path","required":true,"schema":{"type":"integer","description":"The ID of the provider to delete.","title":"Provider Id"},"description":"The ID of the provider to delete."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProviderResponse"}}}},"404":{"description":"Model provider {provider_id} not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"403":{"description":"User has no admin rights.
Your account has expired. Please contact support to renew your account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"401":{"description":"Invalid authentication scheme.
Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Admin"],"summary":"Update Provider","operationId":"update_provider_v1_admin_providers__provider_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"provider_id","in":"path","required":true,"schema":{"type":"integer","description":"The ID of the provider to update.","title":"Provider Id"},"description":"The ID of the provider to update."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProviderBody","description":"The provider update request."}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProviderResponse"}}}},"403":{"description":"Inconsistent max context length for {model_name}. Expected: {expected_length}. Actual: {actual_length}
Inconsistent vector size for {model_name}. Expected: {expected_size}. Actual: {actual_size}
User has no admin rights.
Your account has expired. Please contact support to renew your account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"400":{"description":"Invalid model provider type {input_type} for {expected_type} router.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"409":{"description":"Model provider {model_name} for url {url} already exists for router {router_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"404":{"description":"Model router {router_id} not found.
Model provider {provider_id} not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"401":{"description":"Invalid authentication scheme.
Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Admin"],"summary":"Get Provider","operationId":"get_provider_v1_admin_providers__provider_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"provider_id","in":"path","required":true,"schema":{"type":"integer","description":"The ID of the provider to get.","title":"Provider Id"},"description":"The ID of the provider to get."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProviderResponse"}}}},"403":{"description":"User has no admin rights.
Your account has expired. Please contact support to renew your account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"404":{"description":"Model provider {provider_id} not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"401":{"description":"Invalid authentication scheme.
Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/roles":{"post":{"tags":["Admin"],"summary":"Create Role","operationId":"create_role_v1_admin_roles_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRoleBody","description":"The role creation request."}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleResponse"}}}},"403":{"description":"User has no admin rights.
Your account has expired. Please contact support to renew your account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"409":{"description":"Role {role_name} already exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"401":{"description":"Invalid authentication scheme.
Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Admin"],"summary":"Get Roles","operationId":"get_roles_v1_admin_roles_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Number of roles to skip.","default":0,"title":"Offset"},"description":"Number of roles to skip."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum number of roles to return.","default":10,"title":"Limit"},"description":"Maximum number of roles to return."},{"name":"sort_by","in":"query","required":false,"schema":{"$ref":"#/components/schemas/SortField","description":"Field to sort by.","default":"id"},"description":"Field to sort by."},{"name":"sort_order","in":"query","required":false,"schema":{"$ref":"#/components/schemas/SortOrder","description":"Sort order.","default":"asc"},"description":"Sort order."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RolesResponse"}}}},"403":{"description":"User has no admin rights.
Your account has expired. Please contact support to renew your account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"401":{"description":"Invalid authentication scheme.
Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/roles/{role_id}":{"patch":{"tags":["Admin"],"summary":"Update Role","operationId":"update_role_v1_admin_roles__role_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"role_id","in":"path","required":true,"schema":{"type":"integer","description":"The ID of the role to update.","title":"Role Id"},"description":"The ID of the role to update."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRoleBody","description":"The role update request."}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleResponse"}}}},"403":{"description":"User has no admin rights.
Your account has expired. Please contact support to renew your account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"409":{"description":"Role {role_name} already exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"404":{"description":"Role {role_id} not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"401":{"description":"Invalid authentication scheme.
Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Admin"],"summary":"Get Role","operationId":"get_role_v1_admin_roles__role_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"role_id","in":"path","required":true,"schema":{"type":"integer","description":"The ID of the role to get.","title":"Role Id"},"description":"The ID of the role to get."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleResponse"}}}},"403":{"description":"User has no admin rights.
Your account has expired. Please contact support to renew your account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"404":{"description":"Role {role_id} not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"401":{"description":"Invalid authentication scheme.
Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Admin"],"summary":"Delete Role","operationId":"delete_role_v1_admin_roles__role_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"role_id","in":"path","required":true,"schema":{"type":"integer","description":"The ID of the role to delete.","title":"Role Id"},"description":"The ID of the role to delete."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleResponse"}}}},"403":{"description":"User has no admin rights.
Your account has expired. Please contact support to renew your account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"404":{"description":"Role {role_id} not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"409":{"description":"Role {role_id} has {number_of_users} users and cannot be removed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"401":{"description":"Invalid authentication scheme.
Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/routers":{"post":{"tags":["Admin"],"summary":"Create Router","operationId":"create_router_v1_admin_routers_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRouterBody","description":"The router creation request."}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouterResponse"}}}},"409":{"description":"Following aliases already exist: '{router_aliases}'
Router {router_name} already exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"403":{"description":"User has no admin rights.
Your account has expired. Please contact support to renew your account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"401":{"description":"Invalid authentication scheme.
Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Admin"],"summary":"Get Routers","operationId":"get_routers_v1_admin_routers_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Number of routers to skip.","default":0,"title":"Offset"},"description":"Number of routers to skip."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum number of routers to return.","default":10,"title":"Limit"},"description":"Maximum number of routers to return."},{"name":"sort_by","in":"query","required":false,"schema":{"$ref":"#/components/schemas/SortField","description":"Field to sort by.","default":"id"},"description":"Field to sort by."},{"name":"sort_order","in":"query","required":false,"schema":{"$ref":"#/components/schemas/SortOrder","description":"Sort order.","default":"asc"},"description":"Sort order."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoutersResponse"}}}},"403":{"description":"User has no admin rights.
Your account has expired. Please contact support to renew your account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"401":{"description":"Invalid authentication scheme.
Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/routers/{router_id}":{"get":{"tags":["Admin"],"summary":"Get Router","operationId":"get_router_v1_admin_routers__router_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"router_id","in":"path","required":true,"schema":{"type":"integer","description":"The router ID.","title":"Router Id"},"description":"The router ID."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouterResponse"}}}},"403":{"description":"User has no admin rights.
Your account has expired. Please contact support to renew your account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"404":{"description":"Model router {router_id} not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"401":{"description":"Invalid authentication scheme.
Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Admin"],"summary":"Delete Router","operationId":"delete_router_v1_admin_routers__router_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"router_id","in":"path","required":true,"schema":{"type":"integer","description":"The ID of the router to delete (router ID, eg. 123).","title":"Router Id"},"description":"The ID of the router to delete (router ID, eg. 123)."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouterResponse"}}}},"403":{"description":"User has no admin rights.
Your account has expired. Please contact support to renew your account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"404":{"description":"Model router {router_id} not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"401":{"description":"Invalid authentication scheme.
Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Admin"],"summary":"Update Router","operationId":"update_router_v1_admin_routers__router_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"router_id","in":"path","required":true,"schema":{"type":"integer","description":"The ID of the router to update (router ID, eg. 123).","title":"Router Id"},"description":"The ID of the router to update (router ID, eg. 123)."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRouterBody","description":"The router update request."}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouterResponse"}}}},"403":{"description":"User has no admin rights.
Your account has expired. Please contact support to renew your account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"404":{"description":"Model router {router_id} not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"409":{"description":"Following aliases already exist: '{router_aliases}'
Router {router_name} already exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"401":{"description":"Invalid authentication scheme.
Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/users":{"post":{"tags":["Admin"],"summary":"Create User","operationId":"create_user_v1_admin_users_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateUserBody","description":"The user creation request."}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}},"409":{"description":"User {email} already exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"404":{"description":"Role {role_id} not found.
Organization {organization_id} not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"403":{"description":"User has no admin rights.
Your account has expired. Please contact support to renew your account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"401":{"description":"Invalid authentication scheme.
Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Admin"],"summary":"Get Users","operationId":"get_users_v1_admin_users_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"role_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"The ID of the role to filter the users by.","title":"Role Id"},"description":"The ID of the role to filter the users by."},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"The ID of the organization to filter the users by.","title":"Organization Id"},"description":"The ID of the organization to filter the users by."},{"name":"email","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Email substring to filter the users by.","title":"Email"},"description":"Email substring to filter the users by."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Number of users to skip.","default":0,"title":"Offset"},"description":"Number of users to skip."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum number of users to return.","default":10,"title":"Limit"},"description":"Maximum number of users to return."},{"name":"sort_by","in":"query","required":false,"schema":{"$ref":"#/components/schemas/UserSortField","description":"Field to sort by.","default":"id"},"description":"Field to sort by."},{"name":"sort_order","in":"query","required":false,"schema":{"$ref":"#/components/schemas/SortOrder","description":"Sort order.","default":"asc"},"description":"Sort order."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsersResponse"}}}},"401":{"description":"Invalid authentication scheme.
Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"403":{"description":"Your account has expired. Please contact support to renew your account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/users/{user_id}":{"get":{"tags":["Admin"],"summary":"Get User","operationId":"get_user_v1_admin_users__user_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","description":"The ID of the user to get.","title":"User Id"},"description":"The ID of the user to get."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}},"404":{"description":"User {user_id} not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"401":{"description":"Invalid authentication scheme.
Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"403":{"description":"Your account has expired. Please contact support to renew your account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Admin"],"summary":"Delete User","operationId":"delete_user_v1_admin_users__user_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","description":"The ID of the user to delete.","title":"User Id"},"description":"The ID of the user to delete."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}},"404":{"description":"User {user_id} not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"409":{"description":"User cannot be deleted because the user owns routers: {router_ids}.
User cannot be deleted because the user owns providers: {provider_ids}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"401":{"description":"Invalid authentication scheme.
Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"403":{"description":"Your account has expired. Please contact support to renew your account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/audio/transcriptions":{"post":{"tags":["Audio"],"summary":"Audio Transcriptions","description":"Transcribes audio into the input language.","operationId":"audio_transcriptions_v1_audio_transcriptions_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_audio_transcriptions_v1_audio_transcriptions_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudioTranscription"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/auth/login":{"post":{"tags":["Auth"],"summary":"Login","description":"Receive encrypted token from playground encoded with shared key via POST body.\nThe token contains user id. Refresh and return playground api key associated with the user.","operationId":"login_v1_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Login"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/chat/completions":{"post":{"tags":["Chat"],"summary":"Chat Completions","description":"Creates a model response for the given chat conversation.","operationId":"chat_completions_v1_chat_completions_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"required","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Required"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateChatCompletion"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ChatCompletion"},{"$ref":"#/components/schemas/ChatCompletionChunk"}],"title":"Response Chat Completions V1 Chat Completions Post"}}}},"404":{"description":"Model not found. Collection not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__schemas__exception__HTTPExceptionModel"}}}},"422":{"description":"Wrong model type.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__schemas__exception__HTTPExceptionModel"}}}},"503":{"description":"Model is too busy, please try again later.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__schemas__exception__HTTPExceptionModel"}}}}}}},"/v1/chunks/{document}/{chunk}":{"get":{"tags":["Chunks"],"summary":"Get Chunk","description":"Get a chunk of a document.","operationId":"get_chunk_v1_chunks__document___chunk__get","deprecated":true,"security":[{"HTTPBearer":[]}],"parameters":[{"name":"document","in":"path","required":true,"schema":{"type":"integer","description":"The document ID","title":"Document"},"description":"The document ID"},{"name":"chunk","in":"path","required":true,"schema":{"type":"integer","description":"The chunk ID","title":"Chunk"},"description":"The chunk ID"},{"name":"required","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Required"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Chunk"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/chunks/{document}":{"get":{"tags":["Chunks"],"summary":"Get Chunks","description":"Get chunks of a document.","operationId":"get_chunks_v1_chunks__document__get","deprecated":true,"security":[{"HTTPBearer":[]}],"parameters":[{"name":"document","in":"path","required":true,"schema":{"type":"integer","description":"The document ID","title":"Document"},"description":"The document ID"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"The number of documents to return","default":10,"title":"Limit"},"description":"The number of documents to return"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","description":"The offset of the first document to return","default":0,"title":"Offset"},"description":"The offset of the first document to return"},{"name":"required","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Required"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Chunks"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/collections":{"post":{"tags":["Collections"],"summary":"Create Collection","description":"Create a new collection.","operationId":"create_collection_v1_collections_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Collections"],"summary":"Get Collections","description":"Get list of collections.","operationId":"get_collections_v1_collections_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"name","in":"query","required":false,"schema":{"type":"string","description":"Filter by collection name.","title":"Name"},"description":"Filter by collection name."},{"name":"visibility","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/CollectionVisibility"},{"type":"null"}],"description":"Filter by collection visibility.","title":"Visibility"},"description":"Filter by collection visibility."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"The offset of the collections to get.","default":0,"title":"Offset"},"description":"The offset of the collections to get."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"The limit of the collections to get.","default":10,"title":"Limit"},"description":"The limit of the collections to get."},{"name":"order_by","in":"query","required":false,"schema":{"enum":["id","name","created","updated"],"type":"string","description":"The order by field to sort the collections by.","default":"id","title":"Order By"},"description":"The order by field to sort the collections by."},{"name":"order_direction","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","description":"The direction to order the collections by.","default":"asc","title":"Order Direction"},"description":"The direction to order the collections by."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Collections"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/collections/{collection_id}":{"get":{"tags":["Collections"],"summary":"Get Collection","description":"Get a collection by ID.","operationId":"get_collection_v1_collections__collection_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"collection_id","in":"path","required":true,"schema":{"type":"integer","description":"The collection ID","title":"Collection Id"},"description":"The collection ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Collection"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Collections"],"summary":"Delete Collection","description":"Delete a collection.","operationId":"delete_collection_v1_collections__collection_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"collection_id","in":"path","required":true,"schema":{"type":"integer","description":"The collection ID","title":"Collection Id"},"description":"The collection ID"},{"name":"required","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Required"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Collections"],"summary":"Update Collection","description":"Update a collection.","operationId":"update_collection_v1_collections__collection_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"collection_id","in":"path","required":true,"schema":{"type":"integer","description":"The collection ID","title":"Collection Id"},"description":"The collection ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionUpdateRequest","description":"The collection to update."}}}},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/documents":{"post":{"tags":["Documents"],"summary":"Create Document","description":"Upload a file, parse and split it into chunks, then create a document. If no file is provided, the document will be created without content, use POST `/v1/documents/{document_id}/chunks` to fill it.","operationId":"create_document_v1_documents_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"required","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Required"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_create_document_v1_documents_post"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Documents"],"summary":"Get Documents","description":"Get all documents ID from a collection.","operationId":"get_documents_v1_documents_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter documents by name","title":"Name"},"description":"Filter documents by name"},{"name":"collection_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","exclusiveMinimum":0},{"type":"null"}],"description":"Filter documents by collection ID","title":"Collection Id"},"description":"Filter documents by collection ID"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"The number of documents to return","default":10,"title":"Limit"},"description":"The number of documents to return"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","description":"The offset of the first document to return","default":0,"title":"Offset"},"description":"The offset of the first document to return"},{"name":"order_by","in":"query","required":false,"schema":{"enum":["id","name","created"],"type":"string","description":"The order by field to sort the documents by.","default":"id","title":"Order By"},"description":"The order by field to sort the documents by."},{"name":"order_direction","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","description":"The direction to order the documents by.","default":"asc","title":"Order Direction"},"description":"The direction to order the documents by."},{"name":"required","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Required"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/documents/{document_id}":{"get":{"tags":["Documents"],"summary":"Get Document","description":"Get a document by ID.","operationId":"get_document_v1_documents__document_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"integer","minimum":0,"description":"The document ID","title":"Document Id"},"description":"The document ID"},{"name":"required","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Required"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Document"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Documents"],"summary":"Delete Document","description":"Delete a document.","operationId":"delete_document_v1_documents__document_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"description":"The document ID","title":"Document Id"},"description":"The document ID"},{"name":"required","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Required"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/documents/{document_id}/chunks":{"post":{"tags":["Documents"],"summary":"Create Document Chunks","description":"Fill document with chunks.","operationId":"create_document_chunks_v1_documents__document_id__chunks_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"description":"The document ID","title":"Document Id"},"description":"The document ID"},{"name":"required","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Required"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateChunks"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Documents"],"summary":"Get Document Chunks","description":"Get chunks of a document.","operationId":"get_document_chunks_v1_documents__document_id__chunks_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"description":"The document ID","title":"Document Id"},"description":"The document ID"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"The number of chunks to return","default":10,"title":"Limit"},"description":"The number of chunks to return"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","description":"The offset of the first chunk to return","default":0,"title":"Offset"},"description":"The offset of the first chunk to return"},{"name":"required","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Required"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/documents/{document_id}/chunks/{chunk_id}":{"delete":{"tags":["Documents"],"summary":"Delete Document Chunk","description":"Delete a chunk of a document.","operationId":"delete_document_chunk_v1_documents__document_id__chunks__chunk_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"description":"The document ID","title":"Document Id"},"description":"The document ID"},{"name":"chunk_id","in":"path","required":true,"schema":{"type":"integer","minimum":0,"description":"The chunk ID","title":"Chunk Id"},"description":"The chunk ID"},{"name":"required","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Required"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Documents"],"summary":"Get Document Chunk","description":"Get a chunk of a document.","operationId":"get_document_chunk_v1_documents__document_id__chunks__chunk_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"description":"The document ID","title":"Document Id"},"description":"The document ID"},{"name":"chunk_id","in":"path","required":true,"schema":{"type":"integer","minimum":0,"description":"The chunk ID","title":"Chunk Id"},"description":"The chunk ID"},{"name":"required","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Required"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/embeddings":{"post":{"tags":["Embeddings"],"summary":"Embeddings","description":"Creates an embedding vector representing the input text.","operationId":"embeddings_v1_embeddings_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmbeddingsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Embeddings"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/health":{"get":{"tags":["Health"],"summary":"Get Health","description":"Get the health of the API.","operationId":"get_health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health/models":{"get":{"tags":["Health"],"summary":"Get Health Models","description":"Get the health of the models.","operationId":"get_health_models_health_models_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"401":{"description":"Invalid authentication scheme.
Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"403":{"description":"Your account has expired. Please contact support to renew your account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/me/info":{"get":{"tags":["Me"],"summary":"Get User","description":"Get information about the current user.","operationId":"get_user_v1_me_info_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserInfo"}}}}},"security":[{"HTTPBearer":[]}]},"patch":{"tags":["Me"],"summary":"Update User","description":"Update information about the current user.","operationId":"update_user_v1_me_info_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateUserInfo","description":"The user update request."}}},"required":true},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/me/keys":{"post":{"tags":["Me"],"summary":"Create Key","description":"Create a new API key.","operationId":"create_key_v1_me_keys_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateKey","description":"The token creation request."}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateKeyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Me"],"summary":"Get Keys","description":"Get all your tokens.","operationId":"get_keys_v1_me_keys_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"The offset of the tokens to get.","default":0,"title":"Offset"},"description":"The offset of the tokens to get."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"The limit of the tokens to get.","default":10,"title":"Limit"},"description":"The limit of the tokens to get."},{"name":"order_by","in":"query","required":false,"schema":{"enum":["id","name","created"],"type":"string","description":"The field to order the tokens by.","default":"id","title":"Order By"},"description":"The field to order the tokens by."},{"name":"order_direction","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","description":"The direction to order the tokens by.","default":"asc","title":"Order Direction"},"description":"The direction to order the tokens by."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Keys"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/me/keys/{key}":{"delete":{"tags":["Me"],"summary":"Delete Key","description":"Delete a API key.","operationId":"delete_key_v1_me_keys__key__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"integer","description":"The key ID of the key to delete.","title":"Key"},"description":"The key ID of the key to delete."}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Me"],"summary":"Get Key","description":"Get your token by id.","operationId":"get_key_v1_me_keys__key__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"integer","description":"The key ID of the key to get.","title":"Key"},"description":"The key ID of the key to get."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Key"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/me/usage":{"get":{"tags":["Me"],"summary":"Get Usage","description":"Get usage for the current user.","operationId":"get_usage_v1_me_usage_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"The offset of the usages to get.","default":0,"title":"Offset"},"description":"The offset of the usages to get."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"The limit of the usages to get.","default":10,"title":"Limit"},"description":"The limit of the usages to get."},{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Start time as Unix timestamp (if not provided, will be set to 30 days ago)","title":"Start Time"},"description":"Start time as Unix timestamp (if not provided, will be set to 30 days ago)"},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"End time as Unix timestamp (if not provided, will be set to now)","title":"End Time"},"description":"End time as Unix timestamp (if not provided, will be set to now)"},{"name":"endpoint","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/EndpointUsage"},{"type":"null"}],"description":"The endpoint to get usage for.","title":"Endpoint"},"description":"The endpoint to get usage for."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Usages"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/models":{"get":{"tags":["Models"],"summary":"Get Models","description":"Lists the currently available models and provides basic information.","operationId":"get_models_v1_models_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelsResponse"}}}},"401":{"description":"Invalid authentication scheme.
Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"403":{"description":"Your account has expired. Please contact support to renew your account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/models/{model}":{"get":{"tags":["Models"],"summary":"Get Model","description":"Get a model by name and provide basic information.","operationId":"get_model_v1_models__model__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"model","in":"path","required":true,"schema":{"type":"string","description":"The name of the model to get.","title":"Model"},"description":"The name of the model to get."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Model"}}}},"404":{"description":"Model {name} not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"401":{"description":"Invalid authentication scheme.
Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"403":{"description":"Your account has expired. Please contact support to renew your account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ocr":{"post":{"tags":["OCR"],"summary":"Ocr","description":"Extracts text from files using OCR.","operationId":"ocr_v1_ocr_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOCR"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OCR"}}}},"404":{"description":"Model not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__schemas__exception__HTTPExceptionModel"}}}},"422":{"description":"Wrong model type.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__schemas__exception__HTTPExceptionModel"}}}},"503":{"description":"Model is too busy, please try again later.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__schemas__exception__HTTPExceptionModel"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/parse-beta":{"post":{"tags":["Parse"],"summary":"Parse","description":"Parse a PDF file into Markdown.","operationId":"parse_v1_parse_beta_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_parse_v1_parse_beta_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParsedDocument"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"security":[{"HTTPBearer":[]}]}},"/v1/rerank":{"post":{"tags":["Rerank"],"summary":"Create Rerank","operationId":"create_rerank_v1_rerank_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRerankBody","description":"The rerank creation request."}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RerankResponse"}}}},"503":{"description":"Model is too busy, please try again later.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"404":{"description":"Model {name} not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"429":{"description":"Token/request limit per minute/day exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"422":{"description":"Model has wrong type. Expected: {expected_type}. Actual: {actual_type}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"401":{"description":"Invalid authentication scheme.
Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"403":{"description":"Your account has expired. Please contact support to renew your account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/search":{"post":{"tags":["Search"],"summary":"Search","description":"Get relevant chunks from the collections and a query.","operationId":"search_v1_search_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"required","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Required"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSearch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Searches"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/organizations":{"post":{"tags":["Admin"],"summary":"Create Organization","operationId":"create_organization_v1_admin_organizations_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationRequest","description":"The organization creation request."}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Admin"],"summary":"Get Organizations","operationId":"get_organizations_v1_admin_organizations_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"The offset of the organizations to get.","default":0,"title":"Offset"},"description":"The offset of the organizations to get."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"The limit of the organizations to get.","default":10,"title":"Limit"},"description":"The limit of the organizations to get."},{"name":"order_by","in":"query","required":false,"schema":{"enum":["id","name","created","updated"],"type":"string","description":"The field to order the organizations by.","default":"id","title":"Order By"},"description":"The field to order the organizations by."},{"name":"order_direction","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","description":"The direction to order the organizations by.","default":"asc","title":"Order Direction"},"description":"The direction to order the organizations by."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Organizations"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/organizations/{organization}":{"delete":{"tags":["Admin"],"summary":"Delete Organization","operationId":"delete_organization_v1_admin_organizations__organization__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"organization","in":"path","required":true,"schema":{"type":"integer","description":"The ID of the organization to delete.","title":"Organization"},"description":"The ID of the organization to delete."}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Admin"],"summary":"Update Organization","operationId":"update_organization_v1_admin_organizations__organization__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"organization","in":"path","required":true,"schema":{"type":"integer","description":"The ID of the organization to update.","title":"Organization"},"description":"The ID of the organization to update."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationUpdateRequest","description":"The organization update request."}}}},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Admin"],"summary":"Get Organization","operationId":"get_organization_v1_admin_organizations__organization__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"organization","in":"path","required":true,"schema":{"type":"integer","description":"The ID of the organization to get.","title":"Organization"},"description":"The ID of the organization to get."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Organization"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/tokens":{"post":{"tags":["Admin"],"summary":"Create Token","description":"Create a new token.","operationId":"create_token_v1_admin_tokens_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateToken","description":"The token creation request."}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokensResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Admin"],"summary":"Get Tokens","description":"Get all your tokens.","operationId":"get_tokens_v1_admin_tokens_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"The user ID of the user to get the tokens for.","title":"User"},"description":"The user ID of the user to get the tokens for."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"The offset of the tokens to get.","default":0,"title":"Offset"},"description":"The offset of the tokens to get."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"The limit of the tokens to get.","default":10,"title":"Limit"},"description":"The limit of the tokens to get."},{"name":"order_by","in":"query","required":false,"schema":{"enum":["id","name","created"],"type":"string","description":"The field to order the tokens by.","default":"id","title":"Order By"},"description":"The field to order the tokens by."},{"name":"order_direction","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","description":"The direction to order the tokens by.","default":"asc","title":"Order Direction"},"description":"The direction to order the tokens by."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tokens"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/tokens/{token}":{"delete":{"tags":["Admin"],"summary":"Delete Token","description":"Delete a token.","operationId":"delete_token_v1_admin_tokens__token__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user","in":"path","required":true,"schema":{"type":"integer","description":"The user ID of the user to delete the token for.","title":"User"},"description":"The user ID of the user to delete the token for."},{"name":"token","in":"path","required":true,"schema":{"type":"integer","description":"The token ID of the token to delete.","title":"Token"},"description":"The token ID of the token to delete."}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Admin"],"summary":"Get Token","description":"Get your token by id.","operationId":"get_token_v1_admin_tokens__token__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"integer","description":"The token ID of the token to get.","title":"Token"},"description":"The token ID of the token to get."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/users/{user}":{"patch":{"tags":["Admin"],"summary":"Update User","description":"Update a user.","operationId":"update_user_v1_admin_users__user__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user","in":"path","required":true,"schema":{"type":"integer","description":"The ID of the user to update.","title":"User"},"description":"The ID of the user to update."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserUpdateRequest","description":"The user update request."}}}},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/metrics":{"get":{"tags":["Monitoring"],"summary":"Get Metrics","operationId":"get_metrics_metrics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}}},"components":{"schemas":{"Annotation":{"properties":{"type":{"type":"string","const":"url_citation","title":"Type"},"url_citation":{"$ref":"#/components/schemas/AnnotationURLCitation"}},"additionalProperties":true,"type":"object","required":["type","url_citation"],"title":"Annotation","description":"A URL citation when using web search."},"AnnotationURLCitation":{"properties":{"end_index":{"type":"integer","title":"End Index"},"start_index":{"type":"integer","title":"Start Index"},"title":{"type":"string","title":"Title"},"url":{"type":"string","title":"Url"}},"additionalProperties":true,"type":"object","required":["end_index","start_index","title","url"],"title":"AnnotationURLCitation","description":"A URL citation when using web search."},"AudioTranscription":{"properties":{"id":{"type":"string","title":"Id","description":"A unique identifier for the audio transcription."},"text":{"type":"string","title":"Text","description":"The transcription text."},"model":{"type":"string","title":"Model","description":"The model used to generate the transcription."},"segments":{"anyOf":[{"items":{"$ref":"#/components/schemas/Segment"},"type":"array"},{"type":"null"}],"title":"Segments","description":"Diarized segments, only set when `response_format=diarized_json`."},"usage":{"$ref":"#/components/schemas/api__schemas__usage__Usage","description":"Usage information for the request."}},"additionalProperties":true,"type":"object","required":["id","text","model"],"title":"AudioTranscription"},"AudioTranscriptionLanguage":{"type":"string","enum":["af","afrikaans","albanian","am","amharic","ar","arabic","armenian","as","assamese","az","azerbaijani","ba","bashkir","basque","be","belarusian","bengali","bg","bn","bo","bosnian","br","breton","bs","bulgarian","burmese","ca","cantonese","castilian","catalan","chinese","croatian","cs","cy","czech","da","danish","de","dutch","el","en","english","es","estonian","et","eu","fa","faroese","fi","finnish","flemish","fo","fr","french","galician","georgian","german","gl","greek","gu","gujarati","ha","haitian","haitian creole","hausa","haw","hawaiian","he","hebrew","hi","hindi","hr","ht","hu","hungarian","hy","icelandic","id","indonesian","is","it","italian","ja","japanese","javanese","jw","ka","kannada","kazakh","khmer","kk","km","kn","ko","korean","la","lao","latin","latvian","lb","letzeburgesch","lingala","lithuanian","ln","lo","lt","luxembourgish","lv","macedonian","malagasy","malay","malayalam","maltese","mandarin","maori","marathi","mg","mi","mk","ml","mn","moldavian","moldovan","mongolian","mr","ms","mt","my","myanmar","ne","nepali","nl","nn","no","norwegian","nynorsk","oc","occitan","pa","panjabi","pashto","persian","pl","polish","portuguese","ps","pt","punjabi","pushto","ro","romanian","ru","russian","sa","sanskrit","sd","serbian","shona","si","sindhi","sinhala","sinhalese","sk","sl","slovak","slovenian","sn","so","somali","spanish","sq","sr","su","sundanese","sv","sw","swahili","swedish","ta","tagalog","tajik","tamil","tatar","te","telugu","tg","th","thai","tibetan","tk","tl","tr","tt","turkish","turkmen","uk","ukrainian","ur","urdu","uz","uzbek","valencian","vi","vietnamese","welsh","yi","yiddish","yo","yoruba","yue","zh"],"title":"AudioTranscriptionLanguage"},"AudioTranscriptionResponseFormat":{"type":"string","enum":["json","text","verbose_json","diarized_json","srt","vtt"],"title":"AudioTranscriptionResponseFormat"},"BasicAuth":{"properties":{"username":{"type":"string","title":"Username"},"password":{"type":"string","title":"Password"}},"additionalProperties":true,"type":"object","required":["username","password"],"title":"BasicAuth"},"Body_audio_transcriptions_v1_audio_transcriptions_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File","description":"The audio file object (not file name) to transcribe, in one of these formats: mp3 or wav."},"model":{"type":"string","title":"Model","description":"ID of the model to use. Call `/v1/models` endpoint to get the list of available models, only `automatic-speech-recognition` model type is supported."},"language":{"anyOf":[{"$ref":"#/components/schemas/AudioTranscriptionLanguage"},{"type":"null"}],"description":"The language of the output audio. If the output language is different than the audio language, the audio language will be translated into the output language. Output language must be supplied in ISO-639-1 format (e.g. en, fr) format."},"prompt":{"type":"string","title":"Prompt","description":"An optional text to tell the model what to do with the input audio.","default":""},"response_format":{"$ref":"#/components/schemas/AudioTranscriptionResponseFormat","description":"The format of the transcript output: `json` (default), `text`, `diarized_json` to return per-segment speaker labels, `srt` or `vtt` for subtitle formats.","default":"json"},"temperature":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Temperature","description":"The sampling temperature, between 0 and 1. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic. If set to 0, the model will use log probability to automatically increase the temperature until certain thresholds are hit.","default":0.0}},"type":"object","required":["file","model"],"title":"Body_audio_transcriptions_v1_audio_transcriptions_post"},"Body_create_document_v1_documents_post":{"properties":{"file":{"anyOf":[{"type":"string","contentMediaType":"application/octet-stream"},{"type":"null"}],"title":"File","description":"The file to create a document from. If not provided, the document will be created without content, use POST `/v1/documents/{document_id}/chunks` to fill it."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Name of document if no file is provided or to override file name."},"collection_id":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Collection Id","description":"The collection ID to use for the file upload. The file will be vectorized with model defined by the collection."},"collection":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Collection","deprecated":true},"disable_chunking":{"type":"boolean","title":"Disable Chunking","description":"Whether to disable `RecursiveCharacterTextSplitter` chunking for the upload file.","default":false},"chunk_size":{"type":"integer","minimum":0.0,"title":"Chunk Size","description":"The size in characters of the chunks to use for the upload file. If not provided, the document will not be split into chunks.","default":2048},"chunk_min_size":{"type":"integer","minimum":0.0,"title":"Chunk Min Size","description":"The minimum size in characters of the chunks to use for the upload file.","default":0},"chunk_overlap":{"type":"integer","minimum":0.0,"title":"Chunk Overlap","description":"The overlap in characters of the chunks to use for the upload file.","default":0},"is_separator_regex":{"type":"boolean","title":"Is Separator Regex","description":"Whether the separator is a regex to use for the upload file.","default":false},"separators":{"items":{"type":"string"},"type":"array","minItems":0,"title":"Separators","description":"Delimiters used by RecursiveCharacterTextSplitter for further splitting. If provided, `preset_separators` is ignored.","default":[]},"preset_separators":{"$ref":"#/components/schemas/PresetSeparators","description":"Preset separators used by RecursiveCharacterTextSplitter for further splitting. See [implemented details](https://github.com/langchain-ai/langchain/blob/eb122945832eae9b9df7c70ccd8d51fcd7a1899b/libs/text-splitters/langchain_text_splitters/character.py#L164).","default":"markdown"},"metadata":{"type":"string","title":"Metadata","description":"Optional additional metadata to add to each chunk if a file is provided. Provide a stringified JSON object matching the Metadata schema.","default":"","examples":["{\"source_date\": \"2026-01-05\", \"source_tags\": [\"tag1\", \"tag2\"]}"]}},"type":"object","title":"Body_create_document_v1_documents_post"},"Body_parse_v1_parse_beta_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File","description":"The file to parse."},"page_range":{"type":"string","title":"Page Range","description":"Page range to convert, specify comma separated page numbers or ranges. Example: '0,5-10,20'","default":""},"force_ocr":{"type":"boolean","title":"Force Ocr","description":"Force OCR on all pages of the PDF. Defaults to False. This can lead to worse results if you have good text in your PDFs (which is true in most cases).","default":false}},"type":"object","required":["file"],"title":"Body_parse_v1_parse_beta_post"},"CarbonFootprintUsage":{"properties":{"kWh":{"$ref":"#/components/schemas/CarbonFootprintUsageKWh","deprecated":true},"kgCO2eq":{"$ref":"#/components/schemas/CarbonFootprintUsageKgCO2eq","deprecated":true}},"additionalProperties":true,"type":"object","title":"CarbonFootprintUsage"},"CarbonFootprintUsageKWh":{"properties":{"min":{"type":"number","title":"Min","description":"Minimum carbon footprint in kWh.","default":0.0,"deprecated":true},"max":{"type":"number","title":"Max","description":"Maximum carbon footprint in kWh.","default":0.0,"deprecated":true}},"additionalProperties":true,"type":"object","title":"CarbonFootprintUsageKWh"},"CarbonFootprintUsageKgCO2eq":{"properties":{"min":{"type":"number","title":"Min","description":"Minimum carbon footprint in kgCO2eq (global warming potential).","default":0.0,"deprecated":true},"max":{"type":"number","title":"Max","description":"Maximum carbon footprint in kgCO2eq (global warming potential).","default":0.0,"deprecated":true}},"additionalProperties":true,"type":"object","title":"CarbonFootprintUsageKgCO2eq"},"ChatCompletion":{"properties":{"id":{"type":"string","title":"Id","description":"A unique identifier for the chat completion."},"choices":{"items":{"$ref":"#/components/schemas/openai__types__chat__chat_completion__Choice"},"type":"array","title":"Choices"},"created":{"type":"integer","title":"Created"},"model":{"type":"string","title":"Model"},"object":{"type":"string","const":"chat.completion","title":"Object"},"service_tier":{"anyOf":[{"type":"string","enum":["auto","default","flex","scale","priority"]},{"type":"null"}],"title":"Service Tier"},"system_fingerprint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System Fingerprint"},"usage":{"$ref":"#/components/schemas/api__schemas__usage__Usage","description":"Usage information for the request."},"search_results":{"items":{"$ref":"#/components/schemas/Search"},"type":"array","title":"Search Results","default":[]}},"additionalProperties":true,"type":"object","required":["choices","created","model","object"],"title":"ChatCompletion"},"ChatCompletionAudio":{"properties":{"id":{"type":"string","title":"Id"},"data":{"type":"string","title":"Data"},"expires_at":{"type":"integer","title":"Expires At"},"transcript":{"type":"string","title":"Transcript"}},"additionalProperties":true,"type":"object","required":["id","data","expires_at","transcript"],"title":"ChatCompletionAudio","description":"If the audio output modality is requested, this object contains data\nabout the audio response from the model. [Learn more](https://platform.openai.com/docs/guides/audio)."},"ChatCompletionChunk":{"properties":{"id":{"type":"string","title":"Id"},"choices":{"items":{"$ref":"#/components/schemas/openai__types__chat__chat_completion_chunk__Choice"},"type":"array","title":"Choices"},"created":{"type":"integer","title":"Created"},"model":{"type":"string","title":"Model"},"object":{"type":"string","const":"chat.completion.chunk","title":"Object"},"service_tier":{"anyOf":[{"type":"string","enum":["auto","default","flex","scale","priority"]},{"type":"null"}],"title":"Service Tier"},"system_fingerprint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System Fingerprint"},"usage":{"anyOf":[{"$ref":"#/components/schemas/CompletionUsage"},{"type":"null"}]},"search_results":{"items":{"$ref":"#/components/schemas/Search"},"type":"array","title":"Search Results","default":[]}},"additionalProperties":true,"type":"object","required":["id","choices","created","model","object"],"title":"ChatCompletionChunk"},"ChatCompletionMessage":{"properties":{"content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content"},"refusal":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Refusal"},"role":{"type":"string","const":"assistant","title":"Role"},"annotations":{"anyOf":[{"items":{"$ref":"#/components/schemas/Annotation"},"type":"array"},{"type":"null"}],"title":"Annotations"},"audio":{"anyOf":[{"$ref":"#/components/schemas/ChatCompletionAudio"},{"type":"null"}]},"function_call":{"anyOf":[{"$ref":"#/components/schemas/FunctionCall"},{"type":"null"}]},"tool_calls":{"anyOf":[{"items":{"anyOf":[{"$ref":"#/components/schemas/ChatCompletionMessageFunctionToolCall"},{"$ref":"#/components/schemas/ChatCompletionMessageCustomToolCall"}]},"type":"array"},{"type":"null"}],"title":"Tool Calls"}},"additionalProperties":true,"type":"object","required":["role"],"title":"ChatCompletionMessage","description":"A chat completion message generated by the model."},"ChatCompletionMessageCustomToolCall":{"properties":{"id":{"type":"string","title":"Id"},"custom":{"$ref":"#/components/schemas/Custom"},"type":{"type":"string","const":"custom","title":"Type"}},"additionalProperties":true,"type":"object","required":["id","custom","type"],"title":"ChatCompletionMessageCustomToolCall","description":"A call to a custom tool created by the model."},"ChatCompletionMessageFunctionToolCall":{"properties":{"id":{"type":"string","title":"Id"},"function":{"$ref":"#/components/schemas/Function"},"type":{"type":"string","const":"function","title":"Type"}},"additionalProperties":true,"type":"object","required":["id","function","type"],"title":"ChatCompletionMessageFunctionToolCall","description":"A call to a function tool created by the model."},"ChatCompletionTokenLogprob":{"properties":{"token":{"type":"string","title":"Token"},"bytes":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Bytes"},"logprob":{"type":"number","title":"Logprob"},"top_logprobs":{"items":{"$ref":"#/components/schemas/TopLogprob"},"type":"array","title":"Top Logprobs"}},"additionalProperties":true,"type":"object","required":["token","logprob","top_logprobs"],"title":"ChatCompletionTokenLogprob"},"ChoiceDelta":{"properties":{"content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content"},"function_call":{"anyOf":[{"$ref":"#/components/schemas/ChoiceDeltaFunctionCall"},{"type":"null"}]},"refusal":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Refusal"},"role":{"anyOf":[{"type":"string","enum":["developer","system","user","assistant","tool"]},{"type":"null"}],"title":"Role"},"tool_calls":{"anyOf":[{"items":{"$ref":"#/components/schemas/ChoiceDeltaToolCall"},"type":"array"},{"type":"null"}],"title":"Tool Calls"}},"additionalProperties":true,"type":"object","title":"ChoiceDelta","description":"A chat completion delta generated by streamed model responses."},"ChoiceDeltaFunctionCall":{"properties":{"arguments":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Arguments"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},"additionalProperties":true,"type":"object","title":"ChoiceDeltaFunctionCall","description":"Deprecated and replaced by `tool_calls`.\n\nThe name and arguments of a function that should be called, as generated by the model."},"ChoiceDeltaToolCall":{"properties":{"index":{"type":"integer","title":"Index"},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"function":{"anyOf":[{"$ref":"#/components/schemas/ChoiceDeltaToolCallFunction"},{"type":"null"}]},"type":{"anyOf":[{"type":"string","const":"function"},{"type":"null"}],"title":"Type"}},"additionalProperties":true,"type":"object","required":["index"],"title":"ChoiceDeltaToolCall"},"ChoiceDeltaToolCallFunction":{"properties":{"arguments":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Arguments"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},"additionalProperties":true,"type":"object","title":"ChoiceDeltaToolCallFunction"},"ChoiceLogprobs":{"properties":{"content":{"anyOf":[{"items":{"$ref":"#/components/schemas/ChatCompletionTokenLogprob"},"type":"array"},{"type":"null"}],"title":"Content"},"refusal":{"anyOf":[{"items":{"$ref":"#/components/schemas/ChatCompletionTokenLogprob"},"type":"array"},{"type":"null"}],"title":"Refusal"}},"additionalProperties":true,"type":"object","title":"ChoiceLogprobs","description":"Log probability information for the choice."},"Chunk":{"properties":{"object":{"type":"string","const":"chunk","title":"Object","description":"The type of the object.","default":"chunk"},"id":{"type":"integer","minimum":0.0,"title":"Id","description":"The ID of the chunk."},"collection_id":{"type":"integer","minimum":0.0,"title":"Collection Id","description":"The ID of the collection the chunk belongs to."},"document_id":{"type":"integer","minimum":0.0,"title":"Document Id","description":"The ID of the document the chunk belongs to."},"content":{"type":"string","minLength":1,"title":"Content","description":"The content of the chunk."},"metadata":{"anyOf":[{"additionalProperties":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"integer","maximum":1e+16,"minimum":-1e+16},{"type":"number","maximum":1e+16,"minimum":-1e+16},{"type":"boolean"}]},"propertyNames":{"maxLength":255,"minLength":1},"type":"object","maxProperties":10,"minProperties":1,"description":"Extra metadata for the source"},{"type":"null"}],"title":"Metadata","description":"Metadata of the chunk"},"created":{"type":"integer","title":"Created","description":"The date of the chunk creation."}},"additionalProperties":true,"type":"object","required":["id","collection_id","document_id","content"],"title":"Chunk"},"Chunks":{"properties":{"object":{"type":"string","const":"list","title":"Object","description":"The type of the object.","default":"list"},"data":{"items":{"$ref":"#/components/schemas/Chunk"},"type":"array","title":"Data","description":"The list of chunks."}},"additionalProperties":true,"type":"object","required":["data"],"title":"Chunks"},"Collection":{"properties":{"object":{"type":"string","const":"collection","title":"Object","default":"collection"},"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"owner":{"type":"string","title":"Owner"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"visibility":{"anyOf":[{"$ref":"#/components/schemas/CollectionVisibility"},{"type":"null"}]},"created":{"type":"integer","title":"Created"},"updated":{"type":"integer","title":"Updated"},"documents":{"type":"integer","title":"Documents","default":0},"size":{"type":"integer","title":"Size","default":0}},"additionalProperties":true,"type":"object","required":["id","name","owner","created","updated"],"title":"Collection"},"CollectionRequest":{"properties":{"name":{"type":"string","minLength":1,"title":"Name","description":"The name of the collection."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"The description of the collection."},"visibility":{"$ref":"#/components/schemas/CollectionVisibility","description":"The type of the collection. Public collections are available to all users, private collections are only available to the user who created them.","default":"private"}},"additionalProperties":true,"type":"object","required":["name"],"title":"CollectionRequest"},"CollectionUpdateRequest":{"properties":{"name":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Name","description":"The name of the collection."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"The description of the collection."},"visibility":{"anyOf":[{"$ref":"#/components/schemas/CollectionVisibility"},{"type":"null"}],"description":"The type of the collection. Public collections are available to all users, private collections are only available to the user who created them."}},"additionalProperties":true,"type":"object","title":"CollectionUpdateRequest"},"CollectionVisibility":{"type":"string","enum":["private","public"],"title":"CollectionVisibility"},"Collections":{"properties":{"object":{"type":"string","const":"list","title":"Object","default":"list"},"data":{"items":{"$ref":"#/components/schemas/Collection"},"type":"array","title":"Data"}},"additionalProperties":true,"type":"object","required":["data"],"title":"Collections"},"ComparisonFilter":{"properties":{"key":{"type":"string","maxLength":255,"minLength":1,"title":"Key"},"type":{"$ref":"#/components/schemas/ComparisonFilterType"},"value":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"integer","maximum":1e+16,"minimum":-1e+16},{"type":"number","maximum":1e+16,"minimum":-1e+16},{"type":"boolean"}],"title":"Value"}},"additionalProperties":true,"type":"object","required":["key","type","value"],"title":"ComparisonFilter"},"ComparisonFilterType":{"type":"string","enum":["eq","sw","ew","co"],"title":"ComparisonFilterType","description":"Comparison filter type for metadata filters.","x-enumDescriptions":{"co":"Contains the value provided.","eq":"Equal to the value provided.","ew":"Ends with the value provided.","sw":"Starts with the value provided."}},"CompletionTokensDetails":{"properties":{"accepted_prediction_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Accepted Prediction Tokens"},"audio_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Audio Tokens"},"reasoning_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Reasoning Tokens"},"rejected_prediction_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rejected Prediction Tokens"}},"additionalProperties":true,"type":"object","title":"CompletionTokensDetails","description":"Breakdown of tokens used in a completion."},"CompletionUsage":{"properties":{"completion_tokens":{"type":"integer","title":"Completion Tokens"},"prompt_tokens":{"type":"integer","title":"Prompt Tokens"},"total_tokens":{"type":"integer","title":"Total Tokens"},"completion_tokens_details":{"anyOf":[{"$ref":"#/components/schemas/CompletionTokensDetails"},{"type":"null"}]},"prompt_tokens_details":{"anyOf":[{"$ref":"#/components/schemas/PromptTokensDetails"},{"type":"null"}]}},"additionalProperties":true,"type":"object","required":["completion_tokens","prompt_tokens","total_tokens"],"title":"CompletionUsage","description":"Usage statistics for the completion request."},"CompoundFilter":{"properties":{"filters":{"items":{"$ref":"#/components/schemas/ComparisonFilter"},"type":"array","maxItems":4,"minItems":2,"title":"Filters","description":"List of filters to apply to the search."},"operator":{"$ref":"#/components/schemas/CompoundFilterOperator","description":"Operator to use for the compound filter."}},"additionalProperties":true,"type":"object","required":["filters","operator"],"title":"CompoundFilter"},"CompoundFilterOperator":{"type":"string","enum":["and","or"],"title":"CompoundFilterOperator","description":"Compound filter operator for metadata filters.","x-enumDescriptions":{"and":"AND operator","or":"OR operator"}},"CreateChatCompletion":{"properties":{"messages":{"items":{},"type":"array","title":"Messages","description":"A list of messages comprising the conversation so far."},"model":{"type":"string","title":"Model","description":"ID of the model to use. Call `/v1/models` endpoint to get the list of available models, only `text-generation` model type is supported."},"frequency_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Frequency Penalty","description":"Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim.","default":0.0},"logit_bias":{"anyOf":[{"additionalProperties":{"type":"number"},"type":"object"},{"type":"null"}],"title":"Logit Bias","description":"Modify the likelihood of specified tokens appearing in the completion. Accepts a JSON object that maps tokens (specified by their token ID in the tokenizer) to an associated bias value from -100 to 100. Mathematically, the bias is added to the logits generated by the model prior to sampling. The exact effect will vary per model, but values between -1 and 1 should decrease or increase likelihood of selection; values like -100 or 100 should result in a ban or exclusive selection of the relevant token."},"logprobs":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Logprobs","description":"Whether to return log probabilities of the output tokens or not. If true, returns the log probabilities of each output token returned in the `content` of `message`.","default":false},"top_logprobs":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Top Logprobs","description":"An integer between 0 and 20 specifying the number of most likely tokens to return at each token position, each with an associated log probability. `logprobs` must be set to `true` if this parameter is used."},"presence_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Presence Penalty","description":"Number between -2.0 and 2.0. Positive values penalize new tokens based on whether they appear in the text so far, increasing the model's likelihood to talk about new topics.","default":0.0},"max_completion_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Completion Tokens","description":"An upper bound for the number of tokens that can be generated for a completion."},"n":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"N","description":"How many chat completion choices to generate for each input message. Note that you will be charged based on the number of generated tokens across all of the choices. Keep `n` as `1` to minimize costs.","default":1},"response_format":{"anyOf":[{},{"type":"null"}],"title":"Response Format","description":"Setting to `{ \"type\": \"json_schema\", \"json_schema\": {...} }` enables Structured Outputs which ensures the model will match your supplied JSON schema. Learn more in the Structured Outputs guide. Setting to `{ \"type\": \"json_object\" }` enables JSON mode, which ensures the message the model generates is valid JSON.
**Important**: when using JSON mode, you must also instruct the model to produce JSON yourself via a system or user message. Without this, the model may generate an unending stream of whitespace until the generation reaches the token limit, resulting in a long-running and seemingly \"stuck\" request. Also note that the message content may be partially cut off if `finish_reason=\"length\"`, which indicates the generation exceeded `max_tokens` or the conversation exceeded the max context length."},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed","description":"If specified, our system will make a best effort to sample deterministically, such that repeated requests with the same `seed` and parameters should return the same result. Determinism is not guaranteed, and you should refer to the system_fingerprint response parameter to monitor changes in the backend."},"stop":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Stop","description":"Up to 4 sequences where the API will stop generating further tokens."},"stream":{"anyOf":[{"type":"boolean","enum":[true,false]},{"type":"null"}],"title":"Stream","description":"If set, partial message deltas will be sent. Tokens will be sent as data-only server-sent events as they become available, with the stream terminated by a data: [DONE] message.","default":false},"stream_options":{"anyOf":[{},{"type":"null"}],"title":"Stream Options","description":"Options for streaming response. Only set this when you set `stream: true`."},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature","description":"What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic. We generally recommend altering this or `top_p` but not both."},"top_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top P","description":"An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered.
We generally recommend altering this or `temperature` but not both."},"tools":{"anyOf":[{"anyOf":[{"items":{"anyOf":[{"additionalProperties":true,"type":"object"},{"$ref":"#/components/schemas/SearchTool"}]},"type":"array"},{"type":"null"}],"description":"A list of tools the model may call. Currently, only functions are supported as a tool. Support function calling and build-in tools (currently only SearchTool). Use this to provide a list of functions the model may generate JSON inputs for."},{"type":"null"}],"title":"Tools"},"tool_choice":{"title":"Tool Choice","description":"Controls which (if any) tool is called by the model. `none` means the model will not call any tool and instead generates a message. `auto` means the model can pick between generating a message or calling one or more tools. `required` means the model must call one or more tools. Specifying a particular tool via `{\"type\": \"function\", \"function\": {\"name\": \"my_function\"}}` forces the model to call that tool.
`none` is the default when no tools are present. `auto` is the default if tools are present.","default":"none"},"parallel_tool_calls":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Parallel Tool Calls","description":"Whether to call tools in parallel or sequentially. If true, the model will call tools in parallel. If false, the model will call tools sequentially. If None, the model will call tools in parallel if the model supports it, otherwise it will call tools sequentially.","default":false},"user":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User","description":"A unique identifier representing the user."},"search":{"type":"boolean","title":"Search","default":false,"deprecated":true},"search_args":{"anyOf":[{"$ref":"#/components/schemas/SearchArgs"},{"type":"null"}],"deprecated":true}},"additionalProperties":true,"type":"object","required":["messages","model"],"title":"CreateChatCompletion"},"CreateChunks":{"properties":{"chunks":{"items":{"$ref":"#/components/schemas/InputChunk"},"type":"array","maxItems":64,"minItems":1,"title":"Chunks","description":"The list of chunks to create."}},"additionalProperties":true,"type":"object","required":["chunks"],"title":"CreateChunks"},"CreateKey":{"properties":{"name":{"type":"string","title":"Name"},"expires":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expires","description":"Timestamp in seconds"}},"additionalProperties":true,"type":"object","required":["name"],"title":"CreateKey"},"CreateKeyResponse":{"properties":{"id":{"type":"integer","title":"Id"},"token":{"type":"string","title":"Token"}},"additionalProperties":true,"type":"object","required":["id","token"],"title":"CreateKeyResponse"},"CreateOCR":{"properties":{"bbox_annotation_format":{"anyOf":[{"$ref":"#/components/schemas/ResponseFormat"},{"type":"null"}],"description":"Specify the format that the model must output for the bounding boxes. By default it will use `{ \"type\": \"text\" }`. Setting to `{ \"type\": \"json_object\" }` enables JSON mode, which guarantees the message the model generates is in JSON. When using JSON mode you MUST also instruct the model to produce JSON yourself with a system or a user message. Setting to `{ \"type\": \"json_schema\" }` enables JSON schema mode, which guarantees the message the model generates is in JSON and follows the schema you provide."},"document":{"anyOf":[{"$ref":"#/components/schemas/DocumentURLChunk"},{"$ref":"#/components/schemas/ImageURLChunk"}],"title":"Document","description":"Document to run OCR on."},"document_annotation_format":{"anyOf":[{"$ref":"#/components/schemas/ResponseFormat"},{"type":"null"}],"description":"Specify the format that the model must output for the document. By default it will use `{ \"type\": \"text\" }`. Setting to `{ \"type\": \"json_object\" }` enables JSON mode, which guarantees the message the model generates is in JSON. When using JSON mode you MUST also instruct the model to produce JSON yourself with a system or a user message. Setting to `{ \"type\": \"json_schema\" }` enables JSON schema mode, which guarantees the message the model generates is in JSON and follows the schema you provide."},"image_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Image Limit","description":"Max images to extract"},"image_min_size":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Image Min Size","description":"Minimum height and width of image to extract"},"include_image_base64":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Include Image Base64","description":"Include image URLs in response"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"The model to use for the OCR."},"pages":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Pages","description":"Specific pages user wants to process in various formats: single number, range, or list of both. Starts from 0"}},"additionalProperties":true,"type":"object","required":["document"],"title":"CreateOCR"},"CreateProviderBody":{"properties":{"type":{"$ref":"#/components/schemas/ProviderType","description":"Model provider type."},"url":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Url","description":"Model provider API url. The url must only contain the domain name (without `/v1` suffix for example). Depends of the model provider type, the url can be optional (Albert, OpenAI)."},"key":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Key","description":"Model provider API key."},"basic_auth":{"anyOf":[{"$ref":"#/components/schemas/BasicAuth"},{"type":"null"}],"description":"Model provider basic authentication."},"timeout":{"type":"integer","title":"Timeout","description":"Timeout for the model provider requests, after user receive an 503 error (model is too busy).","default":300},"model_name":{"type":"string","title":"Model Name","description":"Model name from the model provider."},"model_hosting_zone":{"$ref":"#/components/schemas/HostingZone","description":"Model hosting zone using ISO 3166-1 alpha-3 code format (e.g., `WOR` for World, `FRA` for France, `USA` for United States). This determines the electricity mix used for carbon intensity calculations. For more information, see https://ecologits.ai","default":"WOR"},"model_total_params":{"type":"integer","minimum":0.0,"title":"Model Total Params","description":"Total params of the model in billions of parameters for carbon footprint computation. For more information, see https://ecologits.ai","default":0},"model_active_params":{"type":"integer","minimum":0.0,"title":"Model Active Params","description":"Active params of the model in billions of parameters for carbon footprint computation. For more information, see https://ecologits.ai","default":0},"qos_metric":{"anyOf":[{"$ref":"#/components/schemas/Metric"},{"type":"null"}],"description":"The metric to use for the quality of service policy. If not provided, no QoS policy is applied."},"qos_limit":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Qos Limit","description":"The value to use for the quality of service. Depends of the metric, the value can be a percentile, a threshold, etc."},"router_id":{"type":"integer","title":"Router Id","description":"ID of the model to create the provider for (router ID, eg. 123)."}},"additionalProperties":true,"type":"object","required":["type","model_name","router_id"],"title":"CreateProviderBody"},"CreateProviderResponse":{"properties":{"id":{"type":"integer","title":"Id","description":"Provider ID."},"router_id":{"type":"integer","title":"Router Id","description":"ID of the router that owns the provider."},"user_id":{"type":"integer","title":"User Id","description":"ID of the user that owns the provider."},"type":{"$ref":"#/components/schemas/ProviderType","description":"Provider type."},"url":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Url","description":"Provider API url. The url must only contain the domain name (without `/v1` suffix for example)."},"key":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Key","description":"Provider API key."},"basic_auth":{"anyOf":[{"$ref":"#/components/schemas/BasicAuth"},{"type":"null"}],"description":"Provider basic authentication."},"timeout":{"type":"integer","maximum":3600.0,"minimum":1.0,"title":"Timeout","description":"Timeout for the provider requests, after user receive an 500 error (model is too busy)."},"model_name":{"type":"string","minLength":1,"title":"Model Name","description":"Model name from the model provider."},"model_hosting_zone":{"$ref":"#/components/schemas/HostingZone","description":"Model hosting zone using ISO 3166-1 alpha-3 code format (e.g., `WOR` for World, `FRA` for France, `USA` for United States). This determines the electricity mix used for carbon intensity calculations. For more information, see https://ecologits.ai","default":"WOR","examples":["WOR"]},"model_total_params":{"type":"integer","minimum":0.0,"title":"Model Total Params","description":"Total params of the model in billions of parameters for carbon footprint computation. If not provided, the active params will be used if provided, else carbon footprint will not be computed. For more information, see https://ecologits.ai","default":0},"model_active_params":{"type":"integer","minimum":0.0,"title":"Model Active Params","description":"Active params of the model in billions of parameters for carbon footprint computation. If not provided, the total params will be used if provided, else carbon footprint will not be computed. For more information, see https://ecologits.ai","default":0},"qos_metric":{"anyOf":[{"$ref":"#/components/schemas/QoSMetric"},{"type":"null"}],"description":"The metric to use for the QoS policy. If not provided, no QoS policy is applied."},"qos_limit":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Qos Limit","description":"The value to use for the quality of service. Depends of the metric, the value can be a percentile, a threshold, etc."},"created":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created","description":"Time of creation, as Unix timestamp."},"updated":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated","description":"Time of last update, as Unix timestamp."}},"additionalProperties":true,"type":"object","required":["id","router_id","user_id","type","timeout","model_name"],"title":"CreateProviderResponse"},"CreateRerankBody":{"properties":{"query":{"type":"string","minLength":1,"title":"Query","description":"The search query to use for the reranking. `query` and `prompt` cannot both be provided."},"documents":{"items":{"type":"string","minLength":1},"type":"array","title":"Documents"},"model":{"type":"string","minLength":1,"title":"Model","description":"The model to use for the reranking, call `/v1/models` endpoint to get the list of available models, only `text-classification` model type is supported."},"top_n":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Top N","description":"The number of top results to return. If set to None, all results will be returned."}},"additionalProperties":true,"type":"object","required":["query","documents","model"],"title":"CreateRerankBody"},"CreateRoleBody":{"properties":{"name":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Name","description":"Name of the role.","examples":["my-role"]},"permissions":{"anyOf":[{"items":{"$ref":"#/components/schemas/PermissionType"},"type":"array"},{"type":"null"}],"title":"Permissions","description":"List of permissions."},"limits":{"anyOf":[{"items":{"$ref":"#/components/schemas/Limit"},"type":"array"},{"type":"null"}],"title":"Limits","description":"List of limits."}},"additionalProperties":true,"type":"object","title":"CreateRoleBody"},"CreateRouterBody":{"properties":{"name":{"type":"string","minLength":1,"title":"Name","description":"Name of the model router.","examples":["model-router-1"]},"type":{"$ref":"#/components/schemas/ModelType-Input","description":"Type of the model router. It will be used to identify the model router type.","examples":["text-generation"]},"aliases":{"items":{"type":"string","maxLength":64,"minLength":1},"type":"array","title":"Aliases","description":"Aliases of the model. It will be used to identify the model by users.","examples":[["model-alias","model-alias-2"]]},"load_balancing_strategy":{"$ref":"#/components/schemas/RouterLoadBalancingStrategy","description":"Routing strategy for load balancing between providers of the model. It will be used to identify the model type.","default":"shuffle"},"cost_prompt_tokens":{"type":"number","minimum":0.0,"title":"Cost Prompt Tokens","description":"Cost of a million prompt tokens (decrease user budget)","default":0.0},"cost_completion_tokens":{"type":"number","minimum":0.0,"title":"Cost Completion Tokens","description":"Cost of a million completion tokens (decrease user budget)","default":0.0}},"additionalProperties":true,"type":"object","required":["name","type"],"title":"CreateRouterBody"},"CreateSearch":{"properties":{"collection_ids":{"items":{"type":"integer","exclusiveMinimum":0.0},"type":"array","maxItems":100,"minItems":0,"title":"Collection Ids","description":"List of collections ID.","default":[]},"document_ids":{"items":{"type":"integer","exclusiveMinimum":0.0},"type":"array","maxItems":100,"minItems":0,"title":"Document Ids","description":"List of document IDs","default":[]},"metadata_filters":{"anyOf":[{"$ref":"#/components/schemas/ComparisonFilter"},{"$ref":"#/components/schemas/CompoundFilter"},{"type":"null"}],"title":"Metadata Filters","description":"Metadata filters to apply to the search."},"limit":{"type":"integer","maximum":100.0,"exclusiveMinimum":0.0,"title":"Limit","description":"Number of results to return.","default":10},"offset":{"type":"integer","minimum":0.0,"title":"Offset","description":"Offset for pagination, specifying how many results to skip from the beginning.","default":0},"method":{"$ref":"#/components/schemas/SearchMethod","description":"Search method to use.","default":"semantic"},"rff_k":{"type":"integer","maximum":16384.0,"minimum":0.0,"title":"Rff K","description":"Smoothing constant for Reciprocal Rank Fusion (RRF) algorithm in hybrid search (recommended: from 10 to 100).","default":60},"score_threshold":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Score Threshold","description":"Score of cosine similarity threshold for filtering results, only available for semantic search method.","default":0.0},"query":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Query","description":"Query related to the search."}},"additionalProperties":true,"type":"object","title":"CreateSearch"},"CreateToken":{"properties":{"name":{"type":"string","minLength":1,"title":"Name"},"user":{"type":"integer","title":"User","description":"User ID to create the token for another user (by default, the current user). Required CREATE_USER permission."},"expires":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expires","description":"Timestamp in seconds"}},"additionalProperties":true,"type":"object","required":["name","user"],"title":"CreateToken"},"CreateUserBody":{"properties":{"email":{"type":"string","maxLength":254,"minLength":1,"title":"Email","description":"The user email."},"name":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Name","description":"The user name."},"password":{"type":"string","maxLength":72,"minLength":1,"title":"Password","description":"The user password."},"role":{"type":"integer","title":"Role","description":"The role ID."},"organization":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Organization","description":"The organization ID."},"budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Budget","description":"The budget."},"expires":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expires","description":"The expiration timestamp."},"priority":{"type":"integer","minimum":0.0,"title":"Priority","description":"The user priority. Higher value means higher priority.","default":0}},"additionalProperties":true,"type":"object","required":["email","password","role"],"title":"CreateUserBody"},"Custom":{"properties":{"input":{"type":"string","title":"Input"},"name":{"type":"string","title":"Name"}},"additionalProperties":true,"type":"object","required":["input","name"],"title":"Custom","description":"The custom tool that the model called."},"Document":{"properties":{"object":{"type":"string","const":"document","title":"Object","description":"The type of the object.","default":"document"},"id":{"type":"integer","exclusiveMinimum":0.0,"title":"Id","description":"The ID of the document."},"name":{"type":"string","minLength":1,"title":"Name","description":"The name of the document."},"collection_id":{"type":"integer","exclusiveMinimum":0.0,"title":"Collection Id","description":"The ID of the collection the document belongs to."},"created":{"type":"integer","title":"Created","description":"The date of the document creation."},"chunks":{"type":"integer","minimum":0.0,"title":"Chunks","description":"The number of chunks the document has.","default":0},"size":{"type":"integer","minimum":0.0,"title":"Size","description":"The size of the document in bytes.","default":0}},"additionalProperties":true,"type":"object","required":["id","name","collection_id","created"],"title":"Document"},"DocumentResponse":{"properties":{"id":{"type":"integer","minimum":0.0,"title":"Id","description":"The ID of the document created."}},"additionalProperties":true,"type":"object","required":["id"],"title":"DocumentResponse"},"DocumentURLChunk":{"properties":{"document_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Document Name","description":"The filename of the document."},"document_url":{"type":"string","title":"Document Url","description":"The URL of the document."},"type":{"type":"string","const":"document_url","title":"Type","description":"The type of the document.","default":"document_url"}},"additionalProperties":true,"type":"object","required":["document_url"],"title":"DocumentURLChunk"},"Embedding":{"properties":{"embedding":{"items":{"type":"number"},"type":"array","title":"Embedding"},"index":{"type":"integer","title":"Index"},"object":{"type":"string","const":"embedding","title":"Object"}},"additionalProperties":true,"type":"object","required":["embedding","index","object"],"title":"Embedding","description":"Represents an embedding vector returned by embedding endpoint."},"Embeddings":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Embedding"},"type":"array","title":"Data"},"model":{"type":"string","title":"Model"},"object":{"type":"string","const":"list","title":"Object","default":"list"},"usage":{"$ref":"#/components/schemas/api__schemas__usage__Usage","description":"Usage information for the request."},"id":{"type":"string","title":"Id","description":"A unique identifier for the embedding."}},"additionalProperties":true,"type":"object","required":["data","model"],"title":"Embeddings"},"EmbeddingsRequest":{"properties":{"input":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"items":{"items":{"type":"integer"},"type":"array"},"type":"array"},{"type":"string"},{"items":{"type":"string"},"type":"array"}],"title":"Input","description":"Input text to embed, encoded as a string or array of tokens. To embed multiple inputs in a single request, pass an array of strings or array of token arrays. The input must not exceed the max input tokens for the model (call `/v1/models` endpoint to get the `max_context_length` by model) and cannot be an empty string."},"model":{"type":"string","title":"Model","description":"ID of the model to use. Call `/v1/models` endpoint to get the list of available models, only `text-embeddings-inference` model type is supported."},"dimensions":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Dimensions","description":"The number of dimensions the resulting output embeddings should have."},"encoding_format":{"$ref":"#/components/schemas/EncodingFormat","description":"The format of the output embeddings.","default":"float"}},"additionalProperties":true,"type":"object","required":["input","model"],"title":"EmbeddingsRequest"},"EncodingFormat":{"type":"string","enum":["float","base64"],"title":"EncodingFormat"},"EndpointUsage":{"type":"string","enum":["/v1/audio/transcriptions","/v1/chat/completions","/v1/embeddings","/v1/ocr","/v1/rerank","/v1/search"],"title":"EndpointUsage"},"Function":{"properties":{"arguments":{"type":"string","title":"Arguments"},"name":{"type":"string","title":"Name"}},"additionalProperties":true,"type":"object","required":["arguments","name"],"title":"Function","description":"The function that the model called."},"FunctionCall":{"properties":{"arguments":{"type":"string","title":"Arguments"},"name":{"type":"string","title":"Name"}},"additionalProperties":true,"type":"object","required":["arguments","name"],"title":"FunctionCall","description":"Deprecated and replaced by `tool_calls`.\n\nThe name and arguments of a function that should be called, as generated by the model."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HostingZone":{"type":"string","enum":["ABW","AFG","AGO","AIA","ALA","ALB","AND","ARE","ARG","ARM","ASM","ATA","ATF","ATG","AUS","AUT","AZE","BDI","BEL","BEN","BES","BFA","BGD","BGR","BHR","BHS","BIH","BLM","BLR","BLZ","BMU","BOL","BRA","BRB","BRN","BTN","BVT","BWA","CAF","CAN","CCK","CHE","CHL","CHN","CIV","CMR","COD","COG","COK","COL","COM","CPV","CRI","CUB","CUW","CXR","CYM","CYP","CZE","DEU","DJI","DMA","DNK","DOM","DZA","ECU","EGY","ERI","ESH","ESP","EST","ETH","FIN","FJI","FLK","FRA","FRO","FSM","GAB","GBR","GEO","GGY","GHA","GIB","GIN","GLP","GMB","GNB","GNQ","GRC","GRD","GRL","GTM","GUF","GUM","GUY","HKG","HMD","HND","HRV","HTI","HUN","IDN","IMN","IND","IOT","IRL","IRN","IRQ","ISL","ISR","ITA","JAM","JEY","JOR","JPN","KAZ","KEN","KGZ","KHM","KIR","KNA","KOR","KWT","LAO","LBN","LBR","LBY","LCA","LIE","LKA","LSO","LTU","LUX","LVA","MAC","MAF","MAR","MCO","MDA","MDG","MDV","MEX","MHL","MKD","MLI","MLT","MMR","MNE","MNG","MNP","MOZ","MRT","MSR","MTQ","MUS","MWI","MYS","MYT","NAM","NCL","NER","NFK","NGA","NIC","NIU","NLD","NOR","NPL","NRU","NZL","OMN","PAK","PAN","PCN","PER","PHL","PLW","PNG","POL","PRI","PRK","PRT","PRY","PSE","PYF","QAT","REU","ROU","RUS","RWA","SAU","SDN","SEN","SGP","SGS","SHN","SJM","SLB","SLE","SLV","SMR","SOM","SPM","SRB","SSD","STP","SUR","SVK","SVN","SWE","SWZ","SXM","SYC","SYR","TCA","TCD","TGO","THA","TJK","TKL","TKM","TLS","TON","TTO","TUN","TUR","TUV","TWN","TZA","UGA","UKR","UMI","URY","USA","UZB","VAT","VCT","VEN","VGB","VIR","VNM","VUT","WLF","WOR","WSM","YEM","ZAF","ZMB","ZWE"],"title":"HostingZone"},"ImageURL":{"properties":{"detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detail","description":"The detail of the image."},"url":{"type":"string","title":"Url","description":"The URL of the image."}},"additionalProperties":true,"type":"object","required":["url"],"title":"ImageURL"},"ImageURLChunk":{"properties":{"image_url":{"anyOf":[{"$ref":"#/components/schemas/ImageURL"},{"type":"string"}],"title":"Image Url","description":"The URL of the image to OCR."},"type":{"type":"string","const":"image_url","title":"Type","description":"The type of the image.","default":"image_url"}},"additionalProperties":true,"type":"object","required":["image_url"],"title":"ImageURLChunk"},"InputChunk":{"properties":{"content":{"type":"string","title":"Content","description":"The content of the chunk."},"metadata":{"anyOf":[{"additionalProperties":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"integer","maximum":1e+16,"minimum":-1e+16},{"type":"number","maximum":1e+16,"minimum":-1e+16},{"type":"boolean"}]},"propertyNames":{"maxLength":255,"minLength":1},"type":"object","maxProperties":10,"minProperties":1,"description":"Extra metadata for the source"},{"type":"null"}],"title":"Metadata","description":"Metadata of the chunk"}},"additionalProperties":true,"type":"object","required":["content"],"title":"InputChunk"},"JsonSchema":{"properties":{"name":{"type":"string","title":"Name","description":"The name of the JSON schema."},"schema_definition":{"additionalProperties":true,"type":"object","title":"Schema Definition","description":"The JSON schema definition."},"strict":{"type":"boolean","title":"Strict","description":"Whether to use strict mode.","default":false},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Optional description of the schema."}},"additionalProperties":true,"type":"object","required":["name","schema_definition"],"title":"JsonSchema"},"Key":{"properties":{"object":{"type":"string","const":"key","title":"Object","default":"key"},"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"token":{"type":"string","title":"Token"},"expires":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expires"},"created":{"type":"integer","title":"Created"}},"additionalProperties":true,"type":"object","required":["id","name","token","created"],"title":"Key"},"Keys":{"properties":{"object":{"type":"string","const":"list","title":"Object","default":"list"},"data":{"items":{"$ref":"#/components/schemas/Key"},"type":"array","title":"Data"}},"additionalProperties":true,"type":"object","required":["data"],"title":"Keys"},"Limit":{"properties":{"router_id":{"type":"integer","title":"Router Id","description":"The router ID."},"type":{"$ref":"#/components/schemas/LimitType","description":"The limit type."},"value":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Value","description":"The limit value."}},"additionalProperties":true,"type":"object","required":["router_id","type"],"title":"Limit"},"LimitType":{"type":"string","enum":["tpm","tpd","rpm","rpd"],"title":"LimitType"},"Login":{"properties":{"email":{"type":"string","maxLength":254,"minLength":1,"title":"Email","description":"The user email."},"password":{"type":"string","maxLength":72,"minLength":1,"title":"Password","description":"The user password."}},"additionalProperties":true,"type":"object","required":["email","password"],"title":"Login"},"LoginResponse":{"properties":{"id":{"type":"integer","title":"Id","description":"The Playground API key ID."},"key":{"type":"string","title":"Key","description":"The playground API key."}},"additionalProperties":true,"type":"object","required":["id","key"],"title":"LoginResponse"},"Metric":{"type":"string","enum":["ttft","latency","inflight","performance","normalized_latency"],"title":"Metric"},"MetricsUsage":{"properties":{"latency":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Latency"},"ttft":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ttft"}},"additionalProperties":true,"type":"object","title":"MetricsUsage"},"Model":{"properties":{"object":{"type":"string","const":"model","title":"Object","description":"Type of the object.","default":"model"},"id":{"type":"string","title":"Id","description":"The model identifier, which can be referenced in the API endpoints."},"type":{"anyOf":[{"$ref":"#/components/schemas/api__domain__model__entities__ModelType"},{"type":"null"}],"description":"The type of the model, which can be used to identify the model type.","examples":["text-generation"]},"aliases":{"items":{"type":"string"},"type":"array","title":"Aliases","description":"Aliases of the model. It will be used to identify the model by users.","examples":[["model-alias","model-alias-2"]]},"created":{"type":"integer","title":"Created","description":"Time of creation, as Unix timestamp."},"owned_by":{"type":"string","title":"Owned By","description":"The organization that owns the model."},"max_context_length":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Context Length","description":"Maximum amount of tokens a context could contains. Makes sure it is the same for all models."},"costs":{"$ref":"#/components/schemas/ModelCosts","description":"Costs of the model."}},"additionalProperties":true,"type":"object","required":["id","created","owned_by"],"title":"Model"},"ModelCosts":{"properties":{"prompt_tokens":{"type":"number","minimum":0.0,"title":"Prompt Tokens","description":"Cost of a million prompt tokens (decrease user budget)","default":0.0},"completion_tokens":{"type":"number","minimum":0.0,"title":"Completion Tokens","description":"Cost of a million completion tokens (decrease user budget)","default":0.0}},"additionalProperties":true,"type":"object","title":"ModelCosts"},"ModelType-Input":{"type":"string","enum":["automatic-speech-recognition","image-text-to-text","image-to-text","text-embeddings-inference","text-generation","text-classification"],"title":"ModelType"},"ModelsResponse":{"properties":{"object":{"type":"string","const":"list","title":"Object","description":"Type of the object.","default":"list"},"data":{"items":{"$ref":"#/components/schemas/Model"},"type":"array","title":"Data","description":"List of models."}},"additionalProperties":true,"type":"object","required":["data"],"title":"ModelsResponse"},"OCR":{"properties":{"document_annotation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Document Annotation","description":"Formatted response in the request_format if provided in json str"},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id","description":"The ID of the OCR request."},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"The model used to generate the OCR."},"pages":{"items":{"$ref":"#/components/schemas/OCRPageObject"},"type":"array","title":"Pages","description":"List of OCR info for pages."},"usage":{"anyOf":[{"$ref":"#/components/schemas/api__schemas__usage__Usage"},{"type":"null"}],"description":"Usage information for the request."},"usage_info":{"anyOf":[{"$ref":"#/components/schemas/OCRUsage"},{"type":"null"}],"description":"Usage information for the request."}},"additionalProperties":true,"type":"object","required":["pages"],"title":"OCR"},"OCRImageObject":{"properties":{"bottom_right_x":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Bottom Right X","description":"X coordinate of bottom-right corner of the extracted image"},"bottom_right_y":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Bottom Right Y","description":"Y coordinate of bottom-right corner of the extracted image"},"id":{"type":"string","title":"Id","description":"Image ID for extracted image in a page"},"image_annotation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Annotation","description":"Annotation of the extracted image in json str"},"image_base64":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Base64","description":"Base64 string of the extracted image"},"top_left_x":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Top Left X","description":"X coordinate of top-left corner of the extracted image"},"top_left_y":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Top Left Y","description":"Y coordinate of top-left corner of the extracted image"}},"additionalProperties":true,"type":"object","required":["id"],"title":"OCRImageObject"},"OCRPageDimensions":{"properties":{"dpi":{"type":"integer","title":"Dpi","description":"Dots per inch of the page-image"},"height":{"type":"integer","title":"Height","description":"Height of the image in pixels"},"width":{"type":"integer","title":"Width","description":"Width of the image in pixels"}},"additionalProperties":true,"type":"object","required":["dpi","height","width"],"title":"OCRPageDimensions"},"OCRPageObject":{"properties":{"dimensions":{"anyOf":[{"$ref":"#/components/schemas/OCRPageDimensions"},{"type":"null"}],"description":"The dimensions of the PDF Page's screenshot image"},"images":{"items":{"$ref":"#/components/schemas/OCRImageObject"},"type":"array","title":"Images","description":"List of all extracted images in the page."},"index":{"type":"integer","title":"Index","description":"The page index in a pdf document starting from 0"},"markdown":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Markdown","description":"The markdown string response of the page"}},"additionalProperties":true,"type":"object","required":["images","index"],"title":"OCRPageObject"},"OCRUsage":{"properties":{"doc_size_bytes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Doc Size Bytes","description":"Document size in bytes"},"pages_processed":{"type":"integer","title":"Pages Processed","description":"Number of pages processed"}},"additionalProperties":true,"type":"object","required":["pages_processed"],"title":"OCRUsage"},"Organization":{"properties":{"object":{"type":"string","const":"organization","title":"Object","default":"organization"},"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"users":{"type":"integer","title":"Users"},"created":{"type":"integer","title":"Created"},"updated":{"type":"integer","title":"Updated"}},"additionalProperties":true,"type":"object","required":["id","name","users"],"title":"Organization"},"OrganizationRequest":{"properties":{"name":{"type":"string","minLength":1,"title":"Name","description":"The organization name."}},"additionalProperties":true,"type":"object","required":["name"],"title":"OrganizationRequest"},"OrganizationUpdateRequest":{"properties":{"name":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Name","description":"The new organization name."}},"additionalProperties":true,"type":"object","title":"OrganizationUpdateRequest"},"Organizations":{"properties":{"object":{"type":"string","const":"list","title":"Object","default":"list"},"data":{"items":{"$ref":"#/components/schemas/Organization"},"type":"array","title":"Data"}},"additionalProperties":true,"type":"object","required":["data"],"title":"Organizations"},"OrganizationsResponse":{"properties":{"id":{"type":"integer","title":"Id"}},"additionalProperties":true,"type":"object","required":["id"],"title":"OrganizationsResponse"},"ParsedDocument":{"properties":{"object":{"type":"string","const":"list","title":"Object","default":"list"},"data":{"items":{"$ref":"#/components/schemas/ParsedDocumentPage"},"type":"array","title":"Data"},"usage":{"$ref":"#/components/schemas/api__schemas__usage__Usage","description":"Usage information for the request."}},"additionalProperties":true,"type":"object","required":["data"],"title":"ParsedDocument"},"ParsedDocumentMetadata":{"properties":{"document_name":{"type":"string","title":"Document Name"},"page":{"type":"integer","title":"Page","default":0}},"additionalProperties":true,"type":"object","required":["document_name"],"title":"ParsedDocumentMetadata"},"ParsedDocumentPage":{"properties":{"object":{"type":"string","const":"documentPage","title":"Object","default":"documentPage"},"content":{"type":"string","title":"Content"},"images":{"additionalProperties":{"type":"string"},"type":"object","title":"Images"},"metadata":{"$ref":"#/components/schemas/ParsedDocumentMetadata"}},"additionalProperties":true,"type":"object","required":["content","images","metadata"],"title":"ParsedDocumentPage"},"PermissionType":{"type":"string","enum":["admin","create_public_collection","read_metric","provide_models"],"title":"PermissionType"},"PresetSeparators":{"type":"string","enum":["cpp","go","java","kotlin","js","ts","php","proto","python","r","rst","ruby","rust","scala","swift","markdown","latex","html","sol","csharp","cobol","c","lua","perl","haskell","elixir","powershell","visualbasic6"],"title":"PresetSeparators"},"PromptTokensDetails":{"properties":{"audio_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Audio Tokens"},"cached_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cached Tokens"}},"additionalProperties":true,"type":"object","title":"PromptTokensDetails","description":"Breakdown of tokens used in the prompt."},"ProviderResponse":{"properties":{"object":{"type":"string","const":"provider","title":"Object","description":"Type of the object.","default":"provider"},"id":{"type":"integer","title":"Id","description":"provider ID."},"router_id":{"type":"integer","title":"Router Id","description":"ID of the router that owns the provider."},"user_id":{"type":"integer","title":"User Id","description":"ID of the user that owns the provider."},"type":{"$ref":"#/components/schemas/ProviderType","description":"Provider type."},"url":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Url","description":"provider API url. The url must only contain the domain name (without `/v1` suffix for example)."},"timeout":{"type":"integer","title":"Timeout","description":"Timeout for the provider requests, after user receive an 500 error (model is too busy)."},"model_name":{"type":"string","minLength":1,"title":"Model Name","description":"Model name from the model provider."},"model_hosting_zone":{"$ref":"#/components/schemas/HostingZone","description":"Model hosting zone using ISO 3166-1 alpha-3 code format (e.g., `WOR` for World, `FRA` for France, `USA` for United States). This determines the electricity mix used for carbon intensity calculations. For more information, see https://ecologits.ai","default":"WOR","examples":["WOR"]},"model_total_params":{"type":"integer","minimum":0.0,"title":"Model Total Params","description":"Total params of the model in billions of parameters for carbon footprint computation. If not provided, the active params will be used if provided, else carbon footprint will not be computed. For more information, see https://ecologits.ai","default":0},"model_active_params":{"type":"integer","minimum":0.0,"title":"Model Active Params","description":"Active params of the model in billions of parameters for carbon footprint computation. If not provided, the total params will be used if provided, else carbon footprint will not be computed. For more information, see https://ecologits.ai","default":0},"qos_metric":{"anyOf":[{"$ref":"#/components/schemas/QoSMetric"},{"type":"null"}],"description":"The metric to use for the QoS policy. If not provided, no QoS policy is applied."},"qos_limit":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Qos Limit","description":"The value to use for the quality of service. Depends of the metric, the value can be a percentile, a threshold, etc."},"created":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created","description":"Time of creation, as Unix timestamp."},"updated":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated","description":"Time of last update, as Unix timestamp."}},"additionalProperties":true,"type":"object","required":["id","router_id","user_id","type","timeout","model_name","qos_metric"],"title":"ProviderResponse"},"ProviderSortField":{"type":"string","enum":["id","model_name","created"],"title":"ProviderSortField"},"ProviderType":{"type":"string","enum":["albert","openai","mistral","tei","vllm"],"title":"ProviderType"},"ProvidersResponse":{"properties":{"object":{"type":"string","const":"list","title":"Object","description":"Type of the object.","default":"list"},"total":{"type":"integer","title":"Total","description":"Total number of providers."},"offset":{"type":"integer","title":"Offset","description":"Offset of the providers list."},"limit":{"type":"integer","title":"Limit","description":"Limit of the providers list."},"data":{"items":{"$ref":"#/components/schemas/ProviderResponse"},"type":"array","title":"Data","description":"List of providers."}},"additionalProperties":true,"type":"object","required":["total","offset","limit","data"],"title":"ProvidersResponse"},"QoSMetric":{"type":"string","enum":["ttft","latency","inflight","performance"],"title":"QoSMetric"},"RerankResponse":{"properties":{"object":{"type":"string","const":"list","title":"Object","default":"list"},"id":{"type":"string","title":"Id","description":"A unique identifier for the request."},"results":{"items":{"$ref":"#/components/schemas/RerankResult"},"type":"array","title":"Results","description":"The list of reranked texts."},"model":{"type":"string","title":"Model","description":"The model used to generate the reranking."},"usage":{"$ref":"#/components/schemas/api__domain__usage__entities__Usage","description":"Usage information for the request."}},"additionalProperties":true,"type":"object","required":["id","results","model"],"title":"RerankResponse"},"RerankResult":{"properties":{"relevance_score":{"type":"number","title":"Relevance Score","description":"The relevance score of the reranked text."},"index":{"type":"integer","title":"Index","description":"The index of the reranked text."}},"additionalProperties":true,"type":"object","required":["relevance_score","index"],"title":"RerankResult"},"ResponseFormat":{"properties":{"type":{"type":"string","enum":["text","json_object","json_schema"],"title":"Type","description":"Specify the format that the model must output. By default it will use `{ \"type\": \"text\" }`. Setting to `{ \"type\": \"json_object\" }` enables JSON mode, which guarantees the message the model generates is in JSON. When using JSON mode you MUST also instruct the model to produce JSON yourself with a system or a user message. Setting to `{ \"type\": \"json_schema\" }` enables JSON schema mode, which guarantees the message the model generates is in JSON and follows the schema you provide.","default":"text"},"json_schema":{"anyOf":[{"$ref":"#/components/schemas/JsonSchema"},{"type":"null"}],"description":"The JSON schema definition. Required when type is 'json_schema'."}},"additionalProperties":true,"type":"object","title":"ResponseFormat"},"RoleResponse":{"properties":{"object":{"type":"string","const":"role","title":"Object","description":"Type of the object.","default":"role"},"id":{"type":"integer","title":"Id","description":"ID of the role."},"name":{"type":"string","title":"Name","description":"Name of the role."},"permissions":{"items":{"$ref":"#/components/schemas/PermissionType"},"type":"array","title":"Permissions","description":"List of permissions."},"limits":{"items":{"$ref":"#/components/schemas/Limit"},"type":"array","title":"Limits","description":"List of limits."},"users":{"type":"integer","title":"Users","description":"Number of users assigned to the role."},"created":{"type":"integer","title":"Created","description":"Time of creation, as Unix timestamp."},"updated":{"type":"integer","title":"Updated","description":"Time of last update, as Unix timestamp."}},"additionalProperties":true,"type":"object","required":["id","name","permissions","limits","users","created","updated"],"title":"RoleResponse"},"RolesResponse":{"properties":{"object":{"type":"string","const":"list","title":"Object","description":"Type of the object.","default":"list"},"total":{"type":"integer","title":"Total","description":"Total number of roles."},"offset":{"type":"integer","title":"Offset","description":"Offset of the roles list."},"limit":{"type":"integer","title":"Limit","description":"Limit of the roles list."},"data":{"items":{"$ref":"#/components/schemas/RoleResponse"},"type":"array","title":"Data","description":"List of roles."}},"additionalProperties":true,"type":"object","required":["total","offset","limit","data"],"title":"RolesResponse"},"RouterLoadBalancingStrategy":{"type":"string","enum":["shuffle","least_busy"],"title":"RouterLoadBalancingStrategy"},"RouterResponse":{"properties":{"object":{"type":"string","const":"router","title":"Object","description":"Type of the object.","default":"router"},"id":{"type":"integer","title":"Id","description":"ID of the router."},"name":{"type":"string","title":"Name","description":"Name of the router."},"user_id":{"type":"integer","title":"User Id","description":"ID of the user that owns the router."},"type":{"$ref":"#/components/schemas/api__schemas__models__ModelType","description":"Type of the model router. It will be used to identify the model router type.","examples":["text-generation"]},"aliases":{"items":{"type":"string","maxLength":64,"minLength":1},"type":"array","title":"Aliases","description":"Aliases of the model. It will be used to identify the model by users.","examples":[["model-alias","model-alias-2"]]},"load_balancing_strategy":{"$ref":"#/components/schemas/RouterLoadBalancingStrategy","description":"Routing strategy for load balancing between providers of the model. It will be used to identify the model type.","examples":["least_busy"]},"vector_size":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Vector Size","description":"Dimension of the vectors, if the models are embeddings. Make sure it is the same for all models."},"max_context_length":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Context Length","description":"Maximum amount of tokens a context could contains. Make sure it is the same for all models."},"cost_prompt_tokens":{"type":"number","title":"Cost Prompt Tokens","description":"Cost of a million prompt tokens (decrease user budget)"},"cost_completion_tokens":{"type":"number","title":"Cost Completion Tokens","description":"Cost of a million completion tokens (decrease user budget)"},"providers":{"type":"integer","title":"Providers","description":"Number of providers in the router.","default":0},"created":{"type":"integer","title":"Created","description":"Time of creation, as Unix timestamp."},"updated":{"type":"integer","title":"Updated","description":"Time of last update, as Unix timestamp."}},"additionalProperties":true,"type":"object","required":["id","name","user_id","type","aliases","load_balancing_strategy","cost_prompt_tokens","cost_completion_tokens","created","updated"],"title":"RouterResponse"},"RoutersResponse":{"properties":{"object":{"type":"string","const":"list","title":"Object","description":"Type of the object.","default":"list"},"total":{"type":"integer","title":"Total","description":"Total number of routers."},"offset":{"type":"integer","title":"Offset","description":"Offset of the routers list."},"limit":{"type":"integer","title":"Limit","description":"Limit of the routers list."},"data":{"items":{"$ref":"#/components/schemas/RouterResponse"},"type":"array","title":"Data","description":"List of routers."}},"additionalProperties":true,"type":"object","required":["total","offset","limit","data"],"title":"RoutersResponse"},"Search":{"properties":{"method":{"$ref":"#/components/schemas/SearchMethod","description":"Search method used."},"score":{"type":"number","title":"Score","description":"Score of the search result."},"chunk":{"$ref":"#/components/schemas/Chunk","description":"Chunk of the search result."}},"additionalProperties":true,"type":"object","required":["method","score","chunk"],"title":"Search"},"SearchArgs":{"properties":{"collection_ids":{"items":{"type":"integer","exclusiveMinimum":0.0},"type":"array","maxItems":100,"minItems":0,"title":"Collection Ids","description":"List of collections ID.","default":[]},"document_ids":{"items":{"type":"integer","exclusiveMinimum":0.0},"type":"array","maxItems":100,"minItems":0,"title":"Document Ids","description":"List of document IDs","default":[]},"metadata_filters":{"anyOf":[{"$ref":"#/components/schemas/ComparisonFilter"},{"$ref":"#/components/schemas/CompoundFilter"},{"type":"null"}],"title":"Metadata Filters","description":"Metadata filters to apply to the search."},"limit":{"type":"integer","maximum":100.0,"exclusiveMinimum":0.0,"title":"Limit","description":"Number of results to return.","default":10},"offset":{"type":"integer","minimum":0.0,"title":"Offset","description":"Offset for pagination, specifying how many results to skip from the beginning.","default":0},"method":{"$ref":"#/components/schemas/SearchMethod","description":"Search method to use.","default":"semantic"},"rff_k":{"type":"integer","maximum":16384.0,"minimum":0.0,"title":"Rff K","description":"Smoothing constant for Reciprocal Rank Fusion (RRF) algorithm in hybrid search (recommended: from 10 to 100).","default":60},"score_threshold":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Score Threshold","description":"Score of cosine similarity threshold for filtering results, only available for semantic search method.","default":0.0}},"additionalProperties":true,"type":"object","title":"SearchArgs"},"SearchMethod":{"type":"string","enum":["hybrid","semantic","lexical"],"title":"SearchMethod"},"SearchTool":{"properties":{"collection_ids":{"items":{"type":"integer","exclusiveMinimum":0.0},"type":"array","maxItems":100,"minItems":0,"title":"Collection Ids","description":"List of collections ID.","default":[]},"document_ids":{"items":{"type":"integer","exclusiveMinimum":0.0},"type":"array","maxItems":100,"minItems":0,"title":"Document Ids","description":"List of document IDs","default":[]},"metadata_filters":{"anyOf":[{"$ref":"#/components/schemas/ComparisonFilter"},{"$ref":"#/components/schemas/CompoundFilter"},{"type":"null"}],"title":"Metadata Filters","description":"Metadata filters to apply to the search."},"limit":{"type":"integer","maximum":100.0,"exclusiveMinimum":0.0,"title":"Limit","description":"Number of results to return.","default":10},"offset":{"type":"integer","minimum":0.0,"title":"Offset","description":"Offset for pagination, specifying how many results to skip from the beginning.","default":0},"method":{"$ref":"#/components/schemas/SearchMethod","description":"Search method to use.","default":"semantic"},"rff_k":{"type":"integer","maximum":16384.0,"minimum":0.0,"title":"Rff K","description":"Smoothing constant for Reciprocal Rank Fusion (RRF) algorithm in hybrid search (recommended: from 10 to 100).","default":60},"score_threshold":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Score Threshold","description":"Score of cosine similarity threshold for filtering results, only available for semantic search method.","default":0.0},"type":{"type":"string","const":"search","title":"Type","description":"The type of tool to call.","default":"search"}},"additionalProperties":true,"type":"object","title":"SearchTool","description":"Built-in search tool available in `tools`.\n\nUse `type=\"search\"` to trigger retrieval over indexed documents.\nAll additional parameters are inherited from `SearchArgs`."},"Searches":{"properties":{"object":{"type":"string","const":"list","title":"Object","description":"The type of the object.","default":"list"},"data":{"items":{"$ref":"#/components/schemas/Search"},"type":"array","title":"Data","description":"List of search results."},"usage":{"$ref":"#/components/schemas/api__schemas__usage__Usage","description":"Usage information for the request."}},"additionalProperties":true,"type":"object","required":["data"],"title":"Searches"},"Segment":{"properties":{"id":{"type":"integer","title":"Id","description":"A unique identifier for the segment."},"type":{"type":"string","title":"Type","description":"The type of the segment.","default":"transcript.text.segment"},"text":{"type":"string","title":"Text","description":"The segment text."},"start":{"type":"number","title":"Start","description":"Start time of the segment in seconds."},"end":{"type":"number","title":"End","description":"End time of the segment in seconds."},"speaker":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Speaker","description":"Speaker label assigned by diarization, if available."}},"additionalProperties":true,"type":"object","required":["id","text","start","end"],"title":"Segment"},"SortField":{"type":"string","enum":["id","name","created"],"title":"SortField"},"SortOrder":{"type":"string","enum":["asc","desc"],"title":"SortOrder"},"Token":{"properties":{"object":{"type":"string","const":"token","title":"Object","default":"token"},"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"token":{"type":"string","title":"Token"},"user":{"type":"integer","title":"User"},"expires":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expires"},"created":{"type":"integer","title":"Created"}},"additionalProperties":true,"type":"object","required":["id","name","token","user","created"],"title":"Token"},"Tokens":{"properties":{"object":{"type":"string","const":"list","title":"Object","default":"list"},"data":{"items":{"$ref":"#/components/schemas/Token"},"type":"array","title":"Data"}},"additionalProperties":true,"type":"object","required":["data"],"title":"Tokens"},"TokensResponse":{"properties":{"id":{"type":"integer","title":"Id"},"token":{"type":"string","title":"Token"}},"additionalProperties":true,"type":"object","required":["id","token"],"title":"TokensResponse"},"TopLogprob":{"properties":{"token":{"type":"string","title":"Token"},"bytes":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Bytes"},"logprob":{"type":"number","title":"Logprob"}},"additionalProperties":true,"type":"object","required":["token","logprob"],"title":"TopLogprob"},"UpdateProviderBody":{"properties":{"router_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Router Id","description":"The ID of the new router to assign to the provider."},"timeout":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Timeout","description":"Timeout for the model provider requests, after user receive an 500 error (model is too busy)."},"model_hosting_zone":{"anyOf":[{"$ref":"#/components/schemas/HostingZone"},{"type":"null"}],"description":"Model hosting zone using ISO 3166-1 alpha-3 code format (e.g., `WOR` for World, `FRA` for France, `USA` for United States). This determines the electricity mix used for carbon intensity calculations. For more information, see https://ecologits.ai"},"model_total_params":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Model Total Params","description":"Total params of the model in billions of parameters for carbon footprint computation. If not provided, the active params will be used if provided, else carbon footprint will not be computed. For more information, see https://ecologits.ai"},"model_active_params":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Model Active Params","description":"Active params of the model in billions of parameters for carbon footprint computation. If not provided, the total params will be used if provided, else carbon footprint will not be computed. For more information, see https://ecologits.ai"},"qos_metric":{"anyOf":[{"$ref":"#/components/schemas/QoSMetric"},{"type":"null"}],"description":"The metric to use for the quality of service policy. If not provided, no QoS policy is applied."},"qos_limit":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Qos Limit","description":"The value to use for the quality of service. Depends of the metric, the value can be a percentile, a threshold, etc."}},"additionalProperties":true,"type":"object","title":"UpdateProviderBody"},"UpdateRouterBody":{"properties":{"name":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Name","description":"Name of the model router.","examples":["model-router-1"]},"type":{"anyOf":[{"$ref":"#/components/schemas/ModelType-Input"},{"type":"null"}],"description":"Type of the model router. It will be used to identify the model router type.","examples":["text-generation"]},"aliases":{"anyOf":[{"items":{"type":"string","maxLength":64,"minLength":1},"type":"array"},{"type":"null"}],"title":"Aliases","description":"Aliases of the model. It will be used to identify the model by users.","examples":[["model-alias","model-alias-2"]]},"load_balancing_strategy":{"anyOf":[{"$ref":"#/components/schemas/RouterLoadBalancingStrategy"},{"type":"null"}],"description":"Routing strategy for load balancing between providers of the model. It will be used to identify the model type.","examples":["least_busy"]},"cost_prompt_tokens":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Cost Prompt Tokens","description":"Cost of a million prompt tokens (decrease user budget)"},"cost_completion_tokens":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Cost Completion Tokens","description":"Cost of a million completion tokens (decrease user budget)"}},"additionalProperties":true,"type":"object","title":"UpdateRouterBody"},"UpdateUserInfo":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"The user name."},"email":{"anyOf":[{"type":"string","maxLength":254},{"type":"null"}],"title":"Email","description":"The user email."},"current_password":{"anyOf":[{"type":"string","maxLength":72},{"type":"null"}],"title":"Current Password","description":"The current user password."},"password":{"anyOf":[{"type":"string","maxLength":72},{"type":"null"}],"title":"Password","description":"The new user password. If None, the user password is not changed."}},"additionalProperties":true,"type":"object","title":"UpdateUserInfo"},"UsageDetail":{"properties":{"prompt_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Prompt Tokens","description":"Number of prompt tokens (e.g. input tokens)."},"completion_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Completion Tokens","description":"Number of completion tokens (e.g. output tokens)."},"total_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Tokens","description":"Total number of tokens (e.g. input and output tokens)."},"cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cost","description":"Total cost of the request."},"impacts":{"$ref":"#/components/schemas/api__schemas__usage__EnvironmentalImpacts"},"metrics":{"$ref":"#/components/schemas/MetricsUsage"}},"additionalProperties":true,"type":"object","title":"UsageDetail"},"Usages":{"properties":{"object":{"type":"string","const":"list","title":"Object","description":"Object type.","default":"list"},"data":{"items":{"$ref":"#/components/schemas/api__schemas__me__usage__Usage"},"type":"array","title":"Data","description":"List of usages."}},"additionalProperties":true,"type":"object","required":["data"],"title":"Usages"},"UserInfo":{"properties":{"object":{"type":"string","const":"userInfo","title":"Object","description":"The user info object type.","default":"userInfo"},"id":{"type":"integer","title":"Id","description":"The user ID."},"email":{"type":"string","title":"Email","description":"The user email."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"The user name."},"organization":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Organization","description":"The user organization ID."},"budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Budget","description":"The user budget. If None, the user has unlimited budget."},"permissions":{"items":{"$ref":"#/components/schemas/PermissionType"},"type":"array","title":"Permissions","description":"The user permissions."},"limits":{"items":{"$ref":"#/components/schemas/Limit"},"type":"array","title":"Limits","description":"The user rate limits."},"expires":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expires","description":"The user expiration timestamp. If None, the user will never expire."},"priority":{"type":"integer","title":"Priority","description":"The user priority (higher = higher priority). This value influences scheduling/queue priority for non-streaming model invocations.","default":0},"created":{"type":"integer","title":"Created","description":"The user creation timestamp."},"updated":{"type":"integer","title":"Updated","description":"The user update timestamp."}},"additionalProperties":true,"type":"object","required":["id","email","permissions","limits","created","updated"],"title":"UserInfo"},"UserResponse":{"properties":{"object":{"type":"string","const":"user","title":"Object","description":"Type of the object.","default":"user"},"id":{"type":"integer","title":"Id","description":"ID of the user."},"email":{"type":"string","title":"Email","description":"Email of the user."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Name of the user."},"sub":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sub","description":"Subject identifier for SSO."},"iss":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Iss","description":"Issuer identifier for SSO."},"role":{"type":"integer","title":"Role","description":"ID of the role assigned to the user."},"organization":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Organization","description":"ID of the organization the user belongs to."},"budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Budget","description":"Budget allocated to the user."},"expires":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expires","description":"Expiration time of the user, as Unix timestamp."},"created":{"type":"integer","title":"Created","description":"Time of creation, as Unix timestamp."},"updated":{"type":"integer","title":"Updated","description":"Time of last update, as Unix timestamp."},"priority":{"type":"integer","title":"Priority","description":"Priority of the user. Higher value means higher priority."}},"additionalProperties":true,"type":"object","required":["id","email","role","created","updated","priority"],"title":"UserResponse"},"UserSortField":{"type":"string","enum":["id","email","created","updated"],"title":"UserSortField"},"UserUpdateRequest":{"properties":{"email":{"anyOf":[{"type":"string","maxLength":254,"minLength":1},{"type":"null"}],"title":"Email","description":"The new user email. If None, the user email is not changed."},"name":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Name","description":"The new user name. If None, the user name is not changed."},"current_password":{"anyOf":[{"type":"string","maxLength":72,"minLength":1},{"type":"null"}],"title":"Current Password","description":"The current user password."},"password":{"anyOf":[{"type":"string","maxLength":72,"minLength":1},{"type":"null"}],"title":"Password","description":"The new user password. If None, the user password is not changed."},"role":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Role","description":"The new role ID. If None, the user role is not changed."},"organization":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Organization","description":"The new organization ID. If None, the user will be removed from the organization if he was in one."},"budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Budget","description":"The new budget. If None, the user will have no budget."},"expires":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expires","description":"The new expiration timestamp. If None, the user will never expire."},"priority":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Priority","description":"The new user priority. Higher value means higher priority. If None, unchanged."}},"additionalProperties":true,"type":"object","title":"UserUpdateRequest"},"UsersResponse":{"properties":{"object":{"type":"string","const":"list","title":"Object","description":"Type of the object.","default":"list"},"total":{"type":"integer","title":"Total","description":"Total number of users matching the query."},"offset":{"type":"integer","title":"Offset","description":"Number of users skipped."},"limit":{"type":"integer","title":"Limit","description":"Maximum number of users returned."},"data":{"items":{"$ref":"#/components/schemas/UserResponse"},"type":"array","title":"Data","description":"List of users."}},"additionalProperties":true,"type":"object","required":["total","offset","limit","data"],"title":"UsersResponse"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"api__domain__model__entities__ModelType":{"type":"string","enum":["automatic-speech-recognition","image-text-to-text","image-to-text","text-classification","text-embeddings-inference","text-generation"],"title":"ModelType"},"api__domain__usage__entities__EnvironmentalImpacts":{"properties":{"kWh":{"type":"number","title":"Kwh","default":0.0},"kgCO2eq":{"type":"number","title":"Kgco2Eq","default":0.0}},"additionalProperties":true,"type":"object","title":"EnvironmentalImpacts"},"api__domain__usage__entities__Usage":{"properties":{"prompt_tokens":{"type":"integer","title":"Prompt Tokens","default":0},"completion_tokens":{"type":"integer","title":"Completion Tokens","default":0},"total_tokens":{"type":"integer","title":"Total Tokens","default":0},"cost":{"type":"number","title":"Cost","default":0.0},"impacts":{"$ref":"#/components/schemas/api__domain__usage__entities__EnvironmentalImpacts","default":{"kWh":0.0,"kgCO2eq":0.0}}},"additionalProperties":true,"type":"object","title":"Usage"},"api__infrastructure__fastapi__documentation__HTTPExceptionModel":{"properties":{"status_code":{"type":"integer","title":"Status Code"},"detail":{"type":"string","title":"Detail"},"headers":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Headers"}},"type":"object","required":["status_code","detail"],"title":"HTTPExceptionModel"},"api__schemas__exception__HTTPExceptionModel":{"properties":{"status_code":{"type":"integer","maximum":599.0,"minimum":100.0,"title":"Status Code","description":"HTTP status code to send to the client."},"detail":{"title":"Detail","description":"Any data to be sent to the client in the `detail` key of the JSON response."},"headers":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Headers","description":"Any headers to send to the client in the response."}},"type":"object","required":["status_code","detail","headers"],"title":"HTTPExceptionModel"},"api__schemas__me__usage__Usage":{"properties":{"object":{"type":"string","const":"me.usage","title":"Object","description":"Object type.","default":"me.usage"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"Model used for the request."},"key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key","description":"Key used for the request."},"endpoint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Endpoint","description":"Endpoint used for the request."},"method":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Method","description":"Method used for the request."},"status":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Status","description":"Status code of the response."},"usage":{"$ref":"#/components/schemas/UsageDetail"},"created":{"type":"integer","title":"Created","description":"Timestamp in seconds"}},"additionalProperties":true,"type":"object","required":["created"],"title":"Usage"},"api__schemas__models__ModelType":{"type":"string","enum":["automatic-speech-recognition","image-text-to-text","image-to-text","text-embeddings-inference","text-generation","text-classification"],"title":"ModelType"},"api__schemas__usage__EnvironmentalImpacts":{"properties":{"kWh":{"type":"number","title":"Kwh","description":"Carbon footprint in kWh.","default":0.0},"kgCO2eq":{"type":"number","title":"Kgco2Eq","description":"Carbon footprint in kgCO2eq (global warming potential).","default":0.0}},"additionalProperties":true,"type":"object","title":"EnvironmentalImpacts"},"api__schemas__usage__Usage":{"properties":{"prompt_tokens":{"type":"integer","title":"Prompt Tokens","description":"Number of prompt tokens (e.g. input tokens).","default":0},"completion_tokens":{"type":"integer","title":"Completion Tokens","description":"Number of completion tokens (e.g. output tokens).","default":0},"total_tokens":{"type":"integer","title":"Total Tokens","description":"Total number of tokens (e.g. input and output tokens).","default":0},"cost":{"type":"number","title":"Cost","description":"Total cost of the request.","default":0.0},"carbon":{"$ref":"#/components/schemas/CarbonFootprintUsage","deprecated":true},"impacts":{"$ref":"#/components/schemas/api__schemas__usage__EnvironmentalImpacts"},"requests":{"type":"integer","title":"Requests","description":"Number of model requests.","default":0}},"additionalProperties":true,"type":"object","title":"Usage"},"openai__types__chat__chat_completion__Choice":{"properties":{"finish_reason":{"type":"string","enum":["stop","length","tool_calls","content_filter","function_call"],"title":"Finish Reason"},"index":{"type":"integer","title":"Index"},"logprobs":{"anyOf":[{"$ref":"#/components/schemas/ChoiceLogprobs"},{"type":"null"}]},"message":{"$ref":"#/components/schemas/ChatCompletionMessage"}},"additionalProperties":true,"type":"object","required":["finish_reason","index","message"],"title":"Choice"},"openai__types__chat__chat_completion_chunk__Choice":{"properties":{"delta":{"$ref":"#/components/schemas/ChoiceDelta"},"finish_reason":{"anyOf":[{"type":"string","enum":["stop","length","tool_calls","content_filter","function_call"]},{"type":"null"}],"title":"Finish Reason"},"index":{"type":"integer","title":"Index"},"logprobs":{"anyOf":[{"$ref":"#/components/schemas/ChoiceLogprobs"},{"type":"null"}]}},"additionalProperties":true,"type":"object","required":["delta","index"],"title":"Choice"}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}}} \ No newline at end of file +{"openapi":"3.1.0","info":{"title":"OpenGateLLM","summary":"OpenGateLLM connect to your models. You can configuration this swagger UI in the configuration file, like hide routes or change the title.","description":"[See documentation](https://github.com/etalab-ia/opengatellm/blob/main/README.md)","license":{"name":"MIT Licence","identifier":"MIT","url":"https://raw.githubusercontent.com/etalab-ia/opengatellm/refs/heads/main/LICENSE"},"version":"0.4.9"},"paths":{"/v1/admin/keys":{"post":{"tags":["Admin"],"summary":"Create Key","description":"Create a new key for a user.","operationId":"create_key_v1_admin_keys_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateKeyBody","description":"The key creation request."}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__schemas__admin__keys__CreateKeyResponse"}}}},"409":{"description":"Key {name} already exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"403":{"description":"User has no admin rights.
Your account has expired. Please contact support to renew your account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"404":{"description":"User {user_id} not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"401":{"description":"Invalid authentication scheme.
Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/admin/providers":{"post":{"tags":["Admin"],"summary":"Create Provider","operationId":"create_provider_v1_admin_providers_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProviderBody"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProviderResponse"}}}},"403":{"description":"Inconsistent max context length for {model_name}. Expected: {expected_length}. Actual: {actual_length}
Inconsistent vector size for {model_name}. Expected: {expected_size}. Actual: {actual_size}
User has no admin rights.
Your account has expired. Please contact support to renew your account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"400":{"description":"Invalid model provider type {input_type} for {expected_type} router.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"424":{"description":"Model provider {name} not reachable ({status_code}): {detail}","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"409":{"description":"Model provider {model_name} for url {url} already exists for router {router_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"404":{"description":"Model router {router_id} not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"401":{"description":"Invalid authentication scheme.
Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Admin"],"summary":"Get Providers","operationId":"get_providers_v1_admin_providers_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"router_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter providers by router ID.","title":"Router Id"},"description":"Filter providers by router ID."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Number of providers to skip.","default":0,"title":"Offset"},"description":"Number of providers to skip."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum number of providers to return.","default":10,"title":"Limit"},"description":"Maximum number of providers to return."},{"name":"sort_by","in":"query","required":false,"schema":{"$ref":"#/components/schemas/ProviderSortField","description":"Field to sort by.","default":"id"},"description":"Field to sort by."},{"name":"sort_order","in":"query","required":false,"schema":{"$ref":"#/components/schemas/SortOrder","description":"Sort order.","default":"asc"},"description":"Sort order."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProvidersResponse"}}}},"403":{"description":"User has no admin rights.
Your account has expired. Please contact support to renew your account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"401":{"description":"Invalid authentication scheme.
Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/providers/{provider_id}":{"delete":{"tags":["Admin"],"summary":"Delete Provider","operationId":"delete_provider_v1_admin_providers__provider_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"provider_id","in":"path","required":true,"schema":{"type":"integer","description":"The ID of the provider to delete.","title":"Provider Id"},"description":"The ID of the provider to delete."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProviderResponse"}}}},"404":{"description":"Model provider {provider_id} not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"403":{"description":"User has no admin rights.
Your account has expired. Please contact support to renew your account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"401":{"description":"Invalid authentication scheme.
Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Admin"],"summary":"Update Provider","operationId":"update_provider_v1_admin_providers__provider_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"provider_id","in":"path","required":true,"schema":{"type":"integer","description":"The ID of the provider to update.","title":"Provider Id"},"description":"The ID of the provider to update."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProviderBody","description":"The provider update request."}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProviderResponse"}}}},"403":{"description":"Inconsistent max context length for {model_name}. Expected: {expected_length}. Actual: {actual_length}
Inconsistent vector size for {model_name}. Expected: {expected_size}. Actual: {actual_size}
User has no admin rights.
Your account has expired. Please contact support to renew your account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"400":{"description":"Invalid model provider type {input_type} for {expected_type} router.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"409":{"description":"Model provider {model_name} for url {url} already exists for router {router_id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"404":{"description":"Model router {router_id} not found.
Model provider {provider_id} not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"401":{"description":"Invalid authentication scheme.
Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Admin"],"summary":"Get Provider","operationId":"get_provider_v1_admin_providers__provider_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"provider_id","in":"path","required":true,"schema":{"type":"integer","description":"The ID of the provider to get.","title":"Provider Id"},"description":"The ID of the provider to get."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProviderResponse"}}}},"403":{"description":"User has no admin rights.
Your account has expired. Please contact support to renew your account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"404":{"description":"Model provider {provider_id} not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"401":{"description":"Invalid authentication scheme.
Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/roles":{"post":{"tags":["Admin"],"summary":"Create Role","operationId":"create_role_v1_admin_roles_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRoleBody","description":"The role creation request."}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleResponse"}}}},"403":{"description":"User has no admin rights.
Your account has expired. Please contact support to renew your account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"409":{"description":"Role {role_name} already exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"401":{"description":"Invalid authentication scheme.
Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Admin"],"summary":"Get Roles","operationId":"get_roles_v1_admin_roles_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Number of roles to skip.","default":0,"title":"Offset"},"description":"Number of roles to skip."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum number of roles to return.","default":10,"title":"Limit"},"description":"Maximum number of roles to return."},{"name":"sort_by","in":"query","required":false,"schema":{"$ref":"#/components/schemas/SortField","description":"Field to sort by.","default":"id"},"description":"Field to sort by."},{"name":"sort_order","in":"query","required":false,"schema":{"$ref":"#/components/schemas/SortOrder","description":"Sort order.","default":"asc"},"description":"Sort order."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RolesResponse"}}}},"403":{"description":"User has no admin rights.
Your account has expired. Please contact support to renew your account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"401":{"description":"Invalid authentication scheme.
Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/roles/{role_id}":{"patch":{"tags":["Admin"],"summary":"Update Role","operationId":"update_role_v1_admin_roles__role_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"role_id","in":"path","required":true,"schema":{"type":"integer","description":"The ID of the role to update.","title":"Role Id"},"description":"The ID of the role to update."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRoleBody","description":"The role update request."}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleResponse"}}}},"403":{"description":"User has no admin rights.
Your account has expired. Please contact support to renew your account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"409":{"description":"Role {role_name} already exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"404":{"description":"Role {role_id} not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"401":{"description":"Invalid authentication scheme.
Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Admin"],"summary":"Get Role","operationId":"get_role_v1_admin_roles__role_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"role_id","in":"path","required":true,"schema":{"type":"integer","description":"The ID of the role to get.","title":"Role Id"},"description":"The ID of the role to get."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleResponse"}}}},"403":{"description":"User has no admin rights.
Your account has expired. Please contact support to renew your account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"404":{"description":"Role {role_id} not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"401":{"description":"Invalid authentication scheme.
Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Admin"],"summary":"Delete Role","operationId":"delete_role_v1_admin_roles__role_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"role_id","in":"path","required":true,"schema":{"type":"integer","description":"The ID of the role to delete.","title":"Role Id"},"description":"The ID of the role to delete."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleResponse"}}}},"403":{"description":"User has no admin rights.
Your account has expired. Please contact support to renew your account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"404":{"description":"Role {role_id} not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"409":{"description":"Role {role_id} has {number_of_users} users and cannot be removed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"401":{"description":"Invalid authentication scheme.
Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/routers":{"post":{"tags":["Admin"],"summary":"Create Router","operationId":"create_router_v1_admin_routers_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRouterBody","description":"The router creation request."}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouterResponse"}}}},"409":{"description":"Following aliases already exist: '{router_aliases}'
Router {router_name} already exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"403":{"description":"User has no admin rights.
Your account has expired. Please contact support to renew your account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"401":{"description":"Invalid authentication scheme.
Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Admin"],"summary":"Get Routers","operationId":"get_routers_v1_admin_routers_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Number of routers to skip.","default":0,"title":"Offset"},"description":"Number of routers to skip."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum number of routers to return.","default":10,"title":"Limit"},"description":"Maximum number of routers to return."},{"name":"sort_by","in":"query","required":false,"schema":{"$ref":"#/components/schemas/SortField","description":"Field to sort by.","default":"id"},"description":"Field to sort by."},{"name":"sort_order","in":"query","required":false,"schema":{"$ref":"#/components/schemas/SortOrder","description":"Sort order.","default":"asc"},"description":"Sort order."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoutersResponse"}}}},"403":{"description":"User has no admin rights.
Your account has expired. Please contact support to renew your account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"401":{"description":"Invalid authentication scheme.
Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/routers/{router_id}":{"get":{"tags":["Admin"],"summary":"Get Router","operationId":"get_router_v1_admin_routers__router_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"router_id","in":"path","required":true,"schema":{"type":"integer","description":"The router ID.","title":"Router Id"},"description":"The router ID."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouterResponse"}}}},"403":{"description":"User has no admin rights.
Your account has expired. Please contact support to renew your account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"404":{"description":"Model router {router_id} not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"401":{"description":"Invalid authentication scheme.
Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Admin"],"summary":"Delete Router","operationId":"delete_router_v1_admin_routers__router_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"router_id","in":"path","required":true,"schema":{"type":"integer","description":"The ID of the router to delete (router ID, eg. 123).","title":"Router Id"},"description":"The ID of the router to delete (router ID, eg. 123)."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouterResponse"}}}},"403":{"description":"User has no admin rights.
Your account has expired. Please contact support to renew your account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"404":{"description":"Model router {router_id} not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"401":{"description":"Invalid authentication scheme.
Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Admin"],"summary":"Update Router","operationId":"update_router_v1_admin_routers__router_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"router_id","in":"path","required":true,"schema":{"type":"integer","description":"The ID of the router to update (router ID, eg. 123).","title":"Router Id"},"description":"The ID of the router to update (router ID, eg. 123)."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRouterBody","description":"The router update request."}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouterResponse"}}}},"403":{"description":"User has no admin rights.
Your account has expired. Please contact support to renew your account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"404":{"description":"Model router {router_id} not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"409":{"description":"Following aliases already exist: '{router_aliases}'
Router {router_name} already exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"401":{"description":"Invalid authentication scheme.
Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/users":{"post":{"tags":["Admin"],"summary":"Create User","operationId":"create_user_v1_admin_users_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateUserBody","description":"The user creation request."}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}},"409":{"description":"User {email} already exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"404":{"description":"Role {role_id} not found.
Organization {organization_id} not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"403":{"description":"User has no admin rights.
Your account has expired. Please contact support to renew your account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"401":{"description":"Invalid authentication scheme.
Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Admin"],"summary":"Get Users","operationId":"get_users_v1_admin_users_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"role_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"The ID of the role to filter the users by.","title":"Role Id"},"description":"The ID of the role to filter the users by."},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"The ID of the organization to filter the users by.","title":"Organization Id"},"description":"The ID of the organization to filter the users by."},{"name":"email","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Email substring to filter the users by.","title":"Email"},"description":"Email substring to filter the users by."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Number of users to skip.","default":0,"title":"Offset"},"description":"Number of users to skip."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum number of users to return.","default":10,"title":"Limit"},"description":"Maximum number of users to return."},{"name":"sort_by","in":"query","required":false,"schema":{"$ref":"#/components/schemas/UserSortField","description":"Field to sort by.","default":"id"},"description":"Field to sort by."},{"name":"sort_order","in":"query","required":false,"schema":{"$ref":"#/components/schemas/SortOrder","description":"Sort order.","default":"asc"},"description":"Sort order."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsersResponse"}}}},"403":{"description":"User has no admin rights.
Your account has expired. Please contact support to renew your account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"401":{"description":"Invalid authentication scheme.
Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/users/{user_id}":{"get":{"tags":["Admin"],"summary":"Get User","operationId":"get_user_v1_admin_users__user_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","description":"The ID of the user to get.","title":"User Id"},"description":"The ID of the user to get."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}},"404":{"description":"User {user_id} not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"403":{"description":"User has no admin rights.
Your account has expired. Please contact support to renew your account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"401":{"description":"Invalid authentication scheme.
Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Admin"],"summary":"Delete User","operationId":"delete_user_v1_admin_users__user_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","description":"The ID of the user to delete.","title":"User Id"},"description":"The ID of the user to delete."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}},"404":{"description":"User {user_id} not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"409":{"description":"User cannot be deleted because the user owns routers: {router_ids}.
User cannot be deleted because the user owns providers: {provider_ids}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"403":{"description":"User has no admin rights.
Your account has expired. Please contact support to renew your account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"401":{"description":"Invalid authentication scheme.
Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/audio/transcriptions":{"post":{"tags":["Audio"],"summary":"Audio Transcriptions","description":"Transcribes audio into the input language.","operationId":"audio_transcriptions_v1_audio_transcriptions_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_audio_transcriptions_v1_audio_transcriptions_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudioTranscription"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/auth/login":{"post":{"tags":["Auth"],"summary":"Login","operationId":"login_v1_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthLoginBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthLoginResponse"}}}},"401":{"description":"Invalid password.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"404":{"description":"User {user_id} not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/chat/completions":{"post":{"tags":["Chat"],"summary":"Chat Completions","description":"Creates a model response for the given chat conversation.","operationId":"chat_completions_v1_chat_completions_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateChatCompletion"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ChatCompletion"},{"$ref":"#/components/schemas/ChatCompletionChunk"}],"title":"Response Chat Completions V1 Chat Completions Post"}}}},"404":{"description":"Model not found. Collection not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__schemas__exception__HTTPExceptionModel"}}}},"422":{"description":"Wrong model type.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__schemas__exception__HTTPExceptionModel"}}}},"503":{"description":"Model is too busy, please try again later.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__schemas__exception__HTTPExceptionModel"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/embeddings":{"post":{"tags":["Embeddings"],"summary":"Create Embeddings","operationId":"create_embeddings_v1_embeddings_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateEmbeddingsBody","description":"The embeddings creation request."}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmbeddingsResponse"}}}},"503":{"description":"Model is too busy, please try again later.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"404":{"description":"Model {name} not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"429":{"description":"Token/request limit per minute/day exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"422":{"description":"Model has wrong type. Expected: {expected_type}. Actual: {actual_type}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"400":{"description":"Insufficient budget.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"401":{"description":"Invalid authentication scheme.
Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"403":{"description":"Your account has expired. Please contact support to renew your account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}}},"security":[{"HTTPBearer":[]}]}},"/health":{"get":{"tags":["Health"],"summary":"Get Health","description":"Get the health of the API.","operationId":"get_health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health/models":{"get":{"tags":["Health"],"summary":"Get Health Models","description":"Get the health of the models.","operationId":"get_health_models_health_models_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"401":{"description":"Invalid authentication scheme.
Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"403":{"description":"Your account has expired. Please contact support to renew your account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/me/info":{"get":{"tags":["Me"],"summary":"Get User","description":"Get information about the current user.","operationId":"get_user_v1_me_info_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserInfo"}}}}},"security":[{"HTTPBearer":[]}]},"patch":{"tags":["Me"],"summary":"Update User","description":"Update information about the current user.","operationId":"update_user_v1_me_info_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateUserInfo","description":"The user update request."}}},"required":true},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/me/keys":{"post":{"tags":["Me"],"summary":"Create Key","description":"Create a new API key.","operationId":"create_key_v1_me_keys_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateKey","description":"The token creation request."}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__schemas__me__keys__CreateKeyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Me"],"summary":"Get Keys","description":"Get all your tokens.","operationId":"get_keys_v1_me_keys_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"The offset of the tokens to get.","default":0,"title":"Offset"},"description":"The offset of the tokens to get."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"The limit of the tokens to get.","default":10,"title":"Limit"},"description":"The limit of the tokens to get."},{"name":"order_by","in":"query","required":false,"schema":{"enum":["id","name","created"],"type":"string","description":"The field to order the tokens by.","default":"id","title":"Order By"},"description":"The field to order the tokens by."},{"name":"order_direction","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","description":"The direction to order the tokens by.","default":"asc","title":"Order Direction"},"description":"The direction to order the tokens by."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Keys"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/me/keys/{key}":{"delete":{"tags":["Me"],"summary":"Delete Key","description":"Delete a API key.","operationId":"delete_key_v1_me_keys__key__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"integer","description":"The key ID of the key to delete.","title":"Key"},"description":"The key ID of the key to delete."}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Me"],"summary":"Get Key","description":"Get your token by id.","operationId":"get_key_v1_me_keys__key__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"integer","description":"The key ID of the key to get.","title":"Key"},"description":"The key ID of the key to get."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Key"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/me/usage":{"get":{"tags":["Me"],"summary":"Get Usage","description":"Get usage for the current user.","operationId":"get_usage_v1_me_usage_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"The offset of the usages to get.","default":0,"title":"Offset"},"description":"The offset of the usages to get."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"The limit of the usages to get.","default":10,"title":"Limit"},"description":"The limit of the usages to get."},{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Start time as Unix timestamp (if not provided, will be set to 30 days ago)","title":"Start Time"},"description":"Start time as Unix timestamp (if not provided, will be set to 30 days ago)"},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"End time as Unix timestamp (if not provided, will be set to now)","title":"End Time"},"description":"End time as Unix timestamp (if not provided, will be set to now)"},{"name":"endpoint","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/EndpointUsage"},{"type":"null"}],"description":"The endpoint to get usage for.","title":"Endpoint"},"description":"The endpoint to get usage for."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Usages"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/models":{"get":{"tags":["Models"],"summary":"Get Models","description":"Lists the currently available models and provides basic information.","operationId":"get_models_v1_models_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelsResponse"}}}},"401":{"description":"Invalid authentication scheme.
Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"403":{"description":"Your account has expired. Please contact support to renew your account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/models/{model}":{"get":{"tags":["Models"],"summary":"Get Model","description":"Get a model by name and provide basic information.","operationId":"get_model_v1_models__model__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"model","in":"path","required":true,"schema":{"type":"string","description":"The name of the model to get.","title":"Model"},"description":"The name of the model to get."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Model"}}}},"404":{"description":"Model {name} not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"401":{"description":"Invalid authentication scheme.
Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"403":{"description":"Your account has expired. Please contact support to renew your account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ocr":{"post":{"tags":["OCR"],"summary":"Ocr","description":"Extracts text from files using OCR.","operationId":"ocr_v1_ocr_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOCR"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OCR"}}}},"404":{"description":"Model not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__schemas__exception__HTTPExceptionModel"}}}},"422":{"description":"Wrong model type.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__schemas__exception__HTTPExceptionModel"}}}},"503":{"description":"Model is too busy, please try again later.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__schemas__exception__HTTPExceptionModel"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/rerank":{"post":{"tags":["Rerank"],"summary":"Create Rerank","operationId":"create_rerank_v1_rerank_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRerankBody","description":"The rerank creation request."}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RerankResponse"}}}},"503":{"description":"Model is too busy, please try again later.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"404":{"description":"Model {name} not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"429":{"description":"Token/request limit per minute/day exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"422":{"description":"Model has wrong type. Expected: {expected_type}. Actual: {actual_type}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"400":{"description":"Insufficient budget.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"401":{"description":"Invalid authentication scheme.
Invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}},"403":{"description":"Your account has expired. Please contact support to renew your account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/api__infrastructure__fastapi__documentation__HTTPExceptionModel"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/admin/organizations":{"post":{"tags":["Admin"],"summary":"Create Organization","operationId":"create_organization_v1_admin_organizations_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationRequest","description":"The organization creation request."}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Admin"],"summary":"Get Organizations","operationId":"get_organizations_v1_admin_organizations_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"The offset of the organizations to get.","default":0,"title":"Offset"},"description":"The offset of the organizations to get."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"The limit of the organizations to get.","default":10,"title":"Limit"},"description":"The limit of the organizations to get."},{"name":"order_by","in":"query","required":false,"schema":{"enum":["id","name","created","updated"],"type":"string","description":"The field to order the organizations by.","default":"id","title":"Order By"},"description":"The field to order the organizations by."},{"name":"order_direction","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","description":"The direction to order the organizations by.","default":"asc","title":"Order Direction"},"description":"The direction to order the organizations by."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Organizations"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/organizations/{organization}":{"delete":{"tags":["Admin"],"summary":"Delete Organization","operationId":"delete_organization_v1_admin_organizations__organization__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"organization","in":"path","required":true,"schema":{"type":"integer","description":"The ID of the organization to delete.","title":"Organization"},"description":"The ID of the organization to delete."}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Admin"],"summary":"Update Organization","operationId":"update_organization_v1_admin_organizations__organization__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"organization","in":"path","required":true,"schema":{"type":"integer","description":"The ID of the organization to update.","title":"Organization"},"description":"The ID of the organization to update."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationUpdateRequest","description":"The organization update request."}}}},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Admin"],"summary":"Get Organization","operationId":"get_organization_v1_admin_organizations__organization__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"organization","in":"path","required":true,"schema":{"type":"integer","description":"The ID of the organization to get.","title":"Organization"},"description":"The ID of the organization to get."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Organization"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/tokens":{"post":{"tags":["Admin"],"summary":"Create Token","description":"Create a new token.","operationId":"create_token_v1_admin_tokens_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateToken","description":"The token creation request."}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokensResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Admin"],"summary":"Get Tokens","description":"Get all your tokens.","operationId":"get_tokens_v1_admin_tokens_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"The user ID of the user to get the tokens for.","title":"User"},"description":"The user ID of the user to get the tokens for."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"The offset of the tokens to get.","default":0,"title":"Offset"},"description":"The offset of the tokens to get."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"The limit of the tokens to get.","default":10,"title":"Limit"},"description":"The limit of the tokens to get."},{"name":"order_by","in":"query","required":false,"schema":{"enum":["id","name","created"],"type":"string","description":"The field to order the tokens by.","default":"id","title":"Order By"},"description":"The field to order the tokens by."},{"name":"order_direction","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","description":"The direction to order the tokens by.","default":"asc","title":"Order Direction"},"description":"The direction to order the tokens by."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tokens"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/tokens/{token}":{"delete":{"tags":["Admin"],"summary":"Delete Token","description":"Delete a token.","operationId":"delete_token_v1_admin_tokens__token__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user","in":"path","required":true,"schema":{"type":"integer","description":"The user ID of the user to delete the token for.","title":"User"},"description":"The user ID of the user to delete the token for."},{"name":"token","in":"path","required":true,"schema":{"type":"integer","description":"The token ID of the token to delete.","title":"Token"},"description":"The token ID of the token to delete."}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Admin"],"summary":"Get Token","description":"Get your token by id.","operationId":"get_token_v1_admin_tokens__token__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"integer","description":"The token ID of the token to get.","title":"Token"},"description":"The token ID of the token to get."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/users/{user}":{"patch":{"tags":["Admin"],"summary":"Update User","description":"Update a user.","operationId":"update_user_v1_admin_users__user__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user","in":"path","required":true,"schema":{"type":"integer","description":"The ID of the user to update.","title":"User"},"description":"The ID of the user to update."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserUpdateRequest","description":"The user update request."}}}},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/metrics":{"get":{"tags":["Monitoring"],"summary":"Get Metrics","operationId":"get_metrics_metrics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}}},"components":{"schemas":{"Annotation":{"properties":{"type":{"type":"string","const":"url_citation","title":"Type"},"url_citation":{"$ref":"#/components/schemas/AnnotationURLCitation"}},"additionalProperties":true,"type":"object","required":["type","url_citation"],"title":"Annotation","description":"A URL citation when using web search."},"AnnotationURLCitation":{"properties":{"end_index":{"type":"integer","title":"End Index"},"start_index":{"type":"integer","title":"Start Index"},"title":{"type":"string","title":"Title"},"url":{"type":"string","title":"Url"}},"additionalProperties":true,"type":"object","required":["end_index","start_index","title","url"],"title":"AnnotationURLCitation","description":"A URL citation when using web search."},"AudioTranscription":{"properties":{"id":{"type":"string","title":"Id","description":"A unique identifier for the audio transcription."},"text":{"type":"string","title":"Text","description":"The transcription text."},"model":{"type":"string","title":"Model","description":"The model used to generate the transcription."},"segments":{"anyOf":[{"items":{"$ref":"#/components/schemas/Segment"},"type":"array"},{"type":"null"}],"title":"Segments","description":"Diarized segments, only set when `response_format=diarized_json`."},"usage":{"$ref":"#/components/schemas/api__schemas__usage__Usage","description":"Usage information for the request."}},"additionalProperties":true,"type":"object","required":["id","text","model"],"title":"AudioTranscription"},"AudioTranscriptionLanguage":{"type":"string","enum":["af","afrikaans","albanian","am","amharic","ar","arabic","armenian","as","assamese","az","azerbaijani","ba","bashkir","basque","be","belarusian","bengali","bg","bn","bo","bosnian","br","breton","bs","bulgarian","burmese","ca","cantonese","castilian","catalan","chinese","croatian","cs","cy","czech","da","danish","de","dutch","el","en","english","es","estonian","et","eu","fa","faroese","fi","finnish","flemish","fo","fr","french","galician","georgian","german","gl","greek","gu","gujarati","ha","haitian","haitian creole","hausa","haw","hawaiian","he","hebrew","hi","hindi","hr","ht","hu","hungarian","hy","icelandic","id","indonesian","is","it","italian","ja","japanese","javanese","jw","ka","kannada","kazakh","khmer","kk","km","kn","ko","korean","la","lao","latin","latvian","lb","letzeburgesch","lingala","lithuanian","ln","lo","lt","luxembourgish","lv","macedonian","malagasy","malay","malayalam","maltese","mandarin","maori","marathi","mg","mi","mk","ml","mn","moldavian","moldovan","mongolian","mr","ms","mt","my","myanmar","ne","nepali","nl","nn","no","norwegian","nynorsk","oc","occitan","pa","panjabi","pashto","persian","pl","polish","portuguese","ps","pt","punjabi","pushto","ro","romanian","ru","russian","sa","sanskrit","sd","serbian","shona","si","sindhi","sinhala","sinhalese","sk","sl","slovak","slovenian","sn","so","somali","spanish","sq","sr","su","sundanese","sv","sw","swahili","swedish","ta","tagalog","tajik","tamil","tatar","te","telugu","tg","th","thai","tibetan","tk","tl","tr","tt","turkish","turkmen","uk","ukrainian","ur","urdu","uz","uzbek","valencian","vi","vietnamese","welsh","yi","yiddish","yo","yoruba","yue","zh"],"title":"AudioTranscriptionLanguage"},"AudioTranscriptionResponseFormat":{"type":"string","enum":["json","text","verbose_json","diarized_json","srt","vtt"],"title":"AudioTranscriptionResponseFormat"},"AuthLoginBody":{"properties":{"email":{"type":"string","maxLength":254,"minLength":1,"title":"Email","description":"The user email."},"password":{"type":"string","maxLength":72,"minLength":1,"title":"Password","description":"The user password."}},"additionalProperties":true,"type":"object","required":["email","password"],"title":"AuthLoginBody"},"AuthLoginResponse":{"properties":{"object":{"type":"string","const":"key","title":"Object","description":"Type of the object.","default":"key"},"id":{"type":"integer","title":"Id","description":"ID of the key."},"name":{"type":"string","title":"Name","description":"Name of the key."},"value":{"type":"string","title":"Value","description":"Value of the key."},"user":{"type":"integer","title":"User","description":"ID of the user that owns the key."},"expires":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expires","description":"Time of expiration, as Unix timestamp. If None, the key never expires."},"created":{"type":"integer","title":"Created","description":"Time of creation, as Unix timestamp."}},"additionalProperties":true,"type":"object","required":["id","name","value","user","created"],"title":"AuthLoginResponse"},"BasicAuth":{"properties":{"username":{"type":"string","title":"Username"},"password":{"type":"string","title":"Password"}},"additionalProperties":true,"type":"object","required":["username","password"],"title":"BasicAuth"},"Body_audio_transcriptions_v1_audio_transcriptions_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File","description":"The audio file object (not file name) to transcribe, in one of these formats: mp3 or wav."},"model":{"type":"string","title":"Model","description":"ID of the model to use. Call `/v1/models` endpoint to get the list of available models, only `automatic-speech-recognition` model type is supported."},"language":{"anyOf":[{"$ref":"#/components/schemas/AudioTranscriptionLanguage"},{"type":"null"}],"description":"The language of the output audio. If the output language is different than the audio language, the audio language will be translated into the output language. Output language must be supplied in ISO-639-1 format (e.g. en, fr) format."},"prompt":{"type":"string","title":"Prompt","description":"An optional text to tell the model what to do with the input audio.","default":""},"response_format":{"$ref":"#/components/schemas/AudioTranscriptionResponseFormat","description":"The format of the transcript output: `json` (default), `text`, `diarized_json` to return per-segment speaker labels, `srt` or `vtt` for subtitle formats.","default":"json"},"temperature":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Temperature","description":"The sampling temperature, between 0 and 1. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic. If set to 0, the model will use log probability to automatically increase the temperature until certain thresholds are hit.","default":0.0}},"type":"object","required":["file","model"],"title":"Body_audio_transcriptions_v1_audio_transcriptions_post"},"CarbonFootprintUsage":{"properties":{"kWh":{"$ref":"#/components/schemas/CarbonFootprintUsageKWh","deprecated":true},"kgCO2eq":{"$ref":"#/components/schemas/CarbonFootprintUsageKgCO2eq","deprecated":true}},"additionalProperties":true,"type":"object","title":"CarbonFootprintUsage"},"CarbonFootprintUsageKWh":{"properties":{"min":{"type":"number","title":"Min","description":"Minimum carbon footprint in kWh.","default":0.0,"deprecated":true},"max":{"type":"number","title":"Max","description":"Maximum carbon footprint in kWh.","default":0.0,"deprecated":true}},"additionalProperties":true,"type":"object","title":"CarbonFootprintUsageKWh"},"CarbonFootprintUsageKgCO2eq":{"properties":{"min":{"type":"number","title":"Min","description":"Minimum carbon footprint in kgCO2eq (global warming potential).","default":0.0,"deprecated":true},"max":{"type":"number","title":"Max","description":"Maximum carbon footprint in kgCO2eq (global warming potential).","default":0.0,"deprecated":true}},"additionalProperties":true,"type":"object","title":"CarbonFootprintUsageKgCO2eq"},"ChatCompletion":{"properties":{"id":{"type":"string","title":"Id","description":"A unique identifier for the chat completion."},"choices":{"items":{"$ref":"#/components/schemas/openai__types__chat__chat_completion__Choice"},"type":"array","title":"Choices"},"created":{"type":"integer","title":"Created"},"model":{"type":"string","title":"Model"},"object":{"type":"string","const":"chat.completion","title":"Object"},"service_tier":{"anyOf":[{"type":"string","enum":["auto","default","flex","scale","priority"]},{"type":"null"}],"title":"Service Tier"},"system_fingerprint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System Fingerprint"},"usage":{"$ref":"#/components/schemas/api__schemas__usage__Usage","description":"Usage information for the request."}},"additionalProperties":true,"type":"object","required":["choices","created","model","object"],"title":"ChatCompletion"},"ChatCompletionAudio":{"properties":{"id":{"type":"string","title":"Id"},"data":{"type":"string","title":"Data"},"expires_at":{"type":"integer","title":"Expires At"},"transcript":{"type":"string","title":"Transcript"}},"additionalProperties":true,"type":"object","required":["id","data","expires_at","transcript"],"title":"ChatCompletionAudio","description":"If the audio output modality is requested, this object contains data\nabout the audio response from the model. [Learn more](https://platform.openai.com/docs/guides/audio)."},"ChatCompletionChunk":{"properties":{"id":{"type":"string","title":"Id"},"choices":{"items":{"$ref":"#/components/schemas/openai__types__chat__chat_completion_chunk__Choice"},"type":"array","title":"Choices"},"created":{"type":"integer","title":"Created"},"model":{"type":"string","title":"Model"},"object":{"type":"string","const":"chat.completion.chunk","title":"Object"},"service_tier":{"anyOf":[{"type":"string","enum":["auto","default","flex","scale","priority"]},{"type":"null"}],"title":"Service Tier"},"system_fingerprint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System Fingerprint"},"usage":{"anyOf":[{"$ref":"#/components/schemas/CompletionUsage"},{"type":"null"}]}},"additionalProperties":true,"type":"object","required":["id","choices","created","model","object"],"title":"ChatCompletionChunk"},"ChatCompletionMessage":{"properties":{"content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content"},"refusal":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Refusal"},"role":{"type":"string","const":"assistant","title":"Role"},"annotations":{"anyOf":[{"items":{"$ref":"#/components/schemas/Annotation"},"type":"array"},{"type":"null"}],"title":"Annotations"},"audio":{"anyOf":[{"$ref":"#/components/schemas/ChatCompletionAudio"},{"type":"null"}]},"function_call":{"anyOf":[{"$ref":"#/components/schemas/FunctionCall"},{"type":"null"}]},"tool_calls":{"anyOf":[{"items":{"anyOf":[{"$ref":"#/components/schemas/ChatCompletionMessageFunctionToolCall"},{"$ref":"#/components/schemas/ChatCompletionMessageCustomToolCall"}]},"type":"array"},{"type":"null"}],"title":"Tool Calls"}},"additionalProperties":true,"type":"object","required":["role"],"title":"ChatCompletionMessage","description":"A chat completion message generated by the model."},"ChatCompletionMessageCustomToolCall":{"properties":{"id":{"type":"string","title":"Id"},"custom":{"$ref":"#/components/schemas/Custom"},"type":{"type":"string","const":"custom","title":"Type"}},"additionalProperties":true,"type":"object","required":["id","custom","type"],"title":"ChatCompletionMessageCustomToolCall","description":"A call to a custom tool created by the model."},"ChatCompletionMessageFunctionToolCall":{"properties":{"id":{"type":"string","title":"Id"},"function":{"$ref":"#/components/schemas/Function"},"type":{"type":"string","const":"function","title":"Type"}},"additionalProperties":true,"type":"object","required":["id","function","type"],"title":"ChatCompletionMessageFunctionToolCall","description":"A call to a function tool created by the model."},"ChatCompletionTokenLogprob":{"properties":{"token":{"type":"string","title":"Token"},"bytes":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Bytes"},"logprob":{"type":"number","title":"Logprob"},"top_logprobs":{"items":{"$ref":"#/components/schemas/TopLogprob"},"type":"array","title":"Top Logprobs"}},"additionalProperties":true,"type":"object","required":["token","logprob","top_logprobs"],"title":"ChatCompletionTokenLogprob"},"ChoiceDelta":{"properties":{"content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content"},"function_call":{"anyOf":[{"$ref":"#/components/schemas/ChoiceDeltaFunctionCall"},{"type":"null"}]},"refusal":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Refusal"},"role":{"anyOf":[{"type":"string","enum":["developer","system","user","assistant","tool"]},{"type":"null"}],"title":"Role"},"tool_calls":{"anyOf":[{"items":{"$ref":"#/components/schemas/ChoiceDeltaToolCall"},"type":"array"},{"type":"null"}],"title":"Tool Calls"}},"additionalProperties":true,"type":"object","title":"ChoiceDelta","description":"A chat completion delta generated by streamed model responses."},"ChoiceDeltaFunctionCall":{"properties":{"arguments":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Arguments"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},"additionalProperties":true,"type":"object","title":"ChoiceDeltaFunctionCall","description":"Deprecated and replaced by `tool_calls`.\n\nThe name and arguments of a function that should be called, as generated by the model."},"ChoiceDeltaToolCall":{"properties":{"index":{"type":"integer","title":"Index"},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"function":{"anyOf":[{"$ref":"#/components/schemas/ChoiceDeltaToolCallFunction"},{"type":"null"}]},"type":{"anyOf":[{"type":"string","const":"function"},{"type":"null"}],"title":"Type"}},"additionalProperties":true,"type":"object","required":["index"],"title":"ChoiceDeltaToolCall"},"ChoiceDeltaToolCallFunction":{"properties":{"arguments":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Arguments"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},"additionalProperties":true,"type":"object","title":"ChoiceDeltaToolCallFunction"},"ChoiceLogprobs":{"properties":{"content":{"anyOf":[{"items":{"$ref":"#/components/schemas/ChatCompletionTokenLogprob"},"type":"array"},{"type":"null"}],"title":"Content"},"refusal":{"anyOf":[{"items":{"$ref":"#/components/schemas/ChatCompletionTokenLogprob"},"type":"array"},{"type":"null"}],"title":"Refusal"}},"additionalProperties":true,"type":"object","title":"ChoiceLogprobs","description":"Log probability information for the choice."},"CompletionTokensDetails":{"properties":{"accepted_prediction_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Accepted Prediction Tokens"},"audio_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Audio Tokens"},"reasoning_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Reasoning Tokens"},"rejected_prediction_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rejected Prediction Tokens"}},"additionalProperties":true,"type":"object","title":"CompletionTokensDetails","description":"Breakdown of tokens used in a completion."},"CompletionUsage":{"properties":{"completion_tokens":{"type":"integer","title":"Completion Tokens"},"prompt_tokens":{"type":"integer","title":"Prompt Tokens"},"total_tokens":{"type":"integer","title":"Total Tokens"},"completion_tokens_details":{"anyOf":[{"$ref":"#/components/schemas/CompletionTokensDetails"},{"type":"null"}]},"prompt_tokens_details":{"anyOf":[{"$ref":"#/components/schemas/PromptTokensDetails"},{"type":"null"}]}},"additionalProperties":true,"type":"object","required":["completion_tokens","prompt_tokens","total_tokens"],"title":"CompletionUsage","description":"Usage statistics for the completion request."},"CreateChatCompletion":{"properties":{"messages":{"items":{},"type":"array","title":"Messages","description":"A list of messages comprising the conversation so far."},"model":{"type":"string","title":"Model","description":"ID of the model to use. Call `/v1/models` endpoint to get the list of available models, only `text-generation` model type is supported."},"frequency_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Frequency Penalty","description":"Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim.","default":0.0},"logit_bias":{"anyOf":[{"additionalProperties":{"type":"number"},"type":"object"},{"type":"null"}],"title":"Logit Bias","description":"Modify the likelihood of specified tokens appearing in the completion. Accepts a JSON object that maps tokens (specified by their token ID in the tokenizer) to an associated bias value from -100 to 100. Mathematically, the bias is added to the logits generated by the model prior to sampling. The exact effect will vary per model, but values between -1 and 1 should decrease or increase likelihood of selection; values like -100 or 100 should result in a ban or exclusive selection of the relevant token."},"logprobs":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Logprobs","description":"Whether to return log probabilities of the output tokens or not. If true, returns the log probabilities of each output token returned in the `content` of `message`.","default":false},"top_logprobs":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Top Logprobs","description":"An integer between 0 and 20 specifying the number of most likely tokens to return at each token position, each with an associated log probability. `logprobs` must be set to `true` if this parameter is used."},"presence_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Presence Penalty","description":"Number between -2.0 and 2.0. Positive values penalize new tokens based on whether they appear in the text so far, increasing the model's likelihood to talk about new topics.","default":0.0},"max_completion_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Completion Tokens","description":"An upper bound for the number of tokens that can be generated for a completion."},"n":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"N","description":"How many chat completion choices to generate for each input message. Note that you will be charged based on the number of generated tokens across all of the choices. Keep `n` as `1` to minimize costs.","default":1},"response_format":{"anyOf":[{},{"type":"null"}],"title":"Response Format","description":"Setting to `{ \"type\": \"json_schema\", \"json_schema\": {...} }` enables Structured Outputs which ensures the model will match your supplied JSON schema. Learn more in the Structured Outputs guide. Setting to `{ \"type\": \"json_object\" }` enables JSON mode, which ensures the message the model generates is valid JSON.
**Important**: when using JSON mode, you must also instruct the model to produce JSON yourself via a system or user message. Without this, the model may generate an unending stream of whitespace until the generation reaches the token limit, resulting in a long-running and seemingly \"stuck\" request. Also note that the message content may be partially cut off if `finish_reason=\"length\"`, which indicates the generation exceeded `max_tokens` or the conversation exceeded the max context length."},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed","description":"If specified, our system will make a best effort to sample deterministically, such that repeated requests with the same `seed` and parameters should return the same result. Determinism is not guaranteed, and you should refer to the system_fingerprint response parameter to monitor changes in the backend."},"stop":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Stop","description":"Up to 4 sequences where the API will stop generating further tokens."},"stream":{"anyOf":[{"type":"boolean","enum":[true,false]},{"type":"null"}],"title":"Stream","description":"If set, partial message deltas will be sent. Tokens will be sent as data-only server-sent events as they become available, with the stream terminated by a data: [DONE] message.","default":false},"stream_options":{"anyOf":[{},{"type":"null"}],"title":"Stream Options","description":"Options for streaming response. Only set this when you set `stream: true`."},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature","description":"What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic. We generally recommend altering this or `top_p` but not both."},"top_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top P","description":"An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered.
We generally recommend altering this or `temperature` but not both."},"tools":{"anyOf":[{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"description":"A list of tools the model may call. Currently, only functions are supported as a tool."},{"type":"null"}],"title":"Tools"},"tool_choice":{"title":"Tool Choice","description":"Controls which (if any) tool is called by the model. `none` means the model will not call any tool and instead generates a message. `auto` means the model can pick between generating a message or calling one or more tools. `required` means the model must call one or more tools. Specifying a particular tool via `{\"type\": \"function\", \"function\": {\"name\": \"my_function\"}}` forces the model to call that tool.
`none` is the default when no tools are present. `auto` is the default if tools are present.","default":"none"},"parallel_tool_calls":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Parallel Tool Calls","description":"Whether to call tools in parallel or sequentially. If true, the model will call tools in parallel. If false, the model will call tools sequentially. If None, the model will call tools in parallel if the model supports it, otherwise it will call tools sequentially.","default":false},"user":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User","description":"A unique identifier representing the user."}},"additionalProperties":true,"type":"object","required":["messages","model"],"title":"CreateChatCompletion"},"CreateEmbeddingsBody":{"properties":{"input":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"items":{"items":{"type":"integer"},"type":"array","minItems":1},"type":"array"},{"type":"string"},{"items":{"type":"string"},"type":"array"}],"minLength":1,"title":"Input","description":"Input text to embed, encoded as a string or array of tokens. To embed multiple inputs in a single request, pass an array of strings or array of token arrays. The input must not exceed the max input tokens for the model (call `/v1/models` endpoint to get the `max_context_length` by model) and cannot be an empty string."},"model":{"type":"string","minLength":1,"title":"Model","description":"ID of the model to use. Call `/v1/models` endpoint to get the list of available models, only `text-embeddings-inference` model type is supported."},"dimensions":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Dimensions","description":"The number of dimensions the resulting output embeddings should have."},"encoding_format":{"$ref":"#/components/schemas/EncodingFormat","description":"The format of the output embeddings.","default":"float"}},"additionalProperties":true,"type":"object","required":["input","model"],"title":"CreateEmbeddingsBody"},"CreateKey":{"properties":{"name":{"type":"string","title":"Name"},"expires":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expires","description":"Timestamp in seconds"}},"additionalProperties":true,"type":"object","required":["name"],"title":"CreateKey"},"CreateKeyBody":{"properties":{"name":{"type":"string","minLength":1,"title":"Name","description":"Name of the key.","examples":["key-1"]},"user":{"type":"integer","title":"User","description":"User ID to create the token for another user (by default, the current user). Required CREATE_USER permission."},"expires":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expires","description":"Expiration time, as Unix timestamp. If None, the key never expires."}},"additionalProperties":true,"type":"object","required":["name","user"],"title":"CreateKeyBody"},"CreateOCR":{"properties":{"bbox_annotation_format":{"anyOf":[{"$ref":"#/components/schemas/ResponseFormat"},{"type":"null"}],"description":"Specify the format that the model must output for the bounding boxes. By default it will use `{ \"type\": \"text\" }`. Setting to `{ \"type\": \"json_object\" }` enables JSON mode, which guarantees the message the model generates is in JSON. When using JSON mode you MUST also instruct the model to produce JSON yourself with a system or a user message. Setting to `{ \"type\": \"json_schema\" }` enables JSON schema mode, which guarantees the message the model generates is in JSON and follows the schema you provide."},"document":{"anyOf":[{"$ref":"#/components/schemas/DocumentURLChunk"},{"$ref":"#/components/schemas/ImageURLChunk"}],"title":"Document","description":"Document to run OCR on."},"document_annotation_format":{"anyOf":[{"$ref":"#/components/schemas/ResponseFormat"},{"type":"null"}],"description":"Specify the format that the model must output for the document. By default it will use `{ \"type\": \"text\" }`. Setting to `{ \"type\": \"json_object\" }` enables JSON mode, which guarantees the message the model generates is in JSON. When using JSON mode you MUST also instruct the model to produce JSON yourself with a system or a user message. Setting to `{ \"type\": \"json_schema\" }` enables JSON schema mode, which guarantees the message the model generates is in JSON and follows the schema you provide."},"document_annotation_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Document Annotation Prompt","description":"Optional prompt to guide the model in extracting structured output from the entire document. A document_annotation_format must be provided."},"extract_footer":{"type":"boolean","title":"Extract Footer","description":"Whether to extract the footer of the document.","default":false},"extract_header":{"type":"boolean","title":"Extract Header","description":"Whether to extract the header of the document.","default":false},"image_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Image Limit","description":"Max images to extract"},"image_min_size":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Image Min Size","description":"Minimum height and width of image to extract"},"include_image_base64":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Include Image Base64","description":"Include image URLs in response"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"The model to use for the OCR."},"pages":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Pages","description":"Specific pages to process. Accepts a list of integers or a string of comma-separated numbers and ranges (e.g. '0,1,2' or '0-5' or '0,2-4'). Page numbers start from 0."},"table_format":{"anyOf":[{"type":"string","enum":["markdown","html"]},{"type":"null"}],"title":"Table Format","description":"Format for table extraction: 'markdown' (default) or 'html'."}},"additionalProperties":true,"type":"object","required":["document"],"title":"CreateOCR"},"CreateProviderBody":{"properties":{"type":{"$ref":"#/components/schemas/ProviderType","description":"Model provider type."},"url":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Url","description":"Model provider API url. The url must only contain the domain name (without `/v1` suffix for example). Depends of the model provider type, the url can be optional (Albert, OpenAI)."},"key":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Key","description":"Model provider API key."},"basic_auth":{"anyOf":[{"$ref":"#/components/schemas/BasicAuth"},{"type":"null"}],"description":"Model provider basic authentication."},"timeout":{"type":"integer","title":"Timeout","description":"Timeout for the model provider requests, after user receive an 503 error (model is too busy).","default":300},"model_name":{"type":"string","title":"Model Name","description":"Model name from the model provider."},"model_hosting_zone":{"$ref":"#/components/schemas/HostingZone","description":"Model hosting zone using ISO 3166-1 alpha-3 code format (e.g., `WOR` for World, `FRA` for France, `USA` for United States). This determines the electricity mix used for carbon intensity calculations. For more information, see https://ecologits.ai","default":"WOR"},"model_total_params":{"type":"integer","minimum":0.0,"title":"Model Total Params","description":"Total params of the model in billions of parameters for carbon footprint computation. For more information, see https://ecologits.ai","default":0},"model_active_params":{"type":"integer","minimum":0.0,"title":"Model Active Params","description":"Active params of the model in billions of parameters for carbon footprint computation. For more information, see https://ecologits.ai","default":0},"qos_metric":{"anyOf":[{"$ref":"#/components/schemas/Metric"},{"type":"null"}],"description":"The metric to use for the quality of service policy. If not provided, no QoS policy is applied."},"qos_limit":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Qos Limit","description":"The value to use for the quality of service. Depends of the metric, the value can be a percentile, a threshold, etc."},"router_id":{"type":"integer","title":"Router Id","description":"ID of the model to create the provider for (router ID, eg. 123)."}},"additionalProperties":true,"type":"object","required":["type","model_name","router_id"],"title":"CreateProviderBody"},"CreateProviderResponse":{"properties":{"id":{"type":"integer","title":"Id","description":"Provider ID."},"router_id":{"type":"integer","title":"Router Id","description":"ID of the router that owns the provider."},"user_id":{"type":"integer","title":"User Id","description":"ID of the user that owns the provider."},"type":{"$ref":"#/components/schemas/ProviderType","description":"Provider type."},"url":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Url","description":"Provider API url. The url must only contain the domain name (without `/v1` suffix for example)."},"key":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Key","description":"Provider API key."},"basic_auth":{"anyOf":[{"$ref":"#/components/schemas/BasicAuth"},{"type":"null"}],"description":"Provider basic authentication."},"timeout":{"type":"integer","maximum":3600.0,"minimum":1.0,"title":"Timeout","description":"Timeout for the provider requests, after user receive an 500 error (model is too busy)."},"model_name":{"type":"string","minLength":1,"title":"Model Name","description":"Model name from the model provider."},"model_hosting_zone":{"$ref":"#/components/schemas/HostingZone","description":"Model hosting zone using ISO 3166-1 alpha-3 code format (e.g., `WOR` for World, `FRA` for France, `USA` for United States). This determines the electricity mix used for carbon intensity calculations. For more information, see https://ecologits.ai","default":"WOR","examples":["WOR"]},"model_total_params":{"type":"integer","minimum":0.0,"title":"Model Total Params","description":"Total params of the model in billions of parameters for carbon footprint computation. If not provided, the active params will be used if provided, else carbon footprint will not be computed. For more information, see https://ecologits.ai","default":0},"model_active_params":{"type":"integer","minimum":0.0,"title":"Model Active Params","description":"Active params of the model in billions of parameters for carbon footprint computation. If not provided, the total params will be used if provided, else carbon footprint will not be computed. For more information, see https://ecologits.ai","default":0},"qos_metric":{"anyOf":[{"$ref":"#/components/schemas/QoSMetric"},{"type":"null"}],"description":"The metric to use for the QoS policy. If not provided, no QoS policy is applied."},"qos_limit":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Qos Limit","description":"The value to use for the quality of service. Depends of the metric, the value can be a percentile, a threshold, etc."},"created":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created","description":"Time of creation, as Unix timestamp."},"updated":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated","description":"Time of last update, as Unix timestamp."}},"additionalProperties":true,"type":"object","required":["id","router_id","user_id","type","timeout","model_name"],"title":"CreateProviderResponse"},"CreateRerankBody":{"properties":{"query":{"type":"string","minLength":1,"title":"Query","description":"The search query to use for the reranking. `query` and `prompt` cannot both be provided."},"documents":{"items":{"type":"string","minLength":1},"type":"array","title":"Documents"},"model":{"type":"string","minLength":1,"title":"Model","description":"The model to use for the reranking, call `/v1/models` endpoint to get the list of available models, only `text-classification` model type is supported."},"top_n":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Top N","description":"The number of top results to return. If set to None, all results will be returned."}},"additionalProperties":true,"type":"object","required":["query","documents","model"],"title":"CreateRerankBody"},"CreateRoleBody":{"properties":{"name":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Name","description":"Name of the role.","examples":["my-role"]},"permissions":{"anyOf":[{"items":{"$ref":"#/components/schemas/PermissionType"},"type":"array"},{"type":"null"}],"title":"Permissions","description":"List of permissions."},"limits":{"anyOf":[{"items":{"$ref":"#/components/schemas/Limit"},"type":"array"},{"type":"null"}],"title":"Limits","description":"List of limits."}},"additionalProperties":true,"type":"object","title":"CreateRoleBody"},"CreateRouterBody":{"properties":{"name":{"type":"string","minLength":1,"title":"Name","description":"Name of the model router.","examples":["model-router-1"]},"type":{"$ref":"#/components/schemas/ModelType-Input","description":"Type of the model router. It will be used to identify the model router type.","examples":["text-generation"]},"aliases":{"items":{"type":"string","maxLength":64,"minLength":1},"type":"array","title":"Aliases","description":"Aliases of the model. It will be used to identify the model by users.","examples":[["model-alias","model-alias-2"]]},"load_balancing_strategy":{"$ref":"#/components/schemas/RouterLoadBalancingStrategy","description":"Routing strategy for load balancing between providers of the model. It will be used to identify the model type.","default":"shuffle"},"cost_prompt_tokens":{"type":"number","minimum":0.0,"title":"Cost Prompt Tokens","description":"Cost of a million prompt tokens (decrease user budget)","default":0.0},"cost_completion_tokens":{"type":"number","minimum":0.0,"title":"Cost Completion Tokens","description":"Cost of a million completion tokens (decrease user budget)","default":0.0}},"additionalProperties":true,"type":"object","required":["name","type"],"title":"CreateRouterBody"},"CreateToken":{"properties":{"name":{"type":"string","minLength":1,"title":"Name"},"user":{"type":"integer","title":"User","description":"User ID to create the token for another user (by default, the current user). Required CREATE_USER permission."},"expires":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expires","description":"Timestamp in seconds"}},"additionalProperties":true,"type":"object","required":["name","user"],"title":"CreateToken"},"CreateUserBody":{"properties":{"email":{"type":"string","maxLength":254,"minLength":1,"title":"Email","description":"The user email."},"name":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Name","description":"The user name."},"password":{"type":"string","maxLength":72,"minLength":6,"title":"Password","description":"The user password."},"role":{"type":"integer","title":"Role","description":"The role ID."},"organization_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Organization Id","description":"The organization ID."},"budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Budget","description":"The budget."},"expires":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expires","description":"The expiration timestamp."},"priority":{"type":"integer","minimum":0.0,"title":"Priority","description":"The user priority. Higher value means higher priority.","default":0}},"additionalProperties":true,"type":"object","required":["email","password","role"],"title":"CreateUserBody"},"Custom":{"properties":{"input":{"type":"string","title":"Input"},"name":{"type":"string","title":"Name"}},"additionalProperties":true,"type":"object","required":["input","name"],"title":"Custom","description":"The custom tool that the model called."},"DocumentURLChunk":{"properties":{"document_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Document Name","description":"The filename of the document."},"document_url":{"type":"string","title":"Document Url","description":"The URL of the document."},"type":{"type":"string","const":"document_url","title":"Type","description":"The type of the document.","default":"document_url"}},"additionalProperties":true,"type":"object","required":["document_url"],"title":"DocumentURLChunk"},"Embedding":{"properties":{"embedding":{"items":{"type":"number"},"type":"array","title":"Embedding"},"index":{"type":"integer","title":"Index"},"object":{"type":"string","const":"embedding","title":"Object"}},"additionalProperties":true,"type":"object","required":["embedding","index","object"],"title":"Embedding","description":"Represents an embedding vector returned by embedding endpoint."},"EmbeddingsResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Embedding"},"type":"array","title":"Data"},"model":{"type":"string","title":"Model"},"object":{"type":"string","const":"list","title":"Object","description":"The type of object returned.","default":"list"},"usage":{"$ref":"#/components/schemas/api__domain__usage__entities__Usage","description":"Usage information for the request."},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id","description":"A unique identifier for the request."}},"additionalProperties":true,"type":"object","required":["data","model"],"title":"EmbeddingsResponse"},"EncodingFormat":{"type":"string","enum":["float","base64"],"title":"EncodingFormat"},"EndpointUsage":{"type":"string","enum":["/v1/audio/transcriptions","/v1/chat/completions","/v1/embeddings","/v1/ocr","/v1/rerank","/v1/search"],"title":"EndpointUsage"},"Function":{"properties":{"arguments":{"type":"string","title":"Arguments"},"name":{"type":"string","title":"Name"}},"additionalProperties":true,"type":"object","required":["arguments","name"],"title":"Function","description":"The function that the model called."},"FunctionCall":{"properties":{"arguments":{"type":"string","title":"Arguments"},"name":{"type":"string","title":"Name"}},"additionalProperties":true,"type":"object","required":["arguments","name"],"title":"FunctionCall","description":"Deprecated and replaced by `tool_calls`.\n\nThe name and arguments of a function that should be called, as generated by the model."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HostingZone":{"type":"string","enum":["ABW","AFG","AGO","AIA","ALA","ALB","AND","ARE","ARG","ARM","ASM","ATA","ATF","ATG","AUS","AUT","AZE","BDI","BEL","BEN","BES","BFA","BGD","BGR","BHR","BHS","BIH","BLM","BLR","BLZ","BMU","BOL","BRA","BRB","BRN","BTN","BVT","BWA","CAF","CAN","CCK","CHE","CHL","CHN","CIV","CMR","COD","COG","COK","COL","COM","CPV","CRI","CUB","CUW","CXR","CYM","CYP","CZE","DEU","DJI","DMA","DNK","DOM","DZA","ECU","EGY","ERI","ESH","ESP","EST","ETH","FIN","FJI","FLK","FRA","FRO","FSM","GAB","GBR","GEO","GGY","GHA","GIB","GIN","GLP","GMB","GNB","GNQ","GRC","GRD","GRL","GTM","GUF","GUM","GUY","HKG","HMD","HND","HRV","HTI","HUN","IDN","IMN","IND","IOT","IRL","IRN","IRQ","ISL","ISR","ITA","JAM","JEY","JOR","JPN","KAZ","KEN","KGZ","KHM","KIR","KNA","KOR","KWT","LAO","LBN","LBR","LBY","LCA","LIE","LKA","LSO","LTU","LUX","LVA","MAC","MAF","MAR","MCO","MDA","MDG","MDV","MEX","MHL","MKD","MLI","MLT","MMR","MNE","MNG","MNP","MOZ","MRT","MSR","MTQ","MUS","MWI","MYS","MYT","NAM","NCL","NER","NFK","NGA","NIC","NIU","NLD","NOR","NPL","NRU","NZL","OMN","PAK","PAN","PCN","PER","PHL","PLW","PNG","POL","PRI","PRK","PRT","PRY","PSE","PYF","QAT","REU","ROU","RUS","RWA","SAU","SDN","SEN","SGP","SGS","SHN","SJM","SLB","SLE","SLV","SMR","SOM","SPM","SRB","SSD","STP","SUR","SVK","SVN","SWE","SWZ","SXM","SYC","SYR","TCA","TCD","TGO","THA","TJK","TKL","TKM","TLS","TON","TTO","TUN","TUR","TUV","TWN","TZA","UGA","UKR","UMI","URY","USA","UZB","VAT","VCT","VEN","VGB","VIR","VNM","VUT","WLF","WOR","WSM","YEM","ZAF","ZMB","ZWE"],"title":"HostingZone"},"ImageURL":{"properties":{"detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detail","description":"The detail of the image."},"url":{"type":"string","title":"Url","description":"The URL of the image."}},"additionalProperties":true,"type":"object","required":["url"],"title":"ImageURL"},"ImageURLChunk":{"properties":{"image_url":{"anyOf":[{"$ref":"#/components/schemas/ImageURL"},{"type":"string"}],"title":"Image Url","description":"The URL of the image to OCR."},"type":{"type":"string","const":"image_url","title":"Type","description":"The type of the image.","default":"image_url"}},"additionalProperties":true,"type":"object","required":["image_url"],"title":"ImageURLChunk"},"JsonSchema":{"properties":{"name":{"type":"string","title":"Name","description":"The name of the JSON schema."},"schema":{"additionalProperties":true,"type":"object","title":"Schema","description":"The JSON schema definition."},"strict":{"type":"boolean","title":"Strict","description":"Whether to use strict mode.","default":false},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Optional description of the schema."}},"additionalProperties":true,"type":"object","required":["name","schema"],"title":"JsonSchema"},"Key":{"properties":{"object":{"type":"string","const":"key","title":"Object","default":"key"},"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"token":{"type":"string","title":"Token"},"expires":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expires"},"created":{"type":"integer","title":"Created"}},"additionalProperties":true,"type":"object","required":["id","name","token","created"],"title":"Key"},"Keys":{"properties":{"object":{"type":"string","const":"list","title":"Object","default":"list"},"data":{"items":{"$ref":"#/components/schemas/Key"},"type":"array","title":"Data"}},"additionalProperties":true,"type":"object","required":["data"],"title":"Keys"},"Limit":{"properties":{"router_id":{"type":"integer","title":"Router Id","description":"The router ID."},"type":{"$ref":"#/components/schemas/LimitType","description":"The limit type."},"value":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Value","description":"The limit value."}},"additionalProperties":true,"type":"object","required":["router_id","type"],"title":"Limit"},"LimitType":{"type":"string","enum":["tpm","tpd","rpm","rpd"],"title":"LimitType"},"Metric":{"type":"string","enum":["ttft","latency","inflight","performance","normalized_latency"],"title":"Metric"},"MetricsUsage":{"properties":{"latency":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Latency"},"ttft":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ttft"}},"additionalProperties":true,"type":"object","title":"MetricsUsage"},"Model":{"properties":{"object":{"type":"string","const":"model","title":"Object","description":"Type of the object.","default":"model"},"id":{"type":"string","title":"Id","description":"The model identifier, which can be referenced in the API endpoints."},"type":{"anyOf":[{"$ref":"#/components/schemas/api__domain__model__entities__ModelType"},{"type":"null"}],"description":"The type of the model, which can be used to identify the model type.","examples":["text-generation"]},"aliases":{"items":{"type":"string"},"type":"array","title":"Aliases","description":"Aliases of the model. It will be used to identify the model by users.","examples":[["model-alias","model-alias-2"]]},"created":{"type":"integer","title":"Created","description":"Time of creation, as Unix timestamp."},"owned_by":{"type":"string","title":"Owned By","description":"The organization that owns the model."},"max_context_length":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Context Length","description":"Maximum amount of tokens a context could contains. Makes sure it is the same for all models."},"costs":{"$ref":"#/components/schemas/ModelCosts","description":"Costs of the model."}},"additionalProperties":true,"type":"object","required":["id","created","owned_by"],"title":"Model"},"ModelCosts":{"properties":{"prompt_tokens":{"type":"number","minimum":0.0,"title":"Prompt Tokens","description":"Cost of a million prompt tokens (decrease user budget)","default":0.0},"completion_tokens":{"type":"number","minimum":0.0,"title":"Completion Tokens","description":"Cost of a million completion tokens (decrease user budget)","default":0.0}},"additionalProperties":true,"type":"object","title":"ModelCosts"},"ModelType-Input":{"type":"string","enum":["automatic-speech-recognition","image-text-to-text","image-to-text","text-embeddings-inference","text-generation","text-classification"],"title":"ModelType"},"ModelsResponse":{"properties":{"object":{"type":"string","const":"list","title":"Object","description":"Type of the object.","default":"list"},"data":{"items":{"$ref":"#/components/schemas/Model"},"type":"array","title":"Data","description":"List of models."}},"additionalProperties":true,"type":"object","required":["data"],"title":"ModelsResponse"},"Nullable_OCRPageDimensions_":{"anyOf":[{"$ref":"#/components/schemas/OCRPageDimensions"},{"type":"null"}]},"Nullable_int_":{"anyOf":[{"type":"integer"},{"type":"null"}]},"Nullable_str_":{"anyOf":[{"type":"string"},{"type":"null"}]},"OCR":{"properties":{"pages":{"items":{"$ref":"#/components/schemas/OCRPageObject"},"type":"array","title":"Pages"},"model":{"type":"string","title":"Model"},"usage_info":{"$ref":"#/components/schemas/OCRUsageInfo"},"document_annotation":{"$ref":"#/components/schemas/OptionalNullable_str_","default":"~?~unset~?~sentinel~?~"},"id":{"type":"string","title":"Id","description":"The ID of the OCR request."},"usage":{"anyOf":[{"$ref":"#/components/schemas/api__schemas__usage__Usage"},{"type":"null"}],"description":"Usage information for the request."}},"type":"object","required":["pages","model","usage_info","id"],"title":"OCR"},"OCRImageObject":{"properties":{"id":{"type":"string","title":"Id"},"top_left_x":{"$ref":"#/components/schemas/Nullable_int_"},"top_left_y":{"$ref":"#/components/schemas/Nullable_int_"},"bottom_right_x":{"$ref":"#/components/schemas/Nullable_int_"},"bottom_right_y":{"$ref":"#/components/schemas/Nullable_int_"},"image_base64":{"$ref":"#/components/schemas/OptionalNullable_str_","default":"~?~unset~?~sentinel~?~"},"image_annotation":{"$ref":"#/components/schemas/OptionalNullable_str_","default":"~?~unset~?~sentinel~?~"}},"type":"object","required":["id","top_left_x","top_left_y","bottom_right_x","bottom_right_y"],"title":"OCRImageObject"},"OCRPageDimensions":{"properties":{"dpi":{"type":"integer","title":"Dpi"},"height":{"type":"integer","title":"Height"},"width":{"type":"integer","title":"Width"}},"type":"object","required":["dpi","height","width"],"title":"OCRPageDimensions"},"OCRPageObject":{"properties":{"index":{"type":"integer","title":"Index"},"markdown":{"type":"string","title":"Markdown"},"images":{"items":{"$ref":"#/components/schemas/OCRImageObject"},"type":"array","title":"Images"},"dimensions":{"$ref":"#/components/schemas/Nullable_OCRPageDimensions_"},"tables":{"anyOf":[{"items":{"$ref":"#/components/schemas/OCRTableObject"},"type":"array"},{"type":"null"}],"title":"Tables"},"hyperlinks":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Hyperlinks"},"header":{"$ref":"#/components/schemas/OptionalNullable_str_","default":"~?~unset~?~sentinel~?~"},"footer":{"$ref":"#/components/schemas/OptionalNullable_str_","default":"~?~unset~?~sentinel~?~"}},"type":"object","required":["index","markdown","images","dimensions"],"title":"OCRPageObject"},"OCRTableObject":{"properties":{"id":{"type":"string","title":"Id"},"content":{"type":"string","title":"Content"},"format":{"type":"string","enum":["markdown","html"],"title":"Format"}},"type":"object","required":["id","content","format"],"title":"OCRTableObject"},"OCRUsageInfo":{"properties":{"pages_processed":{"type":"integer","title":"Pages Processed"},"doc_size_bytes":{"$ref":"#/components/schemas/OptionalNullable_int_","default":"~?~unset~?~sentinel~?~"}},"type":"object","required":["pages_processed"],"title":"OCRUsageInfo"},"OptionalNullable_int_":{"anyOf":[{"$ref":"#/components/schemas/Nullable_int_"},{"$ref":"#/components/schemas/Unset"},{"type":"null"}]},"OptionalNullable_str_":{"anyOf":[{"$ref":"#/components/schemas/Nullable_str_"},{"$ref":"#/components/schemas/Unset"},{"type":"null"}]},"Organization":{"properties":{"object":{"type":"string","const":"organization","title":"Object","default":"organization"},"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"users":{"type":"integer","title":"Users"},"created":{"type":"integer","title":"Created"},"updated":{"type":"integer","title":"Updated"}},"additionalProperties":true,"type":"object","required":["id","name","users"],"title":"Organization"},"OrganizationRequest":{"properties":{"name":{"type":"string","minLength":1,"title":"Name","description":"The organization name."}},"additionalProperties":true,"type":"object","required":["name"],"title":"OrganizationRequest"},"OrganizationUpdateRequest":{"properties":{"name":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Name","description":"The new organization name."}},"additionalProperties":true,"type":"object","title":"OrganizationUpdateRequest"},"Organizations":{"properties":{"object":{"type":"string","const":"list","title":"Object","default":"list"},"data":{"items":{"$ref":"#/components/schemas/Organization"},"type":"array","title":"Data"}},"additionalProperties":true,"type":"object","required":["data"],"title":"Organizations"},"OrganizationsResponse":{"properties":{"id":{"type":"integer","title":"Id"}},"additionalProperties":true,"type":"object","required":["id"],"title":"OrganizationsResponse"},"PermissionType":{"type":"string","enum":["admin","create_public_collection","read_metric","provide_models"],"title":"PermissionType"},"PromptTokensDetails":{"properties":{"audio_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Audio Tokens"},"cached_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cached Tokens"}},"additionalProperties":true,"type":"object","title":"PromptTokensDetails","description":"Breakdown of tokens used in the prompt."},"ProviderResponse":{"properties":{"object":{"type":"string","const":"provider","title":"Object","description":"Type of the object.","default":"provider"},"id":{"type":"integer","title":"Id","description":"provider ID."},"router_id":{"type":"integer","title":"Router Id","description":"ID of the router that owns the provider."},"user_id":{"type":"integer","title":"User Id","description":"ID of the user that owns the provider."},"type":{"$ref":"#/components/schemas/ProviderType","description":"Provider type."},"url":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Url","description":"provider API url. The url must only contain the domain name (without `/v1` suffix for example)."},"timeout":{"type":"integer","title":"Timeout","description":"Timeout for the provider requests, after user receive an 500 error (model is too busy)."},"model_name":{"type":"string","minLength":1,"title":"Model Name","description":"Model name from the model provider."},"model_hosting_zone":{"$ref":"#/components/schemas/HostingZone","description":"Model hosting zone using ISO 3166-1 alpha-3 code format (e.g., `WOR` for World, `FRA` for France, `USA` for United States). This determines the electricity mix used for carbon intensity calculations. For more information, see https://ecologits.ai","default":"WOR","examples":["WOR"]},"model_total_params":{"type":"integer","minimum":0.0,"title":"Model Total Params","description":"Total params of the model in billions of parameters for carbon footprint computation. If not provided, the active params will be used if provided, else carbon footprint will not be computed. For more information, see https://ecologits.ai","default":0},"model_active_params":{"type":"integer","minimum":0.0,"title":"Model Active Params","description":"Active params of the model in billions of parameters for carbon footprint computation. If not provided, the total params will be used if provided, else carbon footprint will not be computed. For more information, see https://ecologits.ai","default":0},"qos_metric":{"anyOf":[{"$ref":"#/components/schemas/QoSMetric"},{"type":"null"}],"description":"The metric to use for the QoS policy. If not provided, no QoS policy is applied."},"qos_limit":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Qos Limit","description":"The value to use for the quality of service. Depends of the metric, the value can be a percentile, a threshold, etc."},"created":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created","description":"Time of creation, as Unix timestamp."},"updated":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated","description":"Time of last update, as Unix timestamp."}},"additionalProperties":true,"type":"object","required":["id","router_id","user_id","type","timeout","model_name","qos_metric"],"title":"ProviderResponse"},"ProviderSortField":{"type":"string","enum":["id","model_name","created"],"title":"ProviderSortField"},"ProviderType":{"type":"string","enum":["albert","openai","mistral","tei","vllm"],"title":"ProviderType"},"ProvidersResponse":{"properties":{"object":{"type":"string","const":"list","title":"Object","description":"Type of the object.","default":"list"},"total":{"type":"integer","title":"Total","description":"Total number of providers."},"offset":{"type":"integer","title":"Offset","description":"Offset of the providers list."},"limit":{"type":"integer","title":"Limit","description":"Limit of the providers list."},"data":{"items":{"$ref":"#/components/schemas/ProviderResponse"},"type":"array","title":"Data","description":"List of providers."}},"additionalProperties":true,"type":"object","required":["total","offset","limit","data"],"title":"ProvidersResponse"},"QoSMetric":{"type":"string","enum":["ttft","latency","inflight","performance"],"title":"QoSMetric"},"RerankResponse":{"properties":{"object":{"type":"string","const":"list","title":"Object","default":"list"},"id":{"type":"string","title":"Id","description":"A unique identifier for the request."},"results":{"items":{"$ref":"#/components/schemas/RerankResult"},"type":"array","title":"Results","description":"The list of reranked texts."},"model":{"type":"string","title":"Model","description":"The model used to generate the reranking."},"usage":{"$ref":"#/components/schemas/api__domain__usage__entities__Usage","description":"Usage information for the request."}},"additionalProperties":true,"type":"object","required":["id","results","model"],"title":"RerankResponse"},"RerankResult":{"properties":{"relevance_score":{"type":"number","title":"Relevance Score","description":"The relevance score of the reranked text."},"index":{"type":"integer","title":"Index","description":"The index of the reranked text."}},"additionalProperties":true,"type":"object","required":["relevance_score","index"],"title":"RerankResult"},"ResponseFormat":{"properties":{"type":{"type":"string","enum":["text","json_object","json_schema"],"title":"Type","description":"Specify the format that the model must output. By default it will use `{ \"type\": \"text\" }`. Setting to `{ \"type\": \"json_object\" }` enables JSON mode, which guarantees the message the model generates is in JSON. When using JSON mode you MUST also instruct the model to produce JSON yourself with a system or a user message. Setting to `{ \"type\": \"json_schema\" }` enables JSON schema mode, which guarantees the message the model generates is in JSON and follows the schema you provide.","default":"text"},"json_schema":{"anyOf":[{"$ref":"#/components/schemas/JsonSchema"},{"type":"null"}],"description":"The JSON schema definition. Required when type is 'json_schema'."}},"additionalProperties":true,"type":"object","title":"ResponseFormat"},"RoleResponse":{"properties":{"object":{"type":"string","const":"role","title":"Object","description":"Type of the object.","default":"role"},"id":{"type":"integer","title":"Id","description":"ID of the role."},"name":{"type":"string","title":"Name","description":"Name of the role."},"permissions":{"items":{"$ref":"#/components/schemas/PermissionType"},"type":"array","title":"Permissions","description":"List of permissions."},"limits":{"items":{"$ref":"#/components/schemas/Limit"},"type":"array","title":"Limits","description":"List of limits."},"users":{"type":"integer","title":"Users","description":"Number of users assigned to the role."},"created":{"type":"integer","title":"Created","description":"Time of creation, as Unix timestamp."},"updated":{"type":"integer","title":"Updated","description":"Time of last update, as Unix timestamp."}},"additionalProperties":true,"type":"object","required":["id","name","permissions","limits","users","created","updated"],"title":"RoleResponse"},"RolesResponse":{"properties":{"object":{"type":"string","const":"list","title":"Object","description":"Type of the object.","default":"list"},"total":{"type":"integer","title":"Total","description":"Total number of roles."},"offset":{"type":"integer","title":"Offset","description":"Offset of the roles list."},"limit":{"type":"integer","title":"Limit","description":"Limit of the roles list."},"data":{"items":{"$ref":"#/components/schemas/RoleResponse"},"type":"array","title":"Data","description":"List of roles."}},"additionalProperties":true,"type":"object","required":["total","offset","limit","data"],"title":"RolesResponse"},"RouterLoadBalancingStrategy":{"type":"string","enum":["shuffle","least_busy"],"title":"RouterLoadBalancingStrategy"},"RouterResponse":{"properties":{"object":{"type":"string","const":"router","title":"Object","description":"Type of the object.","default":"router"},"id":{"type":"integer","title":"Id","description":"ID of the router."},"name":{"type":"string","title":"Name","description":"Name of the router."},"user_id":{"type":"integer","title":"User Id","description":"ID of the user that owns the router."},"type":{"$ref":"#/components/schemas/api__schemas__models__ModelType","description":"Type of the model router. It will be used to identify the model router type.","examples":["text-generation"]},"aliases":{"items":{"type":"string","maxLength":64,"minLength":1},"type":"array","title":"Aliases","description":"Aliases of the model. It will be used to identify the model by users.","examples":[["model-alias","model-alias-2"]]},"load_balancing_strategy":{"$ref":"#/components/schemas/RouterLoadBalancingStrategy","description":"Routing strategy for load balancing between providers of the model. It will be used to identify the model type.","examples":["least_busy"]},"vector_size":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Vector Size","description":"Dimension of the vectors, if the models are embeddings. Make sure it is the same for all models."},"max_context_length":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Context Length","description":"Maximum amount of tokens a context could contains. Make sure it is the same for all models."},"cost_prompt_tokens":{"type":"number","title":"Cost Prompt Tokens","description":"Cost of a million prompt tokens (decrease user budget)"},"cost_completion_tokens":{"type":"number","title":"Cost Completion Tokens","description":"Cost of a million completion tokens (decrease user budget)"},"providers":{"type":"integer","title":"Providers","description":"Number of providers in the router.","default":0},"created":{"type":"integer","title":"Created","description":"Time of creation, as Unix timestamp."},"updated":{"type":"integer","title":"Updated","description":"Time of last update, as Unix timestamp."}},"additionalProperties":true,"type":"object","required":["id","name","user_id","type","aliases","load_balancing_strategy","cost_prompt_tokens","cost_completion_tokens","created","updated"],"title":"RouterResponse"},"RoutersResponse":{"properties":{"object":{"type":"string","const":"list","title":"Object","description":"Type of the object.","default":"list"},"total":{"type":"integer","title":"Total","description":"Total number of routers."},"offset":{"type":"integer","title":"Offset","description":"Offset of the routers list."},"limit":{"type":"integer","title":"Limit","description":"Limit of the routers list."},"data":{"items":{"$ref":"#/components/schemas/RouterResponse"},"type":"array","title":"Data","description":"List of routers."}},"additionalProperties":true,"type":"object","required":["total","offset","limit","data"],"title":"RoutersResponse"},"Segment":{"properties":{"id":{"type":"integer","title":"Id","description":"A unique identifier for the segment."},"type":{"type":"string","title":"Type","description":"The type of the segment.","default":"transcript.text.segment"},"text":{"type":"string","title":"Text","description":"The segment text."},"start":{"type":"number","title":"Start","description":"Start time of the segment in seconds."},"end":{"type":"number","title":"End","description":"End time of the segment in seconds."},"speaker":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Speaker","description":"Speaker label assigned by diarization, if available."}},"additionalProperties":true,"type":"object","required":["id","text","start","end"],"title":"Segment"},"SortField":{"type":"string","enum":["id","name","created"],"title":"SortField"},"SortOrder":{"type":"string","enum":["asc","desc"],"title":"SortOrder"},"Token":{"properties":{"object":{"type":"string","const":"token","title":"Object","default":"token"},"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"token":{"type":"string","title":"Token"},"user":{"type":"integer","title":"User"},"expires":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expires"},"created":{"type":"integer","title":"Created"}},"additionalProperties":true,"type":"object","required":["id","name","token","user","created"],"title":"Token"},"Tokens":{"properties":{"object":{"type":"string","const":"list","title":"Object","default":"list"},"data":{"items":{"$ref":"#/components/schemas/Token"},"type":"array","title":"Data"}},"additionalProperties":true,"type":"object","required":["data"],"title":"Tokens"},"TokensResponse":{"properties":{"id":{"type":"integer","title":"Id"},"token":{"type":"string","title":"Token"}},"additionalProperties":true,"type":"object","required":["id","token"],"title":"TokensResponse"},"TopLogprob":{"properties":{"token":{"type":"string","title":"Token"},"bytes":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Bytes"},"logprob":{"type":"number","title":"Logprob"}},"additionalProperties":true,"type":"object","required":["token","logprob"],"title":"TopLogprob"},"Unset":{"properties":{},"type":"object","title":"Unset"},"UpdateProviderBody":{"properties":{"router_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Router Id","description":"The ID of the new router to assign to the provider."},"timeout":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Timeout","description":"Timeout for the model provider requests, after user receive an 500 error (model is too busy)."},"model_hosting_zone":{"anyOf":[{"$ref":"#/components/schemas/HostingZone"},{"type":"null"}],"description":"Model hosting zone using ISO 3166-1 alpha-3 code format (e.g., `WOR` for World, `FRA` for France, `USA` for United States). This determines the electricity mix used for carbon intensity calculations. For more information, see https://ecologits.ai"},"model_total_params":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Model Total Params","description":"Total params of the model in billions of parameters for carbon footprint computation. If not provided, the active params will be used if provided, else carbon footprint will not be computed. For more information, see https://ecologits.ai"},"model_active_params":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Model Active Params","description":"Active params of the model in billions of parameters for carbon footprint computation. If not provided, the total params will be used if provided, else carbon footprint will not be computed. For more information, see https://ecologits.ai"},"qos_metric":{"anyOf":[{"$ref":"#/components/schemas/QoSMetric"},{"type":"null"}],"description":"The metric to use for the quality of service policy. If not provided, no QoS policy is applied."},"qos_limit":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Qos Limit","description":"The value to use for the quality of service. Depends of the metric, the value can be a percentile, a threshold, etc."}},"additionalProperties":true,"type":"object","title":"UpdateProviderBody"},"UpdateRouterBody":{"properties":{"name":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Name","description":"Name of the model router.","examples":["model-router-1"]},"type":{"anyOf":[{"$ref":"#/components/schemas/ModelType-Input"},{"type":"null"}],"description":"Type of the model router. It will be used to identify the model router type.","examples":["text-generation"]},"aliases":{"anyOf":[{"items":{"type":"string","maxLength":64,"minLength":1},"type":"array"},{"type":"null"}],"title":"Aliases","description":"Aliases of the model. It will be used to identify the model by users.","examples":[["model-alias","model-alias-2"]]},"load_balancing_strategy":{"anyOf":[{"$ref":"#/components/schemas/RouterLoadBalancingStrategy"},{"type":"null"}],"description":"Routing strategy for load balancing between providers of the model. It will be used to identify the model type.","examples":["least_busy"]},"cost_prompt_tokens":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Cost Prompt Tokens","description":"Cost of a million prompt tokens (decrease user budget)"},"cost_completion_tokens":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Cost Completion Tokens","description":"Cost of a million completion tokens (decrease user budget)"}},"additionalProperties":true,"type":"object","title":"UpdateRouterBody"},"UpdateUserInfo":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"The user name."},"email":{"anyOf":[{"type":"string","maxLength":254},{"type":"null"}],"title":"Email","description":"The user email."},"current_password":{"anyOf":[{"type":"string","maxLength":72},{"type":"null"}],"title":"Current Password","description":"The current user password."},"password":{"anyOf":[{"type":"string","maxLength":72},{"type":"null"}],"title":"Password","description":"The new user password. If None, the user password is not changed."}},"additionalProperties":true,"type":"object","title":"UpdateUserInfo"},"UsageDetail":{"properties":{"prompt_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Prompt Tokens","description":"Number of prompt tokens (e.g. input tokens)."},"completion_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Completion Tokens","description":"Number of completion tokens (e.g. output tokens)."},"total_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Tokens","description":"Total number of tokens (e.g. input and output tokens)."},"cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cost","description":"Total cost of the request."},"impacts":{"$ref":"#/components/schemas/api__schemas__usage__EnvironmentalImpacts"},"metrics":{"$ref":"#/components/schemas/MetricsUsage"}},"additionalProperties":true,"type":"object","title":"UsageDetail"},"Usages":{"properties":{"object":{"type":"string","const":"list","title":"Object","description":"Object type.","default":"list"},"data":{"items":{"$ref":"#/components/schemas/api__schemas__me__usage__Usage"},"type":"array","title":"Data","description":"List of usages."}},"additionalProperties":true,"type":"object","required":["data"],"title":"Usages"},"UserInfo":{"properties":{"object":{"type":"string","const":"userInfo","title":"Object","description":"The user info object type.","default":"userInfo"},"id":{"type":"integer","title":"Id","description":"The user ID."},"email":{"type":"string","title":"Email","description":"The user email."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"The user name."},"organization":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Organization","description":"The user organization ID."},"budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Budget","description":"The user budget. If None, the user has unlimited budget."},"permissions":{"items":{"$ref":"#/components/schemas/PermissionType"},"type":"array","title":"Permissions","description":"The user permissions."},"limits":{"items":{"$ref":"#/components/schemas/Limit"},"type":"array","title":"Limits","description":"The user rate limits."},"expires":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expires","description":"The user expiration timestamp. If None, the user will never expire."},"priority":{"type":"integer","title":"Priority","description":"The user priority (higher = higher priority). This value influences scheduling/queue priority for non-streaming model invocations.","default":0},"created":{"type":"integer","title":"Created","description":"The user creation timestamp."},"updated":{"type":"integer","title":"Updated","description":"The user update timestamp."}},"additionalProperties":true,"type":"object","required":["id","email","permissions","limits","created","updated"],"title":"UserInfo"},"UserResponse":{"properties":{"object":{"type":"string","const":"user","title":"Object","description":"Type of the object.","default":"user"},"id":{"type":"integer","title":"Id","description":"ID of the user."},"email":{"type":"string","title":"Email","description":"Email of the user."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Name of the user."},"sub":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sub","description":"Subject identifier for SSO."},"iss":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Iss","description":"Issuer identifier for SSO."},"role":{"type":"integer","title":"Role","description":"ID of the role assigned to the user."},"organization_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Organization Id","description":"ID of the organization the user belongs to."},"budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Budget","description":"Budget allocated to the user."},"expires":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expires","description":"Expiration time of the user, as Unix timestamp."},"created":{"type":"integer","title":"Created","description":"Time of creation, as Unix timestamp."},"updated":{"type":"integer","title":"Updated","description":"Time of last update, as Unix timestamp."},"priority":{"type":"integer","title":"Priority","description":"Priority of the user. Higher value means higher priority."}},"additionalProperties":true,"type":"object","required":["id","email","role","created","updated","priority"],"title":"UserResponse"},"UserSortField":{"type":"string","enum":["id","email","created","updated"],"title":"UserSortField"},"UserUpdateRequest":{"properties":{"email":{"anyOf":[{"type":"string","maxLength":254,"minLength":1},{"type":"null"}],"title":"Email","description":"The new user email. If None, the user email is not changed."},"name":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Name","description":"The new user name. If None, the user name is not changed."},"current_password":{"anyOf":[{"type":"string","maxLength":72,"minLength":1},{"type":"null"}],"title":"Current Password","description":"The current user password."},"password":{"anyOf":[{"type":"string","maxLength":72,"minLength":1},{"type":"null"}],"title":"Password","description":"The new user password. If None, the user password is not changed."},"role":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Role","description":"The new role ID. If None, the user role is not changed."},"organization":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Organization","description":"The new organization ID. If None, the user will be removed from the organization if he was in one."},"budget":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Budget","description":"The new budget. If None, the user will have no budget."},"expires":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expires","description":"The new expiration timestamp. If None, the user will never expire."},"priority":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Priority","description":"The new user priority. Higher value means higher priority. If None, unchanged."}},"additionalProperties":true,"type":"object","title":"UserUpdateRequest"},"UsersResponse":{"properties":{"object":{"type":"string","const":"list","title":"Object","description":"Type of the object.","default":"list"},"total":{"type":"integer","title":"Total","description":"Total number of users matching the query."},"offset":{"type":"integer","title":"Offset","description":"Number of users skipped."},"limit":{"type":"integer","title":"Limit","description":"Maximum number of users returned."},"data":{"items":{"$ref":"#/components/schemas/UserResponse"},"type":"array","title":"Data","description":"List of users."}},"additionalProperties":true,"type":"object","required":["total","offset","limit","data"],"title":"UsersResponse"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"api__domain__model__entities__ModelType":{"type":"string","enum":["automatic-speech-recognition","image-text-to-text","image-to-text","text-classification","text-embeddings-inference","text-generation"],"title":"ModelType"},"api__domain__usage__entities__EnvironmentalImpacts":{"properties":{"kWh":{"type":"number","title":"Kwh","default":0.0},"kgCO2eq":{"type":"number","title":"Kgco2Eq","default":0.0}},"additionalProperties":true,"type":"object","title":"EnvironmentalImpacts"},"api__domain__usage__entities__Usage":{"properties":{"prompt_tokens":{"type":"integer","title":"Prompt Tokens","default":0},"completion_tokens":{"type":"integer","title":"Completion Tokens","default":0},"total_tokens":{"type":"integer","title":"Total Tokens","default":0},"cost":{"type":"number","title":"Cost","default":0.0},"impacts":{"$ref":"#/components/schemas/api__domain__usage__entities__EnvironmentalImpacts","default":{"kWh":0.0,"kgCO2eq":0.0}}},"additionalProperties":true,"type":"object","title":"Usage"},"api__infrastructure__fastapi__documentation__HTTPExceptionModel":{"properties":{"status_code":{"type":"integer","title":"Status Code"},"detail":{"type":"string","title":"Detail"},"headers":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Headers"}},"type":"object","required":["status_code","detail"],"title":"HTTPExceptionModel"},"api__infrastructure__fastapi__schemas__admin__keys__CreateKeyResponse":{"properties":{"object":{"type":"string","const":"key","title":"Object","description":"Type of the object.","default":"key"},"id":{"type":"integer","title":"Id","description":"ID of the key."},"name":{"type":"string","title":"Name","description":"Name of the key."},"value":{"type":"string","title":"Value","description":"Value of the key."},"user":{"type":"integer","title":"User","description":"ID of the user that owns the key."},"expires":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expires","description":"Time of expiration, as Unix timestamp. If None, the key never expires."},"created":{"type":"integer","title":"Created","description":"Time of creation, as Unix timestamp."}},"additionalProperties":true,"type":"object","required":["id","name","value","user","created"],"title":"CreateKeyResponse"},"api__schemas__exception__HTTPExceptionModel":{"properties":{"status_code":{"type":"integer","maximum":599.0,"minimum":100.0,"title":"Status Code","description":"HTTP status code to send to the client."},"detail":{"title":"Detail","description":"Any data to be sent to the client in the `detail` key of the JSON response."},"headers":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Headers","description":"Any headers to send to the client in the response."}},"type":"object","required":["status_code","detail","headers"],"title":"HTTPExceptionModel"},"api__schemas__me__keys__CreateKeyResponse":{"properties":{"id":{"type":"integer","title":"Id"},"token":{"type":"string","title":"Token"}},"additionalProperties":true,"type":"object","required":["id","token"],"title":"CreateKeyResponse"},"api__schemas__me__usage__Usage":{"properties":{"object":{"type":"string","const":"me.usage","title":"Object","description":"Object type.","default":"me.usage"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"Model used for the request."},"key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key","description":"Key used for the request."},"endpoint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Endpoint","description":"Endpoint used for the request."},"method":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Method","description":"Method used for the request."},"status":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Status","description":"Status code of the response."},"usage":{"$ref":"#/components/schemas/UsageDetail"},"created":{"type":"integer","title":"Created","description":"Timestamp in seconds"}},"additionalProperties":true,"type":"object","required":["created"],"title":"Usage"},"api__schemas__models__ModelType":{"type":"string","enum":["automatic-speech-recognition","image-text-to-text","image-to-text","text-embeddings-inference","text-generation","text-classification"],"title":"ModelType"},"api__schemas__usage__EnvironmentalImpacts":{"properties":{"kWh":{"type":"number","title":"Kwh","description":"Carbon footprint in kWh.","default":0.0},"kgCO2eq":{"type":"number","title":"Kgco2Eq","description":"Carbon footprint in kgCO2eq (global warming potential).","default":0.0}},"additionalProperties":true,"type":"object","title":"EnvironmentalImpacts"},"api__schemas__usage__Usage":{"properties":{"prompt_tokens":{"type":"integer","title":"Prompt Tokens","description":"Number of prompt tokens (e.g. input tokens).","default":0},"completion_tokens":{"type":"integer","title":"Completion Tokens","description":"Number of completion tokens (e.g. output tokens).","default":0},"total_tokens":{"type":"integer","title":"Total Tokens","description":"Total number of tokens (e.g. input and output tokens).","default":0},"cost":{"type":"number","title":"Cost","description":"Total cost of the request.","default":0.0},"carbon":{"$ref":"#/components/schemas/CarbonFootprintUsage","deprecated":true},"impacts":{"$ref":"#/components/schemas/api__schemas__usage__EnvironmentalImpacts"},"requests":{"type":"integer","title":"Requests","description":"Number of model requests.","default":0}},"additionalProperties":true,"type":"object","title":"Usage"},"openai__types__chat__chat_completion__Choice":{"properties":{"finish_reason":{"type":"string","enum":["stop","length","tool_calls","content_filter","function_call"],"title":"Finish Reason"},"index":{"type":"integer","title":"Index"},"logprobs":{"anyOf":[{"$ref":"#/components/schemas/ChoiceLogprobs"},{"type":"null"}]},"message":{"$ref":"#/components/schemas/ChatCompletionMessage"}},"additionalProperties":true,"type":"object","required":["finish_reason","index","message"],"title":"Choice"},"openai__types__chat__chat_completion_chunk__Choice":{"properties":{"delta":{"$ref":"#/components/schemas/ChoiceDelta"},"finish_reason":{"anyOf":[{"type":"string","enum":["stop","length","tool_calls","content_filter","function_call"]},{"type":"null"}],"title":"Finish Reason"},"index":{"type":"integer","title":"Index"},"logprobs":{"anyOf":[{"$ref":"#/components/schemas/ChoiceLogprobs"},{"type":"null"}]}},"additionalProperties":true,"type":"object","required":["delta","index"],"title":"Choice"}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}}} \ No newline at end of file diff --git a/docs/redoc-static.html b/docs/redoc-static.html index cb11060fb..4e90c3fb0 100644 --- a/docs/redoc-static.html +++ b/docs/redoc-static.html @@ -12,7 +12,7 @@ margin: 0; } -