Created
June 18, 2025 17:45
-
-
Save YuchenJin/0fb5353a199aadf9d69030140e62ba8d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"openapi": "3.0.3", | |
"info": { | |
"title": "Castle API", | |
"version": "2.0.0" | |
}, | |
"servers": [ | |
{ | |
"url": "https://api.hyperbolic.xyz" | |
} | |
], | |
"paths": { | |
"/v2/openapi.json": { | |
"get": { | |
"operationId": "openApiJson", | |
"security": [ | |
{ | |
"Authorization": [] | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "Successful response", | |
"content": { | |
"application/json": { | |
"schema": {} | |
} | |
} | |
}, | |
"400": { | |
"description": "Invalid input data", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.BAD_REQUEST" | |
} | |
} | |
} | |
}, | |
"401": { | |
"description": "Authorization not provided", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.UNAUTHORIZED" | |
} | |
} | |
} | |
}, | |
"403": { | |
"description": "Insufficient access", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.FORBIDDEN" | |
} | |
} | |
} | |
}, | |
"404": { | |
"description": "Not found", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.NOT_FOUND" | |
} | |
} | |
} | |
}, | |
"500": { | |
"description": "Internal server error", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR" | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/v2/usage/request-cost": { | |
"post": { | |
"operationId": "usage-getRequestCost", | |
"summary": "Provides the inference request cost in nanoUSD for a list of request IDs.", | |
"description": "Inference requests are billed based on the cost of the tokens used in the request. The request ID can be found in the \"X-Inference-Request-Id\" inference response header.", | |
"security": [ | |
{ | |
"Authorization": [] | |
} | |
], | |
"requestBody": { | |
"required": true, | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"requestIds": { | |
"type": "array", | |
"items": { | |
"type": "string" | |
} | |
} | |
}, | |
"required": [ | |
"requestIds" | |
] | |
} | |
} | |
} | |
}, | |
"responses": { | |
"200": { | |
"description": "Successful response", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"requests": { | |
"type": "array", | |
"items": { | |
"type": "object", | |
"properties": { | |
"requestId": { | |
"type": "string" | |
}, | |
"costNanoUsd": { | |
"type": "number" | |
} | |
}, | |
"required": [ | |
"requestId", | |
"costNanoUsd" | |
] | |
}, | |
"maxItems": 100 | |
} | |
}, | |
"required": [ | |
"requests" | |
] | |
} | |
} | |
} | |
}, | |
"400": { | |
"description": "Invalid input data", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.BAD_REQUEST" | |
} | |
} | |
} | |
}, | |
"401": { | |
"description": "Authorization not provided", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.UNAUTHORIZED" | |
} | |
} | |
} | |
}, | |
"403": { | |
"description": "Insufficient access", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.FORBIDDEN" | |
} | |
} | |
} | |
}, | |
"500": { | |
"description": "Internal server error", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR" | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/v2/marketplace/instances/create-cheapest": { | |
"post": { | |
"operationId": "marketplace-createCheapestInstance", | |
"summary": "Create the cheapest instance", | |
"description": "Creates the cheapest instance. If a gpu model or gpu count is provided, creates the cheapest possible instance with those parameters", | |
"security": [ | |
{ | |
"Authorization": [] | |
} | |
], | |
"requestBody": { | |
"required": true, | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"gpuModel": { | |
"type": "string" | |
}, | |
"gpuCount": { | |
"type": "number", | |
"minimum": 1 | |
}, | |
"publicKey": { | |
"type": "string" | |
}, | |
"image": { | |
"type": "object", | |
"properties": { | |
"name": { | |
"type": "string" | |
}, | |
"tag": { | |
"type": "string" | |
}, | |
"port": { | |
"type": "number" | |
} | |
}, | |
"required": [ | |
"name", | |
"tag", | |
"port" | |
] | |
}, | |
"userMetadata": { | |
"type": "object", | |
"additionalProperties": {} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"responses": { | |
"200": { | |
"description": "Successful response", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"status": { | |
"type": "string" | |
}, | |
"instanceName": { | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"status", | |
"instanceName" | |
] | |
} | |
} | |
} | |
}, | |
"400": { | |
"description": "Invalid input data", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.BAD_REQUEST" | |
} | |
} | |
} | |
}, | |
"401": { | |
"description": "Authorization not provided", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.UNAUTHORIZED" | |
} | |
} | |
} | |
}, | |
"403": { | |
"description": "Insufficient access", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.FORBIDDEN" | |
} | |
} | |
} | |
}, | |
"500": { | |
"description": "Internal server error", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR" | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/v2/marketplace/cheapest": { | |
"get": { | |
"operationId": "marketplace-getCheapestNodes", | |
"summary": "Get a list of cheapest nodes matching filters", | |
"description": "Get a list of the cheapest available nodes filtered by optional gpu model and count", | |
"security": [ | |
{ | |
"Authorization": [] | |
} | |
], | |
"parameters": [ | |
{ | |
"in": "query", | |
"name": "gpuModel", | |
"schema": { | |
"type": "string" | |
} | |
}, | |
{ | |
"in": "query", | |
"name": "gpuCount", | |
"schema": { | |
"type": "number", | |
"minimum": 1 | |
} | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "Successful response", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "array", | |
"items": { | |
"type": "object", | |
"properties": { | |
"node": { | |
"type": "object", | |
"properties": { | |
"clusterId": { | |
"type": "string" | |
}, | |
"nodeId": { | |
"type": "string" | |
}, | |
"gpuModel": { | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"clusterId", | |
"nodeId", | |
"gpuModel" | |
] | |
}, | |
"price": { | |
"type": "number" | |
} | |
}, | |
"required": [ | |
"node" | |
] | |
} | |
} | |
} | |
} | |
}, | |
"400": { | |
"description": "Invalid input data", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.BAD_REQUEST" | |
} | |
} | |
} | |
}, | |
"401": { | |
"description": "Authorization not provided", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.UNAUTHORIZED" | |
} | |
} | |
} | |
}, | |
"403": { | |
"description": "Insufficient access", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.FORBIDDEN" | |
} | |
} | |
} | |
}, | |
"404": { | |
"description": "Not found", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.NOT_FOUND" | |
} | |
} | |
} | |
}, | |
"500": { | |
"description": "Internal server error", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR" | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/v2/marketplace/virtual-machine-rentals": { | |
"post": { | |
"operationId": "marketplace-createVirtualMachineRental", | |
"summary": "Create a virtual machine rental", | |
"description": "Create a virtual machine rental", | |
"security": [ | |
{ | |
"Authorization": [] | |
} | |
], | |
"requestBody": { | |
"required": true, | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"gpuCount": { | |
"type": "number" | |
} | |
}, | |
"required": [ | |
"gpuCount" | |
] | |
} | |
} | |
} | |
}, | |
"responses": { | |
"200": { | |
"description": "Successful response", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"id": { | |
"type": "integer", | |
"minimum": -2147483648, | |
"maximum": 2147483647 | |
}, | |
"createdAt": { | |
"type": "string" | |
}, | |
"updatedAt": { | |
"type": "string", | |
"nullable": true | |
}, | |
"deletedAt": { | |
"type": "string", | |
"nullable": true | |
}, | |
"userId": { | |
"type": "string", | |
"maxLength": 50 | |
}, | |
"startedAt": { | |
"type": "string", | |
"nullable": true | |
}, | |
"terminatedAt": { | |
"type": "string", | |
"nullable": true | |
}, | |
"externalId": { | |
"type": "string" | |
}, | |
"rentalProvider": { | |
"type": "string" | |
}, | |
"costPerHour": { | |
"type": "integer", | |
"minimum": -2147483648, | |
"maximum": 2147483647 | |
}, | |
"meta": {} | |
}, | |
"required": [ | |
"id", | |
"createdAt", | |
"updatedAt", | |
"deletedAt", | |
"userId", | |
"startedAt", | |
"terminatedAt", | |
"externalId", | |
"rentalProvider", | |
"costPerHour" | |
] | |
} | |
} | |
} | |
}, | |
"400": { | |
"description": "Invalid input data", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.BAD_REQUEST" | |
} | |
} | |
} | |
}, | |
"401": { | |
"description": "Authorization not provided", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.UNAUTHORIZED" | |
} | |
} | |
} | |
}, | |
"403": { | |
"description": "Insufficient access", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.FORBIDDEN" | |
} | |
} | |
} | |
}, | |
"500": { | |
"description": "Internal server error", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR" | |
} | |
} | |
} | |
} | |
} | |
}, | |
"get": { | |
"operationId": "marketplace-getActiveVirtualMachineRentals", | |
"summary": "Get a list of active virtual machine rentals", | |
"description": "Get a list of active virtual machine rentals", | |
"security": [ | |
{ | |
"Authorization": [] | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "Successful response", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "array", | |
"items": { | |
"type": "object", | |
"properties": { | |
"id": { | |
"type": "integer", | |
"minimum": -2147483648, | |
"maximum": 2147483647 | |
}, | |
"createdAt": { | |
"type": "string" | |
}, | |
"updatedAt": { | |
"type": "string", | |
"nullable": true | |
}, | |
"deletedAt": { | |
"type": "string", | |
"nullable": true | |
}, | |
"userId": { | |
"type": "string", | |
"maxLength": 50 | |
}, | |
"startedAt": { | |
"type": "string", | |
"nullable": true | |
}, | |
"terminatedAt": { | |
"type": "string", | |
"nullable": true | |
}, | |
"externalId": { | |
"type": "string" | |
}, | |
"rentalProvider": { | |
"type": "string" | |
}, | |
"costPerHour": { | |
"type": "integer", | |
"minimum": -2147483648, | |
"maximum": 2147483647 | |
}, | |
"meta": { | |
"type": "object", | |
"properties": { | |
"name": { | |
"type": "string" | |
}, | |
"tags": { | |
"type": "array", | |
"items": { | |
"type": "string" | |
} | |
}, | |
"type": { | |
"type": "string" | |
}, | |
"public_ip": { | |
"type": "string" | |
}, | |
"gpu_count": { | |
"type": "number" | |
}, | |
"resources": { | |
"type": "object", | |
"properties": { | |
"ram_gb": { | |
"type": "number" | |
}, | |
"storage_gb": { | |
"type": "number" | |
}, | |
"vcpu_count": { | |
"type": "number" | |
}, | |
"gpus": { | |
"type": "object", | |
"additionalProperties": { | |
"type": "object", | |
"properties": { | |
"count": { | |
"type": "number" | |
} | |
}, | |
"required": [ | |
"count" | |
] | |
} | |
} | |
}, | |
"required": [ | |
"ram_gb", | |
"storage_gb", | |
"vcpu_count", | |
"gpus" | |
] | |
}, | |
"hostnode_id": { | |
"type": "string" | |
}, | |
"internal_ip": { | |
"type": "string" | |
}, | |
"rental_type": { | |
"type": "string", | |
"enum": [ | |
"virtual-machine" | |
] | |
}, | |
"ssh_command": { | |
"type": "string" | |
}, | |
"port_forwards": { | |
"type": "array", | |
"items": { | |
"type": "object", | |
"properties": { | |
"external_port": { | |
"type": "number" | |
}, | |
"internal_port": { | |
"type": "number" | |
} | |
}, | |
"required": [ | |
"external_port", | |
"internal_port" | |
] | |
} | |
}, | |
"operating_system": { | |
"type": "string" | |
}, | |
"termination_reason": { | |
"type": "string" | |
}, | |
"timestamp_creation": { | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"name", | |
"tags", | |
"type", | |
"public_ip", | |
"gpu_count", | |
"resources", | |
"hostnode_id", | |
"internal_ip", | |
"rental_type", | |
"ssh_command", | |
"port_forwards", | |
"operating_system", | |
"timestamp_creation" | |
] | |
}, | |
"status": { | |
"type": "string", | |
"enum": [ | |
"Failed", | |
"Pending", | |
"Running", | |
"Terminated", | |
"Unknown" | |
], | |
"default": "Unknown" | |
} | |
}, | |
"required": [ | |
"id", | |
"createdAt", | |
"updatedAt", | |
"deletedAt", | |
"userId", | |
"startedAt", | |
"terminatedAt", | |
"externalId", | |
"rentalProvider", | |
"costPerHour", | |
"meta", | |
"status" | |
] | |
} | |
} | |
} | |
} | |
}, | |
"400": { | |
"description": "Invalid input data", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.BAD_REQUEST" | |
} | |
} | |
} | |
}, | |
"401": { | |
"description": "Authorization not provided", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.UNAUTHORIZED" | |
} | |
} | |
} | |
}, | |
"403": { | |
"description": "Insufficient access", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.FORBIDDEN" | |
} | |
} | |
} | |
}, | |
"404": { | |
"description": "Not found", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.NOT_FOUND" | |
} | |
} | |
} | |
}, | |
"500": { | |
"description": "Internal server error", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR" | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/v2/marketplace/virtual-machine-rentals/terminate": { | |
"post": { | |
"operationId": "marketplace-terminateVirtualMachineRental", | |
"summary": "Terminate a virtual machine rental", | |
"description": "Terminate a virtual machine rental", | |
"security": [ | |
{ | |
"Authorization": [] | |
} | |
], | |
"requestBody": { | |
"required": true, | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"rentalId": { | |
"type": "number" | |
}, | |
"reason": { | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"rentalId" | |
] | |
} | |
} | |
} | |
}, | |
"responses": { | |
"200": { | |
"description": "Successful response", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"message": { | |
"type": "string" | |
}, | |
"rentalId": { | |
"type": "number" | |
} | |
}, | |
"required": [ | |
"message", | |
"rentalId" | |
] | |
} | |
} | |
} | |
}, | |
"400": { | |
"description": "Invalid input data", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.BAD_REQUEST" | |
} | |
} | |
} | |
}, | |
"401": { | |
"description": "Authorization not provided", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.UNAUTHORIZED" | |
} | |
} | |
} | |
}, | |
"403": { | |
"description": "Insufficient access", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.FORBIDDEN" | |
} | |
} | |
} | |
}, | |
"500": { | |
"description": "Internal server error", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR" | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/v2/marketplace/bare-metal-rentals": { | |
"post": { | |
"operationId": "marketplace-createBareMetalRental", | |
"summary": "Create a bare metal rental", | |
"description": "Create a bare metal rental", | |
"security": [ | |
{ | |
"Authorization": [] | |
} | |
], | |
"requestBody": { | |
"required": true, | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"networkType": { | |
"type": "string", | |
"enum": [ | |
"infiniband", | |
"ethernet" | |
] | |
}, | |
"gpuCount": { | |
"type": "number", | |
"multipleOf": 8, | |
"minimum": 1, | |
"maximum": 144 | |
} | |
}, | |
"required": [ | |
"networkType", | |
"gpuCount" | |
] | |
} | |
} | |
} | |
}, | |
"responses": { | |
"200": { | |
"description": "Successful response", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"id": { | |
"type": "integer", | |
"minimum": -2147483648, | |
"maximum": 2147483647 | |
}, | |
"createdAt": { | |
"type": "string" | |
}, | |
"updatedAt": { | |
"type": "string", | |
"nullable": true | |
}, | |
"deletedAt": { | |
"type": "string", | |
"nullable": true | |
}, | |
"userId": { | |
"type": "string", | |
"maxLength": 50 | |
}, | |
"startedAt": { | |
"type": "string", | |
"nullable": true | |
}, | |
"terminatedAt": { | |
"type": "string", | |
"nullable": true | |
}, | |
"externalId": { | |
"type": "string" | |
}, | |
"rentalProvider": { | |
"type": "string" | |
}, | |
"costPerHour": { | |
"type": "integer", | |
"minimum": -2147483648, | |
"maximum": 2147483647 | |
}, | |
"meta": {} | |
}, | |
"required": [ | |
"id", | |
"createdAt", | |
"updatedAt", | |
"deletedAt", | |
"userId", | |
"startedAt", | |
"terminatedAt", | |
"externalId", | |
"rentalProvider", | |
"costPerHour" | |
] | |
} | |
} | |
} | |
}, | |
"400": { | |
"description": "Invalid input data", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.BAD_REQUEST" | |
} | |
} | |
} | |
}, | |
"401": { | |
"description": "Authorization not provided", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.UNAUTHORIZED" | |
} | |
} | |
} | |
}, | |
"403": { | |
"description": "Insufficient access", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.FORBIDDEN" | |
} | |
} | |
} | |
}, | |
"500": { | |
"description": "Internal server error", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR" | |
} | |
} | |
} | |
} | |
} | |
}, | |
"get": { | |
"operationId": "marketplace-getActiveBareMetalRentals", | |
"summary": "Get a list of active bare metal rentals", | |
"description": "Get a list of active bare metal rentals", | |
"security": [ | |
{ | |
"Authorization": [] | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "Successful response", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "array", | |
"items": { | |
"type": "object", | |
"properties": { | |
"id": { | |
"type": "integer", | |
"minimum": -2147483648, | |
"maximum": 2147483647 | |
}, | |
"createdAt": { | |
"type": "string" | |
}, | |
"updatedAt": { | |
"type": "string", | |
"nullable": true | |
}, | |
"deletedAt": { | |
"type": "string", | |
"nullable": true | |
}, | |
"userId": { | |
"type": "string", | |
"maxLength": 50 | |
}, | |
"startedAt": { | |
"type": "string", | |
"nullable": true | |
}, | |
"terminatedAt": { | |
"type": "string", | |
"nullable": true | |
}, | |
"externalId": { | |
"type": "string" | |
}, | |
"rentalProvider": { | |
"type": "string" | |
}, | |
"costPerHour": { | |
"type": "integer", | |
"minimum": -2147483648, | |
"maximum": 2147483647 | |
}, | |
"status": { | |
"type": "string", | |
"enum": [ | |
"Failed", | |
"Pending", | |
"Running", | |
"Terminated", | |
"Unknown" | |
], | |
"default": "Unknown" | |
}, | |
"meta": { | |
"type": "object", | |
"properties": { | |
"name": { | |
"type": "string" | |
}, | |
"sub_order": {}, | |
"node_count": { | |
"type": "number" | |
}, | |
"rental_type": { | |
"type": "string", | |
"enum": [ | |
"bare-metal" | |
] | |
}, | |
"network_type": { | |
"type": "string" | |
}, | |
"specs_per_node": { | |
"type": "object", | |
"properties": { | |
"ram_gb": { | |
"type": "number" | |
}, | |
"cpu_count": { | |
"type": "number" | |
}, | |
"cpu_model": { | |
"type": "string" | |
}, | |
"gpu_count": { | |
"type": "number" | |
}, | |
"gpu_model": { | |
"type": "string" | |
}, | |
"storage_gb": { | |
"type": "number" | |
} | |
}, | |
"required": [ | |
"ram_gb", | |
"cpu_count", | |
"cpu_model", | |
"gpu_count", | |
"gpu_model", | |
"storage_gb" | |
] | |
}, | |
"username": { | |
"type": "string" | |
}, | |
"node_networking": { | |
"type": "array", | |
"items": { | |
"type": "object", | |
"properties": { | |
"public_ip": { | |
"type": "string" | |
}, | |
"private_ip": { | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"public_ip", | |
"private_ip" | |
] | |
} | |
}, | |
"creation_timestamp": { | |
"type": "string" | |
}, | |
"termination_reason": { | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"name", | |
"node_count", | |
"rental_type", | |
"network_type", | |
"specs_per_node" | |
] | |
} | |
}, | |
"required": [ | |
"id", | |
"createdAt", | |
"updatedAt", | |
"deletedAt", | |
"userId", | |
"startedAt", | |
"terminatedAt", | |
"externalId", | |
"rentalProvider", | |
"costPerHour", | |
"status", | |
"meta" | |
] | |
} | |
} | |
} | |
} | |
}, | |
"400": { | |
"description": "Invalid input data", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.BAD_REQUEST" | |
} | |
} | |
} | |
}, | |
"401": { | |
"description": "Authorization not provided", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.UNAUTHORIZED" | |
} | |
} | |
} | |
}, | |
"403": { | |
"description": "Insufficient access", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.FORBIDDEN" | |
} | |
} | |
} | |
}, | |
"404": { | |
"description": "Not found", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.NOT_FOUND" | |
} | |
} | |
} | |
}, | |
"500": { | |
"description": "Internal server error", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR" | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/v2/marketplace/bare-metal-rentals/terminate": { | |
"post": { | |
"operationId": "marketplace-terminateBareMetalRental", | |
"summary": "Terminate a bare metal rental", | |
"description": "Terminate a bare metal rental", | |
"security": [ | |
{ | |
"Authorization": [] | |
} | |
], | |
"requestBody": { | |
"required": true, | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"rentalId": { | |
"type": "number" | |
}, | |
"reason": { | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"rentalId" | |
] | |
} | |
} | |
} | |
}, | |
"responses": { | |
"200": { | |
"description": "Successful response", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"message": { | |
"type": "string" | |
}, | |
"rentalId": { | |
"type": "number" | |
} | |
}, | |
"required": [ | |
"message", | |
"rentalId" | |
] | |
} | |
} | |
} | |
}, | |
"400": { | |
"description": "Invalid input data", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.BAD_REQUEST" | |
} | |
} | |
} | |
}, | |
"401": { | |
"description": "Authorization not provided", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.UNAUTHORIZED" | |
} | |
} | |
} | |
}, | |
"403": { | |
"description": "Insufficient access", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.FORBIDDEN" | |
} | |
} | |
} | |
}, | |
"500": { | |
"description": "Internal server error", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR" | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/v2/marketplace/virtual-machine-options": { | |
"get": { | |
"operationId": "marketplace-getVirtualMachineOptions", | |
"summary": "Get a list of virtual machine options", | |
"description": "Get a list of virtual machine options", | |
"security": [ | |
{ | |
"Authorization": [] | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "Successful response", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "array", | |
"items": { | |
"type": "object", | |
"properties": { | |
"gpuCount": { | |
"type": "number" | |
}, | |
"resources": { | |
"type": "object", | |
"properties": { | |
"vcpuCount": { | |
"type": "number" | |
}, | |
"ramGb": { | |
"type": "number" | |
}, | |
"storageGb": { | |
"type": "number" | |
} | |
}, | |
"required": [ | |
"vcpuCount", | |
"ramGb", | |
"storageGb" | |
] | |
}, | |
"costPerHour": { | |
"type": "number" | |
} | |
}, | |
"required": [ | |
"gpuCount", | |
"resources", | |
"costPerHour" | |
] | |
} | |
} | |
} | |
} | |
}, | |
"400": { | |
"description": "Invalid input data", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.BAD_REQUEST" | |
} | |
} | |
} | |
}, | |
"401": { | |
"description": "Authorization not provided", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.UNAUTHORIZED" | |
} | |
} | |
} | |
}, | |
"403": { | |
"description": "Insufficient access", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.FORBIDDEN" | |
} | |
} | |
} | |
}, | |
"404": { | |
"description": "Not found", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.NOT_FOUND" | |
} | |
} | |
} | |
}, | |
"500": { | |
"description": "Internal server error", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR" | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/v2/marketplace/bare-metal-options": { | |
"get": { | |
"operationId": "marketplace-getBareMetalOptions", | |
"summary": "Get a list of bare metal options", | |
"description": "Get a list of bare metal options", | |
"security": [ | |
{ | |
"Authorization": [] | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "Successful response", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"ethernet": { | |
"type": "object", | |
"properties": { | |
"gpuCount": { | |
"type": "number" | |
}, | |
"costPerHour": { | |
"type": "number" | |
}, | |
"specsPerNode": { | |
"type": "object", | |
"properties": { | |
"gpuCount": { | |
"type": "number" | |
}, | |
"cpuModel": { | |
"type": "string" | |
}, | |
"cpuCount": { | |
"type": "number" | |
}, | |
"ramGb": { | |
"type": "number" | |
}, | |
"storageGb": { | |
"type": "number" | |
} | |
}, | |
"required": [ | |
"gpuCount", | |
"cpuModel", | |
"cpuCount", | |
"ramGb", | |
"storageGb" | |
] | |
} | |
}, | |
"required": [ | |
"gpuCount", | |
"costPerHour", | |
"specsPerNode" | |
] | |
}, | |
"infiniband": { | |
"type": "object", | |
"properties": { | |
"gpuCount": { | |
"type": "number" | |
}, | |
"costPerHour": { | |
"type": "number" | |
}, | |
"specsPerNode": { | |
"type": "object", | |
"properties": { | |
"gpuCount": { | |
"type": "number" | |
}, | |
"cpuModel": { | |
"type": "string" | |
}, | |
"cpuCount": { | |
"type": "number" | |
}, | |
"ramGb": { | |
"type": "number" | |
}, | |
"storageGb": { | |
"type": "number" | |
} | |
}, | |
"required": [ | |
"gpuCount", | |
"cpuModel", | |
"cpuCount", | |
"ramGb", | |
"storageGb" | |
] | |
} | |
}, | |
"required": [ | |
"gpuCount", | |
"costPerHour", | |
"specsPerNode" | |
] | |
} | |
}, | |
"required": [ | |
"ethernet", | |
"infiniband" | |
] | |
} | |
} | |
} | |
}, | |
"400": { | |
"description": "Invalid input data", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.BAD_REQUEST" | |
} | |
} | |
} | |
}, | |
"401": { | |
"description": "Authorization not provided", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.UNAUTHORIZED" | |
} | |
} | |
} | |
}, | |
"403": { | |
"description": "Insufficient access", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.FORBIDDEN" | |
} | |
} | |
} | |
}, | |
"404": { | |
"description": "Not found", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.NOT_FOUND" | |
} | |
} | |
} | |
}, | |
"500": { | |
"description": "Internal server error", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR" | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/v2/marketplace/rental-history": { | |
"get": { | |
"operationId": "marketplace-getRentalHistory", | |
"summary": "Get a list of past rentals", | |
"description": "Get a list of past rentals", | |
"security": [ | |
{ | |
"Authorization": [] | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "Successful response", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "array", | |
"items": { | |
"type": "object", | |
"properties": { | |
"id": { | |
"type": "integer", | |
"minimum": -2147483648, | |
"maximum": 2147483647 | |
}, | |
"createdAt": { | |
"type": "string" | |
}, | |
"updatedAt": { | |
"type": "string", | |
"nullable": true | |
}, | |
"deletedAt": { | |
"type": "string", | |
"nullable": true | |
}, | |
"userId": { | |
"type": "string", | |
"maxLength": 50 | |
}, | |
"startedAt": { | |
"type": "string", | |
"nullable": true | |
}, | |
"terminatedAt": { | |
"type": "string", | |
"nullable": true | |
}, | |
"externalId": { | |
"type": "string" | |
}, | |
"rentalProvider": { | |
"type": "string" | |
}, | |
"costPerHour": { | |
"type": "integer", | |
"minimum": -2147483648, | |
"maximum": 2147483647 | |
}, | |
"meta": { | |
"oneOf": [ | |
{ | |
"type": "object", | |
"properties": { | |
"name": { | |
"type": "string" | |
}, | |
"tags": { | |
"type": "array", | |
"items": { | |
"type": "string" | |
} | |
}, | |
"type": { | |
"type": "string" | |
}, | |
"public_ip": { | |
"type": "string" | |
}, | |
"gpu_count": { | |
"type": "number" | |
}, | |
"resources": { | |
"type": "object", | |
"properties": { | |
"ram_gb": { | |
"type": "number" | |
}, | |
"storage_gb": { | |
"type": "number" | |
}, | |
"vcpu_count": { | |
"type": "number" | |
}, | |
"gpus": { | |
"type": "object", | |
"additionalProperties": { | |
"type": "object", | |
"properties": { | |
"count": { | |
"type": "number" | |
} | |
}, | |
"required": [ | |
"count" | |
] | |
} | |
} | |
}, | |
"required": [ | |
"ram_gb", | |
"storage_gb", | |
"vcpu_count", | |
"gpus" | |
] | |
}, | |
"hostnode_id": { | |
"type": "string" | |
}, | |
"internal_ip": { | |
"type": "string" | |
}, | |
"rental_type": { | |
"type": "string", | |
"enum": [ | |
"virtual-machine" | |
] | |
}, | |
"ssh_command": { | |
"type": "string" | |
}, | |
"port_forwards": { | |
"type": "array", | |
"items": { | |
"type": "object", | |
"properties": { | |
"external_port": { | |
"type": "number" | |
}, | |
"internal_port": { | |
"type": "number" | |
} | |
}, | |
"required": [ | |
"external_port", | |
"internal_port" | |
] | |
} | |
}, | |
"operating_system": { | |
"type": "string" | |
}, | |
"termination_reason": { | |
"type": "string" | |
}, | |
"timestamp_creation": { | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"name", | |
"tags", | |
"type", | |
"public_ip", | |
"gpu_count", | |
"resources", | |
"hostnode_id", | |
"internal_ip", | |
"rental_type", | |
"ssh_command", | |
"port_forwards", | |
"operating_system", | |
"timestamp_creation" | |
] | |
}, | |
{ | |
"type": "object", | |
"properties": { | |
"name": { | |
"type": "string" | |
}, | |
"sub_order": {}, | |
"node_count": { | |
"type": "number" | |
}, | |
"rental_type": { | |
"type": "string", | |
"enum": [ | |
"bare-metal" | |
] | |
}, | |
"network_type": { | |
"type": "string" | |
}, | |
"specs_per_node": { | |
"type": "object", | |
"properties": { | |
"ram_gb": { | |
"type": "number" | |
}, | |
"cpu_count": { | |
"type": "number" | |
}, | |
"cpu_model": { | |
"type": "string" | |
}, | |
"gpu_count": { | |
"type": "number" | |
}, | |
"gpu_model": { | |
"type": "string" | |
}, | |
"storage_gb": { | |
"type": "number" | |
} | |
}, | |
"required": [ | |
"ram_gb", | |
"cpu_count", | |
"cpu_model", | |
"gpu_count", | |
"gpu_model", | |
"storage_gb" | |
] | |
}, | |
"username": { | |
"type": "string" | |
}, | |
"node_networking": { | |
"type": "array", | |
"items": { | |
"type": "object", | |
"properties": { | |
"public_ip": { | |
"type": "string" | |
}, | |
"private_ip": { | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"public_ip", | |
"private_ip" | |
] | |
} | |
}, | |
"creation_timestamp": { | |
"type": "string" | |
}, | |
"termination_reason": { | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"name", | |
"node_count", | |
"rental_type", | |
"network_type", | |
"specs_per_node" | |
] | |
} | |
] | |
}, | |
"totalCost": { | |
"type": "number" | |
} | |
}, | |
"required": [ | |
"id", | |
"createdAt", | |
"updatedAt", | |
"deletedAt", | |
"userId", | |
"startedAt", | |
"terminatedAt", | |
"externalId", | |
"rentalProvider", | |
"costPerHour", | |
"meta", | |
"totalCost" | |
] | |
} | |
} | |
} | |
} | |
}, | |
"400": { | |
"description": "Invalid input data", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.BAD_REQUEST" | |
} | |
} | |
} | |
}, | |
"401": { | |
"description": "Authorization not provided", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.UNAUTHORIZED" | |
} | |
} | |
} | |
}, | |
"403": { | |
"description": "Insufficient access", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.FORBIDDEN" | |
} | |
} | |
} | |
}, | |
"404": { | |
"description": "Not found", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.NOT_FOUND" | |
} | |
} | |
} | |
}, | |
"500": { | |
"description": "Internal server error", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR" | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/v2/skypilot/catalog": { | |
"get": { | |
"operationId": "skypilot-getCatalog", | |
"summary": "Provides a list of instances", | |
"description": "A parsed version of the Hyperbolic GPU marketplace, formatted to fit Skypilot conventions", | |
"security": [ | |
{ | |
"Authorization": [] | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "Successful response", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"vms": { | |
"type": "array", | |
"items": { | |
"type": "object", | |
"properties": { | |
"InstanceType": { | |
"type": "string" | |
}, | |
"AcceleratorCount": { | |
"type": "number" | |
}, | |
"AcceleratorName": { | |
"type": "string" | |
}, | |
"MemoryGiB": { | |
"type": "number" | |
}, | |
"StorageGiB": { | |
"type": "number" | |
}, | |
"vCPUs": { | |
"type": "number" | |
}, | |
"Price": { | |
"type": "number" | |
}, | |
"Region": { | |
"type": "string" | |
}, | |
"SpotPrice": { | |
"type": "string" | |
}, | |
"GpuInfo": { | |
"type": "object", | |
"properties": { | |
"Gpus": { | |
"type": "array", | |
"items": { | |
"type": "object", | |
"properties": { | |
"Name": { | |
"type": "string" | |
}, | |
"Manufacturer": { | |
"type": "string" | |
}, | |
"Count": { | |
"type": "number" | |
}, | |
"MemoryInfo": { | |
"type": "object", | |
"properties": { | |
"SizeInMiB": { | |
"type": "number" | |
} | |
}, | |
"required": [ | |
"SizeInMiB" | |
] | |
} | |
}, | |
"required": [ | |
"Name", | |
"Manufacturer", | |
"Count", | |
"MemoryInfo" | |
] | |
} | |
}, | |
"TotalGpuMemoryInMiB": { | |
"type": "number" | |
} | |
}, | |
"required": [ | |
"Gpus", | |
"TotalGpuMemoryInMiB" | |
] | |
} | |
}, | |
"required": [ | |
"InstanceType", | |
"AcceleratorCount", | |
"AcceleratorName", | |
"MemoryGiB", | |
"StorageGiB", | |
"vCPUs", | |
"Price", | |
"Region", | |
"SpotPrice", | |
"GpuInfo" | |
] | |
} | |
} | |
}, | |
"required": [ | |
"vms" | |
] | |
} | |
} | |
} | |
}, | |
"400": { | |
"description": "Invalid input data", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.BAD_REQUEST" | |
} | |
} | |
} | |
}, | |
"401": { | |
"description": "Authorization not provided", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.UNAUTHORIZED" | |
} | |
} | |
} | |
}, | |
"403": { | |
"description": "Insufficient access", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.FORBIDDEN" | |
} | |
} | |
} | |
}, | |
"404": { | |
"description": "Not found", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.NOT_FOUND" | |
} | |
} | |
} | |
}, | |
"500": { | |
"description": "Internal server error", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR" | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/v2/private/ledger-rentals": { | |
"post": { | |
"operationId": "private-ledgerRentalsJob", | |
"summary": "Runs user rental ledgering", | |
"description": "Kicks off an idempotent process that ledgers usage for all active rentals given a timeframe, defaulting to the past whole hour", | |
"security": [ | |
{ | |
"Authorization": [] | |
} | |
], | |
"requestBody": { | |
"required": true, | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"timeAnchor": { | |
"type": "string" | |
} | |
} | |
} | |
} | |
} | |
}, | |
"responses": { | |
"200": { | |
"description": "Successful response", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"timeAnchor": { | |
"type": "string" | |
}, | |
"period": { | |
"type": "object", | |
"properties": { | |
"start": { | |
"type": "string" | |
}, | |
"end": { | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"start", | |
"end" | |
] | |
}, | |
"success": { | |
"type": "array", | |
"items": { | |
"type": "object", | |
"properties": { | |
"userId": { | |
"type": "string" | |
}, | |
"rentalId": { | |
"type": "number" | |
}, | |
"cost": { | |
"type": "number" | |
}, | |
"ledgeredAmount": { | |
"type": "number" | |
}, | |
"idempotencyKey": { | |
"type": "string", | |
"nullable": true | |
}, | |
"message": { | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"userId", | |
"rentalId", | |
"cost", | |
"ledgeredAmount", | |
"idempotencyKey" | |
] | |
} | |
}, | |
"error": { | |
"type": "array", | |
"items": { | |
"type": "object", | |
"properties": { | |
"userId": { | |
"type": "string" | |
}, | |
"rentalId": { | |
"type": "number" | |
}, | |
"cost": { | |
"type": "number" | |
}, | |
"ledgeredAmount": { | |
"type": "number" | |
}, | |
"idempotencyKey": { | |
"type": "string", | |
"nullable": true | |
}, | |
"message": { | |
"type": "string" | |
}, | |
"error": { | |
"type": "string", | |
"default": "" | |
} | |
}, | |
"required": [ | |
"userId", | |
"rentalId", | |
"cost", | |
"ledgeredAmount", | |
"idempotencyKey", | |
"error" | |
] | |
} | |
}, | |
"skipped": { | |
"type": "array", | |
"items": { | |
"type": "object", | |
"properties": { | |
"userId": { | |
"type": "string" | |
}, | |
"rentalId": { | |
"type": "number" | |
}, | |
"cost": { | |
"type": "number" | |
}, | |
"ledgeredAmount": { | |
"type": "number" | |
}, | |
"idempotencyKey": { | |
"type": "string", | |
"nullable": true | |
}, | |
"message": { | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"userId", | |
"rentalId", | |
"cost", | |
"ledgeredAmount", | |
"idempotencyKey" | |
] | |
} | |
} | |
}, | |
"required": [ | |
"timeAnchor", | |
"period", | |
"success", | |
"error", | |
"skipped" | |
] | |
} | |
} | |
} | |
}, | |
"400": { | |
"description": "Invalid input data", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.BAD_REQUEST" | |
} | |
} | |
} | |
}, | |
"401": { | |
"description": "Authorization not provided", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.UNAUTHORIZED" | |
} | |
} | |
} | |
}, | |
"403": { | |
"description": "Insufficient access", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.FORBIDDEN" | |
} | |
} | |
} | |
}, | |
"500": { | |
"description": "Internal server error", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR" | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/v2/private/terminate-rentals": { | |
"post": { | |
"operationId": "private-terminateRentalsJob", | |
"summary": "Runs user rental termination", | |
"description": "Terminates all active rentals as appropriate (eg, zero balance)", | |
"security": [ | |
{ | |
"Authorization": [] | |
} | |
], | |
"requestBody": { | |
"required": true, | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"includeBalanceNotifications": { | |
"type": "boolean" | |
} | |
} | |
} | |
} | |
} | |
}, | |
"responses": { | |
"200": { | |
"description": "Successful response", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"success": { | |
"type": "boolean" | |
} | |
}, | |
"required": [ | |
"success" | |
] | |
} | |
} | |
} | |
}, | |
"400": { | |
"description": "Invalid input data", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.BAD_REQUEST" | |
} | |
} | |
} | |
}, | |
"401": { | |
"description": "Authorization not provided", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.UNAUTHORIZED" | |
} | |
} | |
} | |
}, | |
"403": { | |
"description": "Insufficient access", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.FORBIDDEN" | |
} | |
} | |
} | |
}, | |
"500": { | |
"description": "Internal server error", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR" | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/users/me": { | |
"get": { | |
"operationId": "user-getCurrent", | |
"summary": "Get the current user", | |
"description": "Get the current user", | |
"tags": [ | |
"users" | |
], | |
"security": [ | |
{ | |
"Authorization": [] | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "Successful response", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"apiKey": { | |
"type": "string", | |
"nullable": true | |
}, | |
"createdAt": { | |
"type": "string", | |
"nullable": true | |
}, | |
"email": { | |
"type": "string", | |
"nullable": true, | |
"maxLength": 255 | |
}, | |
"emailVerified": { | |
"type": "boolean", | |
"nullable": true | |
}, | |
"id": { | |
"type": "string", | |
"maxLength": 50 | |
}, | |
"isActive": { | |
"type": "boolean", | |
"nullable": true | |
}, | |
"name": { | |
"type": "string", | |
"nullable": true, | |
"maxLength": 255 | |
}, | |
"picture": { | |
"type": "string", | |
"nullable": true | |
}, | |
"provider": { | |
"type": "string", | |
"nullable": true, | |
"maxLength": 255 | |
}, | |
"publicKey": { | |
"type": "string", | |
"nullable": true | |
}, | |
"onboardedAt": { | |
"type": "string", | |
"nullable": true | |
}, | |
"onboardedFor": { | |
"type": "string", | |
"nullable": true, | |
"maxLength": 50 | |
}, | |
"referralCode": { | |
"type": "string", | |
"nullable": true | |
}, | |
"completedPromos": { | |
"type": "array", | |
"items": { | |
"type": "string" | |
} | |
}, | |
"role": { | |
"type": "string", | |
"enum": [ | |
"user", | |
"pro", | |
"elite" | |
] | |
}, | |
"roles": { | |
"type": "array", | |
"items": { | |
"type": "string" | |
} | |
} | |
}, | |
"required": [ | |
"apiKey", | |
"createdAt", | |
"email", | |
"emailVerified", | |
"id", | |
"isActive", | |
"name", | |
"picture", | |
"provider", | |
"publicKey", | |
"onboardedAt", | |
"onboardedFor", | |
"referralCode", | |
"completedPromos", | |
"role", | |
"roles" | |
] | |
} | |
} | |
} | |
}, | |
"400": { | |
"description": "Invalid input data", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.BAD_REQUEST" | |
} | |
} | |
} | |
}, | |
"401": { | |
"description": "Authorization not provided", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.UNAUTHORIZED" | |
} | |
} | |
} | |
}, | |
"403": { | |
"description": "Insufficient access", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.FORBIDDEN" | |
} | |
} | |
} | |
}, | |
"404": { | |
"description": "Not found", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.NOT_FOUND" | |
} | |
} | |
} | |
}, | |
"500": { | |
"description": "Internal server error", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR" | |
} | |
} | |
} | |
} | |
} | |
}, | |
"delete": { | |
"operationId": "user-deleteCurrentUser", | |
"summary": "Delete the current user", | |
"description": "Delete the current user", | |
"tags": [ | |
"users" | |
], | |
"security": [ | |
{ | |
"Authorization": [] | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "Successful response", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"success": { | |
"type": "boolean" | |
} | |
}, | |
"required": [ | |
"success" | |
] | |
} | |
} | |
} | |
}, | |
"400": { | |
"description": "Invalid input data", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.BAD_REQUEST" | |
} | |
} | |
} | |
}, | |
"401": { | |
"description": "Authorization not provided", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.UNAUTHORIZED" | |
} | |
} | |
} | |
}, | |
"403": { | |
"description": "Insufficient access", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.FORBIDDEN" | |
} | |
} | |
} | |
}, | |
"404": { | |
"description": "Not found", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.NOT_FOUND" | |
} | |
} | |
} | |
}, | |
"500": { | |
"description": "Internal server error", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR" | |
} | |
} | |
} | |
} | |
} | |
}, | |
"put": { | |
"operationId": "user-updateCurrentUser", | |
"summary": "Update the current user", | |
"description": "Update the current user", | |
"security": [ | |
{ | |
"Authorization": [] | |
} | |
], | |
"requestBody": { | |
"required": true, | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"name": { | |
"type": "string", | |
"nullable": true, | |
"maxLength": 255 | |
}, | |
"onboardedFor": { | |
"type": "string", | |
"nullable": true, | |
"maxLength": 50 | |
}, | |
"publicKey": { | |
"type": "string", | |
"nullable": true | |
} | |
} | |
} | |
} | |
} | |
}, | |
"responses": { | |
"200": { | |
"description": "Successful response", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"success": { | |
"type": "boolean" | |
}, | |
"user": { | |
"type": "object", | |
"properties": { | |
"apiKey": { | |
"type": "string", | |
"nullable": true | |
}, | |
"createdAt": { | |
"type": "string", | |
"nullable": true | |
}, | |
"email": { | |
"type": "string", | |
"nullable": true, | |
"maxLength": 255 | |
}, | |
"emailVerified": { | |
"type": "boolean", | |
"nullable": true | |
}, | |
"id": { | |
"type": "string", | |
"maxLength": 50 | |
}, | |
"isActive": { | |
"type": "boolean", | |
"nullable": true | |
}, | |
"name": { | |
"type": "string", | |
"nullable": true, | |
"maxLength": 255 | |
}, | |
"picture": { | |
"type": "string", | |
"nullable": true | |
}, | |
"provider": { | |
"type": "string", | |
"nullable": true, | |
"maxLength": 255 | |
}, | |
"publicKey": { | |
"type": "string", | |
"nullable": true | |
}, | |
"onboardedAt": { | |
"type": "string", | |
"nullable": true | |
}, | |
"onboardedFor": { | |
"type": "string", | |
"nullable": true, | |
"maxLength": 50 | |
}, | |
"referralCode": { | |
"type": "string", | |
"nullable": true | |
} | |
}, | |
"required": [ | |
"apiKey", | |
"createdAt", | |
"email", | |
"emailVerified", | |
"id", | |
"isActive", | |
"name", | |
"picture", | |
"provider", | |
"publicKey", | |
"onboardedAt", | |
"onboardedFor", | |
"referralCode" | |
] | |
} | |
}, | |
"required": [ | |
"success", | |
"user" | |
] | |
} | |
} | |
} | |
}, | |
"400": { | |
"description": "Invalid input data", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.BAD_REQUEST" | |
} | |
} | |
} | |
}, | |
"401": { | |
"description": "Authorization not provided", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.UNAUTHORIZED" | |
} | |
} | |
} | |
}, | |
"403": { | |
"description": "Insufficient access", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.FORBIDDEN" | |
} | |
} | |
} | |
}, | |
"404": { | |
"description": "Not found", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.NOT_FOUND" | |
} | |
} | |
} | |
}, | |
"500": { | |
"description": "Internal server error", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR" | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/users/me/api-key": { | |
"put": { | |
"operationId": "user-resetCurrentUserApiKey", | |
"summary": "Set the API key for the current user", | |
"description": "Set the API key for the current user", | |
"security": [ | |
{ | |
"Authorization": [] | |
} | |
], | |
"requestBody": { | |
"required": true, | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object" | |
} | |
} | |
} | |
}, | |
"responses": { | |
"200": { | |
"description": "Successful response", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"apiKey": { | |
"type": "string", | |
"nullable": true | |
}, | |
"success": { | |
"type": "boolean" | |
} | |
}, | |
"required": [ | |
"apiKey", | |
"success" | |
] | |
} | |
} | |
} | |
}, | |
"400": { | |
"description": "Invalid input data", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.BAD_REQUEST" | |
} | |
} | |
} | |
}, | |
"401": { | |
"description": "Authorization not provided", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.UNAUTHORIZED" | |
} | |
} | |
} | |
}, | |
"403": { | |
"description": "Insufficient access", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.FORBIDDEN" | |
} | |
} | |
} | |
}, | |
"404": { | |
"description": "Not found", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.NOT_FOUND" | |
} | |
} | |
} | |
}, | |
"500": { | |
"description": "Internal server error", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR" | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/users/referrals/by-code/:referralCode": { | |
"get": { | |
"operationId": "referral-getUserByReferralCode", | |
"summary": "Get a user by referral code", | |
"description": "Get a user by referral code", | |
"tags": [ | |
"users" | |
], | |
"security": [ | |
{ | |
"Authorization": [] | |
} | |
], | |
"parameters": [ | |
{ | |
"in": "query", | |
"name": "referralCode", | |
"schema": { | |
"type": "string" | |
}, | |
"required": true | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "Successful response", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"id": { | |
"type": "string", | |
"maxLength": 50 | |
}, | |
"name": { | |
"type": "string", | |
"nullable": true, | |
"maxLength": 255 | |
}, | |
"email": { | |
"type": "string", | |
"nullable": true, | |
"maxLength": 255 | |
}, | |
"referralCode": { | |
"type": "string", | |
"nullable": true | |
} | |
}, | |
"required": [ | |
"id", | |
"name", | |
"email", | |
"referralCode" | |
] | |
} | |
} | |
} | |
}, | |
"400": { | |
"description": "Invalid input data", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.BAD_REQUEST" | |
} | |
} | |
} | |
}, | |
"401": { | |
"description": "Authorization not provided", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.UNAUTHORIZED" | |
} | |
} | |
} | |
}, | |
"403": { | |
"description": "Insufficient access", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.FORBIDDEN" | |
} | |
} | |
} | |
}, | |
"404": { | |
"description": "Not found", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.NOT_FOUND" | |
} | |
} | |
} | |
}, | |
"500": { | |
"description": "Internal server error", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR" | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/users/me/referrals/outbound": { | |
"get": { | |
"operationId": "referral-listCurrentUserOutboundReferrals", | |
"summary": "Get the current user's outbound referrals (Who I referred?)", | |
"description": "Get the current user's outbound referrals (Who I referred?)", | |
"tags": [ | |
"users" | |
], | |
"security": [ | |
{ | |
"Authorization": [] | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "Successful response", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "array", | |
"items": { | |
"type": "object", | |
"properties": { | |
"id": { | |
"type": "integer", | |
"minimum": -2147483648, | |
"maximum": 2147483647 | |
}, | |
"createdAt": { | |
"type": "string" | |
}, | |
"updatedAt": { | |
"type": "string", | |
"nullable": true | |
}, | |
"deletedAt": { | |
"type": "string", | |
"nullable": true | |
}, | |
"referrerId": { | |
"type": "string", | |
"maxLength": 50 | |
}, | |
"referredId": { | |
"type": "string", | |
"maxLength": 50 | |
}, | |
"rewardedAt": { | |
"type": "string", | |
"nullable": true | |
} | |
}, | |
"required": [ | |
"id", | |
"createdAt", | |
"updatedAt", | |
"deletedAt", | |
"referrerId", | |
"referredId", | |
"rewardedAt" | |
] | |
} | |
} | |
} | |
} | |
}, | |
"400": { | |
"description": "Invalid input data", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.BAD_REQUEST" | |
} | |
} | |
} | |
}, | |
"401": { | |
"description": "Authorization not provided", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.UNAUTHORIZED" | |
} | |
} | |
} | |
}, | |
"403": { | |
"description": "Insufficient access", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.FORBIDDEN" | |
} | |
} | |
} | |
}, | |
"404": { | |
"description": "Not found", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.NOT_FOUND" | |
} | |
} | |
} | |
}, | |
"500": { | |
"description": "Internal server error", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR" | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/users/me/referrals/inbound": { | |
"get": { | |
"operationId": "referral-getCurrentUserInboundReferral", | |
"summary": "Get the current user's referrer. (Who referred me?)", | |
"description": "Get the current user's referrer. (Who referred me?)", | |
"tags": [ | |
"users" | |
], | |
"security": [ | |
{ | |
"Authorization": [] | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "Successful response", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"referral": { | |
"type": "object", | |
"properties": { | |
"id": { | |
"type": "integer", | |
"minimum": -2147483648, | |
"maximum": 2147483647 | |
}, | |
"createdAt": { | |
"type": "string" | |
}, | |
"updatedAt": { | |
"type": "string", | |
"nullable": true | |
}, | |
"deletedAt": { | |
"type": "string", | |
"nullable": true | |
}, | |
"referrerId": { | |
"type": "string", | |
"maxLength": 50 | |
}, | |
"referredId": { | |
"type": "string", | |
"maxLength": 50 | |
}, | |
"rewardedAt": { | |
"type": "string", | |
"nullable": true | |
} | |
}, | |
"required": [ | |
"id", | |
"createdAt", | |
"updatedAt", | |
"deletedAt", | |
"referrerId", | |
"referredId", | |
"rewardedAt" | |
] | |
} | |
} | |
} | |
} | |
} | |
}, | |
"400": { | |
"description": "Invalid input data", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.BAD_REQUEST" | |
} | |
} | |
} | |
}, | |
"401": { | |
"description": "Authorization not provided", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.UNAUTHORIZED" | |
} | |
} | |
} | |
}, | |
"403": { | |
"description": "Insufficient access", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.FORBIDDEN" | |
} | |
} | |
} | |
}, | |
"404": { | |
"description": "Not found", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.NOT_FOUND" | |
} | |
} | |
} | |
}, | |
"500": { | |
"description": "Internal server error", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR" | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"/users/me/referrals": { | |
"post": { | |
"operationId": "referral-create", | |
"summary": "Create a referral", | |
"description": "Create a referral", | |
"security": [ | |
{ | |
"Authorization": [] | |
} | |
], | |
"requestBody": { | |
"required": true, | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"referralCode": { | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"referralCode" | |
] | |
} | |
} | |
} | |
}, | |
"responses": { | |
"200": { | |
"description": "Successful response", | |
"content": { | |
"application/json": { | |
"schema": { | |
"type": "object", | |
"properties": { | |
"success": { | |
"type": "boolean" | |
} | |
}, | |
"required": [ | |
"success" | |
] | |
} | |
} | |
} | |
}, | |
"400": { | |
"description": "Invalid input data", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.BAD_REQUEST" | |
} | |
} | |
} | |
}, | |
"401": { | |
"description": "Authorization not provided", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.UNAUTHORIZED" | |
} | |
} | |
} | |
}, | |
"403": { | |
"description": "Insufficient access", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.FORBIDDEN" | |
} | |
} | |
} | |
}, | |
"500": { | |
"description": "Internal server error", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/error.INTERNAL_SERVER_ERROR" | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"components": { | |
"securitySchemes": { | |
"Authorization": { | |
"type": "http", | |
"scheme": "bearer" | |
} | |
}, | |
"schemas": { | |
"error.BAD_REQUEST": { | |
"type": "object", | |
"properties": { | |
"message": { | |
"type": "string", | |
"description": "The error message", | |
"example": "Invalid input data" | |
}, | |
"code": { | |
"type": "string", | |
"description": "The error code", | |
"example": "BAD_REQUEST" | |
}, | |
"issues": { | |
"type": "array", | |
"items": { | |
"type": "object", | |
"properties": { | |
"message": { | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"message" | |
] | |
}, | |
"description": "An array of issues that were responsible for the error", | |
"example": [] | |
} | |
}, | |
"required": [ | |
"message", | |
"code" | |
], | |
"title": "Invalid input data error (400)", | |
"description": "The error information", | |
"example": { | |
"code": "BAD_REQUEST", | |
"message": "Invalid input data", | |
"issues": [] | |
} | |
}, | |
"error.UNAUTHORIZED": { | |
"type": "object", | |
"properties": { | |
"message": { | |
"type": "string", | |
"description": "The error message", | |
"example": "Authorization not provided" | |
}, | |
"code": { | |
"type": "string", | |
"description": "The error code", | |
"example": "UNAUTHORIZED" | |
}, | |
"issues": { | |
"type": "array", | |
"items": { | |
"type": "object", | |
"properties": { | |
"message": { | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"message" | |
] | |
}, | |
"description": "An array of issues that were responsible for the error", | |
"example": [] | |
} | |
}, | |
"required": [ | |
"message", | |
"code" | |
], | |
"title": "Authorization not provided error (401)", | |
"description": "The error information", | |
"example": { | |
"code": "UNAUTHORIZED", | |
"message": "Authorization not provided", | |
"issues": [] | |
} | |
}, | |
"error.FORBIDDEN": { | |
"type": "object", | |
"properties": { | |
"message": { | |
"type": "string", | |
"description": "The error message", | |
"example": "Insufficient access" | |
}, | |
"code": { | |
"type": "string", | |
"description": "The error code", | |
"example": "FORBIDDEN" | |
}, | |
"issues": { | |
"type": "array", | |
"items": { | |
"type": "object", | |
"properties": { | |
"message": { | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"message" | |
] | |
}, | |
"description": "An array of issues that were responsible for the error", | |
"example": [] | |
} | |
}, | |
"required": [ | |
"message", | |
"code" | |
], | |
"title": "Insufficient access error (403)", | |
"description": "The error information", | |
"example": { | |
"code": "FORBIDDEN", | |
"message": "Insufficient access", | |
"issues": [] | |
} | |
}, | |
"error.NOT_FOUND": { | |
"type": "object", | |
"properties": { | |
"message": { | |
"type": "string", | |
"description": "The error message", | |
"example": "Not found" | |
}, | |
"code": { | |
"type": "string", | |
"description": "The error code", | |
"example": "NOT_FOUND" | |
}, | |
"issues": { | |
"type": "array", | |
"items": { | |
"type": "object", | |
"properties": { | |
"message": { | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"message" | |
] | |
}, | |
"description": "An array of issues that were responsible for the error", | |
"example": [] | |
} | |
}, | |
"required": [ | |
"message", | |
"code" | |
], | |
"title": "Not found error (404)", | |
"description": "The error information", | |
"example": { | |
"code": "NOT_FOUND", | |
"message": "Not found", | |
"issues": [] | |
} | |
}, | |
"error.INTERNAL_SERVER_ERROR": { | |
"type": "object", | |
"properties": { | |
"message": { | |
"type": "string", | |
"description": "The error message", | |
"example": "Internal server error" | |
}, | |
"code": { | |
"type": "string", | |
"description": "The error code", | |
"example": "INTERNAL_SERVER_ERROR" | |
}, | |
"issues": { | |
"type": "array", | |
"items": { | |
"type": "object", | |
"properties": { | |
"message": { | |
"type": "string" | |
} | |
}, | |
"required": [ | |
"message" | |
] | |
}, | |
"description": "An array of issues that were responsible for the error", | |
"example": [] | |
} | |
}, | |
"required": [ | |
"message", | |
"code" | |
], | |
"title": "Internal server error error (500)", | |
"description": "The error information", | |
"example": { | |
"code": "INTERNAL_SERVER_ERROR", | |
"message": "Internal server error", | |
"issues": [] | |
} | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment