mirror of
https://github.com/meta-llama/llama-stack.git
synced 2025-12-23 08:22:28 +00:00
feat: migrate Inspect API to FastAPI router (#4403)
# What does this PR do? Migrate the Inspect API to the FastAPI router pattern. Changes: - Add inspect API to FastAPI router registry - Add PUBLIC_ROUTE_KEY support for routes that don't require auth - Update WebMethod creation to respect route's openapi_extra for authentication requirements Fixes: https://github.com/llamastack/llama-stack/issues/4346 <!-- Provide a short summary of what this PR does and why. Link to relevant issues if applicable. --> <!-- If resolving an issue, uncomment and update the line below --> <!-- Closes #[issue-number] --> ## Test Plan CI and various curls on /v1/inspect/routes, /v1/health, /v1/version Signed-off-by: Sébastien Han <seb@redhat.com>
This commit is contained in:
parent
cd5095a247
commit
a7d509aaf9
14 changed files with 281 additions and 182 deletions
53
src/llama_stack_api/inspect_api/models.py
Normal file
53
src/llama_stack_api/inspect_api/models.py
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
# All rights reserved.
|
||||
#
|
||||
# This source code is licensed under the terms described in the LICENSE file in
|
||||
# the root directory of this source tree.
|
||||
|
||||
"""Pydantic models for Inspect API requests and responses.
|
||||
|
||||
This module defines the request and response models for the Inspect API
|
||||
using Pydantic with Field descriptions for OpenAPI schema generation.
|
||||
"""
|
||||
|
||||
from typing import Literal
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
from llama_stack_api.datatypes import HealthStatus
|
||||
from llama_stack_api.schema_utils import json_schema_type
|
||||
|
||||
# Valid values for the route filter parameter.
|
||||
# Actual API levels: v1, v1alpha, v1beta (filters by level, excludes deprecated)
|
||||
# Special filter value: "deprecated" (shows deprecated routes regardless of level)
|
||||
ApiFilter = Literal["v1", "v1alpha", "v1beta", "deprecated"]
|
||||
|
||||
|
||||
@json_schema_type
|
||||
class RouteInfo(BaseModel):
|
||||
"""Information about an API route including its path, method, and implementing providers."""
|
||||
|
||||
route: str = Field(description="The API route path")
|
||||
method: str = Field(description="The HTTP method for the route")
|
||||
provider_types: list[str] = Field(description="List of provider types implementing this route")
|
||||
|
||||
|
||||
@json_schema_type
|
||||
class HealthInfo(BaseModel):
|
||||
"""Health status information for the service."""
|
||||
|
||||
status: HealthStatus = Field(description="The health status of the service")
|
||||
|
||||
|
||||
@json_schema_type
|
||||
class VersionInfo(BaseModel):
|
||||
"""Version information for the service."""
|
||||
|
||||
version: str = Field(description="The version string of the service")
|
||||
|
||||
|
||||
@json_schema_type
|
||||
class ListRoutesResponse(BaseModel):
|
||||
"""Response containing a list of all available API routes."""
|
||||
|
||||
data: list[RouteInfo] = Field(description="List of available API routes")
|
||||
Loading…
Add table
Add a link
Reference in a new issue