diff --git a/app/@types/nextjs-routes.d.ts b/app/@types/nextjs-routes.d.ts index fcf99ba..e95f9a1 100644 --- a/app/@types/nextjs-routes.d.ts +++ b/app/@types/nextjs-routes.d.ts @@ -12,12 +12,11 @@ declare module "nextjs-routes" { export type Route = | StaticRoute<"/account/signin"> - | DynamicRoute<"/api/[...trpc]", { "trpc": string[] }> | DynamicRoute<"/api/auth/[...nextauth]", { "nextauth": string[] }> | StaticRoute<"/api/experiments/og-image"> - | StaticRoute<"/api/openapi"> - | StaticRoute<"/api/sentry-example-api"> | DynamicRoute<"/api/trpc/[trpc]", { "trpc": string }> + | DynamicRoute<"/api/v1/[...trpc]", { "trpc": string[] }> + | StaticRoute<"/api/v1/openapi"> | StaticRoute<"/dashboard"> | DynamicRoute<"/data/[id]", { "id": string }> | StaticRoute<"/data"> diff --git a/app/prisma/schema.prisma b/app/prisma/schema.prisma index dfc39a0..ed5bfae 100644 --- a/app/prisma/schema.prisma +++ b/app/prisma/schema.prisma @@ -112,17 +112,17 @@ model ScenarioVariantCell { model ModelResponse { id String @id @default(uuid()) @db.Uuid - cacheKey String - requestedAt DateTime? - receivedAt DateTime? - respPayload Json? - cost Float? - inputTokens Int? - outputTokens Int? - statusCode Int? - errorMessage String? - retryTime DateTime? - outdated Boolean @default(false) + cacheKey String + requestedAt DateTime? + receivedAt DateTime? + respPayload Json? + cost Float? + inputTokens Int? + outputTokens Int? + statusCode Int? + errorMessage String? + retryTime DateTime? + outdated Boolean @default(false) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt @@ -273,8 +273,8 @@ model LoggedCall { projectId String @db.Uuid project Project? @relation(fields: [projectId], references: [id], onDelete: Cascade) - model String? - tags LoggedCallTag[] + model String? + tags LoggedCallTag[] createdAt DateTime @default(now()) updatedAt DateTime @updatedAt @@ -295,7 +295,7 @@ model LoggedCallModelResponse { errorMessage String? requestedAt DateTime - receivedAt DateTime + receivedAt DateTime // Note: the function to calculate the cacheKey should include the project // ID so we don't share cached responses between projects, which could be an @@ -340,8 +340,8 @@ model ApiKey { name String apiKey String @unique - projectId String @db.Uuid - project Project? @relation(fields: [projectId], references: [id], onDelete: Cascade) + projectId String @db.Uuid + project Project @relation(fields: [projectId], references: [id], onDelete: Cascade) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt diff --git a/app/src/pages/api/sentry-example-api.js b/app/src/pages/api/sentry-example-api.js deleted file mode 100644 index f902fbb..0000000 --- a/app/src/pages/api/sentry-example-api.js +++ /dev/null @@ -1,6 +0,0 @@ -// A faulty API route to test Sentry's error monitoring -// @ts-expect-error just a test file, don't care about types -export default function handler(_req, res) { - throw new Error("Sentry Example API Route Error"); - res.status(200).json({ name: "John Doe" }); -} diff --git a/app/src/pages/api/[...trpc].ts b/app/src/pages/api/v1/[...trpc].ts similarity index 56% rename from app/src/pages/api/[...trpc].ts rename to app/src/pages/api/v1/[...trpc].ts index 4751e6c..604cb71 100644 --- a/app/src/pages/api/[...trpc].ts +++ b/app/src/pages/api/v1/[...trpc].ts @@ -1,17 +1,14 @@ import { type NextApiRequest, type NextApiResponse } from "next"; import cors from "nextjs-cors"; import { createOpenApiNextHandler } from "trpc-openapi"; -import { createProcedureCache } from "trpc-openapi/dist/adapters/node-http/procedures"; -import { appRouter } from "~/server/api/root.router"; -import { createTRPCContext } from "~/server/api/trpc"; +import { v1ApiRouter } from "~/server/api/external/v1Api.router"; +import { createOpenApiContext } from "~/server/api/external/openApiTrpc"; const openApiHandler = createOpenApiNextHandler({ - router: appRouter, - createContext: createTRPCContext, + router: v1ApiRouter, + createContext: createOpenApiContext, }); -const cache = createProcedureCache(appRouter); - const handler = async (req: NextApiRequest, res: NextApiResponse) => { // Setup CORS await cors(req, res); diff --git a/app/src/pages/api/openapi.json.ts b/app/src/pages/api/v1/openapi.json.ts similarity index 65% rename from app/src/pages/api/openapi.json.ts rename to app/src/pages/api/v1/openapi.json.ts index c02ca8e..06cf588 100644 --- a/app/src/pages/api/openapi.json.ts +++ b/app/src/pages/api/v1/openapi.json.ts @@ -1,12 +1,12 @@ import { type NextApiRequest, type NextApiResponse } from "next"; import { generateOpenApiDocument } from "trpc-openapi"; -import { appRouter } from "~/server/api/root.router"; +import { v1ApiRouter } from "~/server/api/external/v1Api.router"; -export const openApiDocument = generateOpenApiDocument(appRouter, { +export const openApiDocument = generateOpenApiDocument(v1ApiRouter, { title: "OpenPipe API", description: "The public API for reporting API calls to OpenPipe", - version: "0.1.0", - baseUrl: "https://app.openpipe.ai/api", + version: "0.1.1", + baseUrl: "https://app.openpipe.ai/api/v1", }); // Respond with our OpenAPI schema const hander = (req: NextApiRequest, res: NextApiResponse) => { diff --git a/app/src/server/api/external/openApiTrpc.ts b/app/src/server/api/external/openApiTrpc.ts new file mode 100644 index 0000000..637c4c4 --- /dev/null +++ b/app/src/server/api/external/openApiTrpc.ts @@ -0,0 +1,95 @@ +import type { ApiKey, Project } from "@prisma/client"; +import { TRPCError, initTRPC } from "@trpc/server"; +import { type CreateNextContextOptions } from "@trpc/server/adapters/next"; +import superjson from "superjson"; +import { type OpenApiMeta } from "trpc-openapi"; +import { ZodError } from "zod"; +import { prisma } from "~/server/db"; + +type CreateContextOptions = { + key: + | (ApiKey & { + project: Project; + }) + | null; +}; + +/** + * This helper generates the "internals" for a tRPC context. If you need to use it, you can export + * it from here. + * + * Examples of things you may need it for: + * - testing, so we don't have to mock Next.js' req/res + * - tRPC's `createSSGHelpers`, where we don't have req/res + * + * @see https://create.t3.gg/en/usage/trpc#-serverapitrpcts + */ +export const createInnerTRPCContext = (opts: CreateContextOptions) => { + return { + key: opts.key, + }; +}; + +export const createOpenApiContext = async (opts: CreateNextContextOptions) => { + const { req, res } = opts; + + const apiKey = req.headers.authorization?.split(" ")[1] as string | null; + + if (!apiKey) { + throw new TRPCError({ code: "UNAUTHORIZED" }); + } + const key = await prisma.apiKey.findUnique({ + where: { apiKey }, + include: { project: true }, + }); + if (!key) { + throw new TRPCError({ code: "UNAUTHORIZED" }); + } + + return createInnerTRPCContext({ + key, + }); +}; + +export type TRPCContext = Awaited>; + +const t = initTRPC + .context() + .meta() + .create({ + transformer: superjson, + errorFormatter({ shape, error }) { + return { + ...shape, + data: { + ...shape.data, + zodError: error.cause instanceof ZodError ? error.cause.flatten() : null, + }, + }; + }, + }); + +export const createOpenApiRouter = t.router; + +export const openApiPublicProc = t.procedure; + +/** Reusable middleware that enforces users are logged in before running the procedure. */ +const enforceApiKey = t.middleware(async ({ ctx, next }) => { + if (!ctx.key) { + throw new TRPCError({ code: "UNAUTHORIZED" }); + } + + return next({ + ctx: { key: ctx.key }, + }); +}); + +/** + * Protected (authenticated) procedure + * + * If you want a query or mutation to ONLY be accessible to logged in users, use this. It verifies + * the session is valid and guarantees `ctx.session.user` is not null. + * + * @see https://trpc.io/docs/procedures + */ +export const openApiProtectedProc = t.procedure.use(enforceApiKey); diff --git a/app/src/server/api/routers/externalApi.router.ts b/app/src/server/api/external/v1Api.router.ts similarity index 82% rename from app/src/server/api/routers/externalApi.router.ts rename to app/src/server/api/external/v1Api.router.ts index e8c3231..4cae4d4 100644 --- a/app/src/server/api/routers/externalApi.router.ts +++ b/app/src/server/api/external/v1Api.router.ts @@ -2,9 +2,6 @@ import { type Prisma } from "@prisma/client"; import { type JsonValue } from "type-fest"; import { z } from "zod"; import { v4 as uuidv4 } from "uuid"; -import { TRPCError } from "@trpc/server"; - -import { createTRPCRouter, publicProcedure } from "~/server/api/trpc"; import { prisma } from "~/server/db"; import { hashRequest } from "~/server/utils/hashObject"; import modelProvider from "~/modelProviders/openai-ChatCompletion"; @@ -12,6 +9,7 @@ import { type ChatCompletion, type CompletionCreateParams, } from "openai/resources/chat/completions"; +import { createOpenApiRouter, openApiProtectedProc } from "./openApiTrpc"; const reqValidator = z.object({ model: z.string(), @@ -28,12 +26,12 @@ const respValidator = z.object({ ), }); -export const externalApiRouter = createTRPCRouter({ - checkCache: publicProcedure +export const v1ApiRouter = createOpenApiRouter({ + checkCache: openApiProtectedProc .meta({ openapi: { method: "POST", - path: "/v1/check-cache", + path: "/check-cache", description: "Check if a prompt is cached", protect: true, }, @@ -56,18 +54,8 @@ export const externalApiRouter = createTRPCRouter({ }), ) .mutation(async ({ input, ctx }) => { - const apiKey = ctx.apiKey; - if (!apiKey) { - throw new TRPCError({ code: "UNAUTHORIZED" }); - } - const key = await prisma.apiKey.findUnique({ - where: { apiKey }, - }); - if (!key) { - throw new TRPCError({ code: "UNAUTHORIZED" }); - } const reqPayload = await reqValidator.spa(input.reqPayload); - const cacheKey = hashRequest(key.projectId, reqPayload as JsonValue); + const cacheKey = hashRequest(ctx.key.projectId, reqPayload as JsonValue); const existingResponse = await prisma.loggedCallModelResponse.findFirst({ where: { cacheKey }, @@ -79,7 +67,7 @@ export const externalApiRouter = createTRPCRouter({ await prisma.loggedCall.create({ data: { - projectId: key.projectId, + projectId: ctx.key.projectId, requestedAt: new Date(input.requestedAt), cacheHit: true, modelResponseId: existingResponse.id, @@ -91,11 +79,11 @@ export const externalApiRouter = createTRPCRouter({ }; }), - report: publicProcedure + report: openApiProtectedProc .meta({ openapi: { method: "POST", - path: "/v1/report", + path: "/report", description: "Report an API call", protect: true, }, @@ -119,20 +107,10 @@ export const externalApiRouter = createTRPCRouter({ .output(z.void()) .mutation(async ({ input, ctx }) => { console.log("GOT TAGS", input.tags); - const apiKey = ctx.apiKey; - if (!apiKey) { - throw new TRPCError({ code: "UNAUTHORIZED" }); - } - const key = await prisma.apiKey.findUnique({ - where: { apiKey }, - }); - if (!key) { - throw new TRPCError({ code: "UNAUTHORIZED" }); - } const reqPayload = await reqValidator.spa(input.reqPayload); const respPayload = await respValidator.spa(input.respPayload); - const requestHash = hashRequest(key.projectId, reqPayload as JsonValue); + const requestHash = hashRequest(ctx.key.project.id, reqPayload as JsonValue); const newLoggedCallId = uuidv4(); const newModelResponseId = uuidv4(); @@ -151,7 +129,7 @@ export const externalApiRouter = createTRPCRouter({ prisma.loggedCall.create({ data: { id: newLoggedCallId, - projectId: key.projectId, + projectId: ctx.key.project.id, requestedAt: new Date(input.requestedAt), cacheHit: false, model, diff --git a/app/src/server/api/root.router.ts b/app/src/server/api/root.router.ts index fa03859..4c4a14f 100644 --- a/app/src/server/api/root.router.ts +++ b/app/src/server/api/root.router.ts @@ -8,7 +8,6 @@ import { evaluationsRouter } from "./routers/evaluations.router"; import { worldChampsRouter } from "./routers/worldChamps.router"; import { datasetsRouter } from "./routers/datasets.router"; import { datasetEntries } from "./routers/datasetEntries.router"; -import { externalApiRouter } from "./routers/externalApi.router"; import { projectsRouter } from "./routers/projects.router"; import { dashboardRouter } from "./routers/dashboard.router"; import { loggedCallsRouter } from "./routers/loggedCalls.router"; @@ -31,7 +30,6 @@ export const appRouter = createTRPCRouter({ projects: projectsRouter, dashboard: dashboardRouter, loggedCalls: loggedCallsRouter, - externalApi: externalApiRouter, }); // export type definition of API diff --git a/app/src/server/api/trpc.ts b/app/src/server/api/trpc.ts index 811fda5..626dae3 100644 --- a/app/src/server/api/trpc.ts +++ b/app/src/server/api/trpc.ts @@ -27,7 +27,6 @@ import { capturePath } from "~/utils/analytics/serverAnalytics"; type CreateContextOptions = { session: Session | null; - apiKey: string | null; }; // eslint-disable-next-line @typescript-eslint/no-empty-function @@ -46,7 +45,6 @@ const noOp = () => {}; export const createInnerTRPCContext = (opts: CreateContextOptions) => { return { session: opts.session, - apiKey: opts.apiKey, prisma, markAccessControlRun: noOp, }; @@ -64,11 +62,8 @@ export const createTRPCContext = async (opts: CreateNextContextOptions) => { // Get the session from the server using the getServerSession wrapper function const session = await getServerAuthSession({ req, res }); - const apiKey = req.headers.authorization?.split(" ")[1] as string | null; - return createInnerTRPCContext({ session, - apiKey, }); }; diff --git a/app/src/server/scripts/client-codegen.ts b/app/src/server/scripts/client-codegen.ts index f534ea1..6fa9355 100644 --- a/app/src/server/scripts/client-codegen.ts +++ b/app/src/server/scripts/client-codegen.ts @@ -1,5 +1,5 @@ import "dotenv/config"; -import { openApiDocument } from "~/pages/api/openapi.json"; +import { openApiDocument } from "~/pages/api/v1/openapi.json"; import fs from "fs"; import path from "path"; import { execSync } from "child_process"; diff --git a/client-libs/openapi.json b/client-libs/openapi.json index a55fb5f..4fea6d0 100644 --- a/client-libs/openapi.json +++ b/client-libs/openapi.json @@ -3,17 +3,17 @@ "info": { "title": "OpenPipe API", "description": "The public API for reporting API calls to OpenPipe", - "version": "0.1.0" + "version": "0.1.1" }, "servers": [ { - "url": "https://app.openpipe.ai/api" + "url": "https://app.openpipe.ai/api/v1" } ], "paths": { - "/v1/check-cache": { + "/check-cache": { "post": { - "operationId": "externalApi-checkCache", + "operationId": "checkCache", "description": "Check if a prompt is cached", "security": [ { @@ -74,9 +74,9 @@ } } }, - "/v1/report": { + "/report": { "post": { - "operationId": "externalApi-report", + "operationId": "report", "description": "Report an API call", "security": [ { diff --git a/client-libs/python/openpipe/api_client/api/default/external_api_report.py b/client-libs/python/openpipe/api_client/api/default/api_report.py similarity index 87% rename from client-libs/python/openpipe/api_client/api/default/external_api_report.py rename to client-libs/python/openpipe/api_client/api/default/api_report.py index 5a3b46e..b1a94f4 100644 --- a/client-libs/python/openpipe/api_client/api/default/external_api_report.py +++ b/client-libs/python/openpipe/api_client/api/default/api_report.py @@ -5,13 +5,13 @@ import httpx from ... import errors from ...client import AuthenticatedClient, Client -from ...models.external_api_report_json_body import ExternalApiReportJsonBody +from ...models.report_json_body import ReportJsonBody from ...types import Response def _get_kwargs( *, - json_body: ExternalApiReportJsonBody, + json_body: ReportJsonBody, ) -> Dict[str, Any]: pass @@ -19,7 +19,7 @@ def _get_kwargs( return { "method": "post", - "url": "/v1/report", + "url": "/report", "json": json_json_body, } @@ -45,12 +45,12 @@ def _build_response(*, client: Union[AuthenticatedClient, Client], response: htt def sync_detailed( *, client: AuthenticatedClient, - json_body: ExternalApiReportJsonBody, + json_body: ReportJsonBody, ) -> Response[Any]: """Report an API call Args: - json_body (ExternalApiReportJsonBody): + json_body (ReportJsonBody): Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. @@ -74,12 +74,12 @@ def sync_detailed( async def asyncio_detailed( *, client: AuthenticatedClient, - json_body: ExternalApiReportJsonBody, + json_body: ReportJsonBody, ) -> Response[Any]: """Report an API call Args: - json_body (ExternalApiReportJsonBody): + json_body (ReportJsonBody): Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. diff --git a/client-libs/python/openpipe/api_client/api/default/external_api_check_cache.py b/client-libs/python/openpipe/api_client/api/default/check_cache.py similarity index 71% rename from client-libs/python/openpipe/api_client/api/default/external_api_check_cache.py rename to client-libs/python/openpipe/api_client/api/default/check_cache.py index 25340d5..88744b6 100644 --- a/client-libs/python/openpipe/api_client/api/default/external_api_check_cache.py +++ b/client-libs/python/openpipe/api_client/api/default/check_cache.py @@ -5,14 +5,14 @@ import httpx from ... import errors from ...client import AuthenticatedClient, Client -from ...models.external_api_check_cache_json_body import ExternalApiCheckCacheJsonBody -from ...models.external_api_check_cache_response_200 import ExternalApiCheckCacheResponse200 +from ...models.check_cache_json_body import CheckCacheJsonBody +from ...models.check_cache_response_200 import CheckCacheResponse200 from ...types import Response def _get_kwargs( *, - json_body: ExternalApiCheckCacheJsonBody, + json_body: CheckCacheJsonBody, ) -> Dict[str, Any]: pass @@ -20,16 +20,16 @@ def _get_kwargs( return { "method": "post", - "url": "/v1/check-cache", + "url": "/check-cache", "json": json_json_body, } def _parse_response( *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Optional[ExternalApiCheckCacheResponse200]: +) -> Optional[CheckCacheResponse200]: if response.status_code == HTTPStatus.OK: - response_200 = ExternalApiCheckCacheResponse200.from_dict(response.json()) + response_200 = CheckCacheResponse200.from_dict(response.json()) return response_200 if client.raise_on_unexpected_status: @@ -40,7 +40,7 @@ def _parse_response( def _build_response( *, client: Union[AuthenticatedClient, Client], response: httpx.Response -) -> Response[ExternalApiCheckCacheResponse200]: +) -> Response[CheckCacheResponse200]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -52,19 +52,19 @@ def _build_response( def sync_detailed( *, client: AuthenticatedClient, - json_body: ExternalApiCheckCacheJsonBody, -) -> Response[ExternalApiCheckCacheResponse200]: + json_body: CheckCacheJsonBody, +) -> Response[CheckCacheResponse200]: """Check if a prompt is cached Args: - json_body (ExternalApiCheckCacheJsonBody): + json_body (CheckCacheJsonBody): Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[ExternalApiCheckCacheResponse200] + Response[CheckCacheResponse200] """ kwargs = _get_kwargs( @@ -81,19 +81,19 @@ def sync_detailed( def sync( *, client: AuthenticatedClient, - json_body: ExternalApiCheckCacheJsonBody, -) -> Optional[ExternalApiCheckCacheResponse200]: + json_body: CheckCacheJsonBody, +) -> Optional[CheckCacheResponse200]: """Check if a prompt is cached Args: - json_body (ExternalApiCheckCacheJsonBody): + json_body (CheckCacheJsonBody): Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - ExternalApiCheckCacheResponse200 + CheckCacheResponse200 """ return sync_detailed( @@ -105,19 +105,19 @@ def sync( async def asyncio_detailed( *, client: AuthenticatedClient, - json_body: ExternalApiCheckCacheJsonBody, -) -> Response[ExternalApiCheckCacheResponse200]: + json_body: CheckCacheJsonBody, +) -> Response[CheckCacheResponse200]: """Check if a prompt is cached Args: - json_body (ExternalApiCheckCacheJsonBody): + json_body (CheckCacheJsonBody): Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[ExternalApiCheckCacheResponse200] + Response[CheckCacheResponse200] """ kwargs = _get_kwargs( @@ -132,19 +132,19 @@ async def asyncio_detailed( async def asyncio( *, client: AuthenticatedClient, - json_body: ExternalApiCheckCacheJsonBody, -) -> Optional[ExternalApiCheckCacheResponse200]: + json_body: CheckCacheJsonBody, +) -> Optional[CheckCacheResponse200]: """Check if a prompt is cached Args: - json_body (ExternalApiCheckCacheJsonBody): + json_body (CheckCacheJsonBody): Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - ExternalApiCheckCacheResponse200 + CheckCacheResponse200 """ return ( diff --git a/client-libs/python/openpipe/api_client/models/__init__.py b/client-libs/python/openpipe/api_client/models/__init__.py index 73deb75..3f4c2a3 100644 --- a/client-libs/python/openpipe/api_client/models/__init__.py +++ b/client-libs/python/openpipe/api_client/models/__init__.py @@ -1,15 +1,15 @@ """ Contains all the data models used in inputs/outputs """ -from .external_api_check_cache_json_body import ExternalApiCheckCacheJsonBody -from .external_api_check_cache_json_body_tags import ExternalApiCheckCacheJsonBodyTags -from .external_api_check_cache_response_200 import ExternalApiCheckCacheResponse200 -from .external_api_report_json_body import ExternalApiReportJsonBody -from .external_api_report_json_body_tags import ExternalApiReportJsonBodyTags +from .check_cache_json_body import CheckCacheJsonBody +from .check_cache_json_body_tags import CheckCacheJsonBodyTags +from .check_cache_response_200 import CheckCacheResponse200 +from .report_json_body import ReportJsonBody +from .report_json_body_tags import ReportJsonBodyTags __all__ = ( - "ExternalApiCheckCacheJsonBody", - "ExternalApiCheckCacheJsonBodyTags", - "ExternalApiCheckCacheResponse200", - "ExternalApiReportJsonBody", - "ExternalApiReportJsonBodyTags", + "CheckCacheJsonBody", + "CheckCacheJsonBodyTags", + "CheckCacheResponse200", + "ReportJsonBody", + "ReportJsonBodyTags", ) diff --git a/client-libs/python/openpipe/api_client/models/external_api_check_cache_json_body.py b/client-libs/python/openpipe/api_client/models/check_cache_json_body.py similarity index 64% rename from client-libs/python/openpipe/api_client/models/external_api_check_cache_json_body.py rename to client-libs/python/openpipe/api_client/models/check_cache_json_body.py index 0e14d01..e8f3b61 100644 --- a/client-libs/python/openpipe/api_client/models/external_api_check_cache_json_body.py +++ b/client-libs/python/openpipe/api_client/models/check_cache_json_body.py @@ -5,25 +5,25 @@ from attrs import define from ..types import UNSET, Unset if TYPE_CHECKING: - from ..models.external_api_check_cache_json_body_tags import ExternalApiCheckCacheJsonBodyTags + from ..models.check_cache_json_body_tags import CheckCacheJsonBodyTags -T = TypeVar("T", bound="ExternalApiCheckCacheJsonBody") +T = TypeVar("T", bound="CheckCacheJsonBody") @define -class ExternalApiCheckCacheJsonBody: +class CheckCacheJsonBody: """ Attributes: requested_at (float): Unix timestamp in milliseconds req_payload (Union[Unset, Any]): JSON-encoded request payload - tags (Union[Unset, ExternalApiCheckCacheJsonBodyTags]): Extra tags to attach to the call for filtering. Eg { - "userId": "123", "promptId": "populate-title" } + tags (Union[Unset, CheckCacheJsonBodyTags]): Extra tags to attach to the call for filtering. Eg { "userId": + "123", "promptId": "populate-title" } """ requested_at: float req_payload: Union[Unset, Any] = UNSET - tags: Union[Unset, "ExternalApiCheckCacheJsonBodyTags"] = UNSET + tags: Union[Unset, "CheckCacheJsonBodyTags"] = UNSET def to_dict(self) -> Dict[str, Any]: requested_at = self.requested_at @@ -47,7 +47,7 @@ class ExternalApiCheckCacheJsonBody: @classmethod def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - from ..models.external_api_check_cache_json_body_tags import ExternalApiCheckCacheJsonBodyTags + from ..models.check_cache_json_body_tags import CheckCacheJsonBodyTags d = src_dict.copy() requested_at = d.pop("requestedAt") @@ -55,16 +55,16 @@ class ExternalApiCheckCacheJsonBody: req_payload = d.pop("reqPayload", UNSET) _tags = d.pop("tags", UNSET) - tags: Union[Unset, ExternalApiCheckCacheJsonBodyTags] + tags: Union[Unset, CheckCacheJsonBodyTags] if isinstance(_tags, Unset): tags = UNSET else: - tags = ExternalApiCheckCacheJsonBodyTags.from_dict(_tags) + tags = CheckCacheJsonBodyTags.from_dict(_tags) - external_api_check_cache_json_body = cls( + check_cache_json_body = cls( requested_at=requested_at, req_payload=req_payload, tags=tags, ) - return external_api_check_cache_json_body + return check_cache_json_body diff --git a/client-libs/python/openpipe/api_client/models/external_api_report_json_body_tags.py b/client-libs/python/openpipe/api_client/models/check_cache_json_body_tags.py similarity index 80% rename from client-libs/python/openpipe/api_client/models/external_api_report_json_body_tags.py rename to client-libs/python/openpipe/api_client/models/check_cache_json_body_tags.py index 002c34a..3ae04bd 100644 --- a/client-libs/python/openpipe/api_client/models/external_api_report_json_body_tags.py +++ b/client-libs/python/openpipe/api_client/models/check_cache_json_body_tags.py @@ -2,11 +2,11 @@ from typing import Any, Dict, List, Type, TypeVar from attrs import define, field -T = TypeVar("T", bound="ExternalApiReportJsonBodyTags") +T = TypeVar("T", bound="CheckCacheJsonBodyTags") @define -class ExternalApiReportJsonBodyTags: +class CheckCacheJsonBodyTags: """Extra tags to attach to the call for filtering. Eg { "userId": "123", "promptId": "populate-title" }""" additional_properties: Dict[str, str] = field(init=False, factory=dict) @@ -21,10 +21,10 @@ class ExternalApiReportJsonBodyTags: @classmethod def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: d = src_dict.copy() - external_api_report_json_body_tags = cls() + check_cache_json_body_tags = cls() - external_api_report_json_body_tags.additional_properties = d - return external_api_report_json_body_tags + check_cache_json_body_tags.additional_properties = d + return check_cache_json_body_tags @property def additional_keys(self) -> List[str]: diff --git a/client-libs/python/openpipe/api_client/models/external_api_check_cache_response_200.py b/client-libs/python/openpipe/api_client/models/check_cache_response_200.py similarity index 78% rename from client-libs/python/openpipe/api_client/models/external_api_check_cache_response_200.py rename to client-libs/python/openpipe/api_client/models/check_cache_response_200.py index c0f22d5..0f79c3a 100644 --- a/client-libs/python/openpipe/api_client/models/external_api_check_cache_response_200.py +++ b/client-libs/python/openpipe/api_client/models/check_cache_response_200.py @@ -4,11 +4,11 @@ from attrs import define from ..types import UNSET, Unset -T = TypeVar("T", bound="ExternalApiCheckCacheResponse200") +T = TypeVar("T", bound="CheckCacheResponse200") @define -class ExternalApiCheckCacheResponse200: +class CheckCacheResponse200: """ Attributes: resp_payload (Union[Unset, Any]): JSON-encoded response payload @@ -31,8 +31,8 @@ class ExternalApiCheckCacheResponse200: d = src_dict.copy() resp_payload = d.pop("respPayload", UNSET) - external_api_check_cache_response_200 = cls( + check_cache_response_200 = cls( resp_payload=resp_payload, ) - return external_api_check_cache_response_200 + return check_cache_response_200 diff --git a/client-libs/python/openpipe/api_client/models/external_api_report_json_body.py b/client-libs/python/openpipe/api_client/models/report_json_body.py similarity index 78% rename from client-libs/python/openpipe/api_client/models/external_api_report_json_body.py rename to client-libs/python/openpipe/api_client/models/report_json_body.py index 492fdec..7a03fd9 100644 --- a/client-libs/python/openpipe/api_client/models/external_api_report_json_body.py +++ b/client-libs/python/openpipe/api_client/models/report_json_body.py @@ -5,14 +5,14 @@ from attrs import define from ..types import UNSET, Unset if TYPE_CHECKING: - from ..models.external_api_report_json_body_tags import ExternalApiReportJsonBodyTags + from ..models.report_json_body_tags import ReportJsonBodyTags -T = TypeVar("T", bound="ExternalApiReportJsonBody") +T = TypeVar("T", bound="ReportJsonBody") @define -class ExternalApiReportJsonBody: +class ReportJsonBody: """ Attributes: requested_at (float): Unix timestamp in milliseconds @@ -21,8 +21,8 @@ class ExternalApiReportJsonBody: resp_payload (Union[Unset, Any]): JSON-encoded response payload status_code (Union[Unset, float]): HTTP status code of response error_message (Union[Unset, str]): User-friendly error message - tags (Union[Unset, ExternalApiReportJsonBodyTags]): Extra tags to attach to the call for filtering. Eg { - "userId": "123", "promptId": "populate-title" } + tags (Union[Unset, ReportJsonBodyTags]): Extra tags to attach to the call for filtering. Eg { "userId": "123", + "promptId": "populate-title" } """ requested_at: float @@ -31,7 +31,7 @@ class ExternalApiReportJsonBody: resp_payload: Union[Unset, Any] = UNSET status_code: Union[Unset, float] = UNSET error_message: Union[Unset, str] = UNSET - tags: Union[Unset, "ExternalApiReportJsonBodyTags"] = UNSET + tags: Union[Unset, "ReportJsonBodyTags"] = UNSET def to_dict(self) -> Dict[str, Any]: requested_at = self.requested_at @@ -66,7 +66,7 @@ class ExternalApiReportJsonBody: @classmethod def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - from ..models.external_api_report_json_body_tags import ExternalApiReportJsonBodyTags + from ..models.report_json_body_tags import ReportJsonBodyTags d = src_dict.copy() requested_at = d.pop("requestedAt") @@ -82,13 +82,13 @@ class ExternalApiReportJsonBody: error_message = d.pop("errorMessage", UNSET) _tags = d.pop("tags", UNSET) - tags: Union[Unset, ExternalApiReportJsonBodyTags] + tags: Union[Unset, ReportJsonBodyTags] if isinstance(_tags, Unset): tags = UNSET else: - tags = ExternalApiReportJsonBodyTags.from_dict(_tags) + tags = ReportJsonBodyTags.from_dict(_tags) - external_api_report_json_body = cls( + report_json_body = cls( requested_at=requested_at, received_at=received_at, req_payload=req_payload, @@ -98,4 +98,4 @@ class ExternalApiReportJsonBody: tags=tags, ) - return external_api_report_json_body + return report_json_body diff --git a/client-libs/python/openpipe/api_client/models/external_api_check_cache_json_body_tags.py b/client-libs/python/openpipe/api_client/models/report_json_body_tags.py similarity index 79% rename from client-libs/python/openpipe/api_client/models/external_api_check_cache_json_body_tags.py rename to client-libs/python/openpipe/api_client/models/report_json_body_tags.py index f5b7181..7432832 100644 --- a/client-libs/python/openpipe/api_client/models/external_api_check_cache_json_body_tags.py +++ b/client-libs/python/openpipe/api_client/models/report_json_body_tags.py @@ -2,11 +2,11 @@ from typing import Any, Dict, List, Type, TypeVar from attrs import define, field -T = TypeVar("T", bound="ExternalApiCheckCacheJsonBodyTags") +T = TypeVar("T", bound="ReportJsonBodyTags") @define -class ExternalApiCheckCacheJsonBodyTags: +class ReportJsonBodyTags: """Extra tags to attach to the call for filtering. Eg { "userId": "123", "promptId": "populate-title" }""" additional_properties: Dict[str, str] = field(init=False, factory=dict) @@ -21,10 +21,10 @@ class ExternalApiCheckCacheJsonBodyTags: @classmethod def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: d = src_dict.copy() - external_api_check_cache_json_body_tags = cls() + report_json_body_tags = cls() - external_api_check_cache_json_body_tags.additional_properties = d - return external_api_check_cache_json_body_tags + report_json_body_tags.additional_properties = d + return report_json_body_tags @property def additional_keys(self) -> List[str]: diff --git a/client-libs/python/openpipe/shared.py b/client-libs/python/openpipe/shared.py index f8accfe..98ab7c1 100644 --- a/client-libs/python/openpipe/shared.py +++ b/client-libs/python/openpipe/shared.py @@ -1,10 +1,10 @@ from openpipe.api_client.api.default import ( - external_api_report, - external_api_check_cache, + api_report, + check_cache, ) from openpipe.api_client.client import AuthenticatedClient -from openpipe.api_client.models.external_api_report_json_body_tags import ( - ExternalApiReportJsonBodyTags, +from openpipe.api_client.models.report_json_body_tags import ( + ReportJsonBodyTags, ) import toml import time @@ -21,7 +21,7 @@ def _get_tags(openpipe_options): tags["$sdk"] = "python" tags["$sdk_version"] = version - return ExternalApiReportJsonBodyTags.from_dict(tags) + return ReportJsonBodyTags.from_dict(tags) def _should_check_cache(openpipe_options): @@ -31,7 +31,7 @@ def _should_check_cache(openpipe_options): def _process_cache_payload( - payload: external_api_check_cache.ExternalApiCheckCacheResponse200, + payload: check_cache.CheckCacheResponse200, ): if not payload or not payload.resp_payload: return None @@ -47,9 +47,9 @@ def maybe_check_cache( if not _should_check_cache(openpipe_options): return None try: - payload = external_api_check_cache.sync( + payload = check_cache.sync( client=configured_client, - json_body=external_api_check_cache.ExternalApiCheckCacheJsonBody( + json_body=check_cache.CheckCacheJsonBody( req_payload=req_payload, requested_at=int(time.time() * 1000), tags=_get_tags(openpipe_options), @@ -72,9 +72,9 @@ async def maybe_check_cache_async( return None try: - payload = await external_api_check_cache.asyncio( + payload = await check_cache.asyncio( client=configured_client, - json_body=external_api_check_cache.ExternalApiCheckCacheJsonBody( + json_body=check_cache.CheckCacheJsonBody( req_payload=req_payload, requested_at=int(time.time() * 1000), tags=_get_tags(openpipe_options), @@ -94,9 +94,9 @@ def report( **kwargs, ): try: - external_api_report.sync_detailed( + api_report.sync_detailed( client=configured_client, - json_body=external_api_report.ExternalApiReportJsonBody( + json_body=api_report.ReportJsonBody( **kwargs, tags=_get_tags(openpipe_options), ), @@ -112,9 +112,9 @@ async def report_async( **kwargs, ): try: - await external_api_report.asyncio_detailed( + await api_report.asyncio_detailed( client=configured_client, - json_body=external_api_report.ExternalApiReportJsonBody( + json_body=api_report.ReportJsonBody( **kwargs, tags=_get_tags(openpipe_options), ), diff --git a/client-libs/typescript/src/codegen/api.ts b/client-libs/typescript/src/codegen/api.ts index 9596dca..ab1abf8 100644 --- a/client-libs/typescript/src/codegen/api.ts +++ b/client-libs/typescript/src/codegen/api.ts @@ -4,7 +4,7 @@ * OpenPipe API * The public API for reporting API calls to OpenPipe * - * The version of the OpenAPI document: 0.1.0 + * The version of the OpenAPI document: 0.1.1 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). @@ -26,125 +26,125 @@ import { BASE_PATH, COLLECTION_FORMATS, BaseAPI, RequiredError } from './base'; /** * * @export - * @interface ExternalApiCheckCache200Response + * @interface CheckCache200Response */ -export interface ExternalApiCheckCache200Response { +export interface CheckCache200Response { /** * JSON-encoded response payload * @type {any} - * @memberof ExternalApiCheckCache200Response + * @memberof CheckCache200Response */ 'respPayload'?: any; } /** * * @export - * @interface ExternalApiCheckCacheDefaultResponse + * @interface CheckCacheDefaultResponse */ -export interface ExternalApiCheckCacheDefaultResponse { +export interface CheckCacheDefaultResponse { /** * * @type {string} - * @memberof ExternalApiCheckCacheDefaultResponse + * @memberof CheckCacheDefaultResponse */ 'message': string; /** * * @type {string} - * @memberof ExternalApiCheckCacheDefaultResponse + * @memberof CheckCacheDefaultResponse */ 'code': string; /** * - * @type {Array} - * @memberof ExternalApiCheckCacheDefaultResponse + * @type {Array} + * @memberof CheckCacheDefaultResponse */ - 'issues'?: Array; + 'issues'?: Array; } /** * * @export - * @interface ExternalApiCheckCacheDefaultResponseIssuesInner + * @interface CheckCacheDefaultResponseIssuesInner */ -export interface ExternalApiCheckCacheDefaultResponseIssuesInner { +export interface CheckCacheDefaultResponseIssuesInner { /** * * @type {string} - * @memberof ExternalApiCheckCacheDefaultResponseIssuesInner + * @memberof CheckCacheDefaultResponseIssuesInner */ 'message': string; } /** * * @export - * @interface ExternalApiCheckCacheRequest + * @interface CheckCacheRequest */ -export interface ExternalApiCheckCacheRequest { +export interface CheckCacheRequest { /** * Unix timestamp in milliseconds * @type {number} - * @memberof ExternalApiCheckCacheRequest + * @memberof CheckCacheRequest */ 'requestedAt': number; /** * JSON-encoded request payload * @type {any} - * @memberof ExternalApiCheckCacheRequest + * @memberof CheckCacheRequest */ 'reqPayload'?: any; /** * Extra tags to attach to the call for filtering. Eg { \"userId\": \"123\", \"promptId\": \"populate-title\" } * @type {{ [key: string]: string; }} - * @memberof ExternalApiCheckCacheRequest + * @memberof CheckCacheRequest */ 'tags'?: { [key: string]: string; }; } /** * * @export - * @interface ExternalApiReportRequest + * @interface ReportRequest */ -export interface ExternalApiReportRequest { +export interface ReportRequest { /** * Unix timestamp in milliseconds * @type {number} - * @memberof ExternalApiReportRequest + * @memberof ReportRequest */ 'requestedAt': number; /** * Unix timestamp in milliseconds * @type {number} - * @memberof ExternalApiReportRequest + * @memberof ReportRequest */ 'receivedAt': number; /** * JSON-encoded request payload * @type {any} - * @memberof ExternalApiReportRequest + * @memberof ReportRequest */ 'reqPayload'?: any; /** * JSON-encoded response payload * @type {any} - * @memberof ExternalApiReportRequest + * @memberof ReportRequest */ 'respPayload'?: any; /** * HTTP status code of response * @type {number} - * @memberof ExternalApiReportRequest + * @memberof ReportRequest */ 'statusCode'?: number; /** * User-friendly error message * @type {string} - * @memberof ExternalApiReportRequest + * @memberof ReportRequest */ 'errorMessage'?: string; /** * Extra tags to attach to the call for filtering. Eg { \"userId\": \"123\", \"promptId\": \"populate-title\" } * @type {{ [key: string]: string; }} - * @memberof ExternalApiReportRequest + * @memberof ReportRequest */ 'tags'?: { [key: string]: string; }; } @@ -157,14 +157,14 @@ export const DefaultApiAxiosParamCreator = function (configuration?: Configurati return { /** * Check if a prompt is cached - * @param {ExternalApiCheckCacheRequest} externalApiCheckCacheRequest + * @param {CheckCacheRequest} checkCacheRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ - externalApiCheckCache: async (externalApiCheckCacheRequest: ExternalApiCheckCacheRequest, options: AxiosRequestConfig = {}): Promise => { - // verify required parameter 'externalApiCheckCacheRequest' is not null or undefined - assertParamExists('externalApiCheckCache', 'externalApiCheckCacheRequest', externalApiCheckCacheRequest) - const localVarPath = `/v1/check-cache`; + checkCache: async (checkCacheRequest: CheckCacheRequest, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'checkCacheRequest' is not null or undefined + assertParamExists('checkCache', 'checkCacheRequest', checkCacheRequest) + const localVarPath = `/check-cache`; // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); let baseOptions; @@ -187,7 +187,7 @@ export const DefaultApiAxiosParamCreator = function (configuration?: Configurati setSearchParams(localVarUrlObj, localVarQueryParameter); let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; - localVarRequestOptions.data = serializeDataIfNeeded(externalApiCheckCacheRequest, localVarRequestOptions, configuration) + localVarRequestOptions.data = serializeDataIfNeeded(checkCacheRequest, localVarRequestOptions, configuration) return { url: toPathString(localVarUrlObj), @@ -196,14 +196,14 @@ export const DefaultApiAxiosParamCreator = function (configuration?: Configurati }, /** * Report an API call - * @param {ExternalApiReportRequest} externalApiReportRequest + * @param {ReportRequest} reportRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ - externalApiReport: async (externalApiReportRequest: ExternalApiReportRequest, options: AxiosRequestConfig = {}): Promise => { - // verify required parameter 'externalApiReportRequest' is not null or undefined - assertParamExists('externalApiReport', 'externalApiReportRequest', externalApiReportRequest) - const localVarPath = `/v1/report`; + report: async (reportRequest: ReportRequest, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'reportRequest' is not null or undefined + assertParamExists('report', 'reportRequest', reportRequest) + const localVarPath = `/report`; // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); let baseOptions; @@ -226,7 +226,7 @@ export const DefaultApiAxiosParamCreator = function (configuration?: Configurati setSearchParams(localVarUrlObj, localVarQueryParameter); let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; - localVarRequestOptions.data = serializeDataIfNeeded(externalApiReportRequest, localVarRequestOptions, configuration) + localVarRequestOptions.data = serializeDataIfNeeded(reportRequest, localVarRequestOptions, configuration) return { url: toPathString(localVarUrlObj), @@ -245,22 +245,22 @@ export const DefaultApiFp = function(configuration?: Configuration) { return { /** * Check if a prompt is cached - * @param {ExternalApiCheckCacheRequest} externalApiCheckCacheRequest + * @param {CheckCacheRequest} checkCacheRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async externalApiCheckCache(externalApiCheckCacheRequest: ExternalApiCheckCacheRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { - const localVarAxiosArgs = await localVarAxiosParamCreator.externalApiCheckCache(externalApiCheckCacheRequest, options); + async checkCache(checkCacheRequest: CheckCacheRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.checkCache(checkCacheRequest, options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, /** * Report an API call - * @param {ExternalApiReportRequest} externalApiReportRequest + * @param {ReportRequest} reportRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async externalApiReport(externalApiReportRequest: ExternalApiReportRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { - const localVarAxiosArgs = await localVarAxiosParamCreator.externalApiReport(externalApiReportRequest, options); + async report(reportRequest: ReportRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.report(reportRequest, options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, } @@ -275,21 +275,21 @@ export const DefaultApiFactory = function (configuration?: Configuration, basePa return { /** * Check if a prompt is cached - * @param {ExternalApiCheckCacheRequest} externalApiCheckCacheRequest + * @param {CheckCacheRequest} checkCacheRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ - externalApiCheckCache(externalApiCheckCacheRequest: ExternalApiCheckCacheRequest, options?: any): AxiosPromise { - return localVarFp.externalApiCheckCache(externalApiCheckCacheRequest, options).then((request) => request(axios, basePath)); + checkCache(checkCacheRequest: CheckCacheRequest, options?: any): AxiosPromise { + return localVarFp.checkCache(checkCacheRequest, options).then((request) => request(axios, basePath)); }, /** * Report an API call - * @param {ExternalApiReportRequest} externalApiReportRequest + * @param {ReportRequest} reportRequest * @param {*} [options] Override http request option. * @throws {RequiredError} */ - externalApiReport(externalApiReportRequest: ExternalApiReportRequest, options?: any): AxiosPromise { - return localVarFp.externalApiReport(externalApiReportRequest, options).then((request) => request(axios, basePath)); + report(reportRequest: ReportRequest, options?: any): AxiosPromise { + return localVarFp.report(reportRequest, options).then((request) => request(axios, basePath)); }, }; }; @@ -303,24 +303,24 @@ export const DefaultApiFactory = function (configuration?: Configuration, basePa export class DefaultApi extends BaseAPI { /** * Check if a prompt is cached - * @param {ExternalApiCheckCacheRequest} externalApiCheckCacheRequest + * @param {CheckCacheRequest} checkCacheRequest * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof DefaultApi */ - public externalApiCheckCache(externalApiCheckCacheRequest: ExternalApiCheckCacheRequest, options?: AxiosRequestConfig) { - return DefaultApiFp(this.configuration).externalApiCheckCache(externalApiCheckCacheRequest, options).then((request) => request(this.axios, this.basePath)); + public checkCache(checkCacheRequest: CheckCacheRequest, options?: AxiosRequestConfig) { + return DefaultApiFp(this.configuration).checkCache(checkCacheRequest, options).then((request) => request(this.axios, this.basePath)); } /** * Report an API call - * @param {ExternalApiReportRequest} externalApiReportRequest + * @param {ReportRequest} reportRequest * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof DefaultApi */ - public externalApiReport(externalApiReportRequest: ExternalApiReportRequest, options?: AxiosRequestConfig) { - return DefaultApiFp(this.configuration).externalApiReport(externalApiReportRequest, options).then((request) => request(this.axios, this.basePath)); + public report(reportRequest: ReportRequest, options?: AxiosRequestConfig) { + return DefaultApiFp(this.configuration).report(reportRequest, options).then((request) => request(this.axios, this.basePath)); } } diff --git a/client-libs/typescript/src/codegen/base.ts b/client-libs/typescript/src/codegen/base.ts index 33af09a..f81a406 100644 --- a/client-libs/typescript/src/codegen/base.ts +++ b/client-libs/typescript/src/codegen/base.ts @@ -4,7 +4,7 @@ * OpenPipe API * The public API for reporting API calls to OpenPipe * - * The version of the OpenAPI document: 0.1.0 + * The version of the OpenAPI document: 0.1.1 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). @@ -19,7 +19,7 @@ import type { Configuration } from './configuration'; import type { AxiosPromise, AxiosInstance, AxiosRequestConfig } from 'axios'; import globalAxios from 'axios'; -export const BASE_PATH = "https://app.openpipe.ai/api".replace(/\/+$/, ""); +export const BASE_PATH = "https://app.openpipe.ai/api/v1".replace(/\/+$/, ""); /** * diff --git a/client-libs/typescript/src/codegen/common.ts b/client-libs/typescript/src/codegen/common.ts index 6a57377..8ad7e0e 100644 --- a/client-libs/typescript/src/codegen/common.ts +++ b/client-libs/typescript/src/codegen/common.ts @@ -4,7 +4,7 @@ * OpenPipe API * The public API for reporting API calls to OpenPipe * - * The version of the OpenAPI document: 0.1.0 + * The version of the OpenAPI document: 0.1.1 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/client-libs/typescript/src/codegen/configuration.ts b/client-libs/typescript/src/codegen/configuration.ts index 4bd4a54..bb6a089 100644 --- a/client-libs/typescript/src/codegen/configuration.ts +++ b/client-libs/typescript/src/codegen/configuration.ts @@ -4,7 +4,7 @@ * OpenPipe API * The public API for reporting API calls to OpenPipe * - * The version of the OpenAPI document: 0.1.0 + * The version of the OpenAPI document: 0.1.1 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/client-libs/typescript/src/codegen/index.ts b/client-libs/typescript/src/codegen/index.ts index 3bc3def..c3e73e1 100644 --- a/client-libs/typescript/src/codegen/index.ts +++ b/client-libs/typescript/src/codegen/index.ts @@ -4,7 +4,7 @@ * OpenPipe API * The public API for reporting API calls to OpenPipe * - * The version of the OpenAPI document: 0.1.0 + * The version of the OpenAPI document: 0.1.1 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).