Catalog PyPI
Back to packageRELEASE DETAILS

4.2.0

PyPI

admin-api-lib

The admin backend is responsible for the document management. This includes deletion, upload and returning the source document.

Published10 Feb 2026
Direct dependencies18
Transitive dependenciesNot calculated

README

Version 4.2.0 documentation

admin-api-lib

Document lifecycle orchestration for the STACKIT RAG template. This library exposes a FastAPI-compatible admin surface that receives raw user content, coordinates extraction, summarisation, chunking, and storage, and finally hands normalized information pieces to the core RAG API.

It powers the services/admin-backend deployment and is the primary integration point for operators managing their document corpus.

Responsibilities

  1. Ingestion – Accept files or external sources from the admin UI or API clients.
  2. Extraction – Call extractor-api-lib to obtain normalized information pieces.
  3. Enhancement – Summarize and enrich content using LLMs and tracing hooks from rag-core-lib.
  4. Chunking – Split content via recursive or semantic strategies before vectorization.
  5. Persistence – Store raw assets in S3-compatible storage and push processed chunks to rag-core-api.
  6. Status tracking – Keep track of upload progress and expose document status endpoints backed by KeyDB/Redis.

Feature highlights

  • Ready-to-wire dependency-injector container with sensible defaults for S3 storage, KeyDB status tracking, and background tasks.
  • Pluggable chunkers (recursive vs semantic) and summariser implementations with shared retry/backoff controls.
  • Rich Pydantic request/response models covering uploads, non-file sources, and document status queries.
  • Thin endpoint implementations that can be swapped or extended while keeping the public API stable.
  • Structured tracing (Langfuse) and logging that mirror the behaviour of the chat backend.

Installation

pip install admin-api-lib

Requires Python 3.13 and rag-core-lib.

Module tour

  • dependency_container.py – Configures and wires dependency-injection providers. Override registrations here to customise behaviour.
  • api_endpoints/ & impl/api_endpoints/ – Endpoints + abstractions for file uploads, source uploads, deletions, document status, and reference retrieval.
  • apis/ – Admin API abstractions and implementations.
  • chunker/ & impl/chunker/ – Abstractions + default text/semantic chunkers and chunker type selection class.
  • extractor_api_client/ & rag_backend_client/ – Generated OpenAPI clients to talk to the extractor and rag core API services.
  • file_services/ & impl/file_services/ – Abstract and default S3 interface.
  • summarizer/ & impl/summarizer/ – Interfaces and LangChain-based summariser that leverage shared retry logic.
  • information_enhancer/ & impl/information_enhancer/ – Abstractions + page and summary enhancer. Enhancers are centralized with general enhancer.
  • impl/key_db/ – KeyDB/Redis client implementation for document status tracking.
  • impl/mapper/ – Mapper between extractor documents and langchain documents.
  • impl/settings/ – Configuration settings for dependency injection container components.
  • prompt_templates/ – Default summarisation prompt shipped with the template.
  • utils/ – Utility functions and classes.

Endpoints provided

  • POST /upload_file – Uploads user selected files
  • POST /upload_source - Uploads user selected sources
  • DELETE /documents/{identification} – Deletes a document from the system.
  • GET /document_reference/{identification} – Retrieves a document reference.
  • GET /all_documents_status – Retrieves the status of all documents.

Refer to libs/README.md for in-depth API documentation.

Configuration overview

All settings are powered by pydantic-settings, so you can use environment variables or instantiate classes manually:

  • S3_* (S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY, S3_ENDPOINT, S3_BUCKET) – configure storage for raw uploads.
  • DOCUMENT_EXTRACTOR_HOST – base URL of the extractor service.
  • RAG_API_HOST – base URL of the rag-core API.
  • CHUNKER_CLASS_TYPE_CHUNKER_TYPE – choose recursive (default) or semantic chunking.
  • CHUNKER_* (CHUNKER_MAX_SIZE, CHUNKER_OVERLAP, CHUNKER_BREAKPOINT_THRESHOLD_TYPE, …) – fine-tune chunking behaviour.
  • SUMMARIZER_MAXIMUM_INPUT_SIZE, SUMMARIZER_MAXIMUM_CONCURRENCY, SUMMARIZER_MAX_RETRIES, etc. – tune summariser limits and retry behaviour.
  • SOURCE_UPLOADER_TIMEOUT – adjust how long non-file source ingestions wait before timing out.
  • USECASE_KEYVALUE_HOST / USECASE_KEYVALUE_PORT – configure the KeyDB/Redis instance that persists document status.
  • USECASE_KEYVALUE_USERNAME / USECASE_KEYVALUE_PASSWORD – optional credentials for authenticating against KeyDB/Redis.
  • USECASE_KEYVALUE_USE_SSL, USECASE_KEYVALUE_SSL_CERT_REQS, USECASE_KEYVALUE_SSL_CA_CERTS, USECASE_KEYVALUE_SSL_CERTFILE, USECASE_KEYVALUE_SSL_KEYFILE, USECASE_KEYVALUE_SSL_CHECK_HOSTNAME – optional TLS settings for managed Redis deployments (e.g., STACKIT Redis or other SSL-only endpoints).

The Helm chart forwards these values through adminBackend.envs.*, keeping deployments declarative. Local development can rely on .env as described in the repository root README.

Typical usage

from admin_api_lib.main import app as perfect_admin_app

The admin frontend (services/frontend → Admin app) and automation scripts talk to these endpoints to manage the corpus. Downstream, rag-core-api receives the processed information pieces and stores them in the vector database.

Extending the library

  1. Implement a new interface (e.g., Chunker, Summarizer, FileService).
  2. Register it in dependency_container.py or override via dependency-injector in your service.
  3. Update or add API endpoints if you expose new capabilities.
  4. Cover the new behaviour with pytest-based unit tests under libs/admin-api-lib/tests.

Because components depend on interfaces defined here, downstream services can swap behavior without modifying the public API surface.

Contributing

Ensure new endpoints or adapters remain thin and defer to rag-core-lib for shared logic. Run poetry run pytest and the configured linters before opening a PR. For further instructions see the Contributing Guide.

License

Licensed under the project license. See the root LICENSE file.

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 18

Native requirements
18 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
rag-core-lib
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<4.0,>=3.13",
  "evaluation": "NOT_EVALUATED"
}
rag-core-lib==4.2.0runtime
uvicorn
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<4.0,>=3.13",
  "evaluation": "NOT_EVALUATED"
}
uvicorn<0.41.0,>=0.40.0runtime
fastapi
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<4.0,>=3.13",
  "evaluation": "NOT_EVALUATED"
}
fastapi<0.129.0,>=0.128.0runtime
dependency-injector
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<4.0,>=3.13",
  "evaluation": "NOT_EVALUATED"
}
dependency-injector<5.0.0,>=4.46.0runtime
python-dateutil
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<4.0,>=3.13",
  "evaluation": "NOT_EVALUATED"
}
python-dateutil<3.0.0,>=2.9.0.post0runtime
tenacity
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<4.0,>=3.13",
  "evaluation": "NOT_EVALUATED"
}
tenacity==9.1.2runtime
boto3
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<4.0,>=3.13",
  "evaluation": "NOT_EVALUATED"
}
boto3<2.0.0,>=1.38.10runtime
tqdm
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<4.0,>=3.13",
  "evaluation": "NOT_EVALUATED"
}
tqdm<5.0.0,>=4.67.1runtime
langfuse
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<4.0,>=3.13",
  "evaluation": "NOT_EVALUATED"
}
langfuse<4.0.0,>=3.10.1runtime
redis
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<4.0,>=3.13",
  "evaluation": "NOT_EVALUATED"
}
redis<7.0.0,>=6.0.0runtime
pyyaml
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<4.0,>=3.13",
  "evaluation": "NOT_EVALUATED"
}
pyyaml<7.0.0,>=6.0.2runtime
python-multipart
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<4.0,>=3.13",
  "evaluation": "NOT_EVALUATED"
}
python-multipart<0.0.23,>=0.0.22runtime
marshmallow
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<4.0,>=3.13",
  "evaluation": "NOT_EVALUATED"
}
marshmallow<4.0.0,>=3.26.2runtime
protobuf
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<4.0,>=3.13",
  "evaluation": "NOT_EVALUATED"
}
protobuf<6.0.0,>=5.29.6runtime
langchain-experimental
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<4.0,>=3.13",
  "evaluation": "NOT_EVALUATED"
}
langchain-experimental<0.5.0,>=0.4.0runtime
nltk
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<4.0,>=3.13",
  "evaluation": "NOT_EVALUATED"
}
nltk<4.0.0,>=3.9.2runtime
starlette
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<4.0,>=3.13",
  "evaluation": "NOT_EVALUATED"
}
starlette>=0.49.1runtime
langgraph-checkpoint
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<4.0,>=3.13",
  "evaluation": "NOT_EVALUATED"
}
langgraph-checkpoint<4.0.0,>=3.0.0runtime

Distribution files

2 collected
admin_api_lib-4.2.0-py3-none-any.whl

bdist_wheel · 117.67 KB · Python py3

Source file
admin_api_lib-4.2.0.tar.gz

sdist · 67.96 KB · Python source

Source file

Repository

PENDING
stackitcloud/rag-template

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 19:40 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:110ef41e66d40fed93b8e963dcb5d11f52e7c192e4fee6f3e1c8184edb2866d0

Other collected versions

View all collected versions →