diff --git a/.github/workflows/platform-frontend-ci.yml b/.github/workflows/platform-frontend-ci.yml index 97b4d38e06..486a7d07f5 100644 --- a/.github/workflows/platform-frontend-ci.yml +++ b/.github/workflows/platform-frontend-ci.yml @@ -55,6 +55,9 @@ jobs: - name: Install dependencies run: pnpm install --frozen-lockfile + - name: Generate API client + run: pnpm generate:api-client + - name: Run tsc check run: pnpm type-check diff --git a/.gitignore b/.gitignore index ce70fab9f1..b6c2fdc035 100644 --- a/.gitignore +++ b/.gitignore @@ -165,7 +165,7 @@ package-lock.json # Allow for locally private items # private -pri* +pri* # ignore ig* .github_access_token @@ -177,3 +177,6 @@ autogpt_platform/backend/settings.py *.ign.* .test-contents .claude/settings.local.json + +# Auto generated client +autogpt_platform/frontend/src/api/__generated__ diff --git a/autogpt_platform/README.md b/autogpt_platform/README.md index 6d535d5543..8422a29f0e 100644 --- a/autogpt_platform/README.md +++ b/autogpt_platform/README.md @@ -62,6 +62,12 @@ To run the AutoGPT Platform, follow these steps: pnpm i ``` + Generate the API client (this step is required before running the frontend): + + ``` + pnpm generate:api-client + ``` + Then start the frontend application in development mode: ``` @@ -164,3 +170,27 @@ To persist data for PostgreSQL and Redis, you can modify the `docker-compose.yml 3. Save the file and run `docker compose up -d` to apply the changes. This configuration will create named volumes for PostgreSQL and Redis, ensuring that your data persists across container restarts. + +### API Client Generation + +The platform includes scripts for generating and managing the API client: + +- `pnpm fetch:openapi`: Fetches the OpenAPI specification from the backend service (requires backend to be running on port 8006) +- `pnpm generate:api-client`: Generates the TypeScript API client from the OpenAPI specification using Orval +- `pnpm generate:api-all`: Runs both fetch and generate commands in sequence + +#### Manual API Client Updates + +If you need to update the API client after making changes to the backend API: + +1. Ensure the backend services are running: + ``` + docker compose up -d + ``` + +2. Generate the updated API client: + ``` + pnpm generate:api-all + ``` + +This will fetch the latest OpenAPI specification and regenerate the TypeScript client code. diff --git a/autogpt_platform/backend/backend/server/rest_api.py b/autogpt_platform/backend/backend/server/rest_api.py index 6a90d664b9..f18bd932f3 100644 --- a/autogpt_platform/backend/backend/server/rest_api.py +++ b/autogpt_platform/backend/backend/server/rest_api.py @@ -191,10 +191,12 @@ app.include_router( backend.server.v2.library.routes.router, tags=["v2"], prefix="/api/library" ) app.include_router( - backend.server.v2.otto.routes.router, tags=["v2"], prefix="/api/otto" + backend.server.v2.otto.routes.router, tags=["v2", "otto"], prefix="/api/otto" ) app.include_router( - backend.server.v2.turnstile.routes.router, tags=["v2"], prefix="/api/turnstile" + backend.server.v2.turnstile.routes.router, + tags=["v2", "turnstile"], + prefix="/api/turnstile", ) app.include_router( diff --git a/autogpt_platform/backend/backend/server/routers/postmark/postmark.py b/autogpt_platform/backend/backend/server/routers/postmark/postmark.py index d9c1b17863..b83b77dc12 100644 --- a/autogpt_platform/backend/backend/server/routers/postmark/postmark.py +++ b/autogpt_platform/backend/backend/server/routers/postmark/postmark.py @@ -34,7 +34,7 @@ router = APIRouter() logger = logging.getLogger(__name__) -@router.post("/unsubscribe") +@router.post("/unsubscribe", summary="One Click Email Unsubscribe") async def unsubscribe_via_one_click(token: Annotated[str, Query()]): logger.info("Received unsubscribe request from One Click Unsubscribe") try: @@ -48,7 +48,11 @@ async def unsubscribe_via_one_click(token: Annotated[str, Query()]): return JSONResponse(status_code=200, content={"status": "ok"}) -@router.post("/", dependencies=[Depends(postmark_validator.get_dependency())]) +@router.post( + "/", + dependencies=[Depends(postmark_validator.get_dependency())], + summary="Handle Postmark Email Webhooks", +) async def postmark_webhook_handler( webhook: Annotated[ PostmarkWebhook, diff --git a/autogpt_platform/backend/backend/server/routers/v1.py b/autogpt_platform/backend/backend/server/routers/v1.py index 9bc402bb27..e177d22d34 100644 --- a/autogpt_platform/backend/backend/server/routers/v1.py +++ b/autogpt_platform/backend/backend/server/routers/v1.py @@ -113,14 +113,22 @@ v1_router.include_router( ######################################################## -@v1_router.post("/auth/user", tags=["auth"], dependencies=[Depends(auth_middleware)]) +@v1_router.post( + "/auth/user", + summary="Get or create user", + tags=["auth"], + dependencies=[Depends(auth_middleware)], +) async def get_or_create_user_route(user_data: dict = Depends(auth_middleware)): user = await get_or_create_user(user_data) return user.model_dump() @v1_router.post( - "/auth/user/email", tags=["auth"], dependencies=[Depends(auth_middleware)] + "/auth/user/email", + summary="Update user email", + tags=["auth"], + dependencies=[Depends(auth_middleware)], ) async def update_user_email_route( user_id: Annotated[str, Depends(get_user_id)], email: str = Body(...) @@ -132,6 +140,7 @@ async def update_user_email_route( @v1_router.get( "/auth/user/preferences", + summary="Get notification preferences", tags=["auth"], dependencies=[Depends(auth_middleware)], ) @@ -144,6 +153,7 @@ async def get_preferences( @v1_router.post( "/auth/user/preferences", + summary="Update notification preferences", tags=["auth"], dependencies=[Depends(auth_middleware)], ) @@ -161,14 +171,20 @@ async def update_preferences( @v1_router.get( - "/onboarding", tags=["onboarding"], dependencies=[Depends(auth_middleware)] + "/onboarding", + summary="Get onboarding status", + tags=["onboarding"], + dependencies=[Depends(auth_middleware)], ) async def get_onboarding(user_id: Annotated[str, Depends(get_user_id)]): return await get_user_onboarding(user_id) @v1_router.patch( - "/onboarding", tags=["onboarding"], dependencies=[Depends(auth_middleware)] + "/onboarding", + summary="Update onboarding progress", + tags=["onboarding"], + dependencies=[Depends(auth_middleware)], ) async def update_onboarding( user_id: Annotated[str, Depends(get_user_id)], data: UserOnboardingUpdate @@ -178,6 +194,7 @@ async def update_onboarding( @v1_router.get( "/onboarding/agents", + summary="Get recommended agents", tags=["onboarding"], dependencies=[Depends(auth_middleware)], ) @@ -189,6 +206,7 @@ async def get_onboarding_agents( @v1_router.get( "/onboarding/enabled", + summary="Check onboarding enabled", tags=["onboarding", "public"], dependencies=[Depends(auth_middleware)], ) @@ -201,7 +219,12 @@ async def is_onboarding_enabled(): ######################################################## -@v1_router.get(path="/blocks", tags=["blocks"], dependencies=[Depends(auth_middleware)]) +@v1_router.get( + path="/blocks", + summary="List available blocks", + tags=["blocks"], + dependencies=[Depends(auth_middleware)], +) def get_graph_blocks() -> Sequence[dict[Any, Any]]: blocks = [block() for block in get_blocks().values()] costs = get_block_costs() @@ -212,6 +235,7 @@ def get_graph_blocks() -> Sequence[dict[Any, Any]]: @v1_router.post( path="/blocks/{block_id}/execute", + summary="Execute graph block", tags=["blocks"], dependencies=[Depends(auth_middleware)], ) @@ -231,7 +255,12 @@ async def execute_graph_block(block_id: str, data: BlockInput) -> CompletedBlock ######################################################## -@v1_router.get(path="/credits", dependencies=[Depends(auth_middleware)]) +@v1_router.get( + path="/credits", + tags=["credits"], + summary="Get user credits", + dependencies=[Depends(auth_middleware)], +) async def get_user_credits( user_id: Annotated[str, Depends(get_user_id)], ) -> dict[str, int]: @@ -239,7 +268,10 @@ async def get_user_credits( @v1_router.post( - path="/credits", tags=["credits"], dependencies=[Depends(auth_middleware)] + path="/credits", + summary="Request credit top up", + tags=["credits"], + dependencies=[Depends(auth_middleware)], ) async def request_top_up( request: RequestTopUp, user_id: Annotated[str, Depends(get_user_id)] @@ -252,6 +284,7 @@ async def request_top_up( @v1_router.post( path="/credits/{transaction_key}/refund", + summary="Refund credit transaction", tags=["credits"], dependencies=[Depends(auth_middleware)], ) @@ -264,7 +297,10 @@ async def refund_top_up( @v1_router.patch( - path="/credits", tags=["credits"], dependencies=[Depends(auth_middleware)] + path="/credits", + summary="Fulfill checkout session", + tags=["credits"], + dependencies=[Depends(auth_middleware)], ) async def fulfill_checkout(user_id: Annotated[str, Depends(get_user_id)]): await _user_credit_model.fulfill_checkout(user_id=user_id) @@ -273,6 +309,7 @@ async def fulfill_checkout(user_id: Annotated[str, Depends(get_user_id)]): @v1_router.post( path="/credits/auto-top-up", + summary="Configure auto top up", tags=["credits"], dependencies=[Depends(auth_middleware)], ) @@ -301,6 +338,7 @@ async def configure_user_auto_top_up( @v1_router.get( path="/credits/auto-top-up", + summary="Get auto top up", tags=["credits"], dependencies=[Depends(auth_middleware)], ) @@ -310,7 +348,9 @@ async def get_user_auto_top_up( return await get_auto_top_up(user_id) -@v1_router.post(path="/credits/stripe_webhook", tags=["credits"]) +@v1_router.post( + path="/credits/stripe_webhook", summary="Handle Stripe webhooks", tags=["credits"] +) async def stripe_webhook(request: Request): # Get the raw request body payload = await request.body() @@ -345,14 +385,24 @@ async def stripe_webhook(request: Request): return Response(status_code=200) -@v1_router.get(path="/credits/manage", dependencies=[Depends(auth_middleware)]) +@v1_router.get( + path="/credits/manage", + tags=["credits"], + summary="Manage payment methods", + dependencies=[Depends(auth_middleware)], +) async def manage_payment_method( user_id: Annotated[str, Depends(get_user_id)], ) -> dict[str, str]: return {"url": await _user_credit_model.create_billing_portal_session(user_id)} -@v1_router.get(path="/credits/transactions", dependencies=[Depends(auth_middleware)]) +@v1_router.get( + path="/credits/transactions", + tags=["credits"], + summary="Get credit history", + dependencies=[Depends(auth_middleware)], +) async def get_credit_history( user_id: Annotated[str, Depends(get_user_id)], transaction_time: datetime | None = None, @@ -370,7 +420,12 @@ async def get_credit_history( ) -@v1_router.get(path="/credits/refunds", dependencies=[Depends(auth_middleware)]) +@v1_router.get( + path="/credits/refunds", + tags=["credits"], + summary="Get refund requests", + dependencies=[Depends(auth_middleware)], +) async def get_refund_requests( user_id: Annotated[str, Depends(get_user_id)], ) -> list[RefundRequest]: @@ -386,7 +441,12 @@ class DeleteGraphResponse(TypedDict): version_counts: int -@v1_router.get(path="/graphs", tags=["graphs"], dependencies=[Depends(auth_middleware)]) +@v1_router.get( + path="/graphs", + summary="List user graphs", + tags=["graphs"], + dependencies=[Depends(auth_middleware)], +) async def get_graphs( user_id: Annotated[str, Depends(get_user_id)], ) -> Sequence[graph_db.GraphModel]: @@ -394,10 +454,14 @@ async def get_graphs( @v1_router.get( - path="/graphs/{graph_id}", tags=["graphs"], dependencies=[Depends(auth_middleware)] + path="/graphs/{graph_id}", + summary="Get specific graph", + tags=["graphs"], + dependencies=[Depends(auth_middleware)], ) @v1_router.get( path="/graphs/{graph_id}/versions/{version}", + summary="Get graph version", tags=["graphs"], dependencies=[Depends(auth_middleware)], ) @@ -421,6 +485,7 @@ async def get_graph( @v1_router.get( path="/graphs/{graph_id}/versions", + summary="Get all graph versions", tags=["graphs"], dependencies=[Depends(auth_middleware)], ) @@ -434,7 +499,10 @@ async def get_graph_all_versions( @v1_router.post( - path="/graphs", tags=["graphs"], dependencies=[Depends(auth_middleware)] + path="/graphs", + summary="Create new graph", + tags=["graphs"], + dependencies=[Depends(auth_middleware)], ) async def create_new_graph( create_graph: CreateGraph, @@ -457,7 +525,10 @@ async def create_new_graph( @v1_router.delete( - path="/graphs/{graph_id}", tags=["graphs"], dependencies=[Depends(auth_middleware)] + path="/graphs/{graph_id}", + summary="Delete graph permanently", + tags=["graphs"], + dependencies=[Depends(auth_middleware)], ) async def delete_graph( graph_id: str, user_id: Annotated[str, Depends(get_user_id)] @@ -469,7 +540,10 @@ async def delete_graph( @v1_router.put( - path="/graphs/{graph_id}", tags=["graphs"], dependencies=[Depends(auth_middleware)] + path="/graphs/{graph_id}", + summary="Update graph version", + tags=["graphs"], + dependencies=[Depends(auth_middleware)], ) async def update_graph( graph_id: str, @@ -515,6 +589,7 @@ async def update_graph( @v1_router.put( path="/graphs/{graph_id}/versions/active", + summary="Set active graph version", tags=["graphs"], dependencies=[Depends(auth_middleware)], ) @@ -553,6 +628,7 @@ async def set_graph_active_version( @v1_router.post( path="/graphs/{graph_id}/execute/{graph_version}", + summary="Execute graph agent", tags=["graphs"], dependencies=[Depends(auth_middleware)], ) @@ -586,6 +662,7 @@ async def execute_graph( @v1_router.post( path="/graphs/{graph_id}/executions/{graph_exec_id}/stop", + summary="Stop graph execution", tags=["graphs"], dependencies=[Depends(auth_middleware)], ) @@ -613,6 +690,7 @@ async def stop_graph_run( @v1_router.get( path="/executions", + summary="Get all executions", tags=["graphs"], dependencies=[Depends(auth_middleware)], ) @@ -624,6 +702,7 @@ async def get_graphs_executions( @v1_router.get( path="/graphs/{graph_id}/executions", + summary="Get graph executions", tags=["graphs"], dependencies=[Depends(auth_middleware)], ) @@ -636,6 +715,7 @@ async def get_graph_executions( @v1_router.get( path="/graphs/{graph_id}/executions/{graph_exec_id}", + summary="Get execution details", tags=["graphs"], dependencies=[Depends(auth_middleware)], ) @@ -665,6 +745,7 @@ async def get_graph_execution( @v1_router.delete( path="/executions/{graph_exec_id}", + summary="Delete graph execution", tags=["graphs"], dependencies=[Depends(auth_middleware)], status_code=HTTP_204_NO_CONTENT, @@ -692,6 +773,7 @@ class ScheduleCreationRequest(pydantic.BaseModel): @v1_router.post( path="/schedules", + summary="Create execution schedule", tags=["schedules"], dependencies=[Depends(auth_middleware)], ) @@ -719,6 +801,7 @@ async def create_schedule( @v1_router.delete( path="/schedules/{schedule_id}", + summary="Delete execution schedule", tags=["schedules"], dependencies=[Depends(auth_middleware)], ) @@ -732,6 +815,7 @@ async def delete_schedule( @v1_router.get( path="/schedules", + summary="List execution schedules", tags=["schedules"], dependencies=[Depends(auth_middleware)], ) @@ -752,6 +836,7 @@ async def get_execution_schedules( @v1_router.post( "/api-keys", + summary="Create new API key", response_model=CreateAPIKeyResponse, tags=["api-keys"], dependencies=[Depends(auth_middleware)], @@ -782,6 +867,7 @@ async def create_api_key( @v1_router.get( "/api-keys", + summary="List user API keys", response_model=list[APIKeyWithoutHash] | dict[str, str], tags=["api-keys"], dependencies=[Depends(auth_middleware)], @@ -802,6 +888,7 @@ async def get_api_keys( @v1_router.get( "/api-keys/{key_id}", + summary="Get specific API key", response_model=APIKeyWithoutHash, tags=["api-keys"], dependencies=[Depends(auth_middleware)], @@ -825,6 +912,7 @@ async def get_api_key( @v1_router.delete( "/api-keys/{key_id}", + summary="Revoke API key", response_model=APIKeyWithoutHash, tags=["api-keys"], dependencies=[Depends(auth_middleware)], @@ -853,6 +941,7 @@ async def delete_api_key( @v1_router.post( "/api-keys/{key_id}/suspend", + summary="Suspend API key", response_model=APIKeyWithoutHash, tags=["api-keys"], dependencies=[Depends(auth_middleware)], @@ -878,6 +967,7 @@ async def suspend_key( @v1_router.put( "/api-keys/{key_id}/permissions", + summary="Update key permissions", response_model=APIKeyWithoutHash, tags=["api-keys"], dependencies=[Depends(auth_middleware)], diff --git a/autogpt_platform/backend/backend/server/v2/admin/credit_admin_routes.py b/autogpt_platform/backend/backend/server/v2/admin/credit_admin_routes.py index f19d8b45f0..009c541432 100644 --- a/autogpt_platform/backend/backend/server/v2/admin/credit_admin_routes.py +++ b/autogpt_platform/backend/backend/server/v2/admin/credit_admin_routes.py @@ -22,7 +22,9 @@ router = APIRouter( ) -@router.post("/add_credits", response_model=AddUserCreditsResponse) +@router.post( + "/add_credits", response_model=AddUserCreditsResponse, summary="Add Credits to User" +) async def add_user_credits( user_id: typing.Annotated[str, Body()], amount: typing.Annotated[int, Body()], @@ -49,6 +51,7 @@ async def add_user_credits( @router.get( "/users_history", response_model=UserHistoryResponse, + summary="Get All Users History", ) async def admin_get_all_user_history( admin_user: typing.Annotated[ diff --git a/autogpt_platform/backend/backend/server/v2/admin/store_admin_routes.py b/autogpt_platform/backend/backend/server/v2/admin/store_admin_routes.py index e59b0c4805..88f69360a4 100644 --- a/autogpt_platform/backend/backend/server/v2/admin/store_admin_routes.py +++ b/autogpt_platform/backend/backend/server/v2/admin/store_admin_routes.py @@ -19,6 +19,7 @@ router = fastapi.APIRouter(prefix="/admin", tags=["store", "admin"]) @router.get( "/listings", + summary="Get Admin Listings History", response_model=backend.server.v2.store.model.StoreListingsWithVersionsResponse, dependencies=[fastapi.Depends(autogpt_libs.auth.depends.requires_admin_user)], ) @@ -63,6 +64,7 @@ async def get_admin_listings_with_versions( @router.post( "/submissions/{store_listing_version_id}/review", + summary="Review Store Submission", response_model=backend.server.v2.store.model.StoreSubmission, dependencies=[fastapi.Depends(autogpt_libs.auth.depends.requires_admin_user)], ) @@ -104,6 +106,7 @@ async def review_submission( @router.get( "/submissions/download/{store_listing_version_id}", + summary="Admin Download Agent File", tags=["store", "admin"], dependencies=[fastapi.Depends(autogpt_libs.auth.depends.requires_admin_user)], ) diff --git a/autogpt_platform/backend/backend/server/v2/library/routes/agents.py b/autogpt_platform/backend/backend/server/v2/library/routes/agents.py index 9a0b19b56b..54a0cd235f 100644 --- a/autogpt_platform/backend/backend/server/v2/library/routes/agents.py +++ b/autogpt_platform/backend/backend/server/v2/library/routes/agents.py @@ -20,6 +20,7 @@ router = APIRouter( @router.get( "", + summary="List Library Agents", responses={ 500: {"description": "Server error", "content": {"application/json": {}}}, }, @@ -77,7 +78,7 @@ async def list_library_agents( ) from e -@router.get("/{library_agent_id}") +@router.get("/{library_agent_id}", summary="Get Library Agent") async def get_library_agent( library_agent_id: str, user_id: str = Depends(autogpt_auth_lib.depends.get_user_id), @@ -87,6 +88,7 @@ async def get_library_agent( @router.get( "/marketplace/{store_listing_version_id}", + summary="Get Agent By Store ID", tags=["store, library"], response_model=library_model.LibraryAgent | None, ) @@ -118,6 +120,7 @@ async def get_library_agent_by_store_listing_version_id( @router.post( "", + summary="Add Marketplace Agent", status_code=status.HTTP_201_CREATED, responses={ 201: {"description": "Agent added successfully"}, @@ -180,6 +183,7 @@ async def add_marketplace_agent_to_library( @router.put( "/{library_agent_id}", + summary="Update Library Agent", status_code=status.HTTP_204_NO_CONTENT, responses={ 204: {"description": "Agent updated successfully"}, @@ -232,7 +236,7 @@ async def update_library_agent( ) from e -@router.post("/{library_agent_id}/fork") +@router.post("/{library_agent_id}/fork", summary="Fork Library Agent") async def fork_library_agent( library_agent_id: str, user_id: str = Depends(autogpt_auth_lib.depends.get_user_id), diff --git a/autogpt_platform/backend/backend/server/v2/library/routes/presets.py b/autogpt_platform/backend/backend/server/v2/library/routes/presets.py index 9df8df3c2b..23fc80d23e 100644 --- a/autogpt_platform/backend/backend/server/v2/library/routes/presets.py +++ b/autogpt_platform/backend/backend/server/v2/library/routes/presets.py @@ -11,7 +11,9 @@ from backend.util.exceptions import NotFoundError logger = logging.getLogger(__name__) -router = APIRouter() +router = APIRouter( + tags=["presets"], +) @router.get( diff --git a/autogpt_platform/backend/backend/server/v2/otto/routes.py b/autogpt_platform/backend/backend/server/v2/otto/routes.py index d2574e35ca..0e2231f4bc 100644 --- a/autogpt_platform/backend/backend/server/v2/otto/routes.py +++ b/autogpt_platform/backend/backend/server/v2/otto/routes.py @@ -14,7 +14,10 @@ router = APIRouter() @router.post( - "/ask", response_model=ApiResponse, dependencies=[Depends(auth_middleware)] + "/ask", + response_model=ApiResponse, + dependencies=[Depends(auth_middleware)], + summary="Proxy Otto Chat Request", ) async def proxy_otto_request( request: ChatRequest, user_id: str = Depends(get_user_id) diff --git a/autogpt_platform/backend/backend/server/v2/store/routes.py b/autogpt_platform/backend/backend/server/v2/store/routes.py index 41795f5d88..96218d52a8 100644 --- a/autogpt_platform/backend/backend/server/v2/store/routes.py +++ b/autogpt_platform/backend/backend/server/v2/store/routes.py @@ -29,6 +29,7 @@ router = fastapi.APIRouter() @router.get( "/profile", + summary="Get user profile", tags=["store", "private"], response_model=backend.server.v2.store.model.ProfileDetails, ) @@ -61,6 +62,7 @@ async def get_profile( @router.post( "/profile", + summary="Update user profile", tags=["store", "private"], dependencies=[fastapi.Depends(autogpt_libs.auth.middleware.auth_middleware)], response_model=backend.server.v2.store.model.CreatorDetails, @@ -107,6 +109,7 @@ async def update_or_create_profile( @router.get( "/agents", + summary="List store agents", tags=["store", "public"], response_model=backend.server.v2.store.model.StoreAgentsResponse, ) @@ -179,6 +182,7 @@ async def get_agents( @router.get( "/agents/{username}/{agent_name}", + summary="Get specific agent", tags=["store", "public"], response_model=backend.server.v2.store.model.StoreAgentDetails, ) @@ -208,6 +212,7 @@ async def get_agent(username: str, agent_name: str): @router.get( "/graph/{store_listing_version_id}", + summary="Get agent graph", tags=["store"], ) async def get_graph_meta_by_store_listing_version_id( @@ -232,6 +237,7 @@ async def get_graph_meta_by_store_listing_version_id( @router.get( "/agents/{store_listing_version_id}", + summary="Get agent by version", tags=["store"], response_model=backend.server.v2.store.model.StoreAgentDetails, ) @@ -257,6 +263,7 @@ async def get_store_agent( @router.post( "/agents/{username}/{agent_name}/review", + summary="Create agent review", tags=["store"], dependencies=[fastapi.Depends(autogpt_libs.auth.middleware.auth_middleware)], response_model=backend.server.v2.store.model.StoreReview, @@ -308,6 +315,7 @@ async def create_review( @router.get( "/creators", + summary="List store creators", tags=["store", "public"], response_model=backend.server.v2.store.model.CreatorsResponse, ) @@ -359,6 +367,7 @@ async def get_creators( @router.get( "/creator/{username}", + summary="Get creator details", tags=["store", "public"], response_model=backend.server.v2.store.model.CreatorDetails, ) @@ -390,6 +399,7 @@ async def get_creator( ############################################ @router.get( "/myagents", + summary="Get my agents", tags=["store", "private"], dependencies=[fastapi.Depends(autogpt_libs.auth.middleware.auth_middleware)], response_model=backend.server.v2.store.model.MyAgentsResponse, @@ -412,6 +422,7 @@ async def get_my_agents( @router.delete( "/submissions/{submission_id}", + summary="Delete store submission", tags=["store", "private"], dependencies=[fastapi.Depends(autogpt_libs.auth.middleware.auth_middleware)], response_model=bool, @@ -448,6 +459,7 @@ async def delete_submission( @router.get( "/submissions", + summary="List my submissions", tags=["store", "private"], dependencies=[fastapi.Depends(autogpt_libs.auth.middleware.auth_middleware)], response_model=backend.server.v2.store.model.StoreSubmissionsResponse, @@ -501,6 +513,7 @@ async def get_submissions( @router.post( "/submissions", + summary="Create store submission", tags=["store", "private"], dependencies=[fastapi.Depends(autogpt_libs.auth.middleware.auth_middleware)], response_model=backend.server.v2.store.model.StoreSubmission, @@ -548,6 +561,7 @@ async def create_submission( @router.post( "/submissions/media", + summary="Upload submission media", tags=["store", "private"], dependencies=[fastapi.Depends(autogpt_libs.auth.middleware.auth_middleware)], ) @@ -585,6 +599,7 @@ async def upload_submission_media( @router.post( "/submissions/generate_image", + summary="Generate submission image", tags=["store", "private"], dependencies=[fastapi.Depends(autogpt_libs.auth.middleware.auth_middleware)], ) @@ -646,6 +661,7 @@ async def generate_image( @router.get( "/download/agents/{store_listing_version_id}", + summary="Download agent file", tags=["store", "public"], ) async def download_agent_file( diff --git a/autogpt_platform/backend/backend/server/v2/turnstile/routes.py b/autogpt_platform/backend/backend/server/v2/turnstile/routes.py index d1803df584..7a4fe5bafa 100644 --- a/autogpt_platform/backend/backend/server/v2/turnstile/routes.py +++ b/autogpt_platform/backend/backend/server/v2/turnstile/routes.py @@ -13,7 +13,9 @@ router = APIRouter() settings = Settings() -@router.post("/verify", response_model=TurnstileVerifyResponse) +@router.post( + "/verify", response_model=TurnstileVerifyResponse, summary="Verify Turnstile Token" +) async def verify_turnstile_token( request: TurnstileVerifyRequest, ) -> TurnstileVerifyResponse: diff --git a/autogpt_platform/frontend/.env.example b/autogpt_platform/frontend/.env.example index 2760ee361a..0660979013 100644 --- a/autogpt_platform/frontend/.env.example +++ b/autogpt_platform/frontend/.env.example @@ -8,6 +8,8 @@ NEXT_PUBLIC_LAUNCHDARKLY_ENABLED=false NEXT_PUBLIC_LAUNCHDARKLY_CLIENT_ID= NEXT_PUBLIC_APP_ENV=local +NEXT_PUBLIC_AGPT_SERVER_BASE_URL=http://localhost:8006 + ## Locale settings NEXT_PUBLIC_DEFAULT_LOCALE=en @@ -35,4 +37,4 @@ NEXT_PUBLIC_CLOUDFLARE_TURNSTILE_SITE_KEY= NEXT_PUBLIC_TURNSTILE=disabled # Devtools -NEXT_PUBLIC_REACT_QUERY_DEVTOOL=true \ No newline at end of file +NEXT_PUBLIC_REACT_QUERY_DEVTOOL=true diff --git a/autogpt_platform/frontend/orval.config.ts b/autogpt_platform/frontend/orval.config.ts new file mode 100644 index 0000000000..afce23a441 --- /dev/null +++ b/autogpt_platform/frontend/orval.config.ts @@ -0,0 +1,59 @@ +import { defineConfig } from "orval"; + +export default defineConfig({ + autogpt_api_client: { + input: { + target: `./src/api/openapi.json`, + override: { + transformer: "./src/api/transformers/fix-tags.mjs", + }, + }, + output: { + workspace: "./src/api", + target: `./__generated__/endpoints`, + schemas: "./__generated__/models", + mode: "tags-split", + client: "react-query", + httpClient: "fetch", + indexFiles: false, + mock: { + type: "msw", + delay: 1000, // artifical latency + generateEachHttpStatus: true, // helps us test error-handling scenarios and generate mocks for all HTTP statuses + }, + override: { + mutator: { + path: "./mutators/custom-mutator.ts", + name: "customMutator", + }, + query: { + useQuery: true, + useMutation: true, + // Will add more as their use cases arise + }, + }, + }, + hooks: { + afterAllFilesWrite: "prettier --write", + }, + }, + autogpt_zod_schema: { + input: { + target: `./src/api/openapi.json`, + override: { + transformer: "./src/api/transformers/fix-tags.mjs", + }, + }, + output: { + workspace: "./src/api", + target: `./__generated__/zod-schema`, + schemas: "./__generated__/models", + mode: "tags-split", + client: "zod", + indexFiles: false, + }, + hooks: { + afterAllFilesWrite: "prettier --write", + }, + }, +}); diff --git a/autogpt_platform/frontend/package.json b/autogpt_platform/frontend/package.json index db99a8eecc..39edca7d05 100644 --- a/autogpt_platform/frontend/package.json +++ b/autogpt_platform/frontend/package.json @@ -5,7 +5,7 @@ "scripts": { "dev": "next dev --turbo", "dev:test": "NODE_ENV=test && next dev --turbo", - "build": "SKIP_STORYBOOK_TESTS=true next build", + "build": "pnpm run generate:api-client && SKIP_STORYBOOK_TESTS=true next build", "start": "next start", "start:standalone": "cd .next/standalone && node server.js", "lint": "next lint && prettier --check .", @@ -18,7 +18,10 @@ "storybook": "storybook dev -p 6006", "build-storybook": "storybook build", "test-storybook": "test-storybook", - "test-storybook:ci": "concurrently -k -s first -n \"SB,TEST\" -c \"magenta,blue\" \"pnpm run build-storybook -- --quiet && npx http-server storybook-static --port 6006 --silent\" \"wait-on tcp:6006 && pnpm run test-storybook\"" + "test-storybook:ci": "concurrently -k -s first -n \"SB,TEST\" -c \"magenta,blue\" \"pnpm run build-storybook -- --quiet && npx http-server storybook-static --port 6006 --silent\" \"wait-on tcp:6006 && pnpm run test-storybook\"", + "fetch:openapi": "curl http://localhost:8006/openapi.json > ./src/api/openapi.json && prettier --write ./src/api/openapi.json", + "generate:api-client": "orval --config ./orval.config.ts", + "generate:api-all": "pnpm run fetch:openapi && pnpm run generate:api-client" }, "browserslist": [ "defaults" @@ -116,6 +119,7 @@ "import-in-the-middle": "1.14.2", "msw": "2.10.2", "msw-storybook-addon": "2.0.5", + "orval": "7.10.0", "postcss": "8.5.6", "prettier": "3.5.3", "prettier-plugin-tailwindcss": "0.6.12", diff --git a/autogpt_platform/frontend/pnpm-lock.yaml b/autogpt_platform/frontend/pnpm-lock.yaml index 25de706c3f..b3d1e7975d 100644 --- a/autogpt_platform/frontend/pnpm-lock.yaml +++ b/autogpt_platform/frontend/pnpm-lock.yaml @@ -97,7 +97,7 @@ importers: version: 0.2.4 '@xyflow/react': specifier: 12.6.4 - version: 12.6.4(@types/react@18.3.17)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 12.6.4(@types/react@18.3.17)(immer@9.0.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) ajv: specifier: 8.17.1 version: 8.17.1 @@ -279,6 +279,9 @@ importers: msw-storybook-addon: specifier: 2.0.5 version: 2.0.5(msw@2.10.2(@types/node@22.15.30)(typescript@5.8.3)) + orval: + specifier: 7.10.0 + version: 7.10.0(openapi-types@12.1.3) postcss: specifier: 8.5.6 version: 8.5.6 @@ -314,6 +317,25 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} + '@apidevtools/json-schema-ref-parser@11.7.2': + resolution: {integrity: sha512-4gY54eEGEstClvEkGnwVkTkrx0sqwemEFG5OSRRn3tD91XH0+Q8XIkYIfo7IwEWPpJZwILb9GUXeShtplRc/eA==} + engines: {node: '>= 16'} + + '@apidevtools/openapi-schemas@2.1.0': + resolution: {integrity: sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ==} + engines: {node: '>=10'} + + '@apidevtools/swagger-methods@3.0.2': + resolution: {integrity: sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg==} + + '@apidevtools/swagger-parser@10.1.1': + resolution: {integrity: sha512-u/kozRnsPO/x8QtKYJOqoGtC4kH6yg1lfYkB9Au0WhYB0FNLpyFusttQtvhlwjtG3rOwiRz4D8DnnXa8iEpIKA==} + peerDependencies: + openapi-types: '>=7' + + '@asyncapi/specs@6.8.1': + resolution: {integrity: sha512-czHoAk3PeXTLR+X8IUaD+IpT+g+zUvkcgMDJVothBsan+oHN3jfcFcFUNdOPAAFoUCQN1hXF1dWuphWy05THlA==} + '@babel/code-frame@7.27.1': resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} @@ -1073,6 +1095,9 @@ packages: resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@exodus/schemasafe@1.3.0': + resolution: {integrity: sha512-5Aap/GaRupgNx/feGBwLLTVv8OQFfv3pq2lPRzPg9R+IOBnDgghTGW7l7EuVXOvg5cc/xSAlRW8rBrjIC3Nvqw==} + '@faker-js/faker@9.8.0': resolution: {integrity: sha512-U9wpuSrJC93jZBxx/Qq2wPjCuYISBueyVUGK7qqdmj7r/nxaxwW8AQDCLeRO7wZnjj94sh3p246cAYjUKuqgfg==} engines: {node: '>=18.0.0', npm: '>=9.0.0'} @@ -1092,6 +1117,9 @@ packages: '@floating-ui/utils@0.2.9': resolution: {integrity: sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==} + '@gerrit0/mini-shiki@3.6.0': + resolution: {integrity: sha512-KaeJvPNofTEZR9EzVNp/GQzbQqkGfjiu6k3CXKvhVTX+8OoAKSX/k7qxLKOX3B0yh2XqVAc93rsOu48CGt2Qug==} + '@hookform/resolvers@5.1.1': resolution: {integrity: sha512-J/NVING3LMAEvexJkyTLjruSm7aOFx7QX21pzkiJfMoNG0wl5aFEjLTl7ay7IQb9EWY6AkrBy7tHL2Alijpdcg==} peerDependencies: @@ -1110,6 +1138,14 @@ packages: resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} deprecated: Use @eslint/object-schema instead + '@ibm-cloud/openapi-ruleset-utilities@1.9.0': + resolution: {integrity: sha512-AoFbSarOqFBYH+1TZ9Ahkm2IWYSi5v0pBk88fpV+5b3qGJukypX8PwvCWADjuyIccKg48/F73a6hTTkBzDQ2UA==} + engines: {node: '>=16.0.0'} + + '@ibm-cloud/openapi-ruleset@1.31.1': + resolution: {integrity: sha512-3WK2FREmDA2aadCjD71PE7tx5evyvmhg80ts1kXp2IzXIA0ZJ7guGM66tj40kxaqwpMSGchwEnnfYswntav76g==} + engines: {node: '>=16.0.0'} + '@img/sharp-darwin-arm64@0.34.2': resolution: {integrity: sha512-OfXHZPppddivUJnqyKoi5YVeHRkkNE2zUFT2gbpKxp/JZCFYEYubnMg+gOp6lWfasPrTS+KPosKqdI+ELYVDtg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -1282,6 +1318,27 @@ packages: '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@jsdevtools/ono@7.1.3': + resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} + + '@jsep-plugin/assignment@1.3.0': + resolution: {integrity: sha512-VVgV+CXrhbMI3aSusQyclHkenWSAm95WaiKrMxRFam3JSUiIaQjoMIw2sEs/OX4XifnqeQUN4DYbJjlA8EfktQ==} + engines: {node: '>= 10.16.0'} + peerDependencies: + jsep: ^0.4.0||^1.0.0 + + '@jsep-plugin/regex@1.0.4': + resolution: {integrity: sha512-q7qL4Mgjs1vByCaTnDFcBnV9HS7GVPJX5vyVoCgZHNSC9rjwIlmbXG5sUuorR5ndfHAIlJ8pVStxvjXHbNvtUg==} + engines: {node: '>= 10.16.0'} + peerDependencies: + jsep: ^0.4.0||^1.0.0 + + '@jsep-plugin/ternary@1.1.4': + resolution: {integrity: sha512-ck5wiqIbqdMX6WRQztBL7ASDty9YLgJ3sSAK5ZpBzXeySvFGCzIvM6UiAI4hTZ22fEcYQVV/zhUbNscggW+Ukg==} + engines: {node: '>= 10.16.0'} + peerDependencies: + jsep: ^0.4.0||^1.0.0 + '@mdx-js/react@3.1.0': resolution: {integrity: sha512-QjHtSaoameoalGnKDT3FoIl4+9RwyTmo9ZJGBdLOks/YOiWHoRDI3PUwEzOE7kEmGcV3AFcp9K6dYu9rEuKLAQ==} peerDependencies: @@ -1571,6 +1628,36 @@ packages: peerDependencies: '@opentelemetry/api': ^1.1.0 + '@orval/angular@7.10.0': + resolution: {integrity: sha512-M89GKo/PibxYXvOKp9+i6BLxhEW8YsO+evwuV2kMbDGNS3RiYDwzmMBcA9SVL7m8CumeZoxNEAXsupzq96ZAXA==} + + '@orval/axios@7.10.0': + resolution: {integrity: sha512-AB6BjEwyguIcH8olzOTFPvwUP8z63yP4Jfl3T2UoeFchK04KqWqxbUoxmDG9xVQ79uMs/uOrb0X+GFwdZ56gAg==} + + '@orval/core@7.10.0': + resolution: {integrity: sha512-Lm7HY4Kwzehe+2HNfi+Ov/IZ+m3nj3NskVGvOyJDAqaaHB7G/xydSCtgELG32ur4G+M/XmwChAjoP4TCNVh0VA==} + + '@orval/fetch@7.10.0': + resolution: {integrity: sha512-bWcXPmARcXhXRveBtUnkfPlkUcLEzfGaflAdqN4CtScS48LgNrXXtuyt2BV2wvEXAavCWIhnRyQvz2foTU4U8Q==} + + '@orval/hono@7.10.0': + resolution: {integrity: sha512-bOxTdZxx2BpGQf7fFuCeeUe//ZYDWc6Yz9WOhj3HrnsD06xTRKFWVBi/QZ29QcAPxqwunu/VWwbqoiHHuuX3bA==} + + '@orval/mcp@7.10.0': + resolution: {integrity: sha512-ztLXGOSxK7jFwPKAeYPR85BjKRh3KTClKEnM2MFmo2FHHojn72DPXRPCmy0Wbw5Ee+JOxK2kIpyx+HZi9XVxiA==} + + '@orval/mock@7.10.0': + resolution: {integrity: sha512-vkEWCaKEyMfWGJF5MtxVzl+blwc9vYzwdYxMoSdjA5yS2dNBrdNlt1aLtb4+aoI1jgBgpCg/OB7VtWaL5QYidA==} + + '@orval/query@7.10.0': + resolution: {integrity: sha512-DBVg8RyKWSQKhr5Zfvxx5XICUdDUkG4MJKSd4BQCrRjUWgN6vwGunMEKyfnjpS5mFUSCkwWD/I3rTkjW6aysJA==} + + '@orval/swr@7.10.0': + resolution: {integrity: sha512-ZdApomZQhJ5ZogjJgBK+haeCOP9gUaMaGKGjTVJr86jJaygDcKn54Ok1quiDUCbX42Eye+cgmQJeKeZvqnPohA==} + + '@orval/zod@7.10.0': + resolution: {integrity: sha512-AB/508IBMlVDBcGvlq+ASz7DvqU3nhoDnIeBCyjwNfQwhYzREU0qqiFBnH0XAW70c6SCMf9/bIcYbw8GAx/zxA==} + '@phosphor-icons/react@2.1.10': resolution: {integrity: sha512-vt8Tvq8GLjheAZZYa+YG/pW7HDbov8El/MANW8pOAz4eGxrwhnbfrQZq0Cp4q8zBEu8NIhHdnr+r8thnfRSNYA==} engines: {node: '>=10'} @@ -2368,9 +2455,97 @@ packages: peerDependencies: webpack: '>=4.40.0' + '@shikijs/engine-oniguruma@3.6.0': + resolution: {integrity: sha512-nmOhIZ9yT3Grd+2plmW/d8+vZ2pcQmo/UnVwXMUXAKTXdi+LK0S08Ancrz5tQQPkxvjBalpMW2aKvwXfelauvA==} + + '@shikijs/langs@3.6.0': + resolution: {integrity: sha512-IdZkQJaLBu1LCYCwkr30hNuSDfllOT8RWYVZK1tD2J03DkiagYKRxj/pDSl8Didml3xxuyzUjgtioInwEQM/TA==} + + '@shikijs/themes@3.6.0': + resolution: {integrity: sha512-Fq2j4nWr1DF4drvmhqKq8x5vVQ27VncF8XZMBuHuQMZvUSS3NBgpqfwz/FoGe36+W6PvniZ1yDlg2d4kmYDU6w==} + + '@shikijs/types@3.6.0': + resolution: {integrity: sha512-cLWFiToxYu0aAzJqhXTQsFiJRTFDAGl93IrMSBNaGSzs7ixkLfdG6pH11HipuWFGW5vyx4X47W8HDQ7eSrmBUg==} + + '@shikijs/vscode-textmate@10.0.2': + resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} + '@standard-schema/utils@0.3.0': resolution: {integrity: sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==} + '@stoplight/better-ajv-errors@1.0.3': + resolution: {integrity: sha512-0p9uXkuB22qGdNfy3VeEhxkU5uwvp/KrBTAbrLBURv6ilxIVwanKwjMc41lQfIVgPGcOkmLbTolfFrSsueu7zA==} + engines: {node: ^12.20 || >= 14.13} + peerDependencies: + ajv: '>=8' + + '@stoplight/json-ref-readers@1.2.2': + resolution: {integrity: sha512-nty0tHUq2f1IKuFYsLM4CXLZGHdMn+X/IwEUIpeSOXt0QjMUbL0Em57iJUDzz+2MkWG83smIigNZ3fauGjqgdQ==} + engines: {node: '>=8.3.0'} + + '@stoplight/json-ref-resolver@3.1.6': + resolution: {integrity: sha512-YNcWv3R3n3U6iQYBsFOiWSuRGE5su1tJSiX6pAPRVk7dP0L7lqCteXGzuVRQ0gMZqUl8v1P0+fAKxF6PLo9B5A==} + engines: {node: '>=8.3.0'} + + '@stoplight/json@3.21.7': + resolution: {integrity: sha512-xcJXgKFqv/uCEgtGlPxy3tPA+4I+ZI4vAuMJ885+ThkTHFVkC+0Fm58lA9NlsyjnkpxFh4YiQWpH+KefHdbA0A==} + engines: {node: '>=8.3.0'} + + '@stoplight/ordered-object-literal@1.0.5': + resolution: {integrity: sha512-COTiuCU5bgMUtbIFBuyyh2/yVVzlr5Om0v5utQDgBCuQUOPgU1DwoffkTfg4UBQOvByi5foF4w4T+H9CoRe5wg==} + engines: {node: '>=8'} + + '@stoplight/path@1.3.2': + resolution: {integrity: sha512-lyIc6JUlUA8Ve5ELywPC8I2Sdnh1zc1zmbYgVarhXIp9YeAB0ReeqmGEOWNtlHkbP2DAA1AL65Wfn2ncjK/jtQ==} + engines: {node: '>=8'} + + '@stoplight/spectral-core@1.20.0': + resolution: {integrity: sha512-5hBP81nCC1zn1hJXL/uxPNRKNcB+/pEIHgCjPRpl/w/qy9yC9ver04tw1W0l/PMiv0UeB5dYgozXVQ4j5a6QQQ==} + engines: {node: ^16.20 || ^18.18 || >= 20.17} + + '@stoplight/spectral-formats@1.8.2': + resolution: {integrity: sha512-c06HB+rOKfe7tuxg0IdKDEA5XnjL2vrn/m/OVIIxtINtBzphZrOgtRn7epQ5bQF5SWp84Ue7UJWaGgDwVngMFw==} + engines: {node: ^16.20 || ^18.18 || >= 20.17} + + '@stoplight/spectral-functions@1.10.1': + resolution: {integrity: sha512-obu8ZfoHxELOapfGsCJixKZXZcffjg+lSoNuttpmUFuDzVLT3VmH8QkPXfOGOL5Pz80BR35ClNAToDkdnYIURg==} + engines: {node: ^16.20 || ^18.18 || >= 20.17} + + '@stoplight/spectral-parsers@1.0.5': + resolution: {integrity: sha512-ANDTp2IHWGvsQDAY85/jQi9ZrF4mRrA5bciNHX+PUxPr4DwS6iv4h+FVWJMVwcEYdpyoIdyL+SRmHdJfQEPmwQ==} + engines: {node: ^16.20 || ^18.18 || >= 20.17} + + '@stoplight/spectral-ref-resolver@1.0.5': + resolution: {integrity: sha512-gj3TieX5a9zMW29z3mBlAtDOCgN3GEc1VgZnCVlr5irmR4Qi5LuECuFItAq4pTn5Zu+sW5bqutsCH7D4PkpyAA==} + engines: {node: ^16.20 || ^18.18 || >= 20.17} + + '@stoplight/spectral-rulesets@1.22.0': + resolution: {integrity: sha512-l2EY2jiKKLsvnPfGy+pXC0LeGsbJzcQP5G/AojHgf+cwN//VYxW1Wvv4WKFx/CLmLxc42mJYF2juwWofjWYNIQ==} + engines: {node: ^16.20 || ^18.18 || >= 20.17} + + '@stoplight/spectral-runtime@1.1.4': + resolution: {integrity: sha512-YHbhX3dqW0do6DhiPSgSGQzr6yQLlWybhKwWx0cqxjMwxej3TqLv3BXMfIUYFKKUqIwH4Q2mV8rrMM8qD2N0rQ==} + engines: {node: ^16.20 || ^18.18 || >= 20.17} + + '@stoplight/types@13.20.0': + resolution: {integrity: sha512-2FNTv05If7ib79VPDA/r9eUet76jewXFH2y2K5vuge6SXbRHtWBhcaRmu+6QpF4/WRNoJj5XYRSwLGXDxysBGA==} + engines: {node: ^12.20 || >=14.13} + + '@stoplight/types@13.6.0': + resolution: {integrity: sha512-dzyuzvUjv3m1wmhPfq82lCVYGcXG0xUYgqnWfCq3PCVR4BKFhjdkHrnJ+jIDoMKvXb05AZP/ObQF6+NpDo29IQ==} + engines: {node: ^12.20 || >=14.13} + + '@stoplight/types@14.1.1': + resolution: {integrity: sha512-/kjtr+0t0tjKr+heVfviO9FrU/uGLc+QNX3fHJc19xsCNYqU7lVhaXxDmEID9BZTjG+/r9pK9xP/xU02XGg65g==} + engines: {node: ^12.20 || >=14.13} + + '@stoplight/yaml-ast-parser@0.0.50': + resolution: {integrity: sha512-Pb6M8TDO9DtSVla9yXSTAxmo9GVEouq5P40DWXdOie69bXogZTkgvopCq+yEvTMA0F6PEvdJmbtTV3ccIp11VQ==} + + '@stoplight/yaml@4.3.0': + resolution: {integrity: sha512-JZlVFE6/dYpP9tQmV0/ADfn32L9uFarHWxfcRhReKUnljz1ZiUM5zpX+PH8h5CJs6lao3TuFqnPm9IJJCEkE2w==} + engines: {node: '>=10.8'} + '@storybook/addon-a11y@9.0.12': resolution: {integrity: sha512-xdJPYNxYU6A3DA48h6y0o3XziCp4YDGXcFKkc5Ce1GPFCa7ebFFh2trHqzevoFSGdQxWc5M3W0A4dhQtkpT4Ww==} peerDependencies: @@ -2629,6 +2804,9 @@ packages: '@types/doctrine@0.0.9': resolution: {integrity: sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==} + '@types/es-aggregate-error@1.0.6': + resolution: {integrity: sha512-qJ7LIFp06h1QE1aVxbVd+zJP2wdaugYXYfd6JxsyRMrYHaxb6itXPogW2tz+ylUJ1n1b+JF1PHyYCfYHm0dvUg==} + '@types/eslint-scope@3.7.7': resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} @@ -2736,6 +2914,9 @@ packages: '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + '@types/urijs@1.19.25': + resolution: {integrity: sha512-XOfUup9r3Y06nFAZh3WvO0rBU4OtlfPB/vgxpjg+NRdGU6CN6djdc6OEiH+PcqHCY6eFLo9Ista73uarf4gnBg==} + '@types/ws@8.18.1': resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} @@ -2995,6 +3176,19 @@ packages: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} + ajv-draft-04@1.0.0: + resolution: {integrity: sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==} + peerDependencies: + ajv: ^8.5.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv-errors@3.0.0: + resolution: {integrity: sha512-V3wD15YHfHz6y0KdhYFjyy9vWtEVALT9UrxfN3zqlI6dMioHnJrqOYfyPKol3oqrnCM9uwkcdCwkJ0WUcbLMTQ==} + peerDependencies: + ajv: ^8.0.1 + ajv-formats@2.1.1: resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} peerDependencies: @@ -3019,6 +3213,10 @@ packages: ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + ansi-escapes@4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} @@ -3085,6 +3283,10 @@ packages: resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==} engines: {node: '>= 0.4'} + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + array.prototype.findlast@1.2.5: resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} engines: {node: '>= 0.4'} @@ -3126,6 +3328,10 @@ packages: resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} engines: {node: '>=4'} + astring@1.9.0: + resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} + hasBin: true + async-function@1.0.0: resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} engines: {node: '>= 0.4'} @@ -3261,6 +3467,10 @@ packages: resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} engines: {node: '>=10.16.0'} + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + call-bind-apply-helpers@1.0.2: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} @@ -3273,6 +3483,9 @@ packages: resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} engines: {node: '>= 0.4'} + call-me-maybe@1.0.2: + resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} + callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -3329,6 +3542,10 @@ packages: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} + chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} + chromatic@11.25.2: resolution: {integrity: sha512-/9eQWn6BU1iFsop86t8Au21IksTRxwXAl7if8YHD05L2AbuMjClLWZo5cZojqrJHGKDhTqfrC2X2xE4uSm0iKw==} hasBin: true @@ -3432,6 +3649,9 @@ packages: commondir@1.0.1: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + compare-versions@6.1.1: + resolution: {integrity: sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==} + concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} @@ -3676,6 +3896,10 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} + dependency-graph@0.11.0: + resolution: {integrity: sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==} + engines: {node: '>= 0.6.0'} + dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} @@ -3699,6 +3923,10 @@ packages: diffie-hellman@5.0.3: resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} @@ -3789,9 +4017,17 @@ packages: resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} engines: {node: '>=10.13.0'} + enquirer@2.4.1: + resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} + engines: {node: '>=8.6'} + entities@2.2.0: resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + env-paths@2.2.1: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} @@ -3806,6 +4042,10 @@ packages: resolution: {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==} engines: {node: '>= 0.4'} + es-aggregate-error@1.0.14: + resolution: {integrity: sha512-3YxX6rVb07B5TV11AV5wsL7nQCHXNwoHPsQC8S4AmBiqYhyNCJ5BRKXkXyDJvs8QzXN20NgRtxe3dEEQD9NLHA==} + engines: {node: '>= 0.4'} + es-define-property@1.0.1: resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} engines: {node: '>= 0.4'} @@ -3837,6 +4077,9 @@ packages: resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} engines: {node: '>= 0.4'} + es6-promise@3.3.1: + resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} + esbuild-register@3.6.0: resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==} peerDependencies: @@ -4007,6 +4250,10 @@ packages: evp_bytestokey@1.0.3: resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + exenv@1.2.2: resolution: {integrity: sha512-Z+ktTxTwv9ILfgKCk32OX3n/doe+OcLTRtqK9pcL+JsP3J1/VW8Uvl4ZjLlKqeW4rzK4oesDOGMEMRIZqtP4Iw==} @@ -4040,6 +4287,12 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + fast-memoize@2.5.2: + resolution: {integrity: sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==} + + fast-safe-stringify@2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + fast-uri@3.0.6: resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} @@ -4137,6 +4390,10 @@ packages: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} + fs-extra@11.3.0: + resolution: {integrity: sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==} + engines: {node: '>=14.14'} + fs-monkey@1.0.6: resolution: {integrity: sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==} @@ -4188,6 +4445,10 @@ packages: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + get-symbol-description@1.1.0: resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} @@ -4230,6 +4491,10 @@ packages: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} @@ -4323,6 +4588,9 @@ packages: htmlparser2@6.1.0: resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} + http2-client@1.3.5: + resolution: {integrity: sha512-EC2utToWl4RKfs5zd36Mxq7nzHHBuomZboI0yYL6Y0RmBgT7Sgkq4rQ0ezFTYoIsSs7Tm9SJe+o2FcAg6GBhGA==} + https-browserify@1.0.0: resolution: {integrity: sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==} @@ -4330,6 +4598,10 @@ packages: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + icss-utils@5.1.0: resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} engines: {node: ^10 || ^12 || >= 14} @@ -4352,6 +4624,9 @@ packages: engines: {node: '>=16.x'} hasBin: true + immer@9.0.21: + resolution: {integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==} + import-fresh@3.3.1: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} @@ -4517,6 +4792,10 @@ packages: resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} engines: {node: '>= 0.4'} + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + is-string@1.1.1: resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} engines: {node: '>= 0.4'} @@ -4579,6 +4858,10 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true + jsep@1.4.0: + resolution: {integrity: sha512-B7qPcEVE3NVkmSJbaYxvv4cHkVW7DQsZz13pUMrfS8z8Q/BuShN+gcTXrUlPiGqM2/t/EEaI030bpxMqY8gMlw==} + engines: {node: '>= 10.16.0'} + jsesc@3.0.2: resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} engines: {node: '>=6'} @@ -4613,9 +4896,24 @@ packages: engines: {node: '>=6'} hasBin: true + jsonc-parser@2.2.1: + resolution: {integrity: sha512-o6/yDBYccGvTz1+QFevz6l6OBZ2+fMVu2JZ9CIhzsYRX4mjaK5IyX9eldUdCmga16zlgQxyrj5pt9kzuj2C02w==} + jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + jsonpath-plus@10.3.0: + resolution: {integrity: sha512-8TNmfeTCk2Le33A3vRRwtuworG/L5RrgMvdjhKZxvyShO+mBu2fP50OWUjRLNtvw344DdDarFh9buFAZs5ujeA==} + engines: {node: '>=18.0.0'} + hasBin: true + + jsonpointer@5.0.1: + resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} + engines: {node: '>=0.10.0'} + + jsonschema@1.5.0: + resolution: {integrity: sha512-K+A9hhqbn0f3pJX17Q/7H6yQfD/5OXgdrR5UE12gMXCiN9D5Xq2o5mddV2QEcX/bjla99ASsAAQUyMCCRWAEhw==} + jsx-ast-utils@3.3.5: resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} engines: {node: '>=4.0'} @@ -4646,6 +4944,10 @@ packages: react: ^16.6.3 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.4 || ^17.0.0 || ^18.0.0 || ^19.0.0 + leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -4657,6 +4959,9 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + linkify-it@5.0.0: + resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} + loader-runner@4.3.0: resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} engines: {node: '>=6.11.5'} @@ -4687,12 +4992,37 @@ packages: lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + lodash.isempty@4.4.0: + resolution: {integrity: sha512-oKMuF3xEeqDltrGMfDxAPGIVMSSRv8tbRSODbrs4KGsRRLEhrW8N8Rd4DRgB2+621hY8A8XwwrTVhXWpxFvMzg==} + lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + lodash.omitby@4.6.0: + resolution: {integrity: sha512-5OrRcIVR75M288p4nbI2WLAf3ndw2GD9fyNv3Bc15+WCxJDdZ4lYndSxGd7hnG6PVjiJTeJE2dHEGhIuKGicIQ==} + + lodash.topath@4.5.2: + resolution: {integrity: sha512-1/W4dM+35DwvE/iEd1M9ekewOSTlpFekhw9mhAtrwjVqUr83/ilQiyAvmg4tVX7Unkcfl1KC+i9WdaT4B6aQcg==} + + lodash.uniq@4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + + lodash.uniqby@4.7.0: + resolution: {integrity: sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==} + + lodash.uniqwith@4.5.0: + resolution: {integrity: sha512-7lYL8bLopMoy4CTICbxygAUq6CdRJ36vFc80DucPueUee+d5NBRxz3FdT9Pes/HEx5mPoT9jwnsEJWz1N7uq7Q==} + lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + loglevel-plugin-prefix@0.8.4: + resolution: {integrity: sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==} + + loglevel@1.9.2: + resolution: {integrity: sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==} + engines: {node: '>= 0.6.0'} + longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} @@ -4717,6 +5047,9 @@ packages: peerDependencies: react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 + lunr@2.3.9: + resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} + lz-string@1.5.0: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true @@ -4732,6 +5065,10 @@ packages: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} + markdown-it@14.1.0: + resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} + hasBin: true + math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} @@ -4763,6 +5100,9 @@ packages: mdast-util-to-string@4.0.0: resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + mdurl@2.0.0: + resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} + memfs@3.5.3: resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} engines: {node: '>= 4.0.0'} @@ -4853,6 +5193,10 @@ packages: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} @@ -4866,6 +5210,10 @@ packages: minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + minimatch@6.2.0: + resolution: {integrity: sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==} + engines: {node: '>=10'} + minimatch@8.0.4: resolution: {integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==} engines: {node: '>=16 || 14 >=14.17'} @@ -4969,12 +5317,20 @@ packages: sass: optional: true + nimma@0.2.3: + resolution: {integrity: sha512-1ZOI8J+1PKKGceo/5CT5GfQOG6H8I2BencSK06YarZ2wXwH37BSSUWldqJmMJYA5JfqDqffxDXynt6f11AyKcA==} + engines: {node: ^12.20 || >=14.13} + no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} node-abort-controller@3.1.1: resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} + node-fetch-h2@2.3.0: + resolution: {integrity: sha512-ofRW94Ab0T4AOh5Fk8t0h8OBWrmjb0SSB20xh1H8YnPV9EJ+f5AMoYSUQ2zgJ4Iq2HAK0I2l5/Nequ8YzFS3Hg==} + engines: {node: 4.x || >=6.0.0} + node-fetch@2.7.0: resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} engines: {node: 4.x || >=6.0.0} @@ -4990,6 +5346,9 @@ packages: peerDependencies: webpack: '>=5' + node-readfiles@0.2.0: + resolution: {integrity: sha512-SU00ZarexNlE4Rjdm83vglt5Y9yiQ+XI1XpflWlb7q7UTN1JUItm69xMeiQCTxtTfnzt+83T8Cx+vI2ED++VDA==} + node-releases@2.0.19: resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} @@ -4997,9 +5356,29 @@ packages: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + oas-kit-common@1.0.8: + resolution: {integrity: sha512-pJTS2+T0oGIwgjGpw7sIRU8RQMcUoKCDWFLdBqKB2BNmGpbBMH2sdqAaOXUg8OzonZHU0L7vfJu1mJFEiYDWOQ==} + + oas-linter@3.2.2: + resolution: {integrity: sha512-KEGjPDVoU5K6swgo9hJVA/qYGlwfbFx+Kg2QB/kd7rzV5N8N5Mg6PlsoCMohVnQmo+pzJap/F610qTodKzecGQ==} + + oas-resolver@2.5.6: + resolution: {integrity: sha512-Yx5PWQNZomfEhPPOphFbZKi9W93CocQj18NlD2Pa4GWZzdZpSJvYwoiuurRI7m3SpcChrnO08hkuQDL3FGsVFQ==} + hasBin: true + + oas-schema-walker@1.1.5: + resolution: {integrity: sha512-2yucenq1a9YPmeNExoUa9Qwrt9RFkjqaMAA1X+U7sbb0AqBeTIdMHky9SQQ6iN94bO5NW0W4TRYXerG+BdAvAQ==} + + oas-validator@5.0.8: + resolution: {integrity: sha512-cu20/HE5N5HKqVygs3dt94eYJfBi0TsZvPVXDhbXQHiEityDN+RROTleefoKRKKJ9dFAF2JBkDHgvWj0sjKGmw==} + object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -5046,14 +5425,31 @@ packages: once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + open@8.4.2: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} + openapi-types@12.1.3: + resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==} + + openapi3-ts@4.2.2: + resolution: {integrity: sha512-+9g4actZKeb3czfi9gVQ4Br2Ju3KwhCAQJBNaKgye5KggqcBLIhFHH+nIkcm0BUX00TrAJl6dH4JWgM4G4JWrw==} + + openapi3-ts@4.4.0: + resolution: {integrity: sha512-9asTNB9IkKEzWMcHmVZE7Ts3kC9G7AFHfs8i7caD8HbI76gEjdkId4z/AkP83xdZsH7PLAnnbl47qZkXuxpArw==} + optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} + orval@7.10.0: + resolution: {integrity: sha512-R1TlDDgK82dHfTXG0IuaIXHOrk6HQ1CuGejQQpQW9mBSCQA84AInp8U4Ovxw3upjMFNhghE8OlAQqD0ES8GgHQ==} + hasBin: true + os-browserify@0.3.0: resolution: {integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==} @@ -5211,6 +5607,10 @@ packages: engines: {node: '>=18'} hasBin: true + pony-cause@1.1.1: + resolution: {integrity: sha512-PxkIc/2ZpLiEzQXu5YRDOUgBlfGYBY8156HY5ZcRAwwonMk5W/MrJP2LLkG/hF7GEQzaHo2aS7ho6ZLCOvf+6g==} + engines: {node: '>=12.0.0'} + possible-typed-array-names@1.1.0: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} @@ -5418,6 +5818,10 @@ packages: public-encrypt@4.0.3: resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==} + punycode.js@2.3.1: + resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} + engines: {node: '>=6'} + punycode@1.4.1: resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} @@ -5585,6 +5989,10 @@ packages: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} + readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.0'} + recast@0.23.11: resolution: {integrity: sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==} engines: {node: '>= 4'} @@ -5607,6 +6015,9 @@ packages: resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} engines: {node: '>= 0.4'} + reftools@1.1.9: + resolution: {integrity: sha512-OVede/NQE13xBQ+ob5CKd5KyeJYU2YInb1bmV4nRoOfquZPkAkxuOXicSe1PvqIuZZ4kD13sPKBbR7UFDmli6w==} + regenerate-unicode-properties@10.2.0: resolution: {integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==} engines: {node: '>=4'} @@ -5725,6 +6136,9 @@ packages: resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} engines: {node: '>= 0.4'} + safe-stable-stringify@1.1.1: + resolution: {integrity: sha512-ERq4hUjKDbJfE4+XtZLFPCDi8Vb1JqaxAPTxWFLBx8XcAlf9Bda/ZJdVezs/NAfsMQScyIlUMx+Yeu7P7rx5jw==} + sass-loader@14.2.1: resolution: {integrity: sha512-G0VcnMYU18a4N7VoNDegg2OuMjYtxnqzQWARVWCIVSZwJeiL9kg8QMsuIZOplsJgTzZLF6jGxI3AClj8I9nRdQ==} engines: {node: '>= 18.12.0'} @@ -5814,6 +6228,24 @@ packages: shimmer@1.2.1: resolution: {integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==} + should-equal@2.0.0: + resolution: {integrity: sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA==} + + should-format@3.0.3: + resolution: {integrity: sha512-hZ58adtulAk0gKtua7QxevgUaXTTXxIi8t41L3zo9AHvjXO1/7sdLECuHeIN2SRtYXpNkmhoUP2pdeWgricQ+Q==} + + should-type-adaptors@1.1.0: + resolution: {integrity: sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA==} + + should-type@1.4.0: + resolution: {integrity: sha512-MdAsTu3n25yDbIe1NeN69G4n6mUnJGtSJHygX3+oN0ZbO3DTiATnf7XnYJdGT42JCXurTb1JI0qOBR65shvhPQ==} + + should-util@1.0.1: + resolution: {integrity: sha512-oXF8tfxx5cDk8r2kYqlkUJzZpDBqVY/II2WhvU0n9Y3XYvAYRmeaf1PvvIvTgPnv4KJ+ES5M0PyDq5Jp+Ygy2g==} + + should@13.2.3: + resolution: {integrity: sha512-ggLesLtu2xp+ZxI+ysJTmNjh2U0TsC+rQ/pfED9bUZZ4DKefP27D+7YJVVTvKsmjLpIi9jAa7itwDGkDDmt1GQ==} + side-channel-list@1.0.0: resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} engines: {node: '>= 0.4'} @@ -5830,13 +6262,24 @@ packages: resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} engines: {node: '>= 0.4'} + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} + simple-eval@1.0.1: + resolution: {integrity: sha512-LH7FpTAkeD+y5xQC4fzS+tFtaNlvt3Ib1zKzvhjv/Y+cioV4zIuw4IZr2yhRLu67CWL7FR9/6KXKnjRoZTvGGQ==} + engines: {node: '>=12'} + simple-swizzle@0.2.2: resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -5895,6 +6338,10 @@ packages: strict-event-emitter@0.5.1: resolution: {integrity: sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==} + string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -5947,6 +6394,10 @@ packages: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} @@ -6024,6 +6475,10 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + swagger2openapi@7.0.8: + resolution: {integrity: sha512-upi/0ZGkYgEcLeGieoz8gT74oWHA0E7JivX7aN9mAf+Tc7BQoRBvnIGHoPDw+f9TXTW4s6kGYCZJtauP6OYp7g==} + hasBin: true + tailwind-merge@2.6.0: resolution: {integrity: sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==} @@ -6128,6 +6583,16 @@ packages: ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + tsconfck@2.1.2: + resolution: {integrity: sha512-ghqN1b0puy3MhhviwO2kGF8SeMDNhEbnKxjK7h6+fvY9JAxqvXi8y5NAHSQv687OVboS2uZIByzGd45/YxrRHg==} + engines: {node: ^14.13.1 || ^16 || >=18} + hasBin: true + peerDependencies: + typescript: ^4.3.5 || ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + tsconfig-paths-webpack-plugin@4.2.0: resolution: {integrity: sha512-zbem3rfRS8BgeNK50Zz5SIQgXzLafiHjOwUAvk/38/o1jHn/V5QAgVUcz884or7WYcPaH3N2CIfUc2u0ul7UcA==} engines: {node: '>=10.13.0'} @@ -6139,6 +6604,9 @@ packages: resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} engines: {node: '>=6'} + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} @@ -6188,11 +6656,27 @@ packages: resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} + typedoc-plugin-markdown@4.6.4: + resolution: {integrity: sha512-AnbToFS1T1H+n40QbO2+i0wE6L+55rWnj7zxnM1r781+2gmhMF2dB6dzFpaylWLQYkbg4D1Y13sYnne/6qZwdw==} + engines: {node: '>= 18'} + peerDependencies: + typedoc: 0.28.x + + typedoc@0.28.5: + resolution: {integrity: sha512-5PzUddaA9FbaarUzIsEc4wNXCiO4Ot3bJNeMF2qKpYlTmM9TTaSHQ7162w756ERCkXER/+o2purRG6YOAv6EMA==} + engines: {node: '>= 18', pnpm: '>= 10'} + hasBin: true + peerDependencies: + typescript: 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x + typescript@5.8.3: resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} engines: {node: '>=14.17'} hasBin: true + uc.micro@2.1.0: + resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} + unbox-primitive@1.1.0: resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} engines: {node: '>= 0.4'} @@ -6265,6 +6749,9 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + urijs@1.19.11: + resolution: {integrity: sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==} + url-parse@1.5.10: resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} @@ -6306,6 +6793,10 @@ packages: utila@0.4.0: resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} + utility-types@3.11.0: + resolution: {integrity: sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==} + engines: {node: '>= 4'} + uuid@11.1.0: resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} hasBin: true @@ -6318,6 +6809,10 @@ packages: resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} hasBin: true + validator@13.15.15: + resolution: {integrity: sha512-BgWVbCI72aIQy937xbawcs+hrVaN/CZ2UwutgaJ36hGqRrLNM+f5LUT/YPRbo8IV/ASeFzXszezV+y2+rq3l8A==} + engines: {node: '>= 0.10'} + vfile-message@4.0.2: resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} @@ -6503,6 +6998,31 @@ snapshots: '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 + '@apidevtools/json-schema-ref-parser@11.7.2': + dependencies: + '@jsdevtools/ono': 7.1.3 + '@types/json-schema': 7.0.15 + js-yaml: 4.1.0 + + '@apidevtools/openapi-schemas@2.1.0': {} + + '@apidevtools/swagger-methods@3.0.2': {} + + '@apidevtools/swagger-parser@10.1.1(openapi-types@12.1.3)': + dependencies: + '@apidevtools/json-schema-ref-parser': 11.7.2 + '@apidevtools/openapi-schemas': 2.1.0 + '@apidevtools/swagger-methods': 3.0.2 + '@jsdevtools/ono': 7.1.3 + ajv: 8.17.1 + ajv-draft-04: 1.0.0(ajv@8.17.1) + call-me-maybe: 1.0.2 + openapi-types: 12.1.3 + + '@asyncapi/specs@6.8.1': + dependencies: + '@types/json-schema': 7.0.15 + '@babel/code-frame@7.27.1': dependencies: '@babel/helper-validator-identifier': 7.27.1 @@ -7384,6 +7904,8 @@ snapshots: '@eslint/js@8.57.1': {} + '@exodus/schemasafe@1.3.0': {} + '@faker-js/faker@9.8.0': {} '@floating-ui/core@1.7.1': @@ -7403,6 +7925,14 @@ snapshots: '@floating-ui/utils@0.2.9': {} + '@gerrit0/mini-shiki@3.6.0': + dependencies: + '@shikijs/engine-oniguruma': 3.6.0 + '@shikijs/langs': 3.6.0 + '@shikijs/themes': 3.6.0 + '@shikijs/types': 3.6.0 + '@shikijs/vscode-textmate': 10.0.2 + '@hookform/resolvers@5.1.1(react-hook-form@7.57.0(react@18.3.1))': dependencies: '@standard-schema/utils': 0.3.0 @@ -7420,6 +7950,24 @@ snapshots: '@humanwhocodes/object-schema@2.0.3': {} + '@ibm-cloud/openapi-ruleset-utilities@1.9.0': {} + + '@ibm-cloud/openapi-ruleset@1.31.1': + dependencies: + '@ibm-cloud/openapi-ruleset-utilities': 1.9.0 + '@stoplight/spectral-formats': 1.8.2 + '@stoplight/spectral-functions': 1.10.1 + '@stoplight/spectral-rulesets': 1.22.0 + chalk: 4.1.2 + jsonschema: 1.5.0 + lodash: 4.17.21 + loglevel: 1.9.2 + loglevel-plugin-prefix: 0.8.4 + minimatch: 6.2.0 + validator: 13.15.15 + transitivePeerDependencies: + - encoding + '@img/sharp-darwin-arm64@0.34.2': optionalDependencies: '@img/sharp-libvips-darwin-arm64': 1.1.0 @@ -7558,6 +8106,20 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 + '@jsdevtools/ono@7.1.3': {} + + '@jsep-plugin/assignment@1.3.0(jsep@1.4.0)': + dependencies: + jsep: 1.4.0 + + '@jsep-plugin/regex@1.0.4(jsep@1.4.0)': + dependencies: + jsep: 1.4.0 + + '@jsep-plugin/ternary@1.1.4(jsep@1.4.0)': + dependencies: + jsep: 1.4.0 + '@mdx-js/react@3.1.0(@types/react@18.3.17)(react@18.3.1)': dependencies: '@types/mdx': 2.0.13 @@ -7883,6 +8445,111 @@ snapshots: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) + '@orval/angular@7.10.0(openapi-types@12.1.3)': + dependencies: + '@orval/core': 7.10.0(openapi-types@12.1.3) + transitivePeerDependencies: + - encoding + - openapi-types + - supports-color + + '@orval/axios@7.10.0(openapi-types@12.1.3)': + dependencies: + '@orval/core': 7.10.0(openapi-types@12.1.3) + transitivePeerDependencies: + - encoding + - openapi-types + - supports-color + + '@orval/core@7.10.0(openapi-types@12.1.3)': + dependencies: + '@apidevtools/swagger-parser': 10.1.1(openapi-types@12.1.3) + '@ibm-cloud/openapi-ruleset': 1.31.1 + acorn: 8.15.0 + ajv: 8.17.1 + chalk: 4.1.2 + compare-versions: 6.1.1 + debug: 4.4.1 + esbuild: 0.25.5 + esutils: 2.0.3 + fs-extra: 11.3.0 + globby: 11.1.0 + lodash.isempty: 4.4.0 + lodash.uniq: 4.5.0 + lodash.uniqby: 4.7.0 + lodash.uniqwith: 4.5.0 + micromatch: 4.0.8 + openapi3-ts: 4.4.0 + swagger2openapi: 7.0.8 + transitivePeerDependencies: + - encoding + - openapi-types + - supports-color + + '@orval/fetch@7.10.0(openapi-types@12.1.3)': + dependencies: + '@orval/core': 7.10.0(openapi-types@12.1.3) + transitivePeerDependencies: + - encoding + - openapi-types + - supports-color + + '@orval/hono@7.10.0(openapi-types@12.1.3)': + dependencies: + '@orval/core': 7.10.0(openapi-types@12.1.3) + '@orval/zod': 7.10.0(openapi-types@12.1.3) + lodash.uniq: 4.5.0 + transitivePeerDependencies: + - encoding + - openapi-types + - supports-color + + '@orval/mcp@7.10.0(openapi-types@12.1.3)': + dependencies: + '@orval/core': 7.10.0(openapi-types@12.1.3) + '@orval/zod': 7.10.0(openapi-types@12.1.3) + transitivePeerDependencies: + - encoding + - openapi-types + - supports-color + + '@orval/mock@7.10.0(openapi-types@12.1.3)': + dependencies: + '@orval/core': 7.10.0(openapi-types@12.1.3) + openapi3-ts: 4.2.2 + transitivePeerDependencies: + - encoding + - openapi-types + - supports-color + + '@orval/query@7.10.0(openapi-types@12.1.3)': + dependencies: + '@orval/core': 7.10.0(openapi-types@12.1.3) + '@orval/fetch': 7.10.0(openapi-types@12.1.3) + lodash.omitby: 4.6.0 + transitivePeerDependencies: + - encoding + - openapi-types + - supports-color + + '@orval/swr@7.10.0(openapi-types@12.1.3)': + dependencies: + '@orval/core': 7.10.0(openapi-types@12.1.3) + '@orval/fetch': 7.10.0(openapi-types@12.1.3) + transitivePeerDependencies: + - encoding + - openapi-types + - supports-color + + '@orval/zod@7.10.0(openapi-types@12.1.3)': + dependencies: + '@orval/core': 7.10.0(openapi-types@12.1.3) + lodash.uniq: 4.5.0 + transitivePeerDependencies: + - encoding + - openapi-types + - supports-color + '@phosphor-icons/react@2.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: react: 18.3.1 @@ -8721,8 +9388,191 @@ snapshots: - encoding - supports-color + '@shikijs/engine-oniguruma@3.6.0': + dependencies: + '@shikijs/types': 3.6.0 + '@shikijs/vscode-textmate': 10.0.2 + + '@shikijs/langs@3.6.0': + dependencies: + '@shikijs/types': 3.6.0 + + '@shikijs/themes@3.6.0': + dependencies: + '@shikijs/types': 3.6.0 + + '@shikijs/types@3.6.0': + dependencies: + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + + '@shikijs/vscode-textmate@10.0.2': {} + '@standard-schema/utils@0.3.0': {} + '@stoplight/better-ajv-errors@1.0.3(ajv@8.17.1)': + dependencies: + ajv: 8.17.1 + jsonpointer: 5.0.1 + leven: 3.1.0 + + '@stoplight/json-ref-readers@1.2.2': + dependencies: + node-fetch: 2.7.0 + tslib: 1.14.1 + transitivePeerDependencies: + - encoding + + '@stoplight/json-ref-resolver@3.1.6': + dependencies: + '@stoplight/json': 3.21.7 + '@stoplight/path': 1.3.2 + '@stoplight/types': 13.6.0 + '@types/urijs': 1.19.25 + dependency-graph: 0.11.0 + fast-memoize: 2.5.2 + immer: 9.0.21 + lodash: 4.17.21 + tslib: 2.8.1 + urijs: 1.19.11 + + '@stoplight/json@3.21.7': + dependencies: + '@stoplight/ordered-object-literal': 1.0.5 + '@stoplight/path': 1.3.2 + '@stoplight/types': 13.20.0 + jsonc-parser: 2.2.1 + lodash: 4.17.21 + safe-stable-stringify: 1.1.1 + + '@stoplight/ordered-object-literal@1.0.5': {} + + '@stoplight/path@1.3.2': {} + + '@stoplight/spectral-core@1.20.0': + dependencies: + '@stoplight/better-ajv-errors': 1.0.3(ajv@8.17.1) + '@stoplight/json': 3.21.7 + '@stoplight/path': 1.3.2 + '@stoplight/spectral-parsers': 1.0.5 + '@stoplight/spectral-ref-resolver': 1.0.5 + '@stoplight/spectral-runtime': 1.1.4 + '@stoplight/types': 13.6.0 + '@types/es-aggregate-error': 1.0.6 + '@types/json-schema': 7.0.15 + ajv: 8.17.1 + ajv-errors: 3.0.0(ajv@8.17.1) + ajv-formats: 2.1.1(ajv@8.17.1) + es-aggregate-error: 1.0.14 + jsonpath-plus: 10.3.0 + lodash: 4.17.21 + lodash.topath: 4.5.2 + minimatch: 3.1.2 + nimma: 0.2.3 + pony-cause: 1.1.1 + simple-eval: 1.0.1 + tslib: 2.8.1 + transitivePeerDependencies: + - encoding + + '@stoplight/spectral-formats@1.8.2': + dependencies: + '@stoplight/json': 3.21.7 + '@stoplight/spectral-core': 1.20.0 + '@types/json-schema': 7.0.15 + tslib: 2.8.1 + transitivePeerDependencies: + - encoding + + '@stoplight/spectral-functions@1.10.1': + dependencies: + '@stoplight/better-ajv-errors': 1.0.3(ajv@8.17.1) + '@stoplight/json': 3.21.7 + '@stoplight/spectral-core': 1.20.0 + '@stoplight/spectral-formats': 1.8.2 + '@stoplight/spectral-runtime': 1.1.4 + ajv: 8.17.1 + ajv-draft-04: 1.0.0(ajv@8.17.1) + ajv-errors: 3.0.0(ajv@8.17.1) + ajv-formats: 2.1.1(ajv@8.17.1) + lodash: 4.17.21 + tslib: 2.8.1 + transitivePeerDependencies: + - encoding + + '@stoplight/spectral-parsers@1.0.5': + dependencies: + '@stoplight/json': 3.21.7 + '@stoplight/types': 14.1.1 + '@stoplight/yaml': 4.3.0 + tslib: 2.8.1 + + '@stoplight/spectral-ref-resolver@1.0.5': + dependencies: + '@stoplight/json-ref-readers': 1.2.2 + '@stoplight/json-ref-resolver': 3.1.6 + '@stoplight/spectral-runtime': 1.1.4 + dependency-graph: 0.11.0 + tslib: 2.8.1 + transitivePeerDependencies: + - encoding + + '@stoplight/spectral-rulesets@1.22.0': + dependencies: + '@asyncapi/specs': 6.8.1 + '@stoplight/better-ajv-errors': 1.0.3(ajv@8.17.1) + '@stoplight/json': 3.21.7 + '@stoplight/spectral-core': 1.20.0 + '@stoplight/spectral-formats': 1.8.2 + '@stoplight/spectral-functions': 1.10.1 + '@stoplight/spectral-runtime': 1.1.4 + '@stoplight/types': 13.20.0 + '@types/json-schema': 7.0.15 + ajv: 8.17.1 + ajv-formats: 2.1.1(ajv@8.17.1) + json-schema-traverse: 1.0.0 + leven: 3.1.0 + lodash: 4.17.21 + tslib: 2.8.1 + transitivePeerDependencies: + - encoding + + '@stoplight/spectral-runtime@1.1.4': + dependencies: + '@stoplight/json': 3.21.7 + '@stoplight/path': 1.3.2 + '@stoplight/types': 13.20.0 + abort-controller: 3.0.0 + lodash: 4.17.21 + node-fetch: 2.7.0 + tslib: 2.8.1 + transitivePeerDependencies: + - encoding + + '@stoplight/types@13.20.0': + dependencies: + '@types/json-schema': 7.0.15 + utility-types: 3.11.0 + + '@stoplight/types@13.6.0': + dependencies: + '@types/json-schema': 7.0.15 + utility-types: 3.11.0 + + '@stoplight/types@14.1.1': + dependencies: + '@types/json-schema': 7.0.15 + utility-types: 3.11.0 + + '@stoplight/yaml-ast-parser@0.0.50': {} + + '@stoplight/yaml@4.3.0': + dependencies: + '@stoplight/ordered-object-literal': 1.0.5 + '@stoplight/types': 14.1.1 + '@stoplight/yaml-ast-parser': 0.0.50 + tslib: 2.8.1 + '@storybook/addon-a11y@9.0.12(storybook@9.0.12(@testing-library/dom@10.4.0)(prettier@3.5.3))': dependencies: '@storybook/global': 5.0.0 @@ -9101,6 +9951,10 @@ snapshots: '@types/doctrine@0.0.9': {} + '@types/es-aggregate-error@1.0.6': + dependencies: + '@types/node': 22.15.30 + '@types/eslint-scope@3.7.7': dependencies: '@types/eslint': 9.6.1 @@ -9202,6 +10056,8 @@ snapshots: '@types/unist@3.0.3': {} + '@types/urijs@1.19.25': {} + '@types/ws@8.18.1': dependencies: '@types/node': 22.15.30 @@ -9460,13 +10316,13 @@ snapshots: '@xtuc/long@4.2.2': {} - '@xyflow/react@12.6.4(@types/react@18.3.17)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@xyflow/react@12.6.4(@types/react@18.3.17)(immer@9.0.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@xyflow/system': 0.0.61 classcat: 5.0.5 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - zustand: 4.5.7(@types/react@18.3.17)(react@18.3.1) + zustand: 4.5.7(@types/react@18.3.17)(immer@9.0.21)(react@18.3.1) transitivePeerDependencies: - '@types/react' - immer @@ -9506,6 +10362,14 @@ snapshots: transitivePeerDependencies: - supports-color + ajv-draft-04@1.0.0(ajv@8.17.1): + optionalDependencies: + ajv: 8.17.1 + + ajv-errors@3.0.0(ajv@8.17.1): + dependencies: + ajv: 8.17.1 + ajv-formats@2.1.1(ajv@8.17.1): optionalDependencies: ajv: 8.17.1 @@ -9533,6 +10397,8 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 + ansi-colors@4.1.3: {} + ansi-escapes@4.3.2: dependencies: type-fest: 0.21.3 @@ -9590,6 +10456,8 @@ snapshots: is-string: 1.1.1 math-intrinsics: 1.1.0 + array-union@2.1.0: {} + array.prototype.findlast@1.2.5: dependencies: call-bind: 1.0.8 @@ -9663,6 +10531,8 @@ snapshots: dependencies: tslib: 2.8.1 + astring@1.9.0: {} + async-function@1.0.0: {} available-typed-arrays@1.0.7: @@ -9822,6 +10692,8 @@ snapshots: dependencies: streamsearch: 1.1.0 + cac@6.7.14: {} + call-bind-apply-helpers@1.0.2: dependencies: es-errors: 1.3.0 @@ -9839,6 +10711,8 @@ snapshots: call-bind-apply-helpers: 1.0.2 get-intrinsic: 1.3.0 + call-me-maybe@1.0.2: {} + callsites@3.1.0: {} camel-case@4.1.2: @@ -9896,6 +10770,10 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + chokidar@4.0.3: + dependencies: + readdirp: 4.1.2 + chromatic@11.25.2: {} chromatic@12.2.0: {} @@ -9975,6 +10853,8 @@ snapshots: commondir@1.0.1: {} + compare-versions@6.1.1: {} + concat-map@0.0.1: {} concurrently@9.1.2: @@ -10230,6 +11110,8 @@ snapshots: has-property-descriptors: 1.0.2 object-keys: 1.1.1 + dependency-graph@0.11.0: {} + dequal@2.0.3: {} des.js@1.1.0: @@ -10254,6 +11136,10 @@ snapshots: miller-rabin: 4.0.1 randombytes: 2.1.0 + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + dlv@1.1.3: {} doctrine@2.1.0: @@ -10353,8 +11239,15 @@ snapshots: graceful-fs: 4.2.11 tapable: 2.2.2 + enquirer@2.4.1: + dependencies: + ansi-colors: 4.1.3 + strip-ansi: 6.0.1 + entities@2.2.0: {} + entities@4.5.0: {} + env-paths@2.2.1: {} error-ex@1.3.2: @@ -10422,6 +11315,17 @@ snapshots: unbox-primitive: 1.1.0 which-typed-array: 1.1.19 + es-aggregate-error@1.0.14: + dependencies: + define-data-property: 1.1.4 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-errors: 1.3.0 + function-bind: 1.1.2 + globalthis: 1.0.4 + has-property-descriptors: 1.0.2 + set-function-name: 2.0.2 + es-define-property@1.0.1: {} es-errors@1.3.0: {} @@ -10468,6 +11372,8 @@ snapshots: is-date-object: 1.1.0 is-symbol: 1.1.1 + es6-promise@3.3.1: {} + esbuild-register@3.6.0(esbuild@0.25.5): dependencies: debug: 4.4.1 @@ -10738,6 +11644,18 @@ snapshots: md5.js: 1.3.5 safe-buffer: 5.2.1 + execa@5.1.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + exenv@1.2.2: {} extend@3.0.2: {} @@ -10770,6 +11688,10 @@ snapshots: fast-levenshtein@2.0.6: {} + fast-memoize@2.5.2: {} + + fast-safe-stringify@2.1.1: {} + fast-uri@3.0.6: {} fastq@1.19.1: @@ -10876,6 +11798,12 @@ snapshots: jsonfile: 6.1.0 universalify: 2.0.1 + fs-extra@11.3.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + fs-monkey@1.0.6: {} fs.realpath@1.0.0: {} @@ -10927,6 +11855,8 @@ snapshots: dunder-proto: 1.0.1 es-object-atoms: 1.1.1 + get-stream@6.0.1: {} + get-symbol-description@1.1.0: dependencies: call-bound: 1.0.4 @@ -10983,6 +11913,15 @@ snapshots: define-properties: 1.2.1 gopd: 1.2.0 + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.3 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + gopd@1.2.0: {} graceful-fs@4.2.11: {} @@ -11092,6 +12031,8 @@ snapshots: domutils: 2.8.0 entities: 2.2.0 + http2-client@1.3.5: {} + https-browserify@1.0.0: {} https-proxy-agent@5.0.1: @@ -11101,6 +12042,8 @@ snapshots: transitivePeerDependencies: - supports-color + human-signals@2.1.0: {} + icss-utils@5.1.0(postcss@8.5.6): dependencies: postcss: 8.5.6 @@ -11113,6 +12056,8 @@ snapshots: image-size@2.0.2: {} + immer@9.0.21: {} + import-fresh@3.3.1: dependencies: parent-module: 1.0.1 @@ -11275,6 +12220,8 @@ snapshots: dependencies: call-bound: 1.0.4 + is-stream@2.0.1: {} + is-string@1.1.1: dependencies: call-bound: 1.0.4 @@ -11342,6 +12289,8 @@ snapshots: dependencies: argparse: 2.0.1 + jsep@1.4.0: {} + jsesc@3.0.2: {} jsesc@3.1.0: {} @@ -11362,12 +12311,24 @@ snapshots: json5@2.2.3: {} + jsonc-parser@2.2.1: {} + jsonfile@6.1.0: dependencies: universalify: 2.0.1 optionalDependencies: graceful-fs: 4.2.11 + jsonpath-plus@10.3.0: + dependencies: + '@jsep-plugin/assignment': 1.3.0(jsep@1.4.0) + '@jsep-plugin/regex': 1.0.4(jsep@1.4.0) + jsep: 1.4.0 + + jsonpointer@5.0.1: {} + + jsonschema@1.5.0: {} + jsx-ast-utils@3.3.5: dependencies: array-includes: 3.1.9 @@ -11410,6 +12371,8 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) + leven@3.1.0: {} + levn@0.4.1: dependencies: prelude-ls: 1.2.1 @@ -11419,6 +12382,10 @@ snapshots: lines-and-columns@1.2.4: {} + linkify-it@5.0.0: + dependencies: + uc.micro: 2.1.0 + loader-runner@4.3.0: {} loader-utils@2.0.4: @@ -11445,10 +12412,26 @@ snapshots: lodash.debounce@4.0.8: {} + lodash.isempty@4.4.0: {} + lodash.merge@4.6.2: {} + lodash.omitby@4.6.0: {} + + lodash.topath@4.5.2: {} + + lodash.uniq@4.5.0: {} + + lodash.uniqby@4.7.0: {} + + lodash.uniqwith@4.5.0: {} + lodash@4.17.21: {} + loglevel-plugin-prefix@0.8.4: {} + + loglevel@1.9.2: {} + longest-streak@3.1.0: {} loose-envify@1.4.0: @@ -11471,6 +12454,8 @@ snapshots: dependencies: react: 18.3.1 + lunr@2.3.9: {} + lz-string@1.5.0: {} magic-string@0.30.17: @@ -11485,6 +12470,15 @@ snapshots: dependencies: semver: 6.3.1 + markdown-it@14.1.0: + dependencies: + argparse: 2.0.1 + entities: 4.5.0 + linkify-it: 5.0.0 + mdurl: 2.0.0 + punycode.js: 2.3.1 + uc.micro: 2.1.0 + math-intrinsics@1.1.0: {} md5.js@1.3.5: @@ -11582,6 +12576,8 @@ snapshots: dependencies: '@types/mdast': 4.0.4 + mdurl@2.0.0: {} + memfs@3.5.3: dependencies: fs-monkey: 1.0.6 @@ -11739,6 +12735,8 @@ snapshots: dependencies: mime-db: 1.52.0 + mimic-fn@2.1.0: {} + min-indent@1.0.1: {} minimalistic-assert@1.0.1: {} @@ -11749,6 +12747,10 @@ snapshots: dependencies: brace-expansion: 1.1.12 + minimatch@6.2.0: + dependencies: + brace-expansion: 2.0.2 + minimatch@8.0.4: dependencies: brace-expansion: 2.0.2 @@ -11855,6 +12857,16 @@ snapshots: - '@babel/core' - babel-plugin-macros + nimma@0.2.3: + dependencies: + '@jsep-plugin/regex': 1.0.4(jsep@1.4.0) + '@jsep-plugin/ternary': 1.1.4(jsep@1.4.0) + astring: 1.9.0 + jsep: 1.4.0 + optionalDependencies: + jsonpath-plus: 10.3.0 + lodash.topath: 4.5.2 + no-case@3.0.4: dependencies: lower-case: 2.0.2 @@ -11862,6 +12874,10 @@ snapshots: node-abort-controller@3.1.1: {} + node-fetch-h2@2.3.0: + dependencies: + http2-client: 1.3.5 + node-fetch@2.7.0: dependencies: whatwg-url: 5.0.0 @@ -11895,14 +12911,53 @@ snapshots: vm-browserify: 1.1.2 webpack: 5.99.9(esbuild@0.25.5) + node-readfiles@0.2.0: + dependencies: + es6-promise: 3.3.1 + node-releases@2.0.19: {} normalize-path@3.0.0: {} + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + nth-check@2.1.1: dependencies: boolbase: 1.0.0 + oas-kit-common@1.0.8: + dependencies: + fast-safe-stringify: 2.1.1 + + oas-linter@3.2.2: + dependencies: + '@exodus/schemasafe': 1.3.0 + should: 13.2.3 + yaml: 1.10.2 + + oas-resolver@2.5.6: + dependencies: + node-fetch-h2: 2.3.0 + oas-kit-common: 1.0.8 + reftools: 1.1.9 + yaml: 1.10.2 + yargs: 17.7.2 + + oas-schema-walker@1.1.5: {} + + oas-validator@5.0.8: + dependencies: + call-me-maybe: 1.0.2 + oas-kit-common: 1.0.8 + oas-linter: 3.2.2 + oas-resolver: 2.5.6 + oas-schema-walker: 1.1.5 + reftools: 1.1.9 + should: 13.2.3 + yaml: 1.10.2 + object-assign@4.1.1: {} object-hash@3.0.0: {} @@ -11958,12 +13013,26 @@ snapshots: dependencies: wrappy: 1.0.2 + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + open@8.4.2: dependencies: define-lazy-prop: 2.0.0 is-docker: 2.2.1 is-wsl: 2.2.0 + openapi-types@12.1.3: {} + + openapi3-ts@4.2.2: + dependencies: + yaml: 2.8.0 + + openapi3-ts@4.4.0: + dependencies: + yaml: 2.8.0 + optionator@0.9.4: dependencies: deep-is: 0.1.4 @@ -11973,6 +13042,39 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 + orval@7.10.0(openapi-types@12.1.3): + dependencies: + '@apidevtools/swagger-parser': 10.1.1(openapi-types@12.1.3) + '@orval/angular': 7.10.0(openapi-types@12.1.3) + '@orval/axios': 7.10.0(openapi-types@12.1.3) + '@orval/core': 7.10.0(openapi-types@12.1.3) + '@orval/fetch': 7.10.0(openapi-types@12.1.3) + '@orval/hono': 7.10.0(openapi-types@12.1.3) + '@orval/mcp': 7.10.0(openapi-types@12.1.3) + '@orval/mock': 7.10.0(openapi-types@12.1.3) + '@orval/query': 7.10.0(openapi-types@12.1.3) + '@orval/swr': 7.10.0(openapi-types@12.1.3) + '@orval/zod': 7.10.0(openapi-types@12.1.3) + ajv: 8.17.1 + cac: 6.7.14 + chalk: 4.1.2 + chokidar: 4.0.3 + enquirer: 2.4.1 + execa: 5.1.1 + find-up: 5.0.0 + fs-extra: 11.3.0 + lodash.uniq: 4.5.0 + openapi3-ts: 4.2.2 + string-argv: 0.3.2 + tsconfck: 2.1.2(typescript@5.8.3) + typedoc: 0.28.5(typescript@5.8.3) + typedoc-plugin-markdown: 4.6.4(typedoc@0.28.5(typescript@5.8.3)) + typescript: 5.8.3 + transitivePeerDependencies: + - encoding + - openapi-types + - supports-color + os-browserify@0.3.0: {} outvariant@1.4.3: {} @@ -12124,6 +13226,8 @@ snapshots: optionalDependencies: fsevents: 2.3.2 + pony-cause@1.1.1: {} + possible-typed-array-names@1.1.0: {} postcss-import@15.1.0(postcss@8.5.6): @@ -12270,6 +13374,8 @@ snapshots: randombytes: 2.1.0 safe-buffer: 5.2.1 + punycode.js@2.3.1: {} + punycode@1.4.1: {} punycode@2.3.1: {} @@ -12465,6 +13571,8 @@ snapshots: dependencies: picomatch: 2.3.1 + readdirp@4.1.2: {} + recast@0.23.11: dependencies: ast-types: 0.16.1 @@ -12506,6 +13614,8 @@ snapshots: get-proto: 1.0.1 which-builtin-type: 1.2.1 + reftools@1.1.9: {} + regenerate-unicode-properties@10.2.0: dependencies: regenerate: 1.4.2 @@ -12676,6 +13786,8 @@ snapshots: es-errors: 1.3.0 is-regex: 1.2.1 + safe-stable-stringify@1.1.1: {} + sass-loader@14.2.1(webpack@5.99.9(esbuild@0.25.5)): dependencies: neo-async: 2.6.2 @@ -12783,6 +13895,32 @@ snapshots: shimmer@1.2.1: {} + should-equal@2.0.0: + dependencies: + should-type: 1.4.0 + + should-format@3.0.3: + dependencies: + should-type: 1.4.0 + should-type-adaptors: 1.1.0 + + should-type-adaptors@1.1.0: + dependencies: + should-type: 1.4.0 + should-util: 1.0.1 + + should-type@1.4.0: {} + + should-util@1.0.1: {} + + should@13.2.3: + dependencies: + should-equal: 2.0.0 + should-format: 3.0.3 + should-type: 1.4.0 + should-type-adaptors: 1.1.0 + should-util: 1.0.1 + side-channel-list@1.0.0: dependencies: es-errors: 1.3.0 @@ -12811,13 +13949,21 @@ snapshots: side-channel-map: 1.0.1 side-channel-weakmap: 1.0.2 + signal-exit@3.0.7: {} + signal-exit@4.1.0: {} + simple-eval@1.0.1: + dependencies: + jsep: 1.4.0 + simple-swizzle@0.2.2: dependencies: is-arrayish: 0.3.2 optional: true + slash@3.0.0: {} + source-map-js@1.2.1: {} source-map-support@0.5.21: @@ -12883,6 +14029,8 @@ snapshots: strict-event-emitter@0.5.1: {} + string-argv@0.3.2: {} + string-width@4.2.3: dependencies: emoji-regex: 8.0.0 @@ -12968,6 +14116,8 @@ snapshots: strip-bom@3.0.0: {} + strip-final-newline@2.0.0: {} + strip-indent@3.0.0: dependencies: min-indent: 1.0.1 @@ -13040,6 +14190,22 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} + swagger2openapi@7.0.8: + dependencies: + call-me-maybe: 1.0.2 + node-fetch: 2.7.0 + node-fetch-h2: 2.3.0 + node-readfiles: 0.2.0 + oas-kit-common: 1.0.8 + oas-resolver: 2.5.6 + oas-schema-walker: 1.1.5 + oas-validator: 5.0.8 + reftools: 1.1.9 + yaml: 1.10.2 + yargs: 17.7.2 + transitivePeerDependencies: + - encoding + tailwind-merge@2.6.0: {} tailwindcss-animate@1.0.7(tailwindcss@3.4.17): @@ -13147,6 +14313,10 @@ snapshots: ts-interface-checker@0.1.13: {} + tsconfck@2.1.2(typescript@5.8.3): + optionalDependencies: + typescript: 5.8.3 + tsconfig-paths-webpack-plugin@4.2.0: dependencies: chalk: 4.1.2 @@ -13167,6 +14337,8 @@ snapshots: minimist: 1.2.8 strip-bom: 3.0.0 + tslib@1.14.1: {} + tslib@2.6.2: {} tslib@2.8.1: {} @@ -13220,8 +14392,23 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 + typedoc-plugin-markdown@4.6.4(typedoc@0.28.5(typescript@5.8.3)): + dependencies: + typedoc: 0.28.5(typescript@5.8.3) + + typedoc@0.28.5(typescript@5.8.3): + dependencies: + '@gerrit0/mini-shiki': 3.6.0 + lunr: 2.3.9 + markdown-it: 14.1.0 + minimatch: 9.0.5 + typescript: 5.8.3 + yaml: 2.8.0 + typescript@5.8.3: {} + uc.micro@2.1.0: {} + unbox-primitive@1.1.0: dependencies: call-bound: 1.0.4 @@ -13327,6 +14514,8 @@ snapshots: dependencies: punycode: 2.3.1 + urijs@1.19.11: {} + url-parse@1.5.10: dependencies: querystringify: 2.2.0 @@ -13368,12 +14557,16 @@ snapshots: utila@0.4.0: {} + utility-types@3.11.0: {} + uuid@11.1.0: {} uuid@8.3.2: {} uuid@9.0.1: {} + validator@13.15.15: {} + vfile-message@4.0.2: dependencies: '@types/unist': 3.0.3 @@ -13573,11 +14766,12 @@ snapshots: zod@3.25.56: {} - zustand@4.5.7(@types/react@18.3.17)(react@18.3.1): + zustand@4.5.7(@types/react@18.3.17)(immer@9.0.21)(react@18.3.1): dependencies: use-sync-external-store: 1.5.0(react@18.3.1) optionalDependencies: '@types/react': 18.3.17 + immer: 9.0.21 react: 18.3.1 zwitch@2.0.4: {} diff --git a/autogpt_platform/frontend/src/api/mutators/custom-mutator.ts b/autogpt_platform/frontend/src/api/mutators/custom-mutator.ts new file mode 100644 index 0000000000..dc7dd1065c --- /dev/null +++ b/autogpt_platform/frontend/src/api/mutators/custom-mutator.ts @@ -0,0 +1,81 @@ +import { getSupabaseClient } from "@/lib/supabase/getSupabaseClient"; + +const BASE_URL = + process.env.NEXT_PUBLIC_AGPT_SERVER_BASE_URL || "http://localhost:8006"; + +const getBody = (c: Response | Request): Promise => { + const contentType = c.headers.get("content-type"); + + if (contentType && contentType.includes("application/json")) { + return c.json(); + } + + if (contentType && contentType.includes("application/pdf")) { + return c.blob() as Promise; + } + + return c.text() as Promise; +}; + +const getSupabaseToken = async () => { + const supabase = await getSupabaseClient(); + + const { + data: { session }, + } = (await supabase?.auth.getSession()) || { + data: { session: null }, + }; + + return session?.access_token; +}; + +export const customMutator = async ( + url: string, + options: RequestInit & { + params?: any; + } = {}, +): Promise => { + const { params, ...requestOptions } = options; + const method = (requestOptions.method || "GET") as + | "GET" + | "POST" + | "PUT" + | "DELETE" + | "PATCH"; + const data = requestOptions.body; + const headers: Record = { + ...((requestOptions.headers as Record) || {}), + }; + + const token = await getSupabaseToken(); + + if (token) { + headers["Authorization"] = `Bearer ${token}`; + } + + const isFormData = data instanceof FormData; + + // Currently, only two content types are handled here: application/json and multipart/form-data + if (!isFormData && data && !headers["Content-Type"]) { + headers["Content-Type"] = "application/json"; + } + + const queryString = params + ? "?" + new URLSearchParams(params).toString() + : ""; + + const response = await fetch(`${BASE_URL}${url}${queryString}`, { + ...requestOptions, + method, + headers, + body: data, + }); + + const response_data = await getBody(response); + + return { + status: response.status, + response_data, + headers: response.headers, + } as T; +}; diff --git a/autogpt_platform/frontend/src/api/openapi.json b/autogpt_platform/frontend/src/api/openapi.json new file mode 100644 index 0000000000..40a88952b1 --- /dev/null +++ b/autogpt_platform/frontend/src/api/openapi.json @@ -0,0 +1,6093 @@ +{ + "openapi": "3.1.0", + "info": { + "title": "AutoGPT Agent Server", + "summary": "AutoGPT Agent Server", + "description": "This server is used to execute agents that are created by the AutoGPT system.", + "version": "0.1" + }, + "paths": { + "/api/integrations/{provider}/login": { + "get": { + "tags": ["v1", "integrations"], + "summary": "Login", + "operationId": "getV1Login", + "parameters": [ + { + "name": "provider", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/ProviderName", + "title": "The provider to initiate an OAuth flow for" + } + }, + { + "name": "scopes", + "in": "query", + "required": false, + "schema": { + "type": "string", + "title": "Comma-separated list of authorization scopes", + "default": "" + } + } + ], + "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" } + } + } + } + } + } + }, + "/api/integrations/{provider}/callback": { + "post": { + "tags": ["v1", "integrations"], + "summary": "Callback", + "operationId": "postV1Callback", + "parameters": [ + { + "name": "provider", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/ProviderName", + "title": "The target provider for this OAuth exchange" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/Body_postV1Callback" } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CredentialsMetaResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/integrations/credentials": { + "get": { + "tags": ["v1", "integrations"], + "summary": "List Credentials", + "operationId": "getV1ListCredentials", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/CredentialsMetaResponse" + }, + "type": "array", + "title": "Response Getv1Listcredentials" + } + } + } + } + } + } + }, + "/api/integrations/{provider}/credentials": { + "get": { + "tags": ["v1", "integrations"], + "summary": "List Credentials By Provider", + "operationId": "getV1ListCredentialsByProvider", + "parameters": [ + { + "name": "provider", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/ProviderName", + "title": "The provider to list credentials for" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CredentialsMetaResponse" + }, + "title": "Response Getv1Listcredentialsbyprovider" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + }, + "post": { + "tags": ["v1", "integrations"], + "summary": "Create Credentials", + "operationId": "postV1CreateCredentials", + "parameters": [ + { + "name": "provider", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/ProviderName", + "title": "The provider to create credentials for" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "oneOf": [ + { "$ref": "#/components/schemas/OAuth2Credentials" }, + { "$ref": "#/components/schemas/APIKeyCredentials" }, + { "$ref": "#/components/schemas/UserPasswordCredentials" } + ], + "discriminator": { + "propertyName": "type", + "mapping": { + "oauth2": "#/components/schemas/OAuth2Credentials", + "api_key": "#/components/schemas/APIKeyCredentials", + "user_password": "#/components/schemas/UserPasswordCredentials" + } + }, + "title": "Credentials" + } + } + } + }, + "responses": { + "201": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { "$ref": "#/components/schemas/OAuth2Credentials" }, + { "$ref": "#/components/schemas/APIKeyCredentials" }, + { "$ref": "#/components/schemas/UserPasswordCredentials" } + ], + "discriminator": { + "propertyName": "type", + "mapping": { + "oauth2": "#/components/schemas/OAuth2Credentials", + "api_key": "#/components/schemas/APIKeyCredentials", + "user_password": "#/components/schemas/UserPasswordCredentials" + } + }, + "title": "Response Postv1Createcredentials" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/integrations/{provider}/credentials/{cred_id}": { + "get": { + "tags": ["v1", "integrations"], + "summary": "Get Credential", + "operationId": "getV1GetCredential", + "parameters": [ + { + "name": "provider", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/ProviderName", + "title": "The provider to retrieve credentials for" + } + }, + { + "name": "cred_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "The ID of the credentials to retrieve" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { "$ref": "#/components/schemas/OAuth2Credentials" }, + { "$ref": "#/components/schemas/APIKeyCredentials" }, + { "$ref": "#/components/schemas/UserPasswordCredentials" } + ], + "discriminator": { + "propertyName": "type", + "mapping": { + "oauth2": "#/components/schemas/OAuth2Credentials", + "api_key": "#/components/schemas/APIKeyCredentials", + "user_password": "#/components/schemas/UserPasswordCredentials" + } + }, + "title": "Response Getv1Getcredential" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + }, + "delete": { + "tags": ["v1", "integrations"], + "summary": "Delete Credentials", + "operationId": "deleteV1DeleteCredentials", + "parameters": [ + { + "name": "provider", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/ProviderName", + "title": "The provider to delete credentials for" + } + }, + { + "name": "cred_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "The ID of the credentials to delete" + } + }, + { + "name": "force", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "title": "Whether to proceed if any linked webhooks are still in use", + "default": false + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "anyOf": [ + { + "$ref": "#/components/schemas/CredentialsDeletionResponse" + }, + { + "$ref": "#/components/schemas/CredentialsDeletionNeedsConfirmationResponse" + } + ], + "title": "Response Deletev1Deletecredentials" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/integrations/{provider}/webhooks/{webhook_id}/ingress": { + "post": { + "tags": ["v1", "integrations"], + "summary": "Webhook Ingress Generic", + "operationId": "postV1WebhookIngressGeneric", + "parameters": [ + { + "name": "provider", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/ProviderName", + "title": "Provider where the webhook was registered" + } + }, + { + "name": "webhook_id", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Our ID for the webhook" } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { "application/json": { "schema": {} } } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/integrations/webhooks/{webhook_id}/ping": { + "post": { + "tags": ["v1", "integrations"], + "summary": "Webhook Ping", + "operationId": "postV1WebhookPing", + "parameters": [ + { + "name": "webhook_id", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Our ID for the webhook" } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { "application/json": { "schema": {} } } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/analytics/log_raw_metric": { + "post": { + "tags": ["v1", "analytics"], + "summary": "Log Raw Metric", + "operationId": "postV1LogRawMetric", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Body_postV1LogRawMetric" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { "application/json": { "schema": {} } } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/analytics/log_raw_analytics": { + "post": { + "tags": ["v1", "analytics"], + "summary": "Log Raw Analytics", + "operationId": "postV1LogRawAnalytics", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Body_postV1LogRawAnalytics" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { "application/json": { "schema": {} } } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/auth/user": { + "post": { + "tags": ["v1", "auth"], + "summary": "Get or create user", + "operationId": "postV1Get or create user", + "responses": { + "200": { + "description": "Successful Response", + "content": { "application/json": { "schema": {} } } + } + } + } + }, + "/api/auth/user/email": { + "post": { + "tags": ["v1", "auth"], + "summary": "Update user email", + "operationId": "postV1Update user email", + "requestBody": { + "content": { + "application/json": { + "schema": { "type": "string", "title": "Email" } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "additionalProperties": { "type": "string" }, + "type": "object", + "title": "Response Postv1Update User Email" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/auth/user/preferences": { + "get": { + "tags": ["v1", "auth"], + "summary": "Get notification preferences", + "operationId": "getV1Get notification preferences", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotificationPreference" + } + } + } + } + } + }, + "post": { + "tags": ["v1", "auth"], + "summary": "Update notification preferences", + "operationId": "postV1Update notification preferences", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotificationPreferenceDTO" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotificationPreference" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/onboarding": { + "get": { + "tags": ["v1", "onboarding"], + "summary": "Get onboarding status", + "operationId": "getV1Get onboarding status", + "responses": { + "200": { + "description": "Successful Response", + "content": { "application/json": { "schema": {} } } + } + } + }, + "patch": { + "tags": ["v1", "onboarding"], + "summary": "Update onboarding progress", + "operationId": "patchV1Update onboarding progress", + "requestBody": { + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/UserOnboardingUpdate" } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { "application/json": { "schema": {} } } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/onboarding/agents": { + "get": { + "tags": ["v1", "onboarding"], + "summary": "Get recommended agents", + "operationId": "getV1Get recommended agents", + "responses": { + "200": { + "description": "Successful Response", + "content": { "application/json": { "schema": {} } } + } + } + } + }, + "/api/onboarding/enabled": { + "get": { + "tags": ["v1", "onboarding", "public"], + "summary": "Check onboarding enabled", + "operationId": "getV1Check onboarding enabled", + "responses": { + "200": { + "description": "Successful Response", + "content": { "application/json": { "schema": {} } } + } + } + } + }, + "/api/blocks": { + "get": { + "tags": ["v1", "blocks"], + "summary": "List available blocks", + "operationId": "getV1List available blocks", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "items": { "additionalProperties": true, "type": "object" }, + "type": "array", + "title": "Response Getv1List Available Blocks" + } + } + } + } + } + } + }, + "/api/blocks/{block_id}/execute": { + "post": { + "tags": ["v1", "blocks"], + "summary": "Execute graph block", + "operationId": "postV1Execute graph block", + "parameters": [ + { + "name": "block_id", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Block Id" } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true, + "title": "Data" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": { "type": "array", "items": {} }, + "title": "Response Postv1Execute Graph Block" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/credits": { + "get": { + "tags": ["v1", "credits"], + "summary": "Get user credits", + "operationId": "getV1Get user credits", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "additionalProperties": { "type": "integer" }, + "type": "object", + "title": "Response Getv1Get User Credits" + } + } + } + } + } + }, + "post": { + "tags": ["v1", "credits"], + "summary": "Request credit top up", + "operationId": "postV1Request credit top up", + "requestBody": { + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/RequestTopUp" } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { "application/json": { "schema": {} } } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + }, + "patch": { + "tags": ["v1", "credits"], + "summary": "Fulfill checkout session", + "operationId": "patchV1Fulfill checkout session", + "responses": { + "200": { + "description": "Successful Response", + "content": { "application/json": { "schema": {} } } + } + } + } + }, + "/api/credits/{transaction_key}/refund": { + "post": { + "tags": ["v1", "credits"], + "summary": "Refund credit transaction", + "operationId": "postV1Refund credit transaction", + "parameters": [ + { + "name": "transaction_key", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Transaction Key" } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": { "type": "string" }, + "title": "Metadata" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "integer", + "title": "Response Postv1Refund Credit Transaction" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/credits/auto-top-up": { + "get": { + "tags": ["v1", "credits"], + "summary": "Get auto top up", + "operationId": "getV1Get auto top up", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/AutoTopUpConfig" } + } + } + } + } + }, + "post": { + "tags": ["v1", "credits"], + "summary": "Configure auto top up", + "operationId": "postV1Configure auto top up", + "requestBody": { + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/AutoTopUpConfig" } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "string", + "title": "Response Postv1Configure Auto Top Up" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/credits/stripe_webhook": { + "post": { + "tags": ["v1", "credits"], + "summary": "Handle Stripe webhooks", + "operationId": "postV1Handle stripe webhooks", + "responses": { + "200": { + "description": "Successful Response", + "content": { "application/json": { "schema": {} } } + } + } + } + }, + "/api/credits/manage": { + "get": { + "tags": ["v1", "credits"], + "summary": "Manage payment methods", + "operationId": "getV1Manage payment methods", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "additionalProperties": { "type": "string" }, + "type": "object", + "title": "Response Getv1Manage Payment Methods" + } + } + } + } + } + } + }, + "/api/credits/transactions": { + "get": { + "tags": ["v1", "credits"], + "summary": "Get credit history", + "operationId": "getV1Get credit history", + "parameters": [ + { + "name": "transaction_time", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { "type": "string", "format": "date-time" }, + { "type": "null" } + ], + "title": "Transaction Time" + } + }, + { + "name": "transaction_type", + "in": "query", + "required": false, + "schema": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Transaction Type" + } + }, + { + "name": "transaction_count_limit", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "default": 100, + "title": "Transaction Count Limit" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/TransactionHistory" } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/credits/refunds": { + "get": { + "tags": ["v1", "credits"], + "summary": "Get refund requests", + "operationId": "getV1Get refund requests", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "items": { "$ref": "#/components/schemas/RefundRequest" }, + "type": "array", + "title": "Response Getv1Get Refund Requests" + } + } + } + } + } + } + }, + "/api/graphs": { + "get": { + "tags": ["v1", "graphs"], + "summary": "List user graphs", + "operationId": "getV1List user graphs", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "items": { "$ref": "#/components/schemas/GraphModel" }, + "type": "array", + "title": "Response Getv1List User Graphs" + } + } + } + } + } + }, + "post": { + "tags": ["v1", "graphs"], + "summary": "Create new graph", + "operationId": "postV1Create new graph", + "requestBody": { + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/CreateGraph" } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/GraphModel" } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/graphs/{graph_id}/versions/{version}": { + "get": { + "tags": ["v1", "graphs"], + "summary": "Get graph version", + "operationId": "getV1Get graph version", + "parameters": [ + { + "name": "graph_id", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Graph Id" } + }, + { + "name": "version", + "in": "path", + "required": true, + "schema": { + "anyOf": [{ "type": "integer" }, { "type": "null" }], + "title": "Version" + } + }, + { + "name": "for_export", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "default": false, + "title": "For Export" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/GraphModel" } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/graphs/{graph_id}": { + "get": { + "tags": ["v1", "graphs"], + "summary": "Get specific graph", + "operationId": "getV1Get specific graph", + "parameters": [ + { + "name": "graph_id", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Graph Id" } + }, + { + "name": "version", + "in": "query", + "required": false, + "schema": { + "anyOf": [{ "type": "integer" }, { "type": "null" }], + "title": "Version" + } + }, + { + "name": "for_export", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "default": false, + "title": "For Export" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/GraphModel" } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + }, + "delete": { + "tags": ["v1", "graphs"], + "summary": "Delete graph permanently", + "operationId": "deleteV1Delete graph permanently", + "parameters": [ + { + "name": "graph_id", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Graph Id" } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/DeleteGraphResponse" } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + }, + "put": { + "tags": ["v1", "graphs"], + "summary": "Update graph version", + "operationId": "putV1Update graph version", + "parameters": [ + { + "name": "graph_id", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Graph Id" } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/Graph" } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/GraphModel" } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/graphs/{graph_id}/versions": { + "get": { + "tags": ["v1", "graphs"], + "summary": "Get all graph versions", + "operationId": "getV1Get all graph versions", + "parameters": [ + { + "name": "graph_id", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Graph Id" } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { "$ref": "#/components/schemas/GraphModel" }, + "title": "Response Getv1Get All Graph Versions" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/graphs/{graph_id}/versions/active": { + "put": { + "tags": ["v1", "graphs"], + "summary": "Set active graph version", + "operationId": "putV1Set active graph version", + "parameters": [ + { + "name": "graph_id", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Graph Id" } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/SetGraphActiveVersion" } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { "application/json": { "schema": {} } } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/graphs/{graph_id}/execute/{graph_version}": { + "post": { + "tags": ["v1", "graphs"], + "summary": "Execute graph agent", + "operationId": "postV1Execute graph agent", + "parameters": [ + { + "name": "graph_id", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Graph Id" } + }, + { + "name": "graph_version", + "in": "path", + "required": true, + "schema": { + "anyOf": [{ "type": "integer" }, { "type": "null" }], + "title": "Graph Version" + } + }, + { + "name": "preset_id", + "in": "query", + "required": false, + "schema": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Preset Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Body_postV1Execute_graph_agent" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExecuteGraphResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/graphs/{graph_id}/executions/{graph_exec_id}/stop": { + "post": { + "tags": ["v1", "graphs"], + "summary": "Stop graph execution", + "operationId": "postV1Stop graph execution", + "parameters": [ + { + "name": "graph_id", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Graph Id" } + }, + { + "name": "graph_exec_id", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Graph Exec Id" } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/GraphExecution" } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/executions": { + "get": { + "tags": ["v1", "graphs"], + "summary": "Get all executions", + "operationId": "getV1Get all executions", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/GraphExecutionMeta" + }, + "type": "array", + "title": "Response Getv1Get All Executions" + } + } + } + } + } + } + }, + "/api/graphs/{graph_id}/executions": { + "get": { + "tags": ["v1", "graphs"], + "summary": "Get graph executions", + "operationId": "getV1Get graph executions", + "parameters": [ + { + "name": "graph_id", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Graph Id" } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/GraphExecutionMeta" + }, + "title": "Response Getv1Get Graph Executions" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/graphs/{graph_id}/executions/{graph_exec_id}": { + "get": { + "tags": ["v1", "graphs"], + "summary": "Get execution details", + "operationId": "getV1Get execution details", + "parameters": [ + { + "name": "graph_id", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Graph Id" } + }, + { + "name": "graph_exec_id", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Graph Exec Id" } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "anyOf": [ + { "$ref": "#/components/schemas/GraphExecution" }, + { "$ref": "#/components/schemas/GraphExecutionWithNodes" } + ], + "title": "Response Getv1Get Execution Details" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/executions/{graph_exec_id}": { + "delete": { + "tags": ["v1", "graphs"], + "summary": "Delete graph execution", + "operationId": "deleteV1Delete graph execution", + "parameters": [ + { + "name": "graph_exec_id", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Graph Exec Id" } + } + ], + "responses": { + "204": { "description": "Successful Response" }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/schedules": { + "post": { + "tags": ["v1", "schedules"], + "summary": "Create execution schedule", + "operationId": "postV1Create execution schedule", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScheduleCreationRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GraphExecutionJobInfo" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + }, + "get": { + "tags": ["v1", "schedules"], + "summary": "List execution schedules", + "operationId": "getV1List execution schedules", + "parameters": [ + { + "name": "graph_id", + "in": "query", + "required": false, + "schema": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Graph Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/GraphExecutionJobInfo" + }, + "title": "Response Getv1List Execution Schedules" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/schedules/{schedule_id}": { + "delete": { + "tags": ["v1", "schedules"], + "summary": "Delete execution schedule", + "operationId": "deleteV1Delete execution schedule", + "parameters": [ + { + "name": "schedule_id", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Schedule Id" } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true, + "title": "Response Deletev1Delete Execution Schedule" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/api-keys": { + "get": { + "tags": ["v1", "api-keys"], + "summary": "List user API keys", + "description": "List all API keys for the user", + "operationId": "getV1List user api keys", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "anyOf": [ + { + "items": { + "$ref": "#/components/schemas/APIKeyWithoutHash" + }, + "type": "array" + }, + { + "additionalProperties": { "type": "string" }, + "type": "object" + } + ], + "title": "Response Getv1List User Api Keys" + } + } + } + } + } + }, + "post": { + "tags": ["v1", "api-keys"], + "summary": "Create new API key", + "description": "Create a new API key", + "operationId": "postV1Create new api key", + "requestBody": { + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/CreateAPIKeyRequest" } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateAPIKeyResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/api-keys/{key_id}": { + "get": { + "tags": ["v1", "api-keys"], + "summary": "Get specific API key", + "description": "Get a specific API key", + "operationId": "getV1Get specific api key", + "parameters": [ + { + "name": "key_id", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Key Id" } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/APIKeyWithoutHash" } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + }, + "delete": { + "tags": ["v1", "api-keys"], + "summary": "Revoke API key", + "description": "Revoke an API key", + "operationId": "deleteV1Revoke api key", + "parameters": [ + { + "name": "key_id", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Key Id" } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/APIKeyWithoutHash" } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/api-keys/{key_id}/suspend": { + "post": { + "tags": ["v1", "api-keys"], + "summary": "Suspend API key", + "description": "Suspend an API key", + "operationId": "postV1Suspend api key", + "parameters": [ + { + "name": "key_id", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Key Id" } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/APIKeyWithoutHash" } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/api-keys/{key_id}/permissions": { + "put": { + "tags": ["v1", "api-keys"], + "summary": "Update key permissions", + "description": "Update API key permissions", + "operationId": "putV1Update key permissions", + "parameters": [ + { + "name": "key_id", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Key Id" } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdatePermissionsRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/APIKeyWithoutHash" } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/store/profile": { + "get": { + "tags": ["v2", "store", "private"], + "summary": "Get user profile", + "description": "Get the profile details for the authenticated user.", + "operationId": "getV2Get user profile", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/ProfileDetails" } + } + } + } + } + }, + "post": { + "tags": ["v2", "store", "private"], + "summary": "Update user profile", + "description": "Update the store profile for the authenticated user.\n\nArgs:\n profile (Profile): The updated profile details\n user_id (str): ID of the authenticated user\n\nReturns:\n CreatorDetails: The updated profile\n\nRaises:\n HTTPException: If there is an error updating the profile", + "operationId": "postV2Update user profile", + "requestBody": { + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/Profile" } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/CreatorDetails" } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/store/agents": { + "get": { + "tags": ["v2", "store", "public"], + "summary": "List store agents", + "description": "Get a paginated list of agents from the store with optional filtering and sorting.\n\nArgs:\n featured (bool, optional): Filter to only show featured agents. Defaults to False.\n creator (str | None, optional): Filter agents by creator username. Defaults to None.\n sorted_by (str | None, optional): Sort agents by \"runs\" or \"rating\". Defaults to None.\n search_query (str | None, optional): Search agents by name, subheading and description. Defaults to None.\n category (str | None, optional): Filter agents by category. Defaults to None.\n page (int, optional): Page number for pagination. Defaults to 1.\n page_size (int, optional): Number of agents per page. Defaults to 20.\n\nReturns:\n StoreAgentsResponse: Paginated list of agents matching the filters\n\nRaises:\n HTTPException: If page or page_size are less than 1\n\nUsed for:\n- Home Page Featured Agents\n- Home Page Top Agents\n- Search Results\n- Agent Details - Other Agents By Creator\n- Agent Details - Similar Agents\n- Creator Details - Agents By Creator", + "operationId": "getV2List store agents", + "parameters": [ + { + "name": "featured", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "default": false, + "title": "Featured" + } + }, + { + "name": "creator", + "in": "query", + "required": false, + "schema": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Creator" + } + }, + { + "name": "sorted_by", + "in": "query", + "required": false, + "schema": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Sorted By" + } + }, + { + "name": "search_query", + "in": "query", + "required": false, + "schema": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Search Query" + } + }, + { + "name": "category", + "in": "query", + "required": false, + "schema": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Category" + } + }, + { + "name": "page", + "in": "query", + "required": false, + "schema": { "type": "integer", "default": 1, "title": "Page" } + }, + { + "name": "page_size", + "in": "query", + "required": false, + "schema": { "type": "integer", "default": 20, "title": "Page Size" } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/StoreAgentsResponse" } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/store/agents/{username}/{agent_name}": { + "get": { + "tags": ["v2", "store", "public"], + "summary": "Get specific agent", + "description": "This is only used on the AgentDetails Page\n\nIt returns the store listing agents details.", + "operationId": "getV2Get specific agent", + "parameters": [ + { + "name": "username", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Username" } + }, + { + "name": "agent_name", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Agent Name" } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/StoreAgentDetails" } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/store/graph/{store_listing_version_id}": { + "get": { + "tags": ["v2", "store"], + "summary": "Get agent graph", + "description": "Get Agent Graph from Store Listing Version ID.", + "operationId": "getV2Get agent graph", + "parameters": [ + { + "name": "store_listing_version_id", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Store Listing Version Id" } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { "application/json": { "schema": {} } } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/store/agents/{store_listing_version_id}": { + "get": { + "tags": ["v2", "store"], + "summary": "Get agent by version", + "description": "Get Store Agent Details from Store Listing Version ID.", + "operationId": "getV2Get agent by version", + "parameters": [ + { + "name": "store_listing_version_id", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Store Listing Version Id" } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/StoreAgentDetails" } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/store/agents/{username}/{agent_name}/review": { + "post": { + "tags": ["v2", "store"], + "summary": "Create agent review", + "description": "Create a review for a store agent.\n\nArgs:\n username: Creator's username\n agent_name: Name/slug of the agent\n review: Review details including score and optional comments\n user_id: ID of authenticated user creating the review\n\nReturns:\n The created review", + "operationId": "postV2Create agent review", + "parameters": [ + { + "name": "username", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Username" } + }, + { + "name": "agent_name", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Agent Name" } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/StoreReviewCreate" } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/StoreReview" } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/store/creators": { + "get": { + "tags": ["v2", "store", "public"], + "summary": "List store creators", + "description": "This is needed for:\n- Home Page Featured Creators\n- Search Results Page\n\n---\n\nTo support this functionality we need:\n- featured: bool - to limit the list to just featured agents\n- search_query: str - vector search based on the creators profile description.\n- sorted_by: [agent_rating, agent_runs] -", + "operationId": "getV2List store creators", + "parameters": [ + { + "name": "featured", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "default": false, + "title": "Featured" + } + }, + { + "name": "search_query", + "in": "query", + "required": false, + "schema": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Search Query" + } + }, + { + "name": "sorted_by", + "in": "query", + "required": false, + "schema": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Sorted By" + } + }, + { + "name": "page", + "in": "query", + "required": false, + "schema": { "type": "integer", "default": 1, "title": "Page" } + }, + { + "name": "page_size", + "in": "query", + "required": false, + "schema": { "type": "integer", "default": 20, "title": "Page Size" } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/CreatorsResponse" } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/store/creator/{username}": { + "get": { + "tags": ["v2", "store", "public"], + "summary": "Get creator details", + "description": "Get the details of a creator\n- Creator Details Page", + "operationId": "getV2Get creator details", + "parameters": [ + { + "name": "username", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Username" } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/CreatorDetails" } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/store/myagents": { + "get": { + "tags": ["v2", "store", "private"], + "summary": "Get my agents", + "operationId": "getV2Get my agents", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/MyAgentsResponse" } + } + } + } + } + } + }, + "/api/store/submissions/{submission_id}": { + "delete": { + "tags": ["v2", "store", "private"], + "summary": "Delete store submission", + "description": "Delete a store listing submission.\n\nArgs:\n user_id (str): ID of the authenticated user\n submission_id (str): ID of the submission to be deleted\n\nReturns:\n bool: True if the submission was successfully deleted, False otherwise", + "operationId": "deleteV2Delete store submission", + "parameters": [ + { + "name": "submission_id", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Submission Id" } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "boolean", + "title": "Response Deletev2Delete Store Submission" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/store/submissions": { + "get": { + "tags": ["v2", "store", "private"], + "summary": "List my submissions", + "description": "Get a paginated list of store submissions for the authenticated user.\n\nArgs:\n user_id (str): ID of the authenticated user\n page (int, optional): Page number for pagination. Defaults to 1.\n page_size (int, optional): Number of submissions per page. Defaults to 20.\n\nReturns:\n StoreListingsResponse: Paginated list of store submissions\n\nRaises:\n HTTPException: If page or page_size are less than 1", + "operationId": "getV2List my submissions", + "parameters": [ + { + "name": "page", + "in": "query", + "required": false, + "schema": { "type": "integer", "default": 1, "title": "Page" } + }, + { + "name": "page_size", + "in": "query", + "required": false, + "schema": { "type": "integer", "default": 20, "title": "Page Size" } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreSubmissionsResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + }, + "post": { + "tags": ["v2", "store", "private"], + "summary": "Create store submission", + "description": "Create a new store listing submission.\n\nArgs:\n submission_request (StoreSubmissionRequest): The submission details\n user_id (str): ID of the authenticated user submitting the listing\n\nReturns:\n StoreSubmission: The created store submission\n\nRaises:\n HTTPException: If there is an error creating the submission", + "operationId": "postV2Create store submission", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreSubmissionRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/StoreSubmission" } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/store/submissions/media": { + "post": { + "tags": ["v2", "store", "private"], + "summary": "Upload submission media", + "description": "Upload media (images/videos) for a store listing submission.\n\nArgs:\n file (UploadFile): The media file to upload\n user_id (str): ID of the authenticated user uploading the media\n\nReturns:\n str: URL of the uploaded media file\n\nRaises:\n HTTPException: If there is an error uploading the media", + "operationId": "postV2Upload submission media", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "$ref": "#/components/schemas/Body_postV2Upload_submission_media" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { "application/json": { "schema": {} } } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/store/submissions/generate_image": { + "post": { + "tags": ["v2", "store", "private"], + "summary": "Generate submission image", + "description": "Generate an image for a store listing submission.\n\nArgs:\n agent_id (str): ID of the agent to generate an image for\n user_id (str): ID of the authenticated user\n\nReturns:\n JSONResponse: JSON containing the URL of the generated image", + "operationId": "postV2Generate submission image", + "parameters": [ + { + "name": "agent_id", + "in": "query", + "required": true, + "schema": { "type": "string", "title": "Agent Id" } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { "application/json": { "schema": {} } } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/store/download/agents/{store_listing_version_id}": { + "get": { + "tags": ["v2", "store", "public"], + "summary": "Download agent file", + "description": "Download the agent file by streaming its content.\n\nArgs:\n store_listing_version_id (str): The ID of the agent to download\n\nReturns:\n StreamingResponse: A streaming response containing the agent's graph data.\n\nRaises:\n HTTPException: If the agent is not found or an unexpected error occurs.", + "operationId": "getV2Download agent file", + "parameters": [ + { + "name": "store_listing_version_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "description": "The ID of the agent to download", + "title": "Store Listing Version Id" + }, + "description": "The ID of the agent to download" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { "application/json": { "schema": {} } } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/store/admin/listings": { + "get": { + "tags": ["v2", "admin", "store", "admin"], + "summary": "Get Admin Listings History", + "description": "Get store listings with their version history for admins.\n\nThis provides a consolidated view of listings with their versions,\nallowing for an expandable UI in the admin dashboard.\n\nArgs:\n status: Filter by submission status (PENDING, APPROVED, REJECTED)\n search: Search by name, description, or user email\n page: Page number for pagination\n page_size: Number of items per page\n\nReturns:\n StoreListingsWithVersionsResponse with listings and their versions", + "operationId": "getV2Get admin listings history", + "parameters": [ + { + "name": "status", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { "$ref": "#/components/schemas/SubmissionStatus" }, + { "type": "null" } + ], + "title": "Status" + } + }, + { + "name": "search", + "in": "query", + "required": false, + "schema": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Search" + } + }, + { + "name": "page", + "in": "query", + "required": false, + "schema": { "type": "integer", "default": 1, "title": "Page" } + }, + { + "name": "page_size", + "in": "query", + "required": false, + "schema": { "type": "integer", "default": 20, "title": "Page Size" } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreListingsWithVersionsResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/store/admin/submissions/{store_listing_version_id}/review": { + "post": { + "tags": ["v2", "admin", "store", "admin"], + "summary": "Review Store Submission", + "description": "Review a store listing submission.\n\nArgs:\n store_listing_version_id: ID of the submission to review\n request: Review details including approval status and comments\n user: Authenticated admin user performing the review\n\nReturns:\n StoreSubmission with updated review information", + "operationId": "postV2Review store submission", + "parameters": [ + { + "name": "store_listing_version_id", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Store Listing Version Id" } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ReviewSubmissionRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/StoreSubmission" } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/store/admin/submissions/download/{store_listing_version_id}": { + "get": { + "tags": ["v2", "admin", "store", "admin", "store", "admin"], + "summary": "Admin Download Agent File", + "description": "Download the agent file by streaming its content.\n\nArgs:\n store_listing_version_id (str): The ID of the agent to download\n\nReturns:\n StreamingResponse: A streaming response containing the agent's graph data.\n\nRaises:\n HTTPException: If the agent is not found or an unexpected error occurs.", + "operationId": "getV2Admin download agent file", + "parameters": [ + { + "name": "store_listing_version_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "description": "The ID of the agent to download", + "title": "Store Listing Version Id" + }, + "description": "The ID of the agent to download" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { "application/json": { "schema": {} } } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/credits/admin/add_credits": { + "post": { + "tags": ["v2", "admin", "credits", "admin"], + "summary": "Add Credits to User", + "operationId": "postV2Add credits to user", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Body_postV2Add_credits_to_user" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AddUserCreditsResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/credits/admin/users_history": { + "get": { + "tags": ["v2", "admin", "credits", "admin"], + "summary": "Get All Users History", + "operationId": "getV2Get all users history", + "parameters": [ + { + "name": "search", + "in": "query", + "required": false, + "schema": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Search" + } + }, + { + "name": "page", + "in": "query", + "required": false, + "schema": { "type": "integer", "default": 1, "title": "Page" } + }, + { + "name": "page_size", + "in": "query", + "required": false, + "schema": { "type": "integer", "default": 20, "title": "Page Size" } + }, + { + "name": "transaction_filter", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { "$ref": "#/components/schemas/CreditTransactionType" }, + { "type": "null" } + ], + "title": "Transaction Filter" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/UserHistoryResponse" } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/library/presets": { + "get": { + "tags": ["v2", "presets"], + "summary": "List presets", + "description": "Retrieve a paginated list of presets for the current user.", + "operationId": "getV2List presets", + "parameters": [ + { + "name": "page", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "default": 1, + "title": "Page" + } + }, + { + "name": "page_size", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "default": 10, + "title": "Page Size" + } + }, + { + "name": "graph_id", + "in": "query", + "required": true, + "schema": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "description": "Allows to filter presets by a specific agent graph", + "title": "Graph Id" + }, + "description": "Allows to filter presets by a specific agent graph" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LibraryAgentPresetResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + }, + "post": { + "tags": ["v2", "presets"], + "summary": "Create a new preset", + "description": "Create a new preset for the current user.", + "operationId": "postV2Create a new preset", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "anyOf": [ + { + "$ref": "#/components/schemas/LibraryAgentPresetCreatable" + }, + { + "$ref": "#/components/schemas/LibraryAgentPresetCreatableFromGraphExecution" + } + ], + "title": "Preset" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/LibraryAgentPreset" } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/library/presets/{preset_id}": { + "get": { + "tags": ["v2", "presets"], + "summary": "Get a specific preset", + "description": "Retrieve details for a specific preset by its ID.", + "operationId": "getV2Get a specific preset", + "parameters": [ + { + "name": "preset_id", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Preset Id" } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/LibraryAgentPreset" } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + }, + "patch": { + "tags": ["v2", "presets"], + "summary": "Update an existing preset", + "description": "Update an existing preset by its ID.", + "operationId": "patchV2Update an existing preset", + "parameters": [ + { + "name": "preset_id", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Preset Id" } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LibraryAgentPresetUpdatable" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/LibraryAgentPreset" } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + }, + "delete": { + "tags": ["v2", "presets"], + "summary": "Delete a preset", + "description": "Delete an existing preset by its ID.", + "operationId": "deleteV2Delete a preset", + "parameters": [ + { + "name": "preset_id", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Preset Id" } + } + ], + "responses": { + "204": { "description": "Successful Response" }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/library/presets/{preset_id}/execute": { + "post": { + "tags": ["v2", "presets", "presets"], + "summary": "Execute a preset", + "description": "Execute a preset with the given graph and node input for the current user.", + "operationId": "postV2Execute a preset", + "parameters": [ + { + "name": "preset_id", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Preset Id" } + }, + { + "name": "graph_id", + "in": "query", + "required": true, + "schema": { "type": "string", "title": "Graph Id" } + }, + { + "name": "graph_version", + "in": "query", + "required": true, + "schema": { "type": "integer", "title": "Graph Version" } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Body_postV2Execute_a_preset" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true, + "title": "Response Postv2Execute A Preset" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/library/agents": { + "get": { + "tags": ["v2", "library", "private"], + "summary": "List Library Agents", + "description": "Get all agents in the user's library (both created and saved).\n\nArgs:\n user_id: ID of the authenticated user.\n search_term: Optional search term to filter agents by name/description.\n filter_by: List of filters to apply (favorites, created by user).\n sort_by: List of sorting criteria (created date, updated date).\n page: Page number to retrieve.\n page_size: Number of agents per page.\n\nReturns:\n A LibraryAgentResponse containing agents and pagination metadata.\n\nRaises:\n HTTPException: If a server/database error occurs.", + "operationId": "getV2List library agents", + "parameters": [ + { + "name": "search_term", + "in": "query", + "required": false, + "schema": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "description": "Search term to filter agents", + "title": "Search Term" + }, + "description": "Search term to filter agents" + }, + { + "name": "sort_by", + "in": "query", + "required": false, + "schema": { + "$ref": "#/components/schemas/LibraryAgentSort", + "description": "Criteria to sort results by", + "default": "updatedAt" + }, + "description": "Criteria to sort results by" + }, + { + "name": "page", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "description": "Page number to retrieve (must be >= 1)", + "default": 1, + "title": "Page" + }, + "description": "Page number to retrieve (must be >= 1)" + }, + { + "name": "page_size", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "description": "Number of agents per page (must be >= 1)", + "default": 15, + "title": "Page Size" + }, + "description": "Number of agents per page (must be >= 1)" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LibraryAgentResponse" + } + } + } + }, + "500": { + "description": "Server error", + "content": { "application/json": {} } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + }, + "post": { + "tags": ["v2", "library", "private"], + "summary": "Add Marketplace Agent", + "description": "Add an agent from the marketplace to the user's library.\n\nArgs:\n store_listing_version_id: ID of the store listing version to add.\n user_id: ID of the authenticated user.\n\nReturns:\n library_model.LibraryAgent: Agent added to the library\n\nRaises:\n HTTPException(404): If the listing version is not found.\n HTTPException(500): If a server/database error occurs.", + "operationId": "postV2Add marketplace agent", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Body_postV2Add_marketplace_agent" + } + } + } + }, + "responses": { + "201": { + "description": "Agent added successfully", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/LibraryAgent" } + } + } + }, + "404": { "description": "Store listing version not found" }, + "500": { "description": "Server error" }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/library/agents/{library_agent_id}": { + "get": { + "tags": ["v2", "library", "private"], + "summary": "Get Library Agent", + "operationId": "getV2Get library agent", + "parameters": [ + { + "name": "library_agent_id", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Library Agent Id" } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/LibraryAgent" } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + }, + "put": { + "tags": ["v2", "library", "private"], + "summary": "Update Library Agent", + "description": "Update the library agent with the given fields.\n\nArgs:\n library_agent_id: ID of the library agent to update.\n payload: Fields to update (auto_update_version, is_favorite, etc.).\n user_id: ID of the authenticated user.\n\nReturns:\n 204 (No Content) on success.\n\nRaises:\n HTTPException(500): If a server/database error occurs.", + "operationId": "putV2Update library agent", + "parameters": [ + { + "name": "library_agent_id", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Library Agent Id" } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LibraryAgentUpdateRequest" + } + } + } + }, + "responses": { + "204": { "description": "Agent updated successfully" }, + "500": { "description": "Server error" }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/library/agents/marketplace/{store_listing_version_id}": { + "get": { + "tags": ["v2", "library", "private", "store, library"], + "summary": "Get Agent By Store ID", + "description": "Get Library Agent from Store Listing Version ID.", + "operationId": "getV2Get agent by store id", + "parameters": [ + { + "name": "store_listing_version_id", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Store Listing Version Id" } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "anyOf": [ + { "$ref": "#/components/schemas/LibraryAgent" }, + { "type": "null" } + ], + "title": "Response Getv2Get Agent By Store Id" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/library/agents/{library_agent_id}/fork": { + "post": { + "tags": ["v2", "library", "private"], + "summary": "Fork Library Agent", + "operationId": "postV2Fork library agent", + "parameters": [ + { + "name": "library_agent_id", + "in": "path", + "required": true, + "schema": { "type": "string", "title": "Library Agent Id" } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/LibraryAgent" } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/otto/ask": { + "post": { + "tags": ["v2", "otto"], + "summary": "Proxy Otto Chat Request", + "description": "Proxy requests to Otto API while adding necessary security headers and logging.\nRequires an authenticated user.", + "operationId": "postV2Proxy otto chat request", + "requestBody": { + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/ChatRequest" } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/ApiResponse" } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/turnstile/verify": { + "post": { + "tags": ["v2", "turnstile"], + "summary": "Verify Turnstile Token", + "description": "Verify a Cloudflare Turnstile token.\nThis endpoint verifies a token returned by the Cloudflare Turnstile challenge\non the client side. It returns whether the verification was successful.", + "operationId": "postV2Verify turnstile token", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TurnstileVerifyRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TurnstileVerifyResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/email/unsubscribe": { + "post": { + "tags": ["v1", "email"], + "summary": "One Click Email Unsubscribe", + "operationId": "postV1One click email unsubscribe", + "parameters": [ + { + "name": "token", + "in": "query", + "required": true, + "schema": { "type": "string", "title": "Token" } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { "application/json": { "schema": {} } } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + } + } + }, + "/api/email/": { + "post": { + "tags": ["v1", "email"], + "summary": "Handle Postmark Email Webhooks", + "operationId": "postV1Handle postmark email webhooks", + "requestBody": { + "content": { + "application/json": { + "schema": { + "oneOf": [ + { "$ref": "#/components/schemas/PostmarkDeliveryWebhook" }, + { "$ref": "#/components/schemas/PostmarkBounceWebhook" }, + { + "$ref": "#/components/schemas/PostmarkSpamComplaintWebhook" + }, + { "$ref": "#/components/schemas/PostmarkOpenWebhook" }, + { "$ref": "#/components/schemas/PostmarkClickWebhook" }, + { + "$ref": "#/components/schemas/PostmarkSubscriptionChangeWebhook" + } + ], + "title": "Webhook", + "discriminator": { + "propertyName": "RecordType", + "mapping": { + "Delivery": "#/components/schemas/PostmarkDeliveryWebhook", + "Bounce": "#/components/schemas/PostmarkBounceWebhook", + "SpamComplaint": "#/components/schemas/PostmarkSpamComplaintWebhook", + "Open": "#/components/schemas/PostmarkOpenWebhook", + "Click": "#/components/schemas/PostmarkClickWebhook", + "SubscriptionChange": "#/components/schemas/PostmarkSubscriptionChangeWebhook" + } + } + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { "application/json": { "schema": {} } } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } + } + } + } + }, + "security": [{ "APIKeyHeader": [] }] + } + }, + "/health": { + "get": { + "tags": ["health"], + "summary": "Health", + "operationId": "getHealthHealth", + "responses": { + "200": { + "description": "Successful Response", + "content": { "application/json": { "schema": {} } } + } + } + } + } + }, + "components": { + "schemas": { + "APIKeyCredentials": { + "properties": { + "id": { "type": "string", "title": "Id" }, + "provider": { "type": "string", "title": "Provider" }, + "title": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Title" + }, + "type": { + "type": "string", + "const": "api_key", + "title": "Type", + "default": "api_key" + }, + "api_key": { + "type": "string", + "format": "password", + "title": "Api Key", + "writeOnly": true + }, + "expires_at": { + "anyOf": [{ "type": "integer" }, { "type": "null" }], + "title": "Expires At", + "description": "Unix timestamp (seconds) indicating when the API key expires (if at all)" + } + }, + "type": "object", + "required": ["provider", "api_key"], + "title": "APIKeyCredentials" + }, + "APIKeyPermission": { + "type": "string", + "enum": ["EXECUTE_GRAPH", "READ_GRAPH", "EXECUTE_BLOCK", "READ_BLOCK"], + "title": "APIKeyPermission" + }, + "APIKeyStatus": { + "type": "string", + "enum": ["ACTIVE", "REVOKED", "SUSPENDED"], + "title": "APIKeyStatus" + }, + "APIKeyWithoutHash": { + "properties": { + "id": { "type": "string", "title": "Id" }, + "name": { "type": "string", "title": "Name" }, + "prefix": { "type": "string", "title": "Prefix" }, + "postfix": { "type": "string", "title": "Postfix" }, + "status": { "$ref": "#/components/schemas/APIKeyStatus" }, + "permissions": { + "items": { "$ref": "#/components/schemas/APIKeyPermission" }, + "type": "array", + "title": "Permissions" + }, + "created_at": { + "type": "string", + "format": "date-time", + "title": "Created At" + }, + "last_used_at": { + "anyOf": [ + { "type": "string", "format": "date-time" }, + { "type": "null" } + ], + "title": "Last Used At" + }, + "revoked_at": { + "anyOf": [ + { "type": "string", "format": "date-time" }, + { "type": "null" } + ], + "title": "Revoked At" + }, + "description": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Description" + }, + "user_id": { "type": "string", "title": "User Id" } + }, + "type": "object", + "required": [ + "id", + "name", + "prefix", + "postfix", + "status", + "permissions", + "created_at", + "last_used_at", + "revoked_at", + "description", + "user_id" + ], + "title": "APIKeyWithoutHash" + }, + "AddUserCreditsResponse": { + "properties": { + "new_balance": { "type": "integer", "title": "New Balance" }, + "transaction_key": { "type": "string", "title": "Transaction Key" } + }, + "type": "object", + "required": ["new_balance", "transaction_key"], + "title": "AddUserCreditsResponse" + }, + "AgentExecutionStatus": { + "type": "string", + "enum": [ + "INCOMPLETE", + "QUEUED", + "RUNNING", + "COMPLETED", + "TERMINATED", + "FAILED" + ], + "title": "AgentExecutionStatus" + }, + "ApiResponse": { + "properties": { + "answer": { "type": "string", "title": "Answer" }, + "documents": { + "items": { "$ref": "#/components/schemas/Document" }, + "type": "array", + "title": "Documents" + }, + "success": { "type": "boolean", "title": "Success" } + }, + "type": "object", + "required": ["answer", "documents", "success"], + "title": "ApiResponse" + }, + "AutoTopUpConfig": { + "properties": { + "amount": { "type": "integer", "title": "Amount" }, + "threshold": { "type": "integer", "title": "Threshold" } + }, + "type": "object", + "required": ["amount", "threshold"], + "title": "AutoTopUpConfig" + }, + "BaseGraph-Input": { + "properties": { + "id": { "type": "string", "title": "Id" }, + "version": { "type": "integer", "title": "Version", "default": 1 }, + "is_active": { + "type": "boolean", + "title": "Is Active", + "default": true + }, + "name": { "type": "string", "title": "Name" }, + "description": { "type": "string", "title": "Description" }, + "nodes": { + "items": { "$ref": "#/components/schemas/Node" }, + "type": "array", + "title": "Nodes", + "default": [] + }, + "links": { + "items": { "$ref": "#/components/schemas/Link" }, + "type": "array", + "title": "Links", + "default": [] + }, + "forked_from_id": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Forked From Id" + }, + "forked_from_version": { + "anyOf": [{ "type": "integer" }, { "type": "null" }], + "title": "Forked From Version" + } + }, + "type": "object", + "required": ["name", "description"], + "title": "BaseGraph" + }, + "BaseGraph-Output": { + "properties": { + "id": { "type": "string", "title": "Id" }, + "version": { "type": "integer", "title": "Version", "default": 1 }, + "is_active": { + "type": "boolean", + "title": "Is Active", + "default": true + }, + "name": { "type": "string", "title": "Name" }, + "description": { "type": "string", "title": "Description" }, + "nodes": { + "items": { "$ref": "#/components/schemas/Node" }, + "type": "array", + "title": "Nodes", + "default": [] + }, + "links": { + "items": { "$ref": "#/components/schemas/Link" }, + "type": "array", + "title": "Links", + "default": [] + }, + "forked_from_id": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Forked From Id" + }, + "forked_from_version": { + "anyOf": [{ "type": "integer" }, { "type": "null" }], + "title": "Forked From Version" + }, + "input_schema": { + "additionalProperties": true, + "type": "object", + "title": "Input Schema", + "readOnly": true + }, + "output_schema": { + "additionalProperties": true, + "type": "object", + "title": "Output Schema", + "readOnly": true + } + }, + "type": "object", + "required": ["name", "description", "input_schema", "output_schema"], + "title": "BaseGraph" + }, + "Body_postV1Callback": { + "properties": { + "code": { + "type": "string", + "title": "Authorization code acquired by user login" + }, + "state_token": { "type": "string", "title": "Anti-CSRF nonce" } + }, + "type": "object", + "required": ["code", "state_token"], + "title": "Body_postV1Callback" + }, + "Body_postV1Execute_graph_agent": { + "properties": { + "inputs": { + "additionalProperties": true, + "type": "object", + "title": "Inputs" + }, + "credentials_inputs": { + "additionalProperties": { + "$ref": "#/components/schemas/CredentialsMetaInput" + }, + "type": "object", + "title": "Credentials Inputs" + } + }, + "type": "object", + "title": "Body_postV1Execute graph agent" + }, + "Body_postV1LogRawAnalytics": { + "properties": { + "type": { "type": "string", "title": "Type" }, + "data": { + "additionalProperties": true, + "type": "object", + "title": "Data", + "description": "The data to log" + }, + "data_index": { + "type": "string", + "title": "Data Index", + "description": "Indexable field for any count based analytical measures like page order clicking, tutorial step completion, etc." + } + }, + "type": "object", + "required": ["type", "data", "data_index"], + "title": "Body_postV1LogRawAnalytics" + }, + "Body_postV1LogRawMetric": { + "properties": { + "metric_name": { "type": "string", "title": "Metric Name" }, + "metric_value": { "type": "number", "title": "Metric Value" }, + "data_string": { "type": "string", "title": "Data String" } + }, + "type": "object", + "required": ["metric_name", "metric_value", "data_string"], + "title": "Body_postV1LogRawMetric" + }, + "Body_postV2Add_credits_to_user": { + "properties": { + "user_id": { "type": "string", "title": "User Id" }, + "amount": { "type": "integer", "title": "Amount" }, + "comments": { "type": "string", "title": "Comments" } + }, + "type": "object", + "required": ["user_id", "amount", "comments"], + "title": "Body_postV2Add credits to user" + }, + "Body_postV2Add_marketplace_agent": { + "properties": { + "store_listing_version_id": { + "type": "string", + "title": "Store Listing Version Id" + } + }, + "type": "object", + "required": ["store_listing_version_id"], + "title": "Body_postV2Add marketplace agent" + }, + "Body_postV2Execute_a_preset": { + "properties": { + "node_input": { + "additionalProperties": true, + "type": "object", + "title": "Node Input" + } + }, + "type": "object", + "title": "Body_postV2Execute a preset" + }, + "Body_postV2Upload_submission_media": { + "properties": { + "file": { "type": "string", "format": "binary", "title": "File" } + }, + "type": "object", + "required": ["file"], + "title": "Body_postV2Upload submission media" + }, + "ChatRequest": { + "properties": { + "query": { "type": "string", "title": "Query" }, + "conversation_history": { + "items": { "$ref": "#/components/schemas/Message" }, + "type": "array", + "title": "Conversation History" + }, + "message_id": { "type": "string", "title": "Message Id" }, + "include_graph_data": { + "type": "boolean", + "title": "Include Graph Data", + "default": false + }, + "graph_id": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Graph Id" + } + }, + "type": "object", + "required": ["query", "conversation_history", "message_id"], + "title": "ChatRequest" + }, + "CreateAPIKeyRequest": { + "properties": { + "name": { "type": "string", "title": "Name" }, + "permissions": { + "items": { "$ref": "#/components/schemas/APIKeyPermission" }, + "type": "array", + "title": "Permissions" + }, + "description": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Description" + } + }, + "type": "object", + "required": ["name", "permissions"], + "title": "CreateAPIKeyRequest" + }, + "CreateAPIKeyResponse": { + "properties": { + "api_key": { "$ref": "#/components/schemas/APIKeyWithoutHash" }, + "plain_text_key": { "type": "string", "title": "Plain Text Key" } + }, + "type": "object", + "required": ["api_key", "plain_text_key"], + "title": "CreateAPIKeyResponse" + }, + "CreateGraph": { + "properties": { "graph": { "$ref": "#/components/schemas/Graph" } }, + "type": "object", + "required": ["graph"], + "title": "CreateGraph" + }, + "Creator": { + "properties": { + "name": { "type": "string", "title": "Name" }, + "username": { "type": "string", "title": "Username" }, + "description": { "type": "string", "title": "Description" }, + "avatar_url": { "type": "string", "title": "Avatar Url" }, + "num_agents": { "type": "integer", "title": "Num Agents" }, + "agent_rating": { "type": "number", "title": "Agent Rating" }, + "agent_runs": { "type": "integer", "title": "Agent Runs" }, + "is_featured": { "type": "boolean", "title": "Is Featured" } + }, + "type": "object", + "required": [ + "name", + "username", + "description", + "avatar_url", + "num_agents", + "agent_rating", + "agent_runs", + "is_featured" + ], + "title": "Creator" + }, + "CreatorDetails": { + "properties": { + "name": { "type": "string", "title": "Name" }, + "username": { "type": "string", "title": "Username" }, + "description": { "type": "string", "title": "Description" }, + "links": { + "items": { "type": "string" }, + "type": "array", + "title": "Links" + }, + "avatar_url": { "type": "string", "title": "Avatar Url" }, + "agent_rating": { "type": "number", "title": "Agent Rating" }, + "agent_runs": { "type": "integer", "title": "Agent Runs" }, + "top_categories": { + "items": { "type": "string" }, + "type": "array", + "title": "Top Categories" + } + }, + "type": "object", + "required": [ + "name", + "username", + "description", + "links", + "avatar_url", + "agent_rating", + "agent_runs", + "top_categories" + ], + "title": "CreatorDetails" + }, + "CreatorsResponse": { + "properties": { + "creators": { + "items": { "$ref": "#/components/schemas/Creator" }, + "type": "array", + "title": "Creators" + }, + "pagination": { "$ref": "#/components/schemas/Pagination" } + }, + "type": "object", + "required": ["creators", "pagination"], + "title": "CreatorsResponse" + }, + "CredentialsDeletionNeedsConfirmationResponse": { + "properties": { + "deleted": { + "type": "boolean", + "const": false, + "title": "Deleted", + "default": false + }, + "need_confirmation": { + "type": "boolean", + "const": true, + "title": "Need Confirmation", + "default": true + }, + "message": { "type": "string", "title": "Message" } + }, + "type": "object", + "required": ["message"], + "title": "CredentialsDeletionNeedsConfirmationResponse" + }, + "CredentialsDeletionResponse": { + "properties": { + "deleted": { + "type": "boolean", + "const": true, + "title": "Deleted", + "default": true + }, + "revoked": { + "anyOf": [{ "type": "boolean" }, { "type": "null" }], + "title": "Revoked", + "description": "Indicates whether the credentials were also revoked by their provider. `None`/`null` if not applicable, e.g. when deleting non-revocable credentials such as API keys." + } + }, + "type": "object", + "required": ["revoked"], + "title": "CredentialsDeletionResponse" + }, + "CredentialsMetaInput": { + "properties": { + "id": { "type": "string", "title": "Id" }, + "title": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Title" + }, + "provider": { "$ref": "#/components/schemas/ProviderName" }, + "type": { + "type": "string", + "enum": ["api_key", "oauth2", "user_password"], + "title": "Type" + } + }, + "type": "object", + "required": ["id", "provider", "type"], + "title": "CredentialsMetaInput", + "credentials_provider": [], + "credentials_types": [] + }, + "CredentialsMetaResponse": { + "properties": { + "id": { "type": "string", "title": "Id" }, + "provider": { "type": "string", "title": "Provider" }, + "type": { + "type": "string", + "enum": ["api_key", "oauth2", "user_password"], + "title": "Type" + }, + "title": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Title" + }, + "scopes": { + "anyOf": [ + { "items": { "type": "string" }, "type": "array" }, + { "type": "null" } + ], + "title": "Scopes" + }, + "username": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Username" + } + }, + "type": "object", + "required": ["id", "provider", "type", "title", "scopes", "username"], + "title": "CredentialsMetaResponse" + }, + "CreditTransactionType": { + "type": "string", + "enum": ["TOP_UP", "USAGE", "GRANT", "REFUND", "CARD_CHECK"], + "title": "CreditTransactionType" + }, + "DeleteGraphResponse": { + "properties": { + "version_counts": { "type": "integer", "title": "Version Counts" } + }, + "type": "object", + "required": ["version_counts"], + "title": "DeleteGraphResponse" + }, + "Document": { + "properties": { + "url": { "type": "string", "title": "Url" }, + "relevance_score": { "type": "number", "title": "Relevance Score" } + }, + "type": "object", + "required": ["url", "relevance_score"], + "title": "Document" + }, + "ExecuteGraphResponse": { + "properties": { + "graph_exec_id": { "type": "string", "title": "Graph Exec Id" } + }, + "type": "object", + "required": ["graph_exec_id"], + "title": "ExecuteGraphResponse" + }, + "Graph": { + "properties": { + "id": { "type": "string", "title": "Id" }, + "version": { "type": "integer", "title": "Version", "default": 1 }, + "is_active": { + "type": "boolean", + "title": "Is Active", + "default": true + }, + "name": { "type": "string", "title": "Name" }, + "description": { "type": "string", "title": "Description" }, + "nodes": { + "items": { "$ref": "#/components/schemas/Node" }, + "type": "array", + "title": "Nodes", + "default": [] + }, + "links": { + "items": { "$ref": "#/components/schemas/Link" }, + "type": "array", + "title": "Links", + "default": [] + }, + "forked_from_id": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Forked From Id" + }, + "forked_from_version": { + "anyOf": [{ "type": "integer" }, { "type": "null" }], + "title": "Forked From Version" + }, + "sub_graphs": { + "items": { "$ref": "#/components/schemas/BaseGraph-Input" }, + "type": "array", + "title": "Sub Graphs", + "default": [] + } + }, + "type": "object", + "required": ["name", "description"], + "title": "Graph" + }, + "GraphExecution": { + "properties": { + "id": { "type": "string", "title": "Id" }, + "user_id": { "type": "string", "title": "User Id" }, + "graph_id": { "type": "string", "title": "Graph Id" }, + "graph_version": { "type": "integer", "title": "Graph Version" }, + "preset_id": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Preset Id" + }, + "status": { "$ref": "#/components/schemas/AgentExecutionStatus" }, + "started_at": { + "type": "string", + "format": "date-time", + "title": "Started At" + }, + "ended_at": { + "type": "string", + "format": "date-time", + "title": "Ended At" + }, + "stats": { + "anyOf": [ + { "$ref": "#/components/schemas/Stats" }, + { "type": "null" } + ] + }, + "inputs": { + "additionalProperties": true, + "type": "object", + "title": "Inputs" + }, + "outputs": { + "additionalProperties": { "items": {}, "type": "array" }, + "type": "object", + "title": "Outputs" + } + }, + "type": "object", + "required": [ + "user_id", + "graph_id", + "graph_version", + "status", + "started_at", + "ended_at", + "stats", + "inputs", + "outputs" + ], + "title": "GraphExecution" + }, + "GraphExecutionJobInfo": { + "properties": { + "graph_id": { "type": "string", "title": "Graph Id" }, + "input_data": { + "additionalProperties": true, + "type": "object", + "title": "Input Data" + }, + "user_id": { "type": "string", "title": "User Id" }, + "graph_version": { "type": "integer", "title": "Graph Version" }, + "cron": { "type": "string", "title": "Cron" }, + "id": { "type": "string", "title": "Id" }, + "name": { "type": "string", "title": "Name" }, + "next_run_time": { "type": "string", "title": "Next Run Time" } + }, + "type": "object", + "required": [ + "graph_id", + "input_data", + "user_id", + "graph_version", + "cron", + "id", + "name", + "next_run_time" + ], + "title": "GraphExecutionJobInfo" + }, + "GraphExecutionMeta": { + "properties": { + "id": { "type": "string", "title": "Id" }, + "user_id": { "type": "string", "title": "User Id" }, + "graph_id": { "type": "string", "title": "Graph Id" }, + "graph_version": { "type": "integer", "title": "Graph Version" }, + "preset_id": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Preset Id" + }, + "status": { "$ref": "#/components/schemas/AgentExecutionStatus" }, + "started_at": { + "type": "string", + "format": "date-time", + "title": "Started At" + }, + "ended_at": { + "type": "string", + "format": "date-time", + "title": "Ended At" + }, + "stats": { + "anyOf": [ + { "$ref": "#/components/schemas/Stats" }, + { "type": "null" } + ] + } + }, + "type": "object", + "required": [ + "user_id", + "graph_id", + "graph_version", + "status", + "started_at", + "ended_at", + "stats" + ], + "title": "GraphExecutionMeta" + }, + "GraphExecutionWithNodes": { + "properties": { + "id": { "type": "string", "title": "Id" }, + "user_id": { "type": "string", "title": "User Id" }, + "graph_id": { "type": "string", "title": "Graph Id" }, + "graph_version": { "type": "integer", "title": "Graph Version" }, + "preset_id": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Preset Id" + }, + "status": { "$ref": "#/components/schemas/AgentExecutionStatus" }, + "started_at": { + "type": "string", + "format": "date-time", + "title": "Started At" + }, + "ended_at": { + "type": "string", + "format": "date-time", + "title": "Ended At" + }, + "stats": { + "anyOf": [ + { "$ref": "#/components/schemas/Stats" }, + { "type": "null" } + ] + }, + "inputs": { + "additionalProperties": true, + "type": "object", + "title": "Inputs" + }, + "outputs": { + "additionalProperties": { "items": {}, "type": "array" }, + "type": "object", + "title": "Outputs" + }, + "node_executions": { + "items": { "$ref": "#/components/schemas/NodeExecutionResult" }, + "type": "array", + "title": "Node Executions" + } + }, + "type": "object", + "required": [ + "user_id", + "graph_id", + "graph_version", + "status", + "started_at", + "ended_at", + "stats", + "inputs", + "outputs", + "node_executions" + ], + "title": "GraphExecutionWithNodes" + }, + "GraphModel": { + "properties": { + "id": { "type": "string", "title": "Id" }, + "version": { "type": "integer", "title": "Version", "default": 1 }, + "is_active": { + "type": "boolean", + "title": "Is Active", + "default": true + }, + "name": { "type": "string", "title": "Name" }, + "description": { "type": "string", "title": "Description" }, + "nodes": { + "items": { "$ref": "#/components/schemas/NodeModel" }, + "type": "array", + "title": "Nodes", + "default": [] + }, + "links": { + "items": { "$ref": "#/components/schemas/Link" }, + "type": "array", + "title": "Links", + "default": [] + }, + "forked_from_id": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Forked From Id" + }, + "forked_from_version": { + "anyOf": [{ "type": "integer" }, { "type": "null" }], + "title": "Forked From Version" + }, + "sub_graphs": { + "items": { "$ref": "#/components/schemas/BaseGraph-Output" }, + "type": "array", + "title": "Sub Graphs", + "default": [] + }, + "user_id": { "type": "string", "title": "User Id" }, + "input_schema": { + "additionalProperties": true, + "type": "object", + "title": "Input Schema", + "readOnly": true + }, + "output_schema": { + "additionalProperties": true, + "type": "object", + "title": "Output Schema", + "readOnly": true + }, + "credentials_input_schema": { + "additionalProperties": true, + "type": "object", + "title": "Credentials Input Schema", + "readOnly": true + }, + "has_webhook_trigger": { + "type": "boolean", + "title": "Has Webhook Trigger", + "readOnly": true + } + }, + "type": "object", + "required": [ + "name", + "description", + "user_id", + "input_schema", + "output_schema", + "credentials_input_schema", + "has_webhook_trigger" + ], + "title": "GraphModel" + }, + "HTTPValidationError": { + "properties": { + "detail": { + "items": { "$ref": "#/components/schemas/ValidationError" }, + "type": "array", + "title": "Detail" + } + }, + "type": "object", + "title": "HTTPValidationError" + }, + "LibraryAgent": { + "properties": { + "id": { "type": "string", "title": "Id" }, + "graph_id": { "type": "string", "title": "Graph Id" }, + "graph_version": { "type": "integer", "title": "Graph Version" }, + "image_url": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Image Url" + }, + "creator_name": { "type": "string", "title": "Creator Name" }, + "creator_image_url": { + "type": "string", + "title": "Creator Image Url" + }, + "status": { "$ref": "#/components/schemas/LibraryAgentStatus" }, + "updated_at": { + "type": "string", + "format": "date-time", + "title": "Updated At" + }, + "name": { "type": "string", "title": "Name" }, + "description": { "type": "string", "title": "Description" }, + "input_schema": { + "additionalProperties": true, + "type": "object", + "title": "Input Schema" + }, + "new_output": { "type": "boolean", "title": "New Output" }, + "can_access_graph": { + "type": "boolean", + "title": "Can Access Graph" + }, + "is_latest_version": { + "type": "boolean", + "title": "Is Latest Version" + } + }, + "type": "object", + "required": [ + "id", + "graph_id", + "graph_version", + "image_url", + "creator_name", + "creator_image_url", + "status", + "updated_at", + "name", + "description", + "input_schema", + "new_output", + "can_access_graph", + "is_latest_version" + ], + "title": "LibraryAgent", + "description": "Represents an agent in the library, including metadata for display and\nuser interaction within the system." + }, + "LibraryAgentPreset": { + "properties": { + "graph_id": { "type": "string", "title": "Graph Id" }, + "graph_version": { "type": "integer", "title": "Graph Version" }, + "inputs": { + "additionalProperties": true, + "type": "object", + "title": "Inputs" + }, + "name": { "type": "string", "title": "Name" }, + "description": { "type": "string", "title": "Description" }, + "is_active": { + "type": "boolean", + "title": "Is Active", + "default": true + }, + "id": { "type": "string", "title": "Id" }, + "updated_at": { + "type": "string", + "format": "date-time", + "title": "Updated At" + } + }, + "type": "object", + "required": [ + "graph_id", + "graph_version", + "inputs", + "name", + "description", + "id", + "updated_at" + ], + "title": "LibraryAgentPreset", + "description": "Represents a preset configuration for a library agent." + }, + "LibraryAgentPresetCreatable": { + "properties": { + "graph_id": { "type": "string", "title": "Graph Id" }, + "graph_version": { "type": "integer", "title": "Graph Version" }, + "inputs": { + "additionalProperties": true, + "type": "object", + "title": "Inputs" + }, + "name": { "type": "string", "title": "Name" }, + "description": { "type": "string", "title": "Description" }, + "is_active": { + "type": "boolean", + "title": "Is Active", + "default": true + } + }, + "type": "object", + "required": [ + "graph_id", + "graph_version", + "inputs", + "name", + "description" + ], + "title": "LibraryAgentPresetCreatable", + "description": "Request model used when creating a new preset for a library agent." + }, + "LibraryAgentPresetCreatableFromGraphExecution": { + "properties": { + "graph_execution_id": { + "type": "string", + "title": "Graph Execution Id" + }, + "name": { "type": "string", "title": "Name" }, + "description": { "type": "string", "title": "Description" }, + "is_active": { + "type": "boolean", + "title": "Is Active", + "default": true + } + }, + "type": "object", + "required": ["graph_execution_id", "name", "description"], + "title": "LibraryAgentPresetCreatableFromGraphExecution", + "description": "Request model used when creating a new preset for a library agent." + }, + "LibraryAgentPresetResponse": { + "properties": { + "presets": { + "items": { "$ref": "#/components/schemas/LibraryAgentPreset" }, + "type": "array", + "title": "Presets" + }, + "pagination": { "$ref": "#/components/schemas/Pagination" } + }, + "type": "object", + "required": ["presets", "pagination"], + "title": "LibraryAgentPresetResponse", + "description": "Response schema for a list of agent presets and pagination info." + }, + "LibraryAgentPresetUpdatable": { + "properties": { + "inputs": { + "anyOf": [ + { "additionalProperties": true, "type": "object" }, + { "type": "null" } + ], + "title": "Inputs" + }, + "name": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Name" + }, + "description": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Description" + }, + "is_active": { + "anyOf": [{ "type": "boolean" }, { "type": "null" }], + "title": "Is Active" + } + }, + "type": "object", + "title": "LibraryAgentPresetUpdatable", + "description": "Request model used when updating a preset for a library agent." + }, + "LibraryAgentResponse": { + "properties": { + "agents": { + "items": { "$ref": "#/components/schemas/LibraryAgent" }, + "type": "array", + "title": "Agents" + }, + "pagination": { "$ref": "#/components/schemas/Pagination" } + }, + "type": "object", + "required": ["agents", "pagination"], + "title": "LibraryAgentResponse", + "description": "Response schema for a list of library agents and pagination info." + }, + "LibraryAgentSort": { + "type": "string", + "enum": ["createdAt", "updatedAt"], + "title": "LibraryAgentSort", + "description": "Possible sort options for sorting library agents." + }, + "LibraryAgentStatus": { + "type": "string", + "enum": ["COMPLETED", "HEALTHY", "WAITING", "ERROR"], + "title": "LibraryAgentStatus" + }, + "LibraryAgentUpdateRequest": { + "properties": { + "auto_update_version": { + "anyOf": [{ "type": "boolean" }, { "type": "null" }], + "title": "Auto Update Version", + "description": "Auto-update the agent version" + }, + "is_favorite": { + "anyOf": [{ "type": "boolean" }, { "type": "null" }], + "title": "Is Favorite", + "description": "Mark the agent as a favorite" + }, + "is_archived": { + "anyOf": [{ "type": "boolean" }, { "type": "null" }], + "title": "Is Archived", + "description": "Archive the agent" + }, + "is_deleted": { + "anyOf": [{ "type": "boolean" }, { "type": "null" }], + "title": "Is Deleted", + "description": "Delete the agent" + } + }, + "type": "object", + "title": "LibraryAgentUpdateRequest", + "description": "Schema for updating a library agent via PUT.\n\nIncludes flags for auto-updating version, marking as favorite,\narchiving, or deleting." + }, + "Link": { + "properties": { + "id": { "type": "string", "title": "Id" }, + "source_id": { "type": "string", "title": "Source Id" }, + "sink_id": { "type": "string", "title": "Sink Id" }, + "source_name": { "type": "string", "title": "Source Name" }, + "sink_name": { "type": "string", "title": "Sink Name" }, + "is_static": { + "type": "boolean", + "title": "Is Static", + "default": false + } + }, + "type": "object", + "required": ["source_id", "sink_id", "source_name", "sink_name"], + "title": "Link" + }, + "LoginResponse": { + "properties": { + "login_url": { "type": "string", "title": "Login Url" }, + "state_token": { "type": "string", "title": "State Token" } + }, + "type": "object", + "required": ["login_url", "state_token"], + "title": "LoginResponse" + }, + "Message": { + "properties": { + "query": { "type": "string", "title": "Query" }, + "response": { "type": "string", "title": "Response" } + }, + "type": "object", + "required": ["query", "response"], + "title": "Message" + }, + "MyAgent": { + "properties": { + "agent_id": { "type": "string", "title": "Agent Id" }, + "agent_version": { "type": "integer", "title": "Agent Version" }, + "agent_name": { "type": "string", "title": "Agent Name" }, + "agent_image": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Agent Image" + }, + "description": { "type": "string", "title": "Description" }, + "last_edited": { + "type": "string", + "format": "date-time", + "title": "Last Edited" + } + }, + "type": "object", + "required": [ + "agent_id", + "agent_version", + "agent_name", + "description", + "last_edited" + ], + "title": "MyAgent" + }, + "MyAgentsResponse": { + "properties": { + "agents": { + "items": { "$ref": "#/components/schemas/MyAgent" }, + "type": "array", + "title": "Agents" + }, + "pagination": { "$ref": "#/components/schemas/Pagination" } + }, + "type": "object", + "required": ["agents", "pagination"], + "title": "MyAgentsResponse" + }, + "Node": { + "properties": { + "id": { "type": "string", "title": "Id" }, + "block_id": { "type": "string", "title": "Block Id" }, + "input_default": { + "additionalProperties": true, + "type": "object", + "title": "Input Default", + "default": {} + }, + "metadata": { + "additionalProperties": true, + "type": "object", + "title": "Metadata", + "default": {} + }, + "input_links": { + "items": { "$ref": "#/components/schemas/Link" }, + "type": "array", + "title": "Input Links", + "default": [] + }, + "output_links": { + "items": { "$ref": "#/components/schemas/Link" }, + "type": "array", + "title": "Output Links", + "default": [] + } + }, + "type": "object", + "required": ["block_id"], + "title": "Node" + }, + "NodeExecutionResult": { + "properties": { + "user_id": { "type": "string", "title": "User Id" }, + "graph_id": { "type": "string", "title": "Graph Id" }, + "graph_version": { "type": "integer", "title": "Graph Version" }, + "graph_exec_id": { "type": "string", "title": "Graph Exec Id" }, + "node_exec_id": { "type": "string", "title": "Node Exec Id" }, + "node_id": { "type": "string", "title": "Node Id" }, + "block_id": { "type": "string", "title": "Block Id" }, + "status": { "$ref": "#/components/schemas/AgentExecutionStatus" }, + "input_data": { + "additionalProperties": true, + "type": "object", + "title": "Input Data" + }, + "output_data": { + "additionalProperties": { "items": {}, "type": "array" }, + "type": "object", + "title": "Output Data" + }, + "add_time": { + "type": "string", + "format": "date-time", + "title": "Add Time" + }, + "queue_time": { + "anyOf": [ + { "type": "string", "format": "date-time" }, + { "type": "null" } + ], + "title": "Queue Time" + }, + "start_time": { + "anyOf": [ + { "type": "string", "format": "date-time" }, + { "type": "null" } + ], + "title": "Start Time" + }, + "end_time": { + "anyOf": [ + { "type": "string", "format": "date-time" }, + { "type": "null" } + ], + "title": "End Time" + } + }, + "type": "object", + "required": [ + "user_id", + "graph_id", + "graph_version", + "graph_exec_id", + "node_exec_id", + "node_id", + "block_id", + "status", + "input_data", + "output_data", + "add_time", + "queue_time", + "start_time", + "end_time" + ], + "title": "NodeExecutionResult" + }, + "NodeModel": { + "properties": { + "id": { "type": "string", "title": "Id" }, + "block_id": { "type": "string", "title": "Block Id" }, + "input_default": { + "additionalProperties": true, + "type": "object", + "title": "Input Default", + "default": {} + }, + "metadata": { + "additionalProperties": true, + "type": "object", + "title": "Metadata", + "default": {} + }, + "input_links": { + "items": { "$ref": "#/components/schemas/Link" }, + "type": "array", + "title": "Input Links", + "default": [] + }, + "output_links": { + "items": { "$ref": "#/components/schemas/Link" }, + "type": "array", + "title": "Output Links", + "default": [] + }, + "graph_id": { "type": "string", "title": "Graph Id" }, + "graph_version": { "type": "integer", "title": "Graph Version" }, + "webhook_id": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Webhook Id" + }, + "webhook": { + "anyOf": [ + { "$ref": "#/components/schemas/Webhook" }, + { "type": "null" } + ] + } + }, + "type": "object", + "required": ["block_id", "graph_id", "graph_version"], + "title": "NodeModel" + }, + "NotificationPreference": { + "properties": { + "user_id": { "type": "string", "title": "User Id" }, + "email": { "type": "string", "format": "email", "title": "Email" }, + "preferences": { + "additionalProperties": { "type": "boolean" }, + "propertyNames": { + "$ref": "#/components/schemas/NotificationType" + }, + "type": "object", + "title": "Preferences", + "description": "Which notifications the user wants" + }, + "daily_limit": { + "type": "integer", + "title": "Daily Limit", + "default": 10 + }, + "emails_sent_today": { + "type": "integer", + "title": "Emails Sent Today", + "default": 0 + }, + "last_reset_date": { + "type": "string", + "format": "date-time", + "title": "Last Reset Date" + } + }, + "type": "object", + "required": ["user_id", "email"], + "title": "NotificationPreference" + }, + "NotificationPreferenceDTO": { + "properties": { + "email": { + "type": "string", + "format": "email", + "title": "Email", + "description": "User's email address" + }, + "preferences": { + "additionalProperties": { "type": "boolean" }, + "propertyNames": { + "$ref": "#/components/schemas/NotificationType" + }, + "type": "object", + "title": "Preferences", + "description": "Which notifications the user wants" + }, + "daily_limit": { + "type": "integer", + "title": "Daily Limit", + "description": "Max emails per day" + } + }, + "type": "object", + "required": ["email", "preferences", "daily_limit"], + "title": "NotificationPreferenceDTO" + }, + "NotificationType": { + "type": "string", + "enum": [ + "AGENT_RUN", + "ZERO_BALANCE", + "LOW_BALANCE", + "BLOCK_EXECUTION_FAILED", + "CONTINUOUS_AGENT_ERROR", + "DAILY_SUMMARY", + "WEEKLY_SUMMARY", + "MONTHLY_SUMMARY", + "REFUND_REQUEST", + "REFUND_PROCESSED" + ], + "title": "NotificationType" + }, + "OAuth2Credentials": { + "properties": { + "id": { "type": "string", "title": "Id" }, + "provider": { "type": "string", "title": "Provider" }, + "title": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Title" + }, + "type": { + "type": "string", + "const": "oauth2", + "title": "Type", + "default": "oauth2" + }, + "username": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Username" + }, + "access_token": { + "type": "string", + "format": "password", + "title": "Access Token", + "writeOnly": true + }, + "access_token_expires_at": { + "anyOf": [{ "type": "integer" }, { "type": "null" }], + "title": "Access Token Expires At" + }, + "refresh_token": { + "anyOf": [ + { "type": "string", "format": "password", "writeOnly": true }, + { "type": "null" } + ], + "title": "Refresh Token" + }, + "refresh_token_expires_at": { + "anyOf": [{ "type": "integer" }, { "type": "null" }], + "title": "Refresh Token Expires At" + }, + "scopes": { + "items": { "type": "string" }, + "type": "array", + "title": "Scopes" + }, + "metadata": { + "additionalProperties": true, + "type": "object", + "title": "Metadata" + } + }, + "type": "object", + "required": ["provider", "access_token", "scopes"], + "title": "OAuth2Credentials" + }, + "OnboardingStep": { + "type": "string", + "enum": [ + "WELCOME", + "USAGE_REASON", + "INTEGRATIONS", + "AGENT_CHOICE", + "AGENT_NEW_RUN", + "AGENT_INPUT", + "CONGRATS", + "GET_RESULTS", + "MARKETPLACE_VISIT", + "MARKETPLACE_ADD_AGENT", + "MARKETPLACE_RUN_AGENT", + "BUILDER_OPEN", + "BUILDER_SAVE_AGENT", + "BUILDER_RUN_AGENT" + ], + "title": "OnboardingStep" + }, + "Pagination": { + "properties": { + "total_items": { + "type": "integer", + "title": "Total Items", + "description": "Total number of items.", + "examples": [42] + }, + "total_pages": { + "type": "integer", + "title": "Total Pages", + "description": "Total number of pages.", + "examples": [2] + }, + "current_page": { + "type": "integer", + "title": "Current Page", + "description": "Current_page page number.", + "examples": [1] + }, + "page_size": { + "type": "integer", + "title": "Page Size", + "description": "Number of items per page.", + "examples": [25] + } + }, + "type": "object", + "required": ["total_items", "total_pages", "current_page", "page_size"], + "title": "Pagination" + }, + "PostmarkBounceEnum": { + "type": "integer", + "enum": [ + 1, 2, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, + 100000, 100001, 100002, 100003, 100006, 100007, 100008, 100009, 100010 + ], + "title": "PostmarkBounceEnum" + }, + "PostmarkBounceWebhook": { + "properties": { + "RecordType": { + "type": "string", + "const": "Bounce", + "title": "Recordtype", + "default": "Bounce" + }, + "ID": { "type": "integer", "title": "Id" }, + "Type": { "type": "string", "title": "Type" }, + "TypeCode": { "$ref": "#/components/schemas/PostmarkBounceEnum" }, + "Tag": { "type": "string", "title": "Tag" }, + "MessageID": { "type": "string", "title": "Messageid" }, + "Details": { "type": "string", "title": "Details" }, + "Email": { "type": "string", "title": "Email" }, + "From": { "type": "string", "title": "From" }, + "BouncedAt": { "type": "string", "title": "Bouncedat" }, + "Inactive": { "type": "boolean", "title": "Inactive" }, + "DumpAvailable": { "type": "boolean", "title": "Dumpavailable" }, + "CanActivate": { "type": "boolean", "title": "Canactivate" }, + "Subject": { "type": "string", "title": "Subject" }, + "ServerID": { "type": "integer", "title": "Serverid" }, + "MessageStream": { "type": "string", "title": "Messagestream" }, + "Content": { "type": "string", "title": "Content" }, + "Name": { "type": "string", "title": "Name" }, + "Description": { "type": "string", "title": "Description" }, + "Metadata": { + "additionalProperties": { "type": "string" }, + "type": "object", + "title": "Metadata" + } + }, + "type": "object", + "required": [ + "ID", + "Type", + "TypeCode", + "Tag", + "MessageID", + "Details", + "Email", + "From", + "BouncedAt", + "Inactive", + "DumpAvailable", + "CanActivate", + "Subject", + "ServerID", + "MessageStream", + "Content", + "Name", + "Description", + "Metadata" + ], + "title": "PostmarkBounceWebhook" + }, + "PostmarkClickWebhook": { + "properties": { + "RecordType": { + "type": "string", + "const": "Click", + "title": "Recordtype", + "default": "Click" + }, + "MessageStream": { "type": "string", "title": "Messagestream" }, + "Metadata": { + "additionalProperties": { "type": "string" }, + "type": "object", + "title": "Metadata" + }, + "Recipient": { "type": "string", "title": "Recipient" }, + "MessageID": { "type": "string", "title": "Messageid" }, + "ReceivedAt": { "type": "string", "title": "Receivedat" }, + "Platform": { "type": "string", "title": "Platform" }, + "ClickLocation": { "type": "string", "title": "Clicklocation" }, + "OriginalLink": { "type": "string", "title": "Originallink" }, + "Tag": { "type": "string", "title": "Tag" }, + "UserAgent": { "type": "string", "title": "Useragent" }, + "OS": { + "additionalProperties": { "type": "string" }, + "type": "object", + "title": "Os" + }, + "Client": { + "additionalProperties": { "type": "string" }, + "type": "object", + "title": "Client" + }, + "Geo": { + "additionalProperties": { "type": "string" }, + "type": "object", + "title": "Geo" + } + }, + "type": "object", + "required": [ + "MessageStream", + "Metadata", + "Recipient", + "MessageID", + "ReceivedAt", + "Platform", + "ClickLocation", + "OriginalLink", + "Tag", + "UserAgent", + "OS", + "Client", + "Geo" + ], + "title": "PostmarkClickWebhook" + }, + "PostmarkDeliveryWebhook": { + "properties": { + "RecordType": { + "type": "string", + "const": "Delivery", + "title": "Recordtype", + "default": "Delivery" + }, + "ServerID": { "type": "integer", "title": "Serverid" }, + "MessageStream": { "type": "string", "title": "Messagestream" }, + "MessageID": { "type": "string", "title": "Messageid" }, + "Recipient": { "type": "string", "title": "Recipient" }, + "Tag": { "type": "string", "title": "Tag" }, + "DeliveredAt": { "type": "string", "title": "Deliveredat" }, + "Details": { "type": "string", "title": "Details" }, + "Metadata": { + "additionalProperties": { "type": "string" }, + "type": "object", + "title": "Metadata" + } + }, + "type": "object", + "required": [ + "ServerID", + "MessageStream", + "MessageID", + "Recipient", + "Tag", + "DeliveredAt", + "Details", + "Metadata" + ], + "title": "PostmarkDeliveryWebhook" + }, + "PostmarkOpenWebhook": { + "properties": { + "RecordType": { + "type": "string", + "const": "Open", + "title": "Recordtype", + "default": "Open" + }, + "MessageStream": { "type": "string", "title": "Messagestream" }, + "Metadata": { + "additionalProperties": { "type": "string" }, + "type": "object", + "title": "Metadata" + }, + "FirstOpen": { "type": "boolean", "title": "Firstopen" }, + "Recipient": { "type": "string", "title": "Recipient" }, + "MessageID": { "type": "string", "title": "Messageid" }, + "ReceivedAt": { "type": "string", "title": "Receivedat" }, + "Platform": { "type": "string", "title": "Platform" }, + "ReadSeconds": { "type": "integer", "title": "Readseconds" }, + "Tag": { "type": "string", "title": "Tag" }, + "UserAgent": { "type": "string", "title": "Useragent" }, + "OS": { + "additionalProperties": { "type": "string" }, + "type": "object", + "title": "Os" + }, + "Client": { + "additionalProperties": { "type": "string" }, + "type": "object", + "title": "Client" + }, + "Geo": { + "additionalProperties": { "type": "string" }, + "type": "object", + "title": "Geo" + } + }, + "type": "object", + "required": [ + "MessageStream", + "Metadata", + "FirstOpen", + "Recipient", + "MessageID", + "ReceivedAt", + "Platform", + "ReadSeconds", + "Tag", + "UserAgent", + "OS", + "Client", + "Geo" + ], + "title": "PostmarkOpenWebhook" + }, + "PostmarkSpamComplaintWebhook": { + "properties": { + "RecordType": { + "type": "string", + "const": "SpamComplaint", + "title": "Recordtype", + "default": "SpamComplaint" + }, + "ID": { "type": "integer", "title": "Id" }, + "Type": { "type": "string", "title": "Type" }, + "TypeCode": { "type": "integer", "title": "Typecode" }, + "Tag": { "type": "string", "title": "Tag" }, + "MessageID": { "type": "string", "title": "Messageid" }, + "Details": { "type": "string", "title": "Details" }, + "Email": { "type": "string", "title": "Email" }, + "From": { "type": "string", "title": "From" }, + "BouncedAt": { "type": "string", "title": "Bouncedat" }, + "Inactive": { "type": "boolean", "title": "Inactive" }, + "DumpAvailable": { "type": "boolean", "title": "Dumpavailable" }, + "CanActivate": { "type": "boolean", "title": "Canactivate" }, + "Subject": { "type": "string", "title": "Subject" }, + "ServerID": { "type": "integer", "title": "Serverid" }, + "MessageStream": { "type": "string", "title": "Messagestream" }, + "Content": { "type": "string", "title": "Content" }, + "Name": { "type": "string", "title": "Name" }, + "Description": { "type": "string", "title": "Description" }, + "Metadata": { + "additionalProperties": { "type": "string" }, + "type": "object", + "title": "Metadata" + } + }, + "type": "object", + "required": [ + "ID", + "Type", + "TypeCode", + "Tag", + "MessageID", + "Details", + "Email", + "From", + "BouncedAt", + "Inactive", + "DumpAvailable", + "CanActivate", + "Subject", + "ServerID", + "MessageStream", + "Content", + "Name", + "Description", + "Metadata" + ], + "title": "PostmarkSpamComplaintWebhook" + }, + "PostmarkSubscriptionChangeWebhook": { + "properties": { + "RecordType": { + "type": "string", + "const": "SubscriptionChange", + "title": "Recordtype", + "default": "SubscriptionChange" + }, + "MessageID": { "type": "string", "title": "Messageid" }, + "ServerID": { "type": "integer", "title": "Serverid" }, + "MessageStream": { "type": "string", "title": "Messagestream" }, + "ChangedAt": { "type": "string", "title": "Changedat" }, + "Recipient": { "type": "string", "title": "Recipient" }, + "Origin": { "type": "string", "title": "Origin" }, + "SuppressSending": { "type": "boolean", "title": "Suppresssending" }, + "SuppressionReason": { + "type": "string", + "title": "Suppressionreason" + }, + "Tag": { "type": "string", "title": "Tag" }, + "Metadata": { + "additionalProperties": { "type": "string" }, + "type": "object", + "title": "Metadata" + } + }, + "type": "object", + "required": [ + "MessageID", + "ServerID", + "MessageStream", + "ChangedAt", + "Recipient", + "Origin", + "SuppressSending", + "SuppressionReason", + "Tag", + "Metadata" + ], + "title": "PostmarkSubscriptionChangeWebhook" + }, + "Profile": { + "properties": { + "name": { "type": "string", "title": "Name" }, + "username": { "type": "string", "title": "Username" }, + "description": { "type": "string", "title": "Description" }, + "links": { + "items": { "type": "string" }, + "type": "array", + "title": "Links" + }, + "avatar_url": { "type": "string", "title": "Avatar Url" }, + "is_featured": { + "type": "boolean", + "title": "Is Featured", + "default": false + } + }, + "type": "object", + "required": ["name", "username", "description", "links", "avatar_url"], + "title": "Profile" + }, + "ProfileDetails": { + "properties": { + "name": { "type": "string", "title": "Name" }, + "username": { "type": "string", "title": "Username" }, + "description": { "type": "string", "title": "Description" }, + "links": { + "items": { "type": "string" }, + "type": "array", + "title": "Links" + }, + "avatar_url": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Avatar Url" + } + }, + "type": "object", + "required": ["name", "username", "description", "links"], + "title": "ProfileDetails" + }, + "ProviderName": { + "type": "string", + "enum": [ + "aiml_api", + "anthropic", + "apollo", + "compass", + "discord", + "d_id", + "e2b", + "exa", + "fal", + "generic_webhook", + "github", + "google", + "google_maps", + "groq", + "hubspot", + "ideogram", + "jina", + "linear", + "llama_api", + "medium", + "mem0", + "notion", + "nvidia", + "ollama", + "openai", + "openweathermap", + "open_router", + "pinecone", + "reddit", + "replicate", + "revid", + "screenshotone", + "slant3d", + "smartlead", + "smtp", + "twitter", + "todoist", + "unreal_speech", + "zerobounce" + ], + "title": "ProviderName" + }, + "RefundRequest": { + "properties": { + "id": { "type": "string", "title": "Id" }, + "user_id": { "type": "string", "title": "User Id" }, + "transaction_key": { "type": "string", "title": "Transaction Key" }, + "amount": { "type": "integer", "title": "Amount" }, + "reason": { "type": "string", "title": "Reason" }, + "result": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Result" + }, + "status": { "type": "string", "title": "Status" }, + "created_at": { + "type": "string", + "format": "date-time", + "title": "Created At" + }, + "updated_at": { + "type": "string", + "format": "date-time", + "title": "Updated At" + } + }, + "type": "object", + "required": [ + "id", + "user_id", + "transaction_key", + "amount", + "reason", + "status", + "created_at", + "updated_at" + ], + "title": "RefundRequest" + }, + "RequestTopUp": { + "properties": { + "credit_amount": { "type": "integer", "title": "Credit Amount" } + }, + "type": "object", + "required": ["credit_amount"], + "title": "RequestTopUp" + }, + "ReviewSubmissionRequest": { + "properties": { + "store_listing_version_id": { + "type": "string", + "title": "Store Listing Version Id" + }, + "is_approved": { "type": "boolean", "title": "Is Approved" }, + "comments": { "type": "string", "title": "Comments" }, + "internal_comments": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Internal Comments" + } + }, + "type": "object", + "required": ["store_listing_version_id", "is_approved", "comments"], + "title": "ReviewSubmissionRequest" + }, + "ScheduleCreationRequest": { + "properties": { + "cron": { "type": "string", "title": "Cron" }, + "input_data": { + "additionalProperties": true, + "type": "object", + "title": "Input Data" + }, + "graph_id": { "type": "string", "title": "Graph Id" }, + "graph_version": { "type": "integer", "title": "Graph Version" } + }, + "type": "object", + "required": ["cron", "input_data", "graph_id", "graph_version"], + "title": "ScheduleCreationRequest" + }, + "SetGraphActiveVersion": { + "properties": { + "active_graph_version": { + "type": "integer", + "title": "Active Graph Version" + } + }, + "type": "object", + "required": ["active_graph_version"], + "title": "SetGraphActiveVersion" + }, + "Stats": { + "properties": { + "cost": { + "type": "integer", + "title": "Cost", + "description": "Execution cost (cents)", + "default": 0 + }, + "duration": { + "type": "number", + "title": "Duration", + "description": "Seconds from start to end of run", + "default": 0 + }, + "duration_cpu_only": { + "type": "number", + "title": "Duration Cpu Only", + "description": "CPU sec of duration", + "default": 0 + }, + "node_exec_time": { + "type": "number", + "title": "Node Exec Time", + "description": "Seconds of total node runtime", + "default": 0 + }, + "node_exec_time_cpu_only": { + "type": "number", + "title": "Node Exec Time Cpu Only", + "description": "CPU sec of node_exec_time", + "default": 0 + }, + "node_exec_count": { + "type": "integer", + "title": "Node Exec Count", + "description": "Number of node executions", + "default": 0 + }, + "node_error_count": { + "type": "integer", + "title": "Node Error Count", + "description": "Number of node errors", + "default": 0 + }, + "error": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Error", + "description": "Error message if any" + } + }, + "additionalProperties": true, + "type": "object", + "title": "Stats" + }, + "StoreAgent": { + "properties": { + "slug": { "type": "string", "title": "Slug" }, + "agent_name": { "type": "string", "title": "Agent Name" }, + "agent_image": { "type": "string", "title": "Agent Image" }, + "creator": { "type": "string", "title": "Creator" }, + "creator_avatar": { "type": "string", "title": "Creator Avatar" }, + "sub_heading": { "type": "string", "title": "Sub Heading" }, + "description": { "type": "string", "title": "Description" }, + "runs": { "type": "integer", "title": "Runs" }, + "rating": { "type": "number", "title": "Rating" } + }, + "type": "object", + "required": [ + "slug", + "agent_name", + "agent_image", + "creator", + "creator_avatar", + "sub_heading", + "description", + "runs", + "rating" + ], + "title": "StoreAgent" + }, + "StoreAgentDetails": { + "properties": { + "store_listing_version_id": { + "type": "string", + "title": "Store Listing Version Id" + }, + "slug": { "type": "string", "title": "Slug" }, + "agent_name": { "type": "string", "title": "Agent Name" }, + "agent_video": { "type": "string", "title": "Agent Video" }, + "agent_image": { + "items": { "type": "string" }, + "type": "array", + "title": "Agent Image" + }, + "creator": { "type": "string", "title": "Creator" }, + "creator_avatar": { "type": "string", "title": "Creator Avatar" }, + "sub_heading": { "type": "string", "title": "Sub Heading" }, + "description": { "type": "string", "title": "Description" }, + "categories": { + "items": { "type": "string" }, + "type": "array", + "title": "Categories" + }, + "runs": { "type": "integer", "title": "Runs" }, + "rating": { "type": "number", "title": "Rating" }, + "versions": { + "items": { "type": "string" }, + "type": "array", + "title": "Versions" + }, + "last_updated": { + "type": "string", + "format": "date-time", + "title": "Last Updated" + }, + "active_version_id": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Active Version Id" + }, + "has_approved_version": { + "type": "boolean", + "title": "Has Approved Version", + "default": false + } + }, + "type": "object", + "required": [ + "store_listing_version_id", + "slug", + "agent_name", + "agent_video", + "agent_image", + "creator", + "creator_avatar", + "sub_heading", + "description", + "categories", + "runs", + "rating", + "versions", + "last_updated" + ], + "title": "StoreAgentDetails" + }, + "StoreAgentsResponse": { + "properties": { + "agents": { + "items": { "$ref": "#/components/schemas/StoreAgent" }, + "type": "array", + "title": "Agents" + }, + "pagination": { "$ref": "#/components/schemas/Pagination" } + }, + "type": "object", + "required": ["agents", "pagination"], + "title": "StoreAgentsResponse" + }, + "StoreListingWithVersions": { + "properties": { + "listing_id": { "type": "string", "title": "Listing Id" }, + "slug": { "type": "string", "title": "Slug" }, + "agent_id": { "type": "string", "title": "Agent Id" }, + "agent_version": { "type": "integer", "title": "Agent Version" }, + "active_version_id": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Active Version Id" + }, + "has_approved_version": { + "type": "boolean", + "title": "Has Approved Version", + "default": false + }, + "creator_email": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Creator Email" + }, + "latest_version": { + "anyOf": [ + { "$ref": "#/components/schemas/StoreSubmission" }, + { "type": "null" } + ] + }, + "versions": { + "items": { "$ref": "#/components/schemas/StoreSubmission" }, + "type": "array", + "title": "Versions", + "default": [] + } + }, + "type": "object", + "required": ["listing_id", "slug", "agent_id", "agent_version"], + "title": "StoreListingWithVersions", + "description": "A store listing with its version history" + }, + "StoreListingsWithVersionsResponse": { + "properties": { + "listings": { + "items": { + "$ref": "#/components/schemas/StoreListingWithVersions" + }, + "type": "array", + "title": "Listings" + }, + "pagination": { "$ref": "#/components/schemas/Pagination" } + }, + "type": "object", + "required": ["listings", "pagination"], + "title": "StoreListingsWithVersionsResponse", + "description": "Response model for listings with version history" + }, + "StoreReview": { + "properties": { + "score": { "type": "integer", "title": "Score" }, + "comments": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Comments" + } + }, + "type": "object", + "required": ["score"], + "title": "StoreReview" + }, + "StoreReviewCreate": { + "properties": { + "store_listing_version_id": { + "type": "string", + "title": "Store Listing Version Id" + }, + "score": { "type": "integer", "title": "Score" }, + "comments": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Comments" + } + }, + "type": "object", + "required": ["store_listing_version_id", "score"], + "title": "StoreReviewCreate" + }, + "StoreSubmission": { + "properties": { + "agent_id": { "type": "string", "title": "Agent Id" }, + "agent_version": { "type": "integer", "title": "Agent Version" }, + "name": { "type": "string", "title": "Name" }, + "sub_heading": { "type": "string", "title": "Sub Heading" }, + "slug": { "type": "string", "title": "Slug" }, + "description": { "type": "string", "title": "Description" }, + "image_urls": { + "items": { "type": "string" }, + "type": "array", + "title": "Image Urls" + }, + "date_submitted": { + "type": "string", + "format": "date-time", + "title": "Date Submitted" + }, + "status": { "$ref": "#/components/schemas/SubmissionStatus" }, + "runs": { "type": "integer", "title": "Runs" }, + "rating": { "type": "number", "title": "Rating" }, + "store_listing_version_id": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Store Listing Version Id" + }, + "version": { + "anyOf": [{ "type": "integer" }, { "type": "null" }], + "title": "Version" + }, + "reviewer_id": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Reviewer Id" + }, + "review_comments": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Review Comments" + }, + "internal_comments": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Internal Comments" + }, + "reviewed_at": { + "anyOf": [ + { "type": "string", "format": "date-time" }, + { "type": "null" } + ], + "title": "Reviewed At" + }, + "changes_summary": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Changes Summary" + } + }, + "type": "object", + "required": [ + "agent_id", + "agent_version", + "name", + "sub_heading", + "slug", + "description", + "image_urls", + "date_submitted", + "status", + "runs", + "rating" + ], + "title": "StoreSubmission" + }, + "StoreSubmissionRequest": { + "properties": { + "agent_id": { "type": "string", "title": "Agent Id" }, + "agent_version": { "type": "integer", "title": "Agent Version" }, + "slug": { "type": "string", "title": "Slug" }, + "name": { "type": "string", "title": "Name" }, + "sub_heading": { "type": "string", "title": "Sub Heading" }, + "video_url": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Video Url" + }, + "image_urls": { + "items": { "type": "string" }, + "type": "array", + "title": "Image Urls", + "default": [] + }, + "description": { + "type": "string", + "title": "Description", + "default": "" + }, + "categories": { + "items": { "type": "string" }, + "type": "array", + "title": "Categories", + "default": [] + }, + "changes_summary": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Changes Summary" + } + }, + "type": "object", + "required": [ + "agent_id", + "agent_version", + "slug", + "name", + "sub_heading" + ], + "title": "StoreSubmissionRequest" + }, + "StoreSubmissionsResponse": { + "properties": { + "submissions": { + "items": { "$ref": "#/components/schemas/StoreSubmission" }, + "type": "array", + "title": "Submissions" + }, + "pagination": { "$ref": "#/components/schemas/Pagination" } + }, + "type": "object", + "required": ["submissions", "pagination"], + "title": "StoreSubmissionsResponse" + }, + "SubmissionStatus": { + "type": "string", + "enum": ["DRAFT", "PENDING", "APPROVED", "REJECTED"], + "title": "SubmissionStatus" + }, + "TransactionHistory": { + "properties": { + "transactions": { + "items": { "$ref": "#/components/schemas/UserTransaction" }, + "type": "array", + "title": "Transactions" + }, + "next_transaction_time": { + "anyOf": [ + { "type": "string", "format": "date-time" }, + { "type": "null" } + ], + "title": "Next Transaction Time" + } + }, + "type": "object", + "required": ["transactions", "next_transaction_time"], + "title": "TransactionHistory" + }, + "TurnstileVerifyRequest": { + "properties": { + "token": { + "type": "string", + "title": "Token", + "description": "The Turnstile token to verify" + }, + "action": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Action", + "description": "The action that the user is attempting to perform" + } + }, + "type": "object", + "required": ["token"], + "title": "TurnstileVerifyRequest", + "description": "Request model for verifying a Turnstile token." + }, + "TurnstileVerifyResponse": { + "properties": { + "success": { + "type": "boolean", + "title": "Success", + "description": "Whether the token verification was successful" + }, + "error": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Error", + "description": "Error message if verification failed" + }, + "challenge_timestamp": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Challenge Timestamp", + "description": "Timestamp of the challenge (ISO format)" + }, + "hostname": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Hostname", + "description": "Hostname of the site where the challenge was solved" + }, + "action": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Action", + "description": "The action associated with this verification" + } + }, + "type": "object", + "required": ["success"], + "title": "TurnstileVerifyResponse", + "description": "Response model for the Turnstile verification endpoint." + }, + "UpdatePermissionsRequest": { + "properties": { + "permissions": { + "items": { "$ref": "#/components/schemas/APIKeyPermission" }, + "type": "array", + "title": "Permissions" + } + }, + "type": "object", + "required": ["permissions"], + "title": "UpdatePermissionsRequest" + }, + "UserHistoryResponse": { + "properties": { + "history": { + "items": { "$ref": "#/components/schemas/UserTransaction" }, + "type": "array", + "title": "History" + }, + "pagination": { "$ref": "#/components/schemas/Pagination" } + }, + "type": "object", + "required": ["history", "pagination"], + "title": "UserHistoryResponse", + "description": "Response model for listings with version history" + }, + "UserOnboardingUpdate": { + "properties": { + "completedSteps": { + "anyOf": [ + { + "items": { "$ref": "#/components/schemas/OnboardingStep" }, + "type": "array" + }, + { "type": "null" } + ], + "title": "Completedsteps" + }, + "notificationDot": { + "anyOf": [{ "type": "boolean" }, { "type": "null" }], + "title": "Notificationdot" + }, + "notified": { + "anyOf": [ + { + "items": { "$ref": "#/components/schemas/OnboardingStep" }, + "type": "array" + }, + { "type": "null" } + ], + "title": "Notified" + }, + "usageReason": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Usagereason" + }, + "integrations": { + "anyOf": [ + { "items": { "type": "string" }, "type": "array" }, + { "type": "null" } + ], + "title": "Integrations" + }, + "otherIntegrations": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Otherintegrations" + }, + "selectedStoreListingVersionId": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Selectedstorelistingversionid" + }, + "agentInput": { + "anyOf": [ + { "additionalProperties": true, "type": "object" }, + { "type": "null" } + ], + "title": "Agentinput" + }, + "onboardingAgentExecutionId": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Onboardingagentexecutionid" + }, + "agentRuns": { + "anyOf": [{ "type": "integer" }, { "type": "null" }], + "title": "Agentruns" + } + }, + "type": "object", + "title": "UserOnboardingUpdate" + }, + "UserPasswordCredentials": { + "properties": { + "id": { "type": "string", "title": "Id" }, + "provider": { "type": "string", "title": "Provider" }, + "title": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Title" + }, + "type": { + "type": "string", + "const": "user_password", + "title": "Type", + "default": "user_password" + }, + "username": { + "type": "string", + "format": "password", + "title": "Username", + "writeOnly": true + }, + "password": { + "type": "string", + "format": "password", + "title": "Password", + "writeOnly": true + } + }, + "type": "object", + "required": ["provider", "username", "password"], + "title": "UserPasswordCredentials" + }, + "UserTransaction": { + "properties": { + "transaction_key": { + "type": "string", + "title": "Transaction Key", + "default": "" + }, + "transaction_time": { + "type": "string", + "format": "date-time", + "title": "Transaction Time", + "default": "0001-01-01T00:00:00Z" + }, + "transaction_type": { + "$ref": "#/components/schemas/CreditTransactionType", + "default": "USAGE" + }, + "amount": { "type": "integer", "title": "Amount", "default": 0 }, + "running_balance": { + "type": "integer", + "title": "Running Balance", + "default": 0 + }, + "current_balance": { + "type": "integer", + "title": "Current Balance", + "default": 0 + }, + "description": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Description" + }, + "usage_graph_id": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Usage Graph Id" + }, + "usage_execution_id": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Usage Execution Id" + }, + "usage_node_count": { + "type": "integer", + "title": "Usage Node Count", + "default": 0 + }, + "usage_start_time": { + "type": "string", + "format": "date-time", + "title": "Usage Start Time", + "default": "9999-12-31T23:59:59.999999Z" + }, + "user_id": { "type": "string", "title": "User Id" }, + "user_email": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "User Email" + }, + "reason": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Reason" + }, + "admin_email": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Admin Email" + }, + "extra_data": { + "anyOf": [{ "type": "string" }, { "type": "null" }], + "title": "Extra Data" + } + }, + "type": "object", + "required": ["user_id"], + "title": "UserTransaction" + }, + "ValidationError": { + "properties": { + "loc": { + "items": { "anyOf": [{ "type": "string" }, { "type": "integer" }] }, + "type": "array", + "title": "Location" + }, + "msg": { "type": "string", "title": "Message" }, + "type": { "type": "string", "title": "Error Type" } + }, + "type": "object", + "required": ["loc", "msg", "type"], + "title": "ValidationError" + }, + "Webhook": { + "properties": { + "id": { "type": "string", "title": "Id" }, + "user_id": { "type": "string", "title": "User Id" }, + "provider": { "$ref": "#/components/schemas/ProviderName" }, + "credentials_id": { "type": "string", "title": "Credentials Id" }, + "webhook_type": { "type": "string", "title": "Webhook Type" }, + "resource": { "type": "string", "title": "Resource" }, + "events": { + "items": { "type": "string" }, + "type": "array", + "title": "Events" + }, + "config": { + "additionalProperties": true, + "type": "object", + "title": "Config" + }, + "secret": { "type": "string", "title": "Secret" }, + "provider_webhook_id": { + "type": "string", + "title": "Provider Webhook Id" + }, + "attached_nodes": { + "anyOf": [ + { + "items": { "$ref": "#/components/schemas/NodeModel" }, + "type": "array" + }, + { "type": "null" } + ], + "title": "Attached Nodes" + }, + "url": { "type": "string", "title": "Url", "readOnly": true } + }, + "type": "object", + "required": [ + "user_id", + "provider", + "credentials_id", + "webhook_type", + "resource", + "events", + "secret", + "provider_webhook_id", + "url" + ], + "title": "Webhook" + } + }, + "securitySchemes": { + "APIKeyHeader": { + "type": "apiKey", + "in": "header", + "name": "X-Postmark-Webhook-Token" + } + } + } +} diff --git a/autogpt_platform/frontend/src/api/transformers/fix-tags.mjs b/autogpt_platform/frontend/src/api/transformers/fix-tags.mjs new file mode 100644 index 0000000000..e1bc2c4267 --- /dev/null +++ b/autogpt_platform/frontend/src/api/transformers/fix-tags.mjs @@ -0,0 +1,57 @@ +/** + * Transformer function for orval that fixes tags in OpenAPI spec. + * 1. Create a set of tags so we have unique values + * 2. Then remove public, private, v1, and v2 tags from tags array + * 3. Then arrange remaining tags alphabetically and only keep the first one + * + * @param {OpenAPIObject} inputSchema + * @return {OpenAPIObject} + */ + +export const tagTransformer = (inputSchema) => { + const processedPaths = Object.entries(inputSchema.paths || {}).reduce( + (acc, [path, pathItem]) => ({ + ...acc, + [path]: Object.entries(pathItem || {}).reduce( + (pathItemAcc, [verb, operation]) => { + if (typeof operation === "object" && operation !== null) { + // 1. Create a set of tags so we have unique values + const uniqueTags = Array.from(new Set(operation.tags || [])); + + // 2. Remove public, private, v1, and v2 tags from tags array + const filteredTags = uniqueTags.filter( + (tag) => + !["public", "private"].includes(tag.toLowerCase()) && + !/^v[12]$/i.test(tag), + ); + + // 3. Arrange tags alphabetically and only keep the first one + const sortedTags = filteredTags.sort((a, b) => a.localeCompare(b)); + const firstTag = sortedTags.length > 0 ? [sortedTags[0]] : []; + + return { + ...pathItemAcc, + [verb]: { + ...operation, + tags: firstTag, + }, + }; + } + return { + ...pathItemAcc, + [verb]: operation, + }; + }, + {}, + ), + }), + {}, + ); + + return { + ...inputSchema, + paths: processedPaths, + }; +}; + +export default tagTransformer; diff --git a/autogpt_platform/frontend/src/lib/supabase/getSupabaseClient.ts b/autogpt_platform/frontend/src/lib/supabase/getSupabaseClient.ts new file mode 100644 index 0000000000..055e31f394 --- /dev/null +++ b/autogpt_platform/frontend/src/lib/supabase/getSupabaseClient.ts @@ -0,0 +1,14 @@ +import { getServerSupabase } from "@/lib/supabase/server/getServerSupabase"; +import { createBrowserClient } from "@supabase/ssr"; + +const isClient = typeof window !== "undefined"; + +export const getSupabaseClient = async () => { + return isClient + ? createBrowserClient( + process.env.NEXT_PUBLIC_SUPABASE_URL!, + process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!, + { isSingleton: true }, + ) + : await getServerSupabase(); +};