Also added some high-level tests to minimize the chances that we're breaking anything. The typescript SDK is mostly functional at this point, with the exception that we don't have a build process or way to import it when deployed as an NPM package.
299 lines
8.6 KiB
JSON
299 lines
8.6 KiB
JSON
{
|
|
"openapi": "3.0.3",
|
|
"info": {
|
|
"title": "OpenPipe API",
|
|
"description": "The public API for reporting API calls to OpenPipe",
|
|
"version": "0.1.1"
|
|
},
|
|
"servers": [
|
|
{
|
|
"url": "https://app.openpipe.ai/api/v1"
|
|
}
|
|
],
|
|
"paths": {
|
|
"/check-cache": {
|
|
"post": {
|
|
"operationId": "checkCache",
|
|
"description": "Check if a prompt is cached",
|
|
"security": [
|
|
{
|
|
"Authorization": []
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"requestedAt": {
|
|
"type": "number",
|
|
"description": "Unix timestamp in milliseconds"
|
|
},
|
|
"reqPayload": {
|
|
"description": "JSON-encoded request payload"
|
|
},
|
|
"tags": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
},
|
|
"description": "Extra tags to attach to the call for filtering. Eg { \"userId\": \"123\", \"promptId\": \"populate-title\" }",
|
|
"default": {}
|
|
}
|
|
},
|
|
"required": [
|
|
"requestedAt"
|
|
],
|
|
"additionalProperties": false
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"parameters": [],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"respPayload": {
|
|
"description": "JSON-encoded response payload"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"default": {
|
|
"$ref": "#/components/responses/error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/report": {
|
|
"post": {
|
|
"operationId": "report",
|
|
"description": "Report an API call",
|
|
"security": [
|
|
{
|
|
"Authorization": []
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"requestedAt": {
|
|
"type": "number",
|
|
"description": "Unix timestamp in milliseconds"
|
|
},
|
|
"receivedAt": {
|
|
"type": "number",
|
|
"description": "Unix timestamp in milliseconds"
|
|
},
|
|
"reqPayload": {
|
|
"description": "JSON-encoded request payload"
|
|
},
|
|
"respPayload": {
|
|
"description": "JSON-encoded response payload"
|
|
},
|
|
"statusCode": {
|
|
"type": "number",
|
|
"description": "HTTP status code of response"
|
|
},
|
|
"errorMessage": {
|
|
"type": "string",
|
|
"description": "User-friendly error message"
|
|
},
|
|
"tags": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
},
|
|
"description": "Extra tags to attach to the call for filtering. Eg { \"userId\": \"123\", \"promptId\": \"populate-title\" }",
|
|
"default": {}
|
|
}
|
|
},
|
|
"required": [
|
|
"requestedAt",
|
|
"receivedAt"
|
|
],
|
|
"additionalProperties": false
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"parameters": [],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"status": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"enum": [
|
|
"ok"
|
|
]
|
|
},
|
|
{
|
|
"type": "string",
|
|
"enum": [
|
|
"error"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"status"
|
|
],
|
|
"additionalProperties": false
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"default": {
|
|
"$ref": "#/components/responses/error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/local-testing-only-get-latest-logged-call": {
|
|
"get": {
|
|
"operationId": "localTestingOnlyGetLatestLoggedCall",
|
|
"description": "Get the latest logged call (only for local testing)",
|
|
"security": [
|
|
{
|
|
"Authorization": []
|
|
}
|
|
],
|
|
"parameters": [],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"createdAt": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"cacheHit": {
|
|
"type": "boolean"
|
|
},
|
|
"tags": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"modelResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"statusCode": {
|
|
"type": "number",
|
|
"nullable": true
|
|
},
|
|
"errorMessage": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"reqPayload": {},
|
|
"respPayload": {}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"statusCode",
|
|
"errorMessage"
|
|
],
|
|
"additionalProperties": false,
|
|
"nullable": true
|
|
}
|
|
},
|
|
"required": [
|
|
"createdAt",
|
|
"cacheHit",
|
|
"tags",
|
|
"modelResponse"
|
|
],
|
|
"additionalProperties": false,
|
|
"nullable": true
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"default": {
|
|
"$ref": "#/components/responses/error"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"components": {
|
|
"securitySchemes": {
|
|
"Authorization": {
|
|
"type": "http",
|
|
"scheme": "bearer"
|
|
}
|
|
},
|
|
"responses": {
|
|
"error": {
|
|
"description": "Error response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"message": {
|
|
"type": "string"
|
|
},
|
|
"code": {
|
|
"type": "string"
|
|
},
|
|
"issues": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"message": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"message"
|
|
],
|
|
"additionalProperties": false
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"message",
|
|
"code"
|
|
],
|
|
"additionalProperties": false
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |