diff --git a/CHANGELOG.md b/CHANGELOG.md index 08b36f1c..4db5a1a0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,9 +9,12 @@ Unreleased changes are in the `master` branch. ## [Unreleased] +## [0.1.57] - 2023-03-17 + ### Fixed -- `getSchemaForEndpoint` compatibility with fast-json-stringify (array `type` not supported except for `["", "null"]`) +- `getSchemaForEndpoint` compatibility with fast-json-stringify (array in `type` not supported except for `["", "null"]`, fix for nested arbitrary objects) +- generated ts types and schema for `/ipfs/gateway/{IPFS_path}` ## [0.1.56] - 2023-03-15 diff --git a/openapi.yaml b/openapi.yaml index 823b367b..6e03cd57 100644 --- a/openapi.yaml +++ b/openapi.yaml @@ -1,6 +1,6 @@ openapi: 3.1.0 info: - version: 0.1.56 + version: 0.1.57 title: Blockfrost.io ~ API Documentation x-logo: url: https://staging.blockfrost.io/images/logo.svg @@ -4585,6 +4585,11 @@ paths: responses: '200': description: Returns the object content + content: + application/octet-stream: + schema: + type: string + format: binary '400': $ref: '#/components/responses/400' '403': diff --git a/package.json b/package.json index 9d4fbfc0..84d5c98d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@blockfrost/openapi", - "version": "0.1.56", + "version": "0.1.57", "description": "OpenAPI specifications for blockfrost.io", "repository": "git@github.com:blockfrost/openapi.git", "author": "admin@blockfrost.io", @@ -24,11 +24,11 @@ "@vitest/coverage-c8": "^0.25.3", "ajv": "^8.11.2", "core-js": "3.1.4", - "openapi-typescript": "^6.1.0", + "openapi-typescript": "6.1.0", "react-is": "16.8.2", "redoc-cli": "^0.13.20", "rimraf": "^3.0.2", - "typescript": "^4.8.4", + "typescript": "^5.0.2", "vite": "^3.2.4", "vitest": "^0.24.3" }, diff --git a/src/definitions.yaml b/src/definitions.yaml index 52f2480e..070ec6d4 100644 --- a/src/definitions.yaml +++ b/src/definitions.yaml @@ -1,6 +1,6 @@ openapi: 3.1.0 info: - version: "0.1.56" + version: "0.1.57" title: Blockfrost.io ~ API Documentation x-logo: url: https://staging.blockfrost.io/images/logo.svg diff --git a/src/functions/schema.ts b/src/functions/schema.ts index ee4c4f34..4113c01c 100644 --- a/src/functions/schema.ts +++ b/src/functions/schema.ts @@ -15,7 +15,7 @@ const file = fs.readFileSync( ); const spec = YAML.parse(file); -export const convertType = (schema: any) => { +export const transformSchemaElement = (schema: any): any => { // To generate response schema supported by fast-json-stringify // We need to convert array type (["null", ""]) to type: "" with nullable set to true. // Note: Alternative approach for values with multiple types is to use anyOf/oneOf. @@ -23,13 +23,43 @@ export const convertType = (schema: any) => { if (schema.type === 'object' && schema.properties) { // convert type in object properties - for (const property of Object.keys(schema.properties)) { - schema.properties[property] = convertType(schema.properties[property]); + for (const propertyKey of Object.keys(schema.properties)) { + const property = schema.properties[propertyKey]; + if ( + property.type === 'object' && + property.additionalProperties === true && + !property.properties + ) { + if (!property.anyOf && !property.oneOf) { + // Workaround for fast-json-stringify + // If object's property is arbitrary object, + // convert {type: 'object', additionalProperties: true} to {} + delete schema.properties[propertyKey].type; + delete schema.properties[propertyKey].additionalProperties; + } + } + if (property.anyOf) { + if ( + property.anyOf.find( + (p: unknown) => + typeof p === 'object' && + p !== null && + 'type' in p && + p.type === 'null', + ) + ) { + // if array of anyOf items includes {"type": "null"} then set nullable to true on the parent + property.nullable = true; + } + } + schema.properties[propertyKey] = transformSchemaElement( + schema.properties[propertyKey], + ); } return schema; } else if (schema.type === 'array' && schema.items) { // convert type in array items - schema.items = convertType(schema.items); + schema.items = transformSchemaElement(schema.items); return schema; } else if (Array.isArray(schema.type)) { const isNullable = schema.type.includes('null'); @@ -41,11 +71,12 @@ export const convertType = (schema: any) => { )}. Type doesn't support an array with multiple values. Use anyOf/oneOf.`, ); } - return { + + return transformSchemaElement({ ...schema, type: schema.type.filter((a: string) => a !== 'null')[0], nullable: true, - }; + }); } else { // edge case where type is an array with only 1 element if (schema.type.length === 1) { @@ -85,8 +116,12 @@ export const getSchemaForEndpoint = (endpointName: string) => { for (const response of Object.keys(endpoint.responses)) { // success 200 if (response === '200') { + const contentType = + 'application/octet-stream' in endpoint.responses['200'].content + ? 'application/octet-stream' + : 'application/json'; const referenceOrValue = - endpoint.responses['200'].content['application/json'].schema; + endpoint.responses['200'].content[contentType].schema; // is reference -> resolve references if (referenceOrValue['$ref']) { @@ -107,24 +142,24 @@ export const getSchemaForEndpoint = (endpointName: string) => { ); if (schemaReferenceOrValue.type) { - responses.response[200] = convertType({ + responses.response[200] = transformSchemaElement({ ...schemaReferenceOrValue, items: spec.components.schemas[nestedSchemaName], }); } else { - responses.response[200] = convertType( + responses.response[200] = transformSchemaElement( spec.components.schemas[nestedSchemaName], ); } } else { // is not nested reference - responses.response[200] = convertType( + responses.response[200] = transformSchemaElement( spec.components.schemas[schemaName], ); } } else { // is not reference - responses.response[200] = convertType(referenceOrValue); + responses.response[200] = transformSchemaElement(referenceOrValue); } // anyOf case @@ -137,7 +172,9 @@ export const getSchemaForEndpoint = (endpointName: string) => { '', ); - const item = convertType(spec.components.schemas[schemaName]); + const item = transformSchemaElement( + spec.components.schemas[schemaName], + ); anyOfResult['anyOf'].push(item); } @@ -196,6 +233,7 @@ export const getSchemaForEndpoint = (endpointName: string) => { } if (endpointName === '/scripts/{script_hash}/json') { + // TODO: no longer necessary responses.response[200] = scriptsJsonSchema; } } @@ -215,6 +253,22 @@ export const getSchemaForEndpoint = (endpointName: string) => { return responses; }; +export const generateSchemas = () => { + // Returns fast-json-stringify compatible schema object indexed by endpoint name + const endpoints = Object.keys(spec.paths); + + const schemas: Record = {}; + for (const endpoint of endpoints) { + try { + schemas[endpoint] = getSchemaForEndpoint(endpoint); + } catch (error) { + console.error(`Error while processing endpoint ${endpoint}`); + throw error; + } + } + return schemas; +}; + export const getSchema = (schemaName: string) => { if (!spec.components.schemas[schemaName]) { throw Error(`Missing Blockfrost OpenAPI schema with name "${schemaName}".`); diff --git a/src/generated-types.ts b/src/generated-types.ts index f73f4ef0..7b1cd4c6 100644 --- a/src/generated-types.ts +++ b/src/generated-types.ts @@ -3529,7 +3529,11 @@ export interface paths { }; responses: { /** @description Returns the object content */ - 200: never; + 200: { + content: { + "application/octet-stream": string; + }; + }; 400: components["responses"]["400"]; 403: components["responses"]["403"]; 404: components["responses"]["404"]; diff --git a/src/index.ts b/src/index.ts index 45372fcf..85c8801d 100644 --- a/src/index.ts +++ b/src/index.ts @@ -2,6 +2,7 @@ import { getSchemaForEndpoint, getSchema, validateSchema, + generateSchemas, } from './functions/schema'; import { getOnchainMetadata, @@ -13,6 +14,7 @@ import { export { getSchemaForEndpoint, getSchema, + generateSchemas, validateSchema, getOnchainMetadata, getCIPstandard, diff --git a/src/paths/ipfs/gateway/{IPFS_path}/index.yaml b/src/paths/ipfs/gateway/{IPFS_path}/index.yaml index 0c677e96..663b5e76 100644 --- a/src/paths/ipfs/gateway/{IPFS_path}/index.yaml +++ b/src/paths/ipfs/gateway/{IPFS_path}/index.yaml @@ -17,7 +17,15 @@ get: description: Path to the IPFS object responses: "200": + # TODO: If no type is specified then generated TS type is never instead of unknown + # https://github.com/drwpow/openapi-typescript/issues/1039 + # As a workaround return binary data description: Returns the object content + content: + application/octet-stream: + schema: + type: string + format: binary "400": $ref: ../../../../responses/errors/400.yaml "403": diff --git a/test/fixtures/schema.ts b/test/fixtures/schema.ts index b7994e4e..e4b61f87 100644 --- a/test/fixtures/schema.ts +++ b/test/fixtures/schema.ts @@ -1,4 +1,4 @@ -export const convertType = [ +export const transformSchemaElement = [ { description: 'perfectly fine object that does not need transformation', data: { @@ -107,9 +107,27 @@ export const convertType = [ type: 'object', }, }, + { + description: 'object with nested arbitrary object', + data: { + type: 'object', + properties: { + key: { + type: 'object', + additionalProperties: true, + }, + }, + }, + result: { + type: 'object', + properties: { + key: {}, + }, + }, + }, ]; -export const convertTypeError = [ +export const transformSchemaElementError = [ { description: 'array type with 2 types should throw', data: { diff --git a/test/tests/__snapshots__/get-schema-for-endpoint.test.ts.snap b/test/tests/__snapshots__/get-schema-for-endpoint.test.ts.snap new file mode 100644 index 00000000..81ea84bc --- /dev/null +++ b/test/tests/__snapshots__/get-schema-for-endpoint.test.ts.snap @@ -0,0 +1,21117 @@ +// Vitest Snapshot v1 + +exports[`getSchemaForEndpoint > generateSchemas 1`] = ` +{ + "/": { + "response": { + "200": { + "properties": { + "url": { + "example": "https://blockfrost.io/", + "type": "string", + }, + "version": { + "example": "0.1.0", + "type": "string", + }, + }, + "required": [ + "url", + "version", + ], + "type": "object", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/accounts/{stake_address}": { + "params": { + "properties": { + "stake_address": { + "type": "string", + }, + }, + "type": "object", + }, + "response": { + "200": { + "properties": { + "active": { + "description": "Registration state of an account", + "example": true, + "type": "boolean", + }, + "active_epoch": { + "description": "Epoch of the most recent action - registration or deregistration", + "example": 412, + "nullable": true, + "type": "integer", + }, + "controlled_amount": { + "description": "Balance of the account in Lovelaces", + "example": "619154618165", + "type": "string", + }, + "pool_id": { + "description": "Bech32 pool ID that owns the account", + "example": "pool1pu5jlj4q9w9jlxeu370a3c9myx47md5j5m2str0naunn2q3lkdy", + "nullable": true, + "type": "string", + }, + "reserves_sum": { + "description": "Sum of all funds from reserves for the account in the Lovelaces", + "example": "319154618165", + "type": "string", + }, + "rewards_sum": { + "description": "Sum of all rewards for the account in the Lovelaces", + "example": "319154618165", + "type": "string", + }, + "stake_address": { + "description": "Bech32 stake address", + "example": "stake1ux3g2c9dx2nhhehyrezyxpkstartcqmu9hk63qgfkccw5rqttygt7", + "type": "string", + }, + "treasury_sum": { + "description": "Sum of all funds from treasury for the account in the Lovelaces", + "example": "12000000", + "type": "string", + }, + "withdrawable_amount": { + "description": "Sum of available rewards that haven't been withdrawn yet for the account in the Lovelaces", + "example": "319154618165", + "type": "string", + }, + "withdrawals_sum": { + "description": "Sum of all the withdrawals for the account in Lovelaces", + "example": "12125369253", + "type": "string", + }, + }, + "required": [ + "stake_address", + "active", + "active_epoch", + "controlled_amount", + "rewards_sum", + "withdrawals_sum", + "reserves_sum", + "treasury_sum", + "withdrawable_amount", + "pool_id", + ], + "type": "object", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/accounts/{stake_address}/addresses": { + "params": { + "properties": { + "stake_address": { + "type": "string", + }, + }, + "type": "object", + }, + "querystring": { + "properties": { + "count": { + "default": 100, + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "order": { + "default": "asc", + "enum": [ + "asc", + "desc", + ], + "type": "string", + }, + "page": { + "default": 1, + "maximum": 21474836, + "minimum": 1, + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "example": [ + { + "address": "addr1qx2kd28nq8ac5prwg32hhvudlwggpgfp8utlyqxu6wqgz62f79qsdmm5dsknt9ecr5w468r9ey0fxwkdrwh08ly3tu9sy0f4qd", + }, + { + "address": "addr1qys3czp8s9thc6u2fqed9yq3h24nyw28uk0m6mkgn9dkckjf79qsdmm5dsknt9ecr5w468r9ey0fxwkdrwh08ly3tu9suth4w4", + }, + { + "address": "addr1q8j55h253zcvl326sk5qdt2n8z7eghzspe0ekxgncr796s2f79qsdmm5dsknt9ecr5w468r9ey0fxwkdrwh08ly3tu9sjmd35m", + }, + { + "address": "addr1q8f7gxrprank3drhx8k5grlux7ene0nlwun8y9thu8mc3yjf79qsdmm5dsknt9ecr5w468r9ey0fxwkdrwh08ly3tu9sls6vnt", + }, + ], + "items": { + "properties": { + "address": { + "description": "Address associated with the stake key", + "type": "string", + }, + }, + "required": [ + "address", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/accounts/{stake_address}/addresses/assets": { + "params": { + "properties": { + "stake_address": { + "type": "string", + }, + }, + "type": "object", + }, + "querystring": { + "properties": { + "count": { + "default": 100, + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "order": { + "default": "asc", + "enum": [ + "asc", + "desc", + ], + "type": "string", + }, + "page": { + "default": 1, + "maximum": 21474836, + "minimum": 1, + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "example": [ + { + "quantity": "1", + "unit": "d5e6bf0500378d4f0da4e8dde6becec7621cd8cbf5cbb9b87013d4cc537061636542756433343132", + }, + { + "quantity": "125", + "unit": "b0d07d45fe9514f80213f4020e5a61241458be626841cde717cb38a76e7574636f696e", + }, + ], + "items": { + "description": "The sum of all assets of all addresses associated with a given account", + "properties": { + "quantity": { + "description": "The quantity of the unit", + "type": "string", + }, + "unit": { + "description": "The unit of the value", + "format": "Concatenation of asset policy_id and hex-encoded asset_name", + "type": "string", + }, + }, + "required": [ + "unit", + "quantity", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/accounts/{stake_address}/addresses/total": { + "params": { + "properties": { + "stake_address": { + "type": "string", + }, + }, + "type": "object", + }, + "response": { + "200": { + "properties": { + "received_sum": { + "example": [ + { + "quantity": "42000000", + "unit": "lovelace", + }, + { + "quantity": "12", + "unit": "b0d07d45fe9514f80213f4020e5a61241458be626841cde717cb38a76e7574636f696e", + }, + ], + "items": { + "description": "The sum of all the UTXO per asset for all addresses associated with the account", + "properties": { + "quantity": { + "description": "The quantity of the unit", + "type": "string", + }, + "unit": { + "description": "The unit of the value", + "format": "Lovelace or concatenation of asset policy_id and hex-encoded asset_name", + "type": "string", + }, + }, + "required": [ + "unit", + "quantity", + ], + "type": "object", + }, + "type": "array", + }, + "sent_sum": { + "example": [ + { + "quantity": "42000000", + "unit": "lovelace", + }, + { + "quantity": "12", + "unit": "b0d07d45fe9514f80213f4020e5a61241458be626841cde717cb38a76e7574636f696e", + }, + ], + "items": { + "description": "The sum of all the UTXO per asset for all addresses associated with the account", + "properties": { + "quantity": { + "description": "The quantity of the unit", + "type": "string", + }, + "unit": { + "description": "The unit of the value", + "format": "Lovelace or concatenation of asset policy_id and hex-encoded asset_name", + "type": "string", + }, + }, + "required": [ + "unit", + "quantity", + ], + "type": "object", + }, + "type": "array", + }, + "stake_address": { + "description": "Bech32 encoded stake address", + "example": "stake1u9l5q5jwgelgagzyt6nuaasefgmn8pd25c8e9qpeprq0tdcp0e3uk", + "type": "string", + }, + "tx_count": { + "description": "Count of all transactions for all addresses associated with the account", + "example": 12, + "type": "integer", + }, + }, + "required": [ + "stake_address", + "received_sum", + "sent_sum", + "tx_count", + ], + "type": "object", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/accounts/{stake_address}/delegations": { + "params": { + "properties": { + "stake_address": { + "type": "string", + }, + }, + "type": "object", + }, + "querystring": { + "properties": { + "count": { + "default": 100, + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "order": { + "default": "asc", + "enum": [ + "asc", + "desc", + ], + "type": "string", + }, + "page": { + "default": 1, + "maximum": 21474836, + "minimum": 1, + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "example": [ + { + "active_epoch": 210, + "amount": "12695385", + "pool_id": "pool1pu5jlj4q9w9jlxeu370a3c9myx47md5j5m2str0naunn2q3lkdy", + "tx_hash": "2dd15e0ef6e6a17841cb9541c27724072ce4d4b79b91e58432fbaa32d9572531", + }, + { + "active_epoch": 242, + "amount": "12691385", + "pool_id": "pool1kchver88u3kygsak8wgll7htr8uxn5v35lfrsyy842nkscrzyvj", + "tx_hash": "1a0570af966fb355a7160e4f82d5a80b8681b7955f5d44bec0dde628516157f0", + }, + ], + "items": { + "properties": { + "active_epoch": { + "description": "Epoch in which the delegation becomes active", + "example": 210, + "type": "integer", + }, + "amount": { + "description": "Rewards for given epoch in Lovelaces", + "type": "string", + }, + "pool_id": { + "description": "Bech32 ID of pool being delegated to", + "type": "string", + }, + "tx_hash": { + "description": "Hash of the transaction containing the delegation", + "type": "string", + }, + }, + "required": [ + "active_epoch", + "tx_hash", + "amount", + "pool_id", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/accounts/{stake_address}/history": { + "params": { + "properties": { + "stake_address": { + "type": "string", + }, + }, + "type": "object", + }, + "querystring": { + "properties": { + "count": { + "default": 100, + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "order": { + "default": "asc", + "enum": [ + "asc", + "desc", + ], + "type": "string", + }, + "page": { + "default": 1, + "maximum": 21474836, + "minimum": 1, + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "example": [ + { + "active_epoch": 210, + "amount": "12695385", + "pool_id": "pool1pu5jlj4q9w9jlxeu370a3c9myx47md5j5m2str0naunn2q3lkdy", + }, + { + "active_epoch": 211, + "amount": "22695385", + "pool_id": "pool1pu5jlj4q9w9jlxeu370a3c9myx47md5j5m2str0naunn2q3lkdy", + }, + ], + "items": { + "properties": { + "active_epoch": { + "description": "Epoch in which the stake was active", + "example": 210, + "type": "integer", + }, + "amount": { + "description": "Stake amount in Lovelaces", + "type": "string", + }, + "pool_id": { + "description": "Bech32 ID of pool being delegated to", + "type": "string", + }, + }, + "required": [ + "active_epoch", + "amount", + "pool_id", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/accounts/{stake_address}/mirs": { + "params": { + "properties": { + "stake_address": { + "type": "string", + }, + }, + "type": "object", + }, + "querystring": { + "properties": { + "count": { + "default": 100, + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "order": { + "default": "asc", + "enum": [ + "asc", + "desc", + ], + "type": "string", + }, + "page": { + "default": 1, + "maximum": 21474836, + "minimum": 1, + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "example": [ + { + "amount": "2193707473", + "tx_hash": "69705bba1d687a816ff5a04ec0c358a1f1ef075ab7f9c6cc2763e792581cec6d", + }, + { + "amount": "14520198574", + "tx_hash": "baaa77b63d4d7d2bb3ab02c9b85978c2092c336dede7f59e31ad65452d510c13", + }, + ], + "items": { + "properties": { + "amount": { + "description": "MIR amount in Lovelaces", + "type": "string", + }, + "tx_hash": { + "description": "Hash of the transaction containing the MIR", + "type": "string", + }, + }, + "required": [ + "tx_hash", + "amount", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/accounts/{stake_address}/registrations": { + "params": { + "properties": { + "stake_address": { + "type": "string", + }, + }, + "type": "object", + }, + "querystring": { + "properties": { + "count": { + "default": 100, + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "order": { + "default": "asc", + "enum": [ + "asc", + "desc", + ], + "type": "string", + }, + "page": { + "default": 1, + "maximum": 21474836, + "minimum": 1, + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "example": [ + { + "action": "registered", + "tx_hash": "2dd15e0ef6e6a17841cb9541c27724072ce4d4b79b91e58432fbaa32d9572531", + }, + { + "action": "deregistered", + "tx_hash": "1a0570af966fb355a7160e4f82d5a80b8681b7955f5d44bec0dde628516157f0", + }, + ], + "items": { + "properties": { + "action": { + "description": "Action in the certificate", + "enum": [ + "registered", + "deregistered", + ], + "type": "string", + }, + "tx_hash": { + "description": "Hash of the transaction containing the (de)registration certificate", + "type": "string", + }, + }, + "required": [ + "tx_hash", + "action", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/accounts/{stake_address}/rewards": { + "params": { + "properties": { + "stake_address": { + "type": "string", + }, + }, + "type": "object", + }, + "querystring": { + "properties": { + "count": { + "default": 100, + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "order": { + "default": "asc", + "enum": [ + "asc", + "desc", + ], + "type": "string", + }, + "page": { + "default": 1, + "maximum": 21474836, + "minimum": 1, + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "example": [ + { + "amount": "12695385", + "epoch": 215, + "pool_id": "pool1pu5jlj4q9w9jlxeu370a3c9myx47md5j5m2str0naunn2q3lkdy", + "type": "member", + }, + { + "amount": "3586329", + "epoch": 216, + "pool_id": "pool1pu5jlj4q9w9jlxeu370a3c9myx47md5j5m2str0naunn2q3lkdy", + "type": "member", + }, + { + "amount": "1", + "epoch": 217, + "pool_id": "pool1pu5jlj4q9w9jlxeu370a3c9myx47md5j5m2str0naunn2q3lkdy", + "type": "member", + }, + { + "amount": "1337", + "epoch": 217, + "pool_id": "pool1cytwr0n7eas6du2h2xshl8ypa1yqr18f0erlhhjcuczysiunjcs", + "type": "leader", + }, + { + "amount": "1395265", + "epoch": 218, + "pool_id": "pool1pu5jlj4q9w9jlxeu370a3c9myx47md5j5m2str0naunn2q3lkdy", + "type": "member", + }, + { + "amount": "500000000", + "epoch": 218, + "pool_id": "pool1cytwr0n7eas6du2h2xshl8ypa1yqr18f0erlhhjcuczysiunjcs", + "type": "pool_deposit_refund", + }, + ], + "items": { + "properties": { + "amount": { + "description": "Rewards for given epoch in Lovelaces", + "type": "string", + }, + "epoch": { + "description": "Epoch of the associated reward", + "type": "integer", + }, + "pool_id": { + "description": "Bech32 pool ID being delegated to", + "type": "string", + }, + "type": { + "description": "Type of the reward", + "enum": [ + "leader", + "member", + "pool_deposit_refund", + ], + "type": "string", + }, + }, + "required": [ + "epoch", + "amount", + "pool_id", + "type", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/accounts/{stake_address}/withdrawals": { + "params": { + "properties": { + "stake_address": { + "type": "string", + }, + }, + "type": "object", + }, + "querystring": { + "properties": { + "count": { + "default": 100, + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "order": { + "default": "asc", + "enum": [ + "asc", + "desc", + ], + "type": "string", + }, + "page": { + "default": 1, + "maximum": 21474836, + "minimum": 1, + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "example": [ + { + "amount": "454541212442", + "tx_hash": "48a9625c841eea0dd2bb6cf551eabe6523b7290c9ce34be74eedef2dd8f7ecc5", + }, + { + "amount": "97846969", + "tx_hash": "4230b0cbccf6f449f0847d8ad1d634a7a49df60d8c142bb8cc2dbc8ca03d9e34", + }, + ], + "items": { + "properties": { + "amount": { + "description": "Withdrawal amount in Lovelaces", + "type": "string", + }, + "tx_hash": { + "description": "Hash of the transaction containing the withdrawal", + "type": "string", + }, + }, + "required": [ + "tx_hash", + "amount", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/addresses/{address}": { + "params": { + "properties": { + "address": { + "type": "string", + }, + }, + "type": "object", + }, + "response": { + "200": { + "properties": { + "address": { + "description": "Bech32 encoded addresses", + "example": "addr1qxqs59lphg8g6qndelq8xwqn60ag3aeyfcp33c2kdp46a09re5df3pzwwmyq946axfcejy5n4x0y99wqpgtp2gd0k09qsgy6pz", + "type": "string", + }, + "amount": { + "example": [ + { + "quantity": "42000000", + "unit": "lovelace", + }, + { + "quantity": "12", + "unit": "b0d07d45fe9514f80213f4020e5a61241458be626841cde717cb38a76e7574636f696e", + }, + ], + "items": { + "description": "The sum of all the UTXO per asset", + "properties": { + "quantity": { + "description": "The quantity of the unit", + "type": "string", + }, + "unit": { + "description": "The unit of the value", + "format": "Lovelace or concatenation of asset policy_id and hex-encoded asset_name", + "type": "string", + }, + }, + "required": [ + "unit", + "quantity", + ], + "type": "object", + }, + "type": "array", + }, + "script": { + "description": "True if this is a script address", + "example": false, + "type": "boolean", + }, + "stake_address": { + "description": "Stake address that controls the key", + "example": "stake1ux3g2c9dx2nhhehyrezyxpkstartcqmu9hk63qgfkccw5rqttygt7", + "nullable": true, + "type": "string", + }, + "type": { + "description": "Address era", + "enum": [ + "byron", + "shelley", + ], + "example": "shelley", + "type": "string", + }, + }, + "required": [ + "address", + "amount", + "stake_address", + "type", + "script", + ], + "type": "object", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/addresses/{address}/extended": { + "params": { + "properties": { + "address": { + "type": "string", + }, + }, + "type": "object", + }, + "response": { + "200": { + "properties": { + "address": { + "description": "Bech32 encoded addresses", + "example": "addr1qxqs59lphg8g6qndelq8xwqn60ag3aeyfcp33c2kdp46a09re5df3pzwwmyq946axfcejy5n4x0y99wqpgtp2gd0k09qsgy6pz", + "type": "string", + }, + "amount": { + "example": [ + { + "decimals": 6, + "has_nft_onchain_metadata": false, + "quantity": "42000000", + "unit": "lovelace", + }, + { + "decimals": null, + "has_nft_onchain_metadata": true, + "quantity": "12", + "unit": "b0d07d45fe9514f80213f4020e5a61241458be626841cde717cb38a76e7574636f696e", + }, + ], + "items": { + "description": "The sum of all the UTXO per asset", + "properties": { + "decimals": { + "description": "Number of decimal places of the asset unit. Primary data source is CIP68 reference NFT with a fallback to off-chain metadata.", + "nullable": true, + "type": "integer", + }, + "has_nft_onchain_metadata": { + "description": "True if the latest minting transaction includes metadata (best-effort)", + "type": "boolean", + }, + "quantity": { + "description": "The quantity of the unit", + "type": "string", + }, + "unit": { + "description": "The unit of the value", + "format": "Lovelace or concatenation of asset policy_id and hex-encoded asset_name", + "type": "string", + }, + }, + "required": [ + "unit", + "quantity", + "decimals", + "has_nft_onchain_metadata", + ], + "type": "object", + }, + "type": "array", + }, + "script": { + "description": "True if this is a script address", + "example": false, + "type": "boolean", + }, + "stake_address": { + "description": "Stake address that controls the key", + "example": "stake1ux3g2c9dx2nhhehyrezyxpkstartcqmu9hk63qgfkccw5rqttygt7", + "nullable": true, + "type": "string", + }, + "type": { + "description": "Address era", + "enum": [ + "byron", + "shelley", + ], + "example": "shelley", + "type": "string", + }, + }, + "required": [ + "address", + "amount", + "stake_address", + "type", + "script", + ], + "type": "object", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/addresses/{address}/total": { + "params": { + "properties": { + "address": { + "type": "string", + }, + }, + "type": "object", + }, + "response": { + "200": { + "properties": { + "address": { + "description": "Bech32 encoded address", + "example": "addr1qxqs59lphg8g6qndelq8xwqn60ag3aeyfcp33c2kdp46a09re5df3pzwwmyq946axfcejy5n4x0y99wqpgtp2gd0k09qsgy6pz", + "type": "string", + }, + "received_sum": { + "example": [ + { + "quantity": "42000000", + "unit": "lovelace", + }, + { + "quantity": "12", + "unit": "b0d07d45fe9514f80213f4020e5a61241458be626841cde717cb38a76e7574636f696e", + }, + ], + "items": { + "description": "The sum of all the UTXO per asset", + "properties": { + "quantity": { + "description": "The quantity of the unit", + "type": "string", + }, + "unit": { + "description": "The unit of the value", + "format": "Lovelace or concatenation of asset policy_id and hex-encoded asset_name", + "type": "string", + }, + }, + "required": [ + "unit", + "quantity", + ], + "type": "object", + }, + "type": "array", + }, + "sent_sum": { + "example": [ + { + "quantity": "42000000", + "unit": "lovelace", + }, + { + "quantity": "12", + "unit": "b0d07d45fe9514f80213f4020e5a61241458be626841cde717cb38a76e7574636f696e", + }, + ], + "items": { + "description": "The sum of all the UTXO per asset", + "properties": { + "quantity": { + "description": "The quantity of the unit", + "type": "string", + }, + "unit": { + "description": "The unit of the value", + "format": "Lovelace or concatenation of asset policy_id and hex-encoded asset_name", + "type": "string", + }, + }, + "required": [ + "unit", + "quantity", + ], + "type": "object", + }, + "type": "array", + }, + "tx_count": { + "description": "Count of all transactions on the address", + "example": 12, + "type": "integer", + }, + }, + "required": [ + "address", + "received_sum", + "sent_sum", + "tx_count", + ], + "type": "object", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/addresses/{address}/transactions": { + "params": { + "properties": { + "address": { + "type": "string", + }, + }, + "type": "object", + }, + "querystring": { + "properties": { + "count": { + "default": 100, + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "from": { + "type": "string", + }, + "order": { + "default": "asc", + "enum": [ + "asc", + "desc", + ], + "type": "string", + }, + "page": { + "default": 1, + "maximum": 21474836, + "minimum": 1, + "type": "integer", + }, + "to": { + "type": "string", + }, + }, + "type": "object", + }, + "response": { + "200": { + "example": [ + { + "block_height": 69, + "block_time": 1635505891, + "tx_hash": "8788591983aa73981fc92d6cddbbe643959f5a784e84b8bee0db15823f575a5b", + "tx_index": 6, + }, + { + "block_height": 4547, + "block_time": 1635505987, + "tx_hash": "52e748c4dec58b687b90b0b40d383b9fe1f24c1a833b7395cdf07dd67859f46f", + "tx_index": 9, + }, + { + "block_height": 564654, + "block_time": 1834505492, + "tx_hash": "e8073fd5318ff43eca18a852527166aa8008bee9ee9e891f585612b7e4ba700b", + "tx_index": 0, + }, + ], + "items": { + "properties": { + "block_height": { + "description": "Block height", + "type": "integer", + }, + "block_time": { + "description": "Block creation time in UNIX time", + "type": "integer", + }, + "tx_hash": { + "description": "Hash of the transaction", + "type": "string", + }, + "tx_index": { + "description": "Transaction index within the block", + "type": "integer", + }, + }, + "required": [ + "tx_hash", + "tx_index", + "block_height", + "block_time", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/addresses/{address}/txs": { + "params": { + "properties": { + "address": { + "type": "string", + }, + }, + "type": "object", + }, + "querystring": { + "properties": { + "count": { + "default": 100, + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "order": { + "default": "asc", + "enum": [ + "asc", + "desc", + ], + "type": "string", + }, + "page": { + "default": 1, + "maximum": 21474836, + "minimum": 1, + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "example": [ + "2dd15e0ef6e6a17841cb9541c27724072ce4d4b79b91e58432fbaa32d9572531", + "1a0570af966fb355a7160e4f82d5a80b8681b7955f5d44bec0dde628516157f0", + ], + "items": { + "description": "Hash of the transaction", + "type": "string", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/addresses/{address}/utxos": { + "params": { + "properties": { + "address": { + "type": "string", + }, + }, + "type": "object", + }, + "querystring": { + "properties": { + "count": { + "default": 100, + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "order": { + "default": "asc", + "enum": [ + "asc", + "desc", + ], + "type": "string", + }, + "page": { + "default": 1, + "maximum": 21474836, + "minimum": 1, + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "example": [ + { + "address": "addr1qxqs59lphg8g6qndelq8xwqn60ag3aeyfcp33c2kdp46a09re5df3pzwwmyq946axfcejy5n4x0y99wqpgtp2gd0k09qsgy6pz", + "amount": [ + { + "quantity": "42000000", + "unit": "lovelace", + }, + ], + "block": "7eb8e27d18686c7db9a18f8bbcfe34e3fed6e047afaa2d969904d15e934847e6", + "data_hash": "9e478573ab81ea7a8e31891ce0648b81229f408d596a3483e6f4f9b92d3cf710", + "inline_datum": null, + "output_index": 0, + "reference_script_hash": null, + "tx_hash": "39a7a284c2a0948189dc45dec670211cd4d72f7b66c5726c08d9b3df11e44d58", + }, + { + "address": "addr1qxqs59lphg8g6qndelq8xwqn60ag3aeyfcp33c2kdp46a09re5df3pzwwmyq946axfcejy5n4x0y99wqpgtp2gd0k09qsgy6pz", + "amount": [ + { + "quantity": "729235000", + "unit": "lovelace", + }, + ], + "block": "953f1b80eb7c11a7ffcd67cbd4fde66e824a451aca5a4065725e5174b81685b7", + "data_hash": null, + "inline_datum": null, + "output_index": 0, + "reference_script_hash": null, + "tx_hash": "4c4e67bafa15e742c13c592b65c8f74c769cd7d9af04c848099672d1ba391b49", + }, + { + "address": "addr1qxqs59lphg8g6qndelq8xwqn60ag3aeyfcp33c2kdp46a09re5df3pzwwmyq946axfcejy5n4x0y99wqpgtp2gd0k09qsgy6pz", + "amount": [ + { + "quantity": "42000000", + "unit": "lovelace", + }, + { + "quantity": "12", + "unit": "b0d07d45fe9514f80213f4020e5a61241458be626841cde717cb38a76e7574636f696e", + }, + ], + "block": "5c571f83fe6c784d3fbc223792627ccf0eea96773100f9aedecf8b1eda4544d7", + "data_hash": null, + "inline_datum": null, + "output_index": 1, + "reference_script_hash": null, + "tx_hash": "768c63e27a1c816a83dc7b07e78af673b2400de8849ea7e7b734ae1333d100d2", + }, + ], + "items": { + "properties": { + "address": { + "description": "Bech32 encoded addresses - useful when querying by payment_cred", + "example": "addr1qxqs59lphg8g6qndelq8xwqn60ag3aeyfcp33c2kdp46a09re5df3pzwwmyq946axfcejy5n4x0y99wqpgtp2gd0k09qsgy6pz", + "type": "string", + }, + "amount": { + "items": { + "description": "The sum of all the UTXO per asset", + "properties": { + "quantity": { + "description": "The quantity of the unit", + "type": "string", + }, + "unit": { + "description": "The unit of the value", + "format": "Lovelace or concatenation of asset policy_id and hex-encoded asset_name", + "type": "string", + }, + }, + "required": [ + "unit", + "quantity", + ], + "type": "object", + }, + "type": "array", + }, + "block": { + "description": "Block hash of the UTXO", + "type": "string", + }, + "data_hash": { + "description": "The hash of the transaction output datum", + "nullable": true, + "type": "string", + }, + "inline_datum": { + "description": "CBOR encoded inline datum", + "example": "19a6aa", + "nullable": true, + "type": "string", + }, + "output_index": { + "description": "UTXO index in the transaction", + "type": "integer", + }, + "reference_script_hash": { + "description": "The hash of the reference script of the output", + "example": "13a3efd825703a352a8f71f4e2758d08c28c564e8dfcce9f77776ad1", + "nullable": true, + "type": "string", + }, + "tx_hash": { + "description": "Transaction hash of the UTXO", + "type": "string", + }, + "tx_index": { + "deprecated": true, + "description": "UTXO index in the transaction", + "type": "integer", + }, + }, + "required": [ + "address", + "tx_hash", + "tx_index", + "output_index", + "amount", + "block", + "data_hash", + "inline_datum", + "reference_script_hash", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/addresses/{address}/utxos/{asset}": { + "params": { + "properties": { + "address": { + "type": "string", + }, + "asset": { + "type": "string", + }, + }, + "type": "object", + }, + "querystring": { + "properties": { + "count": { + "default": 100, + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "order": { + "default": "asc", + "enum": [ + "asc", + "desc", + ], + "type": "string", + }, + "page": { + "default": 1, + "maximum": 21474836, + "minimum": 1, + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "example": [ + { + "address": "addr1qxqs59lphg8g6qndelq8xwqn60ag3aeyfcp33c2kdp46a09re5df3pzwwmyq946axfcejy5n4x0y99wqpgtp2gd0k09qsgy6pz", + "amount": [ + { + "quantity": "42000000", + "unit": "lovelace", + }, + ], + "block": "7eb8e27d18686c7db9a18f8bbcfe34e3fed6e047afaa2d969904d15e934847e6", + "data_hash": "9e478573ab81ea7a8e31891ce0648b81229f408d596a3483e6f4f9b92d3cf710", + "inline_datum": null, + "output_index": 0, + "reference_script_hash": null, + "tx_hash": "39a7a284c2a0948189dc45dec670211cd4d72f7b66c5726c08d9b3df11e44d58", + }, + { + "address": "addr1qxqs59lphg8g6qndelq8xwqn60ag3aeyfcp33c2kdp46a09re5df3pzwwmyq946axfcejy5n4x0y99wqpgtp2gd0k09qsgy6pz", + "amount": [ + { + "quantity": "729235000", + "unit": "lovelace", + }, + ], + "block": "953f1b80eb7c11a7ffcd67cbd4fde66e824a451aca5a4065725e5174b81685b7", + "data_hash": null, + "inline_datum": null, + "output_index": 0, + "reference_script_hash": null, + "tx_hash": "4c4e67bafa15e742c13c592b65c8f74c769cd7d9af04c848099672d1ba391b49", + }, + { + "address": "addr1qxqs59lphg8g6qndelq8xwqn60ag3aeyfcp33c2kdp46a09re5df3pzwwmyq946axfcejy5n4x0y99wqpgtp2gd0k09qsgy6pz", + "amount": [ + { + "quantity": "42000000", + "unit": "lovelace", + }, + { + "quantity": "12", + "unit": "b0d07d45fe9514f80213f4020e5a61241458be626841cde717cb38a76e7574636f696e", + }, + ], + "block": "5c571f83fe6c784d3fbc223792627ccf0eea96773100f9aedecf8b1eda4544d7", + "data_hash": null, + "inline_datum": null, + "output_index": 1, + "reference_script_hash": null, + "tx_hash": "768c63e27a1c816a83dc7b07e78af673b2400de8849ea7e7b734ae1333d100d2", + }, + ], + "items": { + "properties": { + "address": { + "description": "Bech32 encoded addresses - useful when querying by payment_cred", + "example": "addr1qxqs59lphg8g6qndelq8xwqn60ag3aeyfcp33c2kdp46a09re5df3pzwwmyq946axfcejy5n4x0y99wqpgtp2gd0k09qsgy6pz", + "type": "string", + }, + "amount": { + "items": { + "description": "The sum of all the UTXO per asset", + "properties": { + "quantity": { + "description": "The quantity of the unit", + "type": "string", + }, + "unit": { + "description": "The unit of the value", + "format": "Lovelace or concatenation of asset policy_id and hex-encoded asset_name", + "type": "string", + }, + }, + "required": [ + "unit", + "quantity", + ], + "type": "object", + }, + "type": "array", + }, + "block": { + "description": "Block hash of the UTXO", + "type": "string", + }, + "data_hash": { + "description": "The hash of the transaction output datum", + "nullable": true, + "type": "string", + }, + "inline_datum": { + "description": "CBOR encoded inline datum", + "example": "19a6aa", + "nullable": true, + "type": "string", + }, + "output_index": { + "description": "UTXO index in the transaction", + "type": "integer", + }, + "reference_script_hash": { + "description": "The hash of the reference script of the output", + "example": "13a3efd825703a352a8f71f4e2758d08c28c564e8dfcce9f77776ad1", + "nullable": true, + "type": "string", + }, + "tx_hash": { + "description": "Transaction hash of the UTXO", + "type": "string", + }, + "tx_index": { + "deprecated": true, + "description": "UTXO index in the transaction", + "type": "integer", + }, + }, + "required": [ + "address", + "tx_hash", + "tx_index", + "output_index", + "amount", + "block", + "data_hash", + "inline_datum", + "reference_script_hash", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/assets": { + "querystring": { + "properties": { + "count": { + "default": 100, + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "order": { + "default": "asc", + "enum": [ + "asc", + "desc", + ], + "type": "string", + }, + "page": { + "default": 1, + "maximum": 21474836, + "minimum": 1, + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "example": [ + { + "asset": "b0d07d45fe9514f80213f4020e5a61241458be626841cde717cb38a76e7574636f696e", + "quantity": "1", + }, + { + "asset": "b0d07d45fe9514f80213f4020e5a61241458be626841cde717cb38a76e75d", + "quantity": "100000", + }, + { + "asset": "6804edf9712d2b619edb6ac86861fe93a730693183a262b165fcc1ba1bc99cad", + "quantity": "18605647", + }, + ], + "items": { + "properties": { + "asset": { + "description": "Asset identifier", + "format": "Concatenation of the policy_id and hex-encoded asset_name", + "type": "string", + }, + "quantity": { + "description": "Current asset quantity", + "type": "string", + }, + }, + "required": [ + "asset", + "quantity", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/assets/policy/{policy_id}": { + "params": { + "properties": { + "policy_id": { + "type": "string", + }, + }, + "type": "object", + }, + "querystring": { + "properties": { + "count": { + "default": 100, + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "order": { + "default": "asc", + "enum": [ + "asc", + "desc", + ], + "type": "string", + }, + "page": { + "default": 1, + "maximum": 21474836, + "minimum": 1, + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "example": [ + { + "asset": "b0d07d45fe9514f80213f4020e5a61241458be626841cde717cb38a76e7574636f696e", + "quantity": "1", + }, + { + "asset": "b0d07d45fe9514f80213f4020e5a61241458be626841cde717cb38a766e", + "quantity": "100000", + }, + { + "asset": "b0d07d45fe9514f80213f4020e5a61241458be626841cde717cb574636f696e", + "quantity": "18605647", + }, + ], + "items": { + "properties": { + "asset": { + "description": "Concatenation of the policy_id and hex-encoded asset_name", + "type": "string", + }, + "quantity": { + "description": "Current asset quantity", + "type": "string", + }, + }, + "required": [ + "asset", + "quantity", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/assets/{asset}": { + "params": { + "properties": { + "asset": { + "type": "string", + }, + }, + "type": "object", + }, + "response": { + "200": { + "properties": { + "asset": { + "description": "Hex-encoded asset full name", + "example": "b0d07d45fe9514f80213f4020e5a61241458be626841cde717cb38a76e7574636f696e", + "type": "string", + }, + "asset_name": { + "description": "Hex-encoded asset name of the asset", + "example": "6e7574636f696e", + "nullable": true, + "type": "string", + }, + "fingerprint": { + "description": "CIP14 based user-facing fingerprint", + "example": "asset1pkpwyknlvul7az0xx8czhl60pyel45rpje4z8w", + "type": "string", + }, + "initial_mint_tx_hash": { + "description": "ID of the initial minting transaction", + "example": "6804edf9712d2b619edb6ac86861fe93a730693183a262b165fcc1ba1bc99cad", + "type": "string", + }, + "metadata": { + "description": "Off-chain metadata fetched from GitHub based on network. +Mainnet: https://github.com/cardano-foundation/cardano-token-registry/ +Testnet: https://github.com/input-output-hk/metadata-registry-testnet/ +", + "nullable": true, + "properties": { + "decimals": { + "description": "Number of decimal places of the asset unit", + "example": 6, + "maximum": 255, + "nullable": true, + "type": "integer", + }, + "description": { + "description": "Asset description", + "example": "The Nut Coin", + "type": "string", + }, + "logo": { + "description": "Base64 encoded logo of the asset", + "example": "iVBORw0KGgoAAAANSUhEUgAAADAAAAAoCAYAAAC4h3lxAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAAAAB3RJTUUH5QITCDUPjqwFHwAAB9xJREFUWMPVWXtsU9cZ/8499/r6dZ3E9rUdO7ZDEgglFWO8KaOsJW0pCLRKrN1AqqYVkqoqrYo0ja7bpElru1WairStFKY9WzaE1E1tx+jokKqwtqFNyhKahEJJyJNgJ37E9r1+3HvO/sFR4vhx7SBtfH/F3/l93/f7ne/4PBxEKYU72dj/ZfH772v1TU+HtqbTaX8wOO01GPQpRVH7JEm+vGHDuq6z7/8jUSoHKtaBKkEUFUXdajDy1hUrmrs6zn/wWS7m7pZVjMUirKGUTnzc+e9xLcTrPPVfZzDz06Sc2lyQGEIyAPzT7Xa+dvE/3e+XLaCxoflHsVj8MAAYs74aa/WHoenwvpkZKeFy2Z5NJlOPUkqXZccFwSSrKjlyffjLH+TL6XTUGTGL/6hklD3ldIrj2M5MRmkLBMcvaRLQ1Nj88sxM/HCBfMP+eu/OYGDqe6l0WmpoqJ/88upgrU7HrQNA/cFg6MlkKiLlBtVUO40cx54BgHvLIT/HJLvdeqh/4NKxogKWN7fsCoUi7xTLxLJ4vLq6ak//wKVOrdXtttrTDMPsqJA8AAAwDErdu3VL3alTf5ma9eWCpoKhn5dKpCiqJxicPucQPVu0FHaInn35yHMcKwPAa4SQ3QCwFgDWUko3qSr5vqqSgTypuEg4Mo/zvA74/Y0rZSnZU8akSHV17k2fXfy0txjI5224kEym1s/1EUI7LBbztweHrkzkizn49LP6U6feepFSeggAQK/n04SQZ8bGrxdeQjZrbRvGzLH5hcibRqOhPplMfS1fIY5jz4xPDBdcGggho2h3z9sOLRazdG3wqp9SMgUlzGZ17SSEPsRx7J8CwfGu3PF57WhqqjfN/VxVJUxKUrIdITAXKpDJKFscosdfaFy0u+/K9aXTmXe0kAcAmA5Nng5Hbj6Tj/wCAYFAcN7uEY3GXGazMSHLqVVFapgBoMPna9yqhRAAgCTJMa3YUjZPgNFkSlWYx5eUkx+0tKx83V3rF+cVYJjruWCe133DIXqMmrNrFSDabRcWkywYmG5XFOW6aHcfb9324CoAgMmbo9MIoXkneCajiAihV/c/8eSiBSw4BxyiZxQA6m7H7FBKT2CMn2MY5jFFUX6ZO+5w2j8aHZ7YH40FByrJD5DnHGAY5uTtIA8AgBDaR4F2Yxb3WizCgmtA4ObUPSazodduqz3Suu0hf0U1cjvgdNSJ1dWWveFwdDUAtAiC2Uopdcdi8c9Zlh3GmDGl05mtAKAvo47EcdwThJCjqqpWFxALlNITomg73tff21GRAJez7iVK4WGGYfoJIQduBsbm7UrLm1ueCoUiv65kpiilw1ZbzcFoZOYoIcRTAn6eYZgXJm+Oni+Vd3YJbdyweSch9HlK6SpVVfcyDDq7Yf3m2XPBIXraKyV/a4b9UkLawbLsZgB4rwR8CyGkw13r+5fX27BckwBAEJ47oKpk8+DgUIdod7fV1vqOAMDrlZLPmqKoB+rrvXIgOP6w0WjYy3Ls5RL4bUk52bVm9fqnCk7M3CXU2ND8+MxM7BcIIftiyRYyntcdHh0bmr0wfmXl6p2SJB2KRmP3l4j7zejYUFtRAQAAgslm1Bv4nyGEDpYiIwjmjw0G/RjP866JiclNqqqWfKLq9fyZkdHBBXcnl9O71GDgD8bj0ncRQqZ8sRgzL9yYHH2pqICsOUTPLgA4CXNeZFmzWIS/YhYfjUZmvqPjuceSckrz25pS2h2cmlhbaBwhzr6kfsnL8Xhif55YYFl23Y3Jkdl7EVMoUSA4/q6qqNsBIPd11e52u45FwtG3CSH7yiEPAGC1Vt9dXGBmanDoygFLlbAjtzZCCMyC6VeaOpA1l9N7l1kwtauKaozHE28YTQaQpeR7+TqjxXheR0fHhhgt2CX1S3clEtKC16HL5djYe+niBU0CcmYA2W21/Qih5ZqDcoxlMZ24MaJJAABA87IVJ8Lh6N65Pr1B/+LIyLUfAhRZQvnM6ah7ZDHkAQB0vK6/HHxNTc2ruT5Zkldn/y5LACFk+2LIAwAwCGl6yGSt88KHXbmrBCHkqEgAz+vWLFZALJb4qNwYhFDhCSknkSwnQ4sVgDFeWg7+gQe2r1tAmkGTFQlACHWVg89nhJA9ot3dphV/eeCLp/Pw6K5IQP0S39uLFXCLwDG7zf1cKZxD9LSlUunHc/12u/2t2Vzl/rzu8zb8PZlM7bwdQgDgPK/nX2nddt+53//ht3LW2dS0fF0iLj2vquojuQFmwXRucPBKa8UCmpe1iOFwpAsAfLdJBFBKwVIlXJ2JxqKCxbwyHkvoCkAlv9/71U+7Oq+UJWDZ0hViJBL1cRynbNq0sSeeiPl6ei4NqIqq6TSmlB7X6bjuTEY5pgWfzwxGPZhMpt39/b3vzvWXFGCzulZjjM/DrauDwcAr8bjcgzGjZUuVBMH8k2uDX7wCAFDr8n2LEPI7SqmhTP6SzVbz6MDlz0/nDpT8EmOM22HOvUeWU2wp8iyLgRL6hk7Hrc2SBwC4MTlykmXZRozxn00mbVcphNA5jJmV+chr6oDd5l6jN/A/TqfSuwEAGITGMIsvGo3GTwTB3Dc2NjGSxdZYq4VIOOoNBANnKE0XPXE3brjHOTQ08k2MmVZOxzVJCbkFIQSCYEphzPaFQuGzTpfjb319PZ8UFXin/5OvrHPg/9HueAH/BSUqOuNZm4fyAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIxLTAyLTE5VDA4OjUyOjI1KzAwOjAwCmFGlgAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMS0wMi0xOVQwODo1MjoyMyswMDowMBjsyxAAAAAASUVORK5CYII=", + "nullable": true, + "type": "string", + }, + "name": { + "description": "Asset name", + "example": "nutcoin", + "type": "string", + }, + "ticker": { + "example": "nutc", + "nullable": true, + "type": "string", + }, + "url": { + "description": "Asset website", + "example": "https://www.stakenuts.com/", + "nullable": true, + "type": "string", + }, + }, + "required": [ + "name", + "description", + "ticker", + "url", + "logo", + "decimals", + ], + "type": "object", + }, + "mint_or_burn_count": { + "description": "Count of mint and burn transactions", + "example": 1, + "type": "integer", + }, + "onchain_metadata": { + "additionalProperties": true, + "description": "On-chain metadata which SHOULD adhere to the valid standards, +based on which we perform the look up and display the asset +(best effort) +", + "nullable": true, + "type": "object", + }, + "onchain_metadata_standard": { + "description": "If on-chain metadata passes validation, we display the standard +under which it is valid +", + "enum": [ + "CIP25v1", + "CIP25v2", + "CIP68v1", + ], + "nullable": true, + "type": "string", + }, + "policy_id": { + "description": "Policy ID of the asset", + "example": "b0d07d45fe9514f80213f4020e5a61241458be626841cde717cb38a7", + "type": "string", + }, + "quantity": { + "description": "Current asset quantity", + "example": "12000", + "type": "string", + }, + }, + "required": [ + "asset", + "policy_id", + "asset_name", + "fingerprint", + "quantity", + "initial_mint_tx_hash", + "mint_or_burn_count", + "metadata", + "onchain_metadata", + ], + "type": "object", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/assets/{asset}/addresses": { + "params": { + "properties": { + "asset": { + "type": "string", + }, + }, + "type": "object", + }, + "querystring": { + "properties": { + "count": { + "default": 100, + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "order": { + "default": "asc", + "enum": [ + "asc", + "desc", + ], + "type": "string", + }, + "page": { + "default": 1, + "maximum": 21474836, + "minimum": 1, + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "example": [ + { + "address": "addr1qxqs59lphg8g6qndelq8xwqn60ag3aeyfcp33c2kdp46a09re5df3pzwwmyq946axfcejy5n4x0y99wqpgtp2gd0k09qsgy6pz", + "quantity": "1", + }, + { + "address": "addr1qyhr4exrgavdcn3qhfcc9f939fzsch2re5ry9cwvcdyh4x4re5df3pzwwmyq946axfcejy5n4x0y99wqpgtp2gd0k09qdpvhza", + "quantity": "100000", + }, + { + "address": "addr1q8zup8m9ue3p98kxlxl9q8rnyan8hw3ul282tsl9s326dfj088lvedv4zckcj24arcpasr0gua4c5gq4zw2rpcpjk2lq8cmd9l", + "quantity": "18605647", + }, + ], + "items": { + "properties": { + "address": { + "description": "Address containing the specific asset", + "type": "string", + }, + "quantity": { + "description": "Asset quantity on the specific address", + "type": "string", + }, + }, + "required": [ + "address", + "quantity", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/assets/{asset}/history": { + "params": { + "properties": { + "asset": { + "type": "string", + }, + }, + "type": "object", + }, + "querystring": { + "properties": { + "count": { + "default": 100, + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "order": { + "default": "asc", + "enum": [ + "asc", + "desc", + ], + "type": "string", + }, + "page": { + "default": 1, + "maximum": 21474836, + "minimum": 1, + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "example": [ + { + "action": "minted", + "amount": "10", + "tx_hash": "2dd15e0ef6e6a17841cb9541c27724072ce4d4b79b91e58432fbaa32d9572531", + }, + { + "action": "burned", + "amount": "5", + "tx_hash": "9c190bc1ac88b2ab0c05a82d7de8b71b67a9316377e865748a89d4426c0d3005", + }, + { + "action": "burned", + "amount": "5", + "tx_hash": "1a0570af966fb355a7160e4f82d5a80b8681b7955f5d44bec0dde628516157f0", + }, + ], + "items": { + "properties": { + "action": { + "description": "Action executed upon the asset policy", + "enum": [ + "minted", + "burned", + ], + "type": "string", + }, + "amount": { + "description": "Asset amount of the specific action", + "type": "string", + }, + "tx_hash": { + "description": "Hash of the transaction containing the asset action", + "type": "string", + }, + }, + "required": [ + "tx_hash", + "action", + "amount", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/assets/{asset}/transactions": { + "params": { + "properties": { + "asset": { + "type": "string", + }, + }, + "type": "object", + }, + "querystring": { + "properties": { + "count": { + "default": 100, + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "order": { + "default": "asc", + "enum": [ + "asc", + "desc", + ], + "type": "string", + }, + "page": { + "default": 1, + "maximum": 21474836, + "minimum": 1, + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "example": [ + { + "block_height": 69, + "block_time": 1635505891, + "tx_hash": "8788591983aa73981fc92d6cddbbe643959f5a784e84b8bee0db15823f575a5b", + "tx_index": 6, + }, + { + "block_height": 4547, + "block_time": 1635505987, + "tx_hash": "52e748c4dec58b687b90b0b40d383b9fe1f24c1a833b7395cdf07dd67859f46f", + "tx_index": 9, + }, + { + "block_height": 564654, + "block_time": 1834505492, + "tx_hash": "e8073fd5318ff43eca18a852527166aa8008bee9ee9e891f585612b7e4ba700b", + "tx_index": 0, + }, + ], + "items": { + "properties": { + "block_height": { + "description": "Block height", + "type": "integer", + }, + "block_time": { + "description": "Block creation time in UNIX time", + "example": 1635505891, + "type": "integer", + }, + "tx_hash": { + "description": "Hash of the transaction", + "type": "string", + }, + "tx_index": { + "description": "Transaction index within the block", + "type": "integer", + }, + }, + "required": [ + "tx_hash", + "tx_index", + "block_height", + "block_time", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/assets/{asset}/txs": { + "params": { + "properties": { + "asset": { + "type": "string", + }, + }, + "type": "object", + }, + "querystring": { + "properties": { + "count": { + "default": 100, + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "order": { + "default": "asc", + "enum": [ + "asc", + "desc", + ], + "type": "string", + }, + "page": { + "default": 1, + "maximum": 21474836, + "minimum": 1, + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "example": [ + "8788591983aa73981fc92d6cddbbe643959f5a784e84b8bee0db15823f575a5b", + "52e748c4dec58b687b90b0b40d383b9fe1f24c1a833b7395cdf07dd67859f46f", + "e8073fd5318ff43eca18a852527166aa8008bee9ee9e891f585612b7e4ba700b", + ], + "items": { + "description": "Hash of the transaction", + "type": "string", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/blocks/epoch/{epoch_number}/slot/{slot_number}": { + "params": { + "properties": { + "epoch_number": { + "type": "integer", + }, + "slot_number": { + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "properties": { + "block_vrf": { + "description": "VRF key of the block", + "example": "vrf_vk1wf2k6lhujezqcfe00l6zetxpnmh9n6mwhpmhm0dvfh3fxgmdnrfqkms8ty", + "maxLength": 65, + "minLength": 65, + "nullable": true, + "type": "string", + }, + "confirmations": { + "description": "Number of block confirmations", + "example": 4698, + "type": "integer", + }, + "epoch": { + "description": "Epoch number", + "example": 425, + "nullable": true, + "type": "integer", + }, + "epoch_slot": { + "description": "Slot within the epoch", + "example": 12, + "nullable": true, + "type": "integer", + }, + "fees": { + "description": "Total fees within the block in Lovelaces", + "example": "592661", + "nullable": true, + "type": "string", + }, + "hash": { + "description": "Hash of the block", + "example": "4ea1ba291e8eef538635a53e59fddba7810d1679631cc3aed7c8e6c4091a516a", + "type": "string", + }, + "height": { + "description": "Block number", + "example": 15243593, + "nullable": true, + "type": "integer", + }, + "next_block": { + "description": "Hash of the next block", + "example": "8367f026cf4b03e116ff8ee5daf149b55ba5a6ec6dec04803b8dc317721d15fa", + "nullable": true, + "type": "string", + }, + "op_cert": { + "description": "The hash of the operational certificate of the block producer", + "example": "da905277534faf75dae41732650568af545134ee08a3c0392dbefc8096ae177c", + "nullable": true, + "type": "string", + }, + "op_cert_counter": { + "description": "The value of the counter used to produce the operational certificate", + "example": "18", + "nullable": true, + "type": "string", + }, + "output": { + "description": "Total output within the block in Lovelaces", + "example": "128314491794", + "nullable": true, + "type": "string", + }, + "previous_block": { + "description": "Hash of the previous block", + "example": "43ebccb3ac72c7cebd0d9b755a4b08412c9f5dcb81b8a0ad1e3c197d29d47b05", + "nullable": true, + "type": "string", + }, + "size": { + "description": "Block size in Bytes", + "example": 3, + "type": "integer", + }, + "slot": { + "description": "Slot number", + "example": 412162133, + "nullable": true, + "type": "integer", + }, + "slot_leader": { + "description": "Bech32 ID of the slot leader or specific block description in case there is no slot leader", + "example": "pool1pu5jlj4q9w9jlxeu370a3c9myx47md5j5m2str0naunn2qnikdy", + "type": "string", + }, + "time": { + "description": "Block creation time in UNIX time", + "example": 1641338934, + "type": "integer", + }, + "tx_count": { + "description": "Number of transactions in the block", + "example": 1, + "type": "integer", + }, + }, + "required": [ + "time", + "height", + "hash", + "slot", + "epoch", + "epoch_slot", + "slot_leader", + "size", + "tx_count", + "output", + "fees", + "block_vrf", + "op_cert", + "op_cert_counter", + "previous_block", + "next_block", + "confirmations", + ], + "type": "object", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/blocks/latest": { + "response": { + "200": { + "properties": { + "block_vrf": { + "description": "VRF key of the block", + "example": "vrf_vk1wf2k6lhujezqcfe00l6zetxpnmh9n6mwhpmhm0dvfh3fxgmdnrfqkms8ty", + "maxLength": 65, + "minLength": 65, + "nullable": true, + "type": "string", + }, + "confirmations": { + "description": "Number of block confirmations", + "example": 4698, + "type": "integer", + }, + "epoch": { + "description": "Epoch number", + "example": 425, + "nullable": true, + "type": "integer", + }, + "epoch_slot": { + "description": "Slot within the epoch", + "example": 12, + "nullable": true, + "type": "integer", + }, + "fees": { + "description": "Total fees within the block in Lovelaces", + "example": "592661", + "nullable": true, + "type": "string", + }, + "hash": { + "description": "Hash of the block", + "example": "4ea1ba291e8eef538635a53e59fddba7810d1679631cc3aed7c8e6c4091a516a", + "type": "string", + }, + "height": { + "description": "Block number", + "example": 15243593, + "nullable": true, + "type": "integer", + }, + "next_block": { + "description": "Hash of the next block", + "example": "8367f026cf4b03e116ff8ee5daf149b55ba5a6ec6dec04803b8dc317721d15fa", + "nullable": true, + "type": "string", + }, + "op_cert": { + "description": "The hash of the operational certificate of the block producer", + "example": "da905277534faf75dae41732650568af545134ee08a3c0392dbefc8096ae177c", + "nullable": true, + "type": "string", + }, + "op_cert_counter": { + "description": "The value of the counter used to produce the operational certificate", + "example": "18", + "nullable": true, + "type": "string", + }, + "output": { + "description": "Total output within the block in Lovelaces", + "example": "128314491794", + "nullable": true, + "type": "string", + }, + "previous_block": { + "description": "Hash of the previous block", + "example": "43ebccb3ac72c7cebd0d9b755a4b08412c9f5dcb81b8a0ad1e3c197d29d47b05", + "nullable": true, + "type": "string", + }, + "size": { + "description": "Block size in Bytes", + "example": 3, + "type": "integer", + }, + "slot": { + "description": "Slot number", + "example": 412162133, + "nullable": true, + "type": "integer", + }, + "slot_leader": { + "description": "Bech32 ID of the slot leader or specific block description in case there is no slot leader", + "example": "pool1pu5jlj4q9w9jlxeu370a3c9myx47md5j5m2str0naunn2qnikdy", + "type": "string", + }, + "time": { + "description": "Block creation time in UNIX time", + "example": 1641338934, + "type": "integer", + }, + "tx_count": { + "description": "Number of transactions in the block", + "example": 1, + "type": "integer", + }, + }, + "required": [ + "time", + "height", + "hash", + "slot", + "epoch", + "epoch_slot", + "slot_leader", + "size", + "tx_count", + "output", + "fees", + "block_vrf", + "op_cert", + "op_cert_counter", + "previous_block", + "next_block", + "confirmations", + ], + "type": "object", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/blocks/latest/txs": { + "querystring": { + "properties": { + "count": { + "default": 100, + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "order": { + "default": "asc", + "enum": [ + "asc", + "desc", + ], + "type": "string", + }, + "page": { + "default": 1, + "maximum": 21474836, + "minimum": 1, + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "example": [ + "8788591983aa73981fc92d6cddbbe643959f5a784e84b8bee0db15823f575a5b", + "4eef6bb7755d8afbeac526b799f3e32a624691d166657e9d862aaeb66682c036", + "52e748c4dec58b687b90b0b40d383b9fe1f24c1a833b7395cdf07dd67859f46f", + "e8073fd5318ff43eca18a852527166aa8008bee9ee9e891f585612b7e4ba700b", + ], + "items": { + "description": "Hash of the transaction", + "type": "string", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/blocks/slot/{slot_number}": { + "params": { + "properties": { + "slot_number": { + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "properties": { + "block_vrf": { + "description": "VRF key of the block", + "example": "vrf_vk1wf2k6lhujezqcfe00l6zetxpnmh9n6mwhpmhm0dvfh3fxgmdnrfqkms8ty", + "maxLength": 65, + "minLength": 65, + "nullable": true, + "type": "string", + }, + "confirmations": { + "description": "Number of block confirmations", + "example": 4698, + "type": "integer", + }, + "epoch": { + "description": "Epoch number", + "example": 425, + "nullable": true, + "type": "integer", + }, + "epoch_slot": { + "description": "Slot within the epoch", + "example": 12, + "nullable": true, + "type": "integer", + }, + "fees": { + "description": "Total fees within the block in Lovelaces", + "example": "592661", + "nullable": true, + "type": "string", + }, + "hash": { + "description": "Hash of the block", + "example": "4ea1ba291e8eef538635a53e59fddba7810d1679631cc3aed7c8e6c4091a516a", + "type": "string", + }, + "height": { + "description": "Block number", + "example": 15243593, + "nullable": true, + "type": "integer", + }, + "next_block": { + "description": "Hash of the next block", + "example": "8367f026cf4b03e116ff8ee5daf149b55ba5a6ec6dec04803b8dc317721d15fa", + "nullable": true, + "type": "string", + }, + "op_cert": { + "description": "The hash of the operational certificate of the block producer", + "example": "da905277534faf75dae41732650568af545134ee08a3c0392dbefc8096ae177c", + "nullable": true, + "type": "string", + }, + "op_cert_counter": { + "description": "The value of the counter used to produce the operational certificate", + "example": "18", + "nullable": true, + "type": "string", + }, + "output": { + "description": "Total output within the block in Lovelaces", + "example": "128314491794", + "nullable": true, + "type": "string", + }, + "previous_block": { + "description": "Hash of the previous block", + "example": "43ebccb3ac72c7cebd0d9b755a4b08412c9f5dcb81b8a0ad1e3c197d29d47b05", + "nullable": true, + "type": "string", + }, + "size": { + "description": "Block size in Bytes", + "example": 3, + "type": "integer", + }, + "slot": { + "description": "Slot number", + "example": 412162133, + "nullable": true, + "type": "integer", + }, + "slot_leader": { + "description": "Bech32 ID of the slot leader or specific block description in case there is no slot leader", + "example": "pool1pu5jlj4q9w9jlxeu370a3c9myx47md5j5m2str0naunn2qnikdy", + "type": "string", + }, + "time": { + "description": "Block creation time in UNIX time", + "example": 1641338934, + "type": "integer", + }, + "tx_count": { + "description": "Number of transactions in the block", + "example": 1, + "type": "integer", + }, + }, + "required": [ + "time", + "height", + "hash", + "slot", + "epoch", + "epoch_slot", + "slot_leader", + "size", + "tx_count", + "output", + "fees", + "block_vrf", + "op_cert", + "op_cert_counter", + "previous_block", + "next_block", + "confirmations", + ], + "type": "object", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/blocks/{hash_or_number}": { + "params": { + "properties": { + "hash_or_number": { + "type": "string", + }, + }, + "type": "object", + }, + "response": { + "200": { + "properties": { + "block_vrf": { + "description": "VRF key of the block", + "example": "vrf_vk1wf2k6lhujezqcfe00l6zetxpnmh9n6mwhpmhm0dvfh3fxgmdnrfqkms8ty", + "maxLength": 65, + "minLength": 65, + "nullable": true, + "type": "string", + }, + "confirmations": { + "description": "Number of block confirmations", + "example": 4698, + "type": "integer", + }, + "epoch": { + "description": "Epoch number", + "example": 425, + "nullable": true, + "type": "integer", + }, + "epoch_slot": { + "description": "Slot within the epoch", + "example": 12, + "nullable": true, + "type": "integer", + }, + "fees": { + "description": "Total fees within the block in Lovelaces", + "example": "592661", + "nullable": true, + "type": "string", + }, + "hash": { + "description": "Hash of the block", + "example": "4ea1ba291e8eef538635a53e59fddba7810d1679631cc3aed7c8e6c4091a516a", + "type": "string", + }, + "height": { + "description": "Block number", + "example": 15243593, + "nullable": true, + "type": "integer", + }, + "next_block": { + "description": "Hash of the next block", + "example": "8367f026cf4b03e116ff8ee5daf149b55ba5a6ec6dec04803b8dc317721d15fa", + "nullable": true, + "type": "string", + }, + "op_cert": { + "description": "The hash of the operational certificate of the block producer", + "example": "da905277534faf75dae41732650568af545134ee08a3c0392dbefc8096ae177c", + "nullable": true, + "type": "string", + }, + "op_cert_counter": { + "description": "The value of the counter used to produce the operational certificate", + "example": "18", + "nullable": true, + "type": "string", + }, + "output": { + "description": "Total output within the block in Lovelaces", + "example": "128314491794", + "nullable": true, + "type": "string", + }, + "previous_block": { + "description": "Hash of the previous block", + "example": "43ebccb3ac72c7cebd0d9b755a4b08412c9f5dcb81b8a0ad1e3c197d29d47b05", + "nullable": true, + "type": "string", + }, + "size": { + "description": "Block size in Bytes", + "example": 3, + "type": "integer", + }, + "slot": { + "description": "Slot number", + "example": 412162133, + "nullable": true, + "type": "integer", + }, + "slot_leader": { + "description": "Bech32 ID of the slot leader or specific block description in case there is no slot leader", + "example": "pool1pu5jlj4q9w9jlxeu370a3c9myx47md5j5m2str0naunn2qnikdy", + "type": "string", + }, + "time": { + "description": "Block creation time in UNIX time", + "example": 1641338934, + "type": "integer", + }, + "tx_count": { + "description": "Number of transactions in the block", + "example": 1, + "type": "integer", + }, + }, + "required": [ + "time", + "height", + "hash", + "slot", + "epoch", + "epoch_slot", + "slot_leader", + "size", + "tx_count", + "output", + "fees", + "block_vrf", + "op_cert", + "op_cert_counter", + "previous_block", + "next_block", + "confirmations", + ], + "type": "object", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/blocks/{hash_or_number}/addresses": { + "params": { + "properties": { + "hash_or_number": { + "type": "string", + }, + }, + "type": "object", + }, + "querystring": { + "properties": { + "count": { + "default": 100, + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "page": { + "default": 1, + "maximum": 21474836, + "minimum": 1, + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "example": [ + { + "address": "addr1q9ld26v2lv8wvrxxmvg90pn8n8n5k6tdst06q2s856rwmvnueldzuuqmnsye359fqrk8hwvenjnqultn7djtrlft7jnq7dy7wv", + "transactions": [ + { + "tx_hash": "1a0570af966fb355a7160e4f82d5a80b8681b7955f5d44bec0dce628516157f0", + }, + ], + }, + { + "address": "addr1qxqs59lphg8g6qndelq8xwqn60ag3aeyfcp33c2kdp46a09re5df3pzwwmyq946axfcejy5n4x0y99wqpgtp2gd0k09qsgy6pz", + "transactions": [ + { + "tx_hash": "1a0570af966fb355a7160e4f82d5a80b8681b7955f5d44bec0dce628516157d0", + }, + ], + }, + ], + "items": { + "properties": { + "address": { + "description": "Address that was affected in the specified block", + "type": "string", + }, + "transactions": { + "description": "List of transactions containing the address either in their inputs or outputs. Sorted by transaction index within a block, ascending.", + "items": { + "properties": { + "tx_hash": { + "type": "string", + }, + }, + "required": [ + "tx_hash", + ], + "type": "object", + }, + "type": "array", + }, + }, + "required": [ + "address", + "transactions", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/blocks/{hash_or_number}/next": { + "params": { + "properties": { + "hash_or_number": { + "type": "string", + }, + }, + "type": "object", + }, + "querystring": { + "properties": { + "count": { + "default": 100, + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "page": { + "default": 1, + "maximum": 21474836, + "minimum": 1, + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "items": { + "properties": { + "block_vrf": { + "description": "VRF key of the block", + "example": "vrf_vk1wf2k6lhujezqcfe00l6zetxpnmh9n6mwhpmhm0dvfh3fxgmdnrfqkms8ty", + "maxLength": 65, + "minLength": 65, + "nullable": true, + "type": "string", + }, + "confirmations": { + "description": "Number of block confirmations", + "example": 4698, + "type": "integer", + }, + "epoch": { + "description": "Epoch number", + "example": 425, + "nullable": true, + "type": "integer", + }, + "epoch_slot": { + "description": "Slot within the epoch", + "example": 12, + "nullable": true, + "type": "integer", + }, + "fees": { + "description": "Total fees within the block in Lovelaces", + "example": "592661", + "nullable": true, + "type": "string", + }, + "hash": { + "description": "Hash of the block", + "example": "4ea1ba291e8eef538635a53e59fddba7810d1679631cc3aed7c8e6c4091a516a", + "type": "string", + }, + "height": { + "description": "Block number", + "example": 15243593, + "nullable": true, + "type": "integer", + }, + "next_block": { + "description": "Hash of the next block", + "example": "8367f026cf4b03e116ff8ee5daf149b55ba5a6ec6dec04803b8dc317721d15fa", + "nullable": true, + "type": "string", + }, + "op_cert": { + "description": "The hash of the operational certificate of the block producer", + "example": "da905277534faf75dae41732650568af545134ee08a3c0392dbefc8096ae177c", + "nullable": true, + "type": "string", + }, + "op_cert_counter": { + "description": "The value of the counter used to produce the operational certificate", + "example": "18", + "nullable": true, + "type": "string", + }, + "output": { + "description": "Total output within the block in Lovelaces", + "example": "128314491794", + "nullable": true, + "type": "string", + }, + "previous_block": { + "description": "Hash of the previous block", + "example": "43ebccb3ac72c7cebd0d9b755a4b08412c9f5dcb81b8a0ad1e3c197d29d47b05", + "nullable": true, + "type": "string", + }, + "size": { + "description": "Block size in Bytes", + "example": 3, + "type": "integer", + }, + "slot": { + "description": "Slot number", + "example": 412162133, + "nullable": true, + "type": "integer", + }, + "slot_leader": { + "description": "Bech32 ID of the slot leader or specific block description in case there is no slot leader", + "example": "pool1pu5jlj4q9w9jlxeu370a3c9myx47md5j5m2str0naunn2qnikdy", + "type": "string", + }, + "time": { + "description": "Block creation time in UNIX time", + "example": 1641338934, + "type": "integer", + }, + "tx_count": { + "description": "Number of transactions in the block", + "example": 1, + "type": "integer", + }, + }, + "required": [ + "time", + "height", + "hash", + "slot", + "epoch", + "epoch_slot", + "slot_leader", + "size", + "tx_count", + "output", + "fees", + "block_vrf", + "op_cert", + "op_cert_counter", + "previous_block", + "next_block", + "confirmations", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/blocks/{hash_or_number}/previous": { + "params": { + "properties": { + "hash_or_number": { + "type": "string", + }, + }, + "type": "object", + }, + "querystring": { + "properties": { + "count": { + "default": 100, + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "page": { + "default": 1, + "maximum": 21474836, + "minimum": 1, + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "items": { + "properties": { + "block_vrf": { + "description": "VRF key of the block", + "example": "vrf_vk1wf2k6lhujezqcfe00l6zetxpnmh9n6mwhpmhm0dvfh3fxgmdnrfqkms8ty", + "maxLength": 65, + "minLength": 65, + "nullable": true, + "type": "string", + }, + "confirmations": { + "description": "Number of block confirmations", + "example": 4698, + "type": "integer", + }, + "epoch": { + "description": "Epoch number", + "example": 425, + "nullable": true, + "type": "integer", + }, + "epoch_slot": { + "description": "Slot within the epoch", + "example": 12, + "nullable": true, + "type": "integer", + }, + "fees": { + "description": "Total fees within the block in Lovelaces", + "example": "592661", + "nullable": true, + "type": "string", + }, + "hash": { + "description": "Hash of the block", + "example": "4ea1ba291e8eef538635a53e59fddba7810d1679631cc3aed7c8e6c4091a516a", + "type": "string", + }, + "height": { + "description": "Block number", + "example": 15243593, + "nullable": true, + "type": "integer", + }, + "next_block": { + "description": "Hash of the next block", + "example": "8367f026cf4b03e116ff8ee5daf149b55ba5a6ec6dec04803b8dc317721d15fa", + "nullable": true, + "type": "string", + }, + "op_cert": { + "description": "The hash of the operational certificate of the block producer", + "example": "da905277534faf75dae41732650568af545134ee08a3c0392dbefc8096ae177c", + "nullable": true, + "type": "string", + }, + "op_cert_counter": { + "description": "The value of the counter used to produce the operational certificate", + "example": "18", + "nullable": true, + "type": "string", + }, + "output": { + "description": "Total output within the block in Lovelaces", + "example": "128314491794", + "nullable": true, + "type": "string", + }, + "previous_block": { + "description": "Hash of the previous block", + "example": "43ebccb3ac72c7cebd0d9b755a4b08412c9f5dcb81b8a0ad1e3c197d29d47b05", + "nullable": true, + "type": "string", + }, + "size": { + "description": "Block size in Bytes", + "example": 3, + "type": "integer", + }, + "slot": { + "description": "Slot number", + "example": 412162133, + "nullable": true, + "type": "integer", + }, + "slot_leader": { + "description": "Bech32 ID of the slot leader or specific block description in case there is no slot leader", + "example": "pool1pu5jlj4q9w9jlxeu370a3c9myx47md5j5m2str0naunn2qnikdy", + "type": "string", + }, + "time": { + "description": "Block creation time in UNIX time", + "example": 1641338934, + "type": "integer", + }, + "tx_count": { + "description": "Number of transactions in the block", + "example": 1, + "type": "integer", + }, + }, + "required": [ + "time", + "height", + "hash", + "slot", + "epoch", + "epoch_slot", + "slot_leader", + "size", + "tx_count", + "output", + "fees", + "block_vrf", + "op_cert", + "op_cert_counter", + "previous_block", + "next_block", + "confirmations", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/blocks/{hash_or_number}/txs": { + "params": { + "properties": { + "hash_or_number": { + "type": "string", + }, + }, + "type": "object", + }, + "querystring": { + "properties": { + "count": { + "default": 100, + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "order": { + "default": "asc", + "enum": [ + "asc", + "desc", + ], + "type": "string", + }, + "page": { + "default": 1, + "maximum": 21474836, + "minimum": 1, + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "example": [ + "8788591983aa73981fc92d6cddbbe643959f5a784e84b8bee0db15823f575a5b", + "4eef6bb7755d8afbeac526b799f3e32a624691d166657e9d862aaeb66682c036", + "52e748c4dec58b687b90b0b40d383b9fe1f24c1a833b7395cdf07dd67859f46f", + "e8073fd5318ff43eca18a852527166aa8008bee9ee9e891f585612b7e4ba700b", + ], + "items": { + "description": "Hash of the transaction", + "type": "string", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/epochs/latest": { + "response": { + "200": { + "properties": { + "active_stake": { + "description": "Sum of all the active stakes within the epoch in Lovelaces", + "example": "784953934049314", + "nullable": true, + "type": "string", + }, + "block_count": { + "description": "Number of blocks within the epoch", + "example": 21298, + "type": "integer", + }, + "end_time": { + "description": "Unix time of the end of the epoch", + "example": 1603835086, + "type": "integer", + }, + "epoch": { + "description": "Epoch number", + "example": 225, + "type": "integer", + }, + "fees": { + "description": "Sum of all the fees within the epoch in Lovelaces", + "example": "4203312194", + "type": "string", + }, + "first_block_time": { + "description": "Unix time of the first block of the epoch", + "example": 1603403092, + "type": "integer", + }, + "last_block_time": { + "description": "Unix time of the last block of the epoch", + "example": 1603835084, + "type": "integer", + }, + "output": { + "description": "Sum of all the transactions within the epoch in Lovelaces", + "example": "7849943934049314", + "type": "string", + }, + "start_time": { + "description": "Unix time of the start of the epoch", + "example": 1603403091, + "type": "integer", + }, + "tx_count": { + "description": "Number of transactions within the epoch", + "example": 17856, + "type": "integer", + }, + }, + "required": [ + "epoch", + "start_time", + "end_time", + "first_block_time", + "last_block_time", + "block_count", + "tx_count", + "output", + "fees", + "active_stake", + ], + "type": "object", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/epochs/latest/parameters": { + "response": { + "200": { + "properties": { + "a0": { + "description": "Pool pledge influence", + "example": 0.3, + "type": "number", + }, + "coins_per_utxo_size": { + "description": "Cost per UTxO word for Alonzo. Cost per UTxO byte for Babbage and later.", + "example": "34482", + "nullable": true, + "type": "string", + }, + "coins_per_utxo_word": { + "deprecated": true, + "description": "Cost per UTxO word for Alonzo. Cost per UTxO byte for Babbage and later.", + "example": "34482", + "nullable": true, + "type": "string", + }, + "collateral_percent": { + "description": "The percentage of the transactions fee which must be provided as collateral when including non-native scripts", + "example": 150, + "nullable": true, + "type": "integer", + }, + "cost_models": { + "description": "Cost models parameters for Plutus Core scripts", + "example": { + "PlutusV1": { + "addInteger-cpu-arguments-intercept": 197209, + "addInteger-cpu-arguments-slope": 0, + }, + "PlutusV2": { + "addInteger-cpu-arguments-intercept": 197209, + "addInteger-cpu-arguments-slope": 0, + }, + }, + "nullable": true, + }, + "decentralisation_param": { + "description": "Percentage of blocks produced by federated nodes", + "example": 0.5, + "type": "number", + }, + "e_max": { + "description": "Epoch bound on pool retirement", + "example": 18, + "type": "integer", + }, + "epoch": { + "description": "Epoch number", + "example": 225, + "type": "integer", + }, + "extra_entropy": { + "description": "Seed for extra entropy", + "example": null, + "nullable": true, + "type": "string", + }, + "key_deposit": { + "description": "The amount of a key registration deposit in Lovelaces", + "example": "2000000", + "type": "string", + }, + "max_block_ex_mem": { + "description": "The maximum number of execution memory allowed to be used in a single block", + "example": "50000000", + "nullable": true, + "type": "string", + }, + "max_block_ex_steps": { + "description": "The maximum number of execution steps allowed to be used in a single block", + "example": "40000000000", + "nullable": true, + "type": "string", + }, + "max_block_header_size": { + "description": "Maximum block header size", + "example": 1100, + "type": "integer", + }, + "max_block_size": { + "description": "Maximum block body size in Bytes", + "example": 65536, + "type": "integer", + }, + "max_collateral_inputs": { + "description": "The maximum number of collateral inputs allowed in a transaction", + "example": 3, + "nullable": true, + "type": "integer", + }, + "max_tx_ex_mem": { + "description": "The maximum number of execution memory allowed to be used in a single transaction", + "example": "10000000", + "nullable": true, + "type": "string", + }, + "max_tx_ex_steps": { + "description": "The maximum number of execution steps allowed to be used in a single transaction", + "example": "10000000000", + "nullable": true, + "type": "string", + }, + "max_tx_size": { + "description": "Maximum transaction size", + "example": 16384, + "type": "integer", + }, + "max_val_size": { + "description": "The maximum Val size", + "example": "5000", + "nullable": true, + "type": "string", + }, + "min_fee_a": { + "description": "The linear factor for the minimum fee calculation for given epoch", + "example": 44, + "type": "integer", + }, + "min_fee_b": { + "description": "The constant factor for the minimum fee calculation", + "example": 155381, + "type": "integer", + }, + "min_pool_cost": { + "description": "Minimum stake cost forced on the pool", + "example": "340000000", + "type": "string", + }, + "min_utxo": { + "description": "Minimum UTXO value", + "example": "1000000", + "type": "string", + }, + "n_opt": { + "description": "Desired number of pools", + "example": 150, + "type": "integer", + }, + "nonce": { + "description": "Epoch number only used once", + "example": "1a3be38bcbb7911969283716ad7aa550250226b76a61fc51cc9a9a35d9276d81", + "type": "string", + }, + "pool_deposit": { + "description": "The amount of a pool registration deposit in Lovelaces", + "example": "500000000", + "type": "string", + }, + "price_mem": { + "description": "The per word cost of script memory usage", + "example": 0.0577, + "nullable": true, + "type": "number", + }, + "price_step": { + "description": "The cost of script execution step usage", + "example": 0.0000721, + "nullable": true, + "type": "number", + }, + "protocol_major_ver": { + "description": "Accepted protocol major version", + "example": 2, + "type": "integer", + }, + "protocol_minor_ver": { + "description": "Accepted protocol minor version", + "example": 0, + "type": "integer", + }, + "rho": { + "description": "Monetary expansion", + "example": 0.003, + "type": "number", + }, + "tau": { + "description": "Treasury expansion", + "example": 0.2, + "type": "number", + }, + }, + "required": [ + "epoch", + "min_fee_a", + "min_fee_b", + "max_block_size", + "max_tx_size", + "max_block_header_size", + "key_deposit", + "pool_deposit", + "e_max", + "n_opt", + "a0", + "rho", + "tau", + "decentralisation_param", + "extra_entropy", + "protocol_major_ver", + "protocol_minor_ver", + "min_utxo", + "min_pool_cost", + "nonce", + "cost_models", + "price_mem", + "price_step", + "max_tx_ex_mem", + "max_tx_ex_steps", + "max_block_ex_mem", + "max_block_ex_steps", + "max_val_size", + "collateral_percent", + "max_collateral_inputs", + "coins_per_utxo_size", + "coins_per_utxo_word", + ], + "type": "object", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/epochs/{number}": { + "params": { + "properties": { + "number": { + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "properties": { + "active_stake": { + "description": "Sum of all the active stakes within the epoch in Lovelaces", + "example": "784953934049314", + "nullable": true, + "type": "string", + }, + "block_count": { + "description": "Number of blocks within the epoch", + "example": 21298, + "type": "integer", + }, + "end_time": { + "description": "Unix time of the end of the epoch", + "example": 1603835086, + "type": "integer", + }, + "epoch": { + "description": "Epoch number", + "example": 225, + "type": "integer", + }, + "fees": { + "description": "Sum of all the fees within the epoch in Lovelaces", + "example": "4203312194", + "type": "string", + }, + "first_block_time": { + "description": "Unix time of the first block of the epoch", + "example": 1603403092, + "type": "integer", + }, + "last_block_time": { + "description": "Unix time of the last block of the epoch", + "example": 1603835084, + "type": "integer", + }, + "output": { + "description": "Sum of all the transactions within the epoch in Lovelaces", + "example": "7849943934049314", + "type": "string", + }, + "start_time": { + "description": "Unix time of the start of the epoch", + "example": 1603403091, + "type": "integer", + }, + "tx_count": { + "description": "Number of transactions within the epoch", + "example": 17856, + "type": "integer", + }, + }, + "required": [ + "epoch", + "start_time", + "end_time", + "first_block_time", + "last_block_time", + "block_count", + "tx_count", + "output", + "fees", + "active_stake", + ], + "type": "object", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/epochs/{number}/blocks": { + "params": { + "properties": { + "number": { + "type": "integer", + }, + }, + "type": "object", + }, + "querystring": { + "properties": { + "count": { + "default": 100, + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "order": { + "default": "asc", + "enum": [ + "asc", + "desc", + ], + "type": "string", + }, + "page": { + "default": 1, + "maximum": 21474836, + "minimum": 1, + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "example": [ + "d0fa315687e99ccdc96b14cc2ea74a767405d64427b648c470731a9b69e4606e", + "38bc6efb92a830a0ed22a64f979d120d26483fd3c811f6622a8c62175f530878", + "f3258fcd8b975c061b4fcdcfcbb438807134d6961ec278c200151274893b6b7d", + ], + "items": { + "description": "Hash of the block", + "type": "string", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/epochs/{number}/blocks/{pool_id}": { + "params": { + "properties": { + "number": { + "type": "integer", + }, + "pool_id": { + "type": "string", + }, + }, + "type": "object", + }, + "querystring": { + "properties": { + "count": { + "default": 100, + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "order": { + "default": "asc", + "enum": [ + "asc", + "desc", + ], + "type": "string", + }, + "page": { + "default": 1, + "maximum": 21474836, + "minimum": 1, + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "example": [ + "d0fa315687e99ccdc96b14cc2ea74a767405d64427b648c470731a9b69e4606e", + "38bc6efb92a830a0ed22a64f979d120d26483fd3c811f6622a8c62175f530878", + "f3258fcd8b975c061b4fcdcfcbb438807134d6961ec278c200151274893b6b7d", + ], + "items": { + "description": "Hash of the block", + "type": "string", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/epochs/{number}/next": { + "params": { + "properties": { + "number": { + "type": "integer", + }, + }, + "type": "object", + }, + "querystring": { + "properties": { + "count": { + "default": 100, + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "page": { + "default": 1, + "maximum": 21474836, + "minimum": 1, + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "items": { + "properties": { + "active_stake": { + "description": "Sum of all the active stakes within the epoch in Lovelaces", + "example": "784953934049314", + "nullable": true, + "type": "string", + }, + "block_count": { + "description": "Number of blocks within the epoch", + "example": 21298, + "type": "integer", + }, + "end_time": { + "description": "Unix time of the end of the epoch", + "example": 1603835086, + "type": "integer", + }, + "epoch": { + "description": "Epoch number", + "example": 225, + "type": "integer", + }, + "fees": { + "description": "Sum of all the fees within the epoch in Lovelaces", + "example": "4203312194", + "type": "string", + }, + "first_block_time": { + "description": "Unix time of the first block of the epoch", + "example": 1603403092, + "type": "integer", + }, + "last_block_time": { + "description": "Unix time of the last block of the epoch", + "example": 1603835084, + "type": "integer", + }, + "output": { + "description": "Sum of all the transactions within the epoch in Lovelaces", + "example": "7849943934049314", + "type": "string", + }, + "start_time": { + "description": "Unix time of the start of the epoch", + "example": 1603403091, + "type": "integer", + }, + "tx_count": { + "description": "Number of transactions within the epoch", + "example": 17856, + "type": "integer", + }, + }, + "required": [ + "epoch", + "start_time", + "end_time", + "first_block_time", + "last_block_time", + "block_count", + "tx_count", + "output", + "fees", + "active_stake", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/epochs/{number}/parameters": { + "params": { + "properties": { + "number": { + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "properties": { + "a0": { + "description": "Pool pledge influence", + "example": 0.3, + "type": "number", + }, + "coins_per_utxo_size": { + "description": "Cost per UTxO word for Alonzo. Cost per UTxO byte for Babbage and later.", + "example": "34482", + "nullable": true, + "type": "string", + }, + "coins_per_utxo_word": { + "deprecated": true, + "description": "Cost per UTxO word for Alonzo. Cost per UTxO byte for Babbage and later.", + "example": "34482", + "nullable": true, + "type": "string", + }, + "collateral_percent": { + "description": "The percentage of the transactions fee which must be provided as collateral when including non-native scripts", + "example": 150, + "nullable": true, + "type": "integer", + }, + "cost_models": { + "description": "Cost models parameters for Plutus Core scripts", + "example": { + "PlutusV1": { + "addInteger-cpu-arguments-intercept": 197209, + "addInteger-cpu-arguments-slope": 0, + }, + "PlutusV2": { + "addInteger-cpu-arguments-intercept": 197209, + "addInteger-cpu-arguments-slope": 0, + }, + }, + "nullable": true, + }, + "decentralisation_param": { + "description": "Percentage of blocks produced by federated nodes", + "example": 0.5, + "type": "number", + }, + "e_max": { + "description": "Epoch bound on pool retirement", + "example": 18, + "type": "integer", + }, + "epoch": { + "description": "Epoch number", + "example": 225, + "type": "integer", + }, + "extra_entropy": { + "description": "Seed for extra entropy", + "example": null, + "nullable": true, + "type": "string", + }, + "key_deposit": { + "description": "The amount of a key registration deposit in Lovelaces", + "example": "2000000", + "type": "string", + }, + "max_block_ex_mem": { + "description": "The maximum number of execution memory allowed to be used in a single block", + "example": "50000000", + "nullable": true, + "type": "string", + }, + "max_block_ex_steps": { + "description": "The maximum number of execution steps allowed to be used in a single block", + "example": "40000000000", + "nullable": true, + "type": "string", + }, + "max_block_header_size": { + "description": "Maximum block header size", + "example": 1100, + "type": "integer", + }, + "max_block_size": { + "description": "Maximum block body size in Bytes", + "example": 65536, + "type": "integer", + }, + "max_collateral_inputs": { + "description": "The maximum number of collateral inputs allowed in a transaction", + "example": 3, + "nullable": true, + "type": "integer", + }, + "max_tx_ex_mem": { + "description": "The maximum number of execution memory allowed to be used in a single transaction", + "example": "10000000", + "nullable": true, + "type": "string", + }, + "max_tx_ex_steps": { + "description": "The maximum number of execution steps allowed to be used in a single transaction", + "example": "10000000000", + "nullable": true, + "type": "string", + }, + "max_tx_size": { + "description": "Maximum transaction size", + "example": 16384, + "type": "integer", + }, + "max_val_size": { + "description": "The maximum Val size", + "example": "5000", + "nullable": true, + "type": "string", + }, + "min_fee_a": { + "description": "The linear factor for the minimum fee calculation for given epoch", + "example": 44, + "type": "integer", + }, + "min_fee_b": { + "description": "The constant factor for the minimum fee calculation", + "example": 155381, + "type": "integer", + }, + "min_pool_cost": { + "description": "Minimum stake cost forced on the pool", + "example": "340000000", + "type": "string", + }, + "min_utxo": { + "description": "Minimum UTXO value", + "example": "1000000", + "type": "string", + }, + "n_opt": { + "description": "Desired number of pools", + "example": 150, + "type": "integer", + }, + "nonce": { + "description": "Epoch number only used once", + "example": "1a3be38bcbb7911969283716ad7aa550250226b76a61fc51cc9a9a35d9276d81", + "type": "string", + }, + "pool_deposit": { + "description": "The amount of a pool registration deposit in Lovelaces", + "example": "500000000", + "type": "string", + }, + "price_mem": { + "description": "The per word cost of script memory usage", + "example": 0.0577, + "nullable": true, + "type": "number", + }, + "price_step": { + "description": "The cost of script execution step usage", + "example": 0.0000721, + "nullable": true, + "type": "number", + }, + "protocol_major_ver": { + "description": "Accepted protocol major version", + "example": 2, + "type": "integer", + }, + "protocol_minor_ver": { + "description": "Accepted protocol minor version", + "example": 0, + "type": "integer", + }, + "rho": { + "description": "Monetary expansion", + "example": 0.003, + "type": "number", + }, + "tau": { + "description": "Treasury expansion", + "example": 0.2, + "type": "number", + }, + }, + "required": [ + "epoch", + "min_fee_a", + "min_fee_b", + "max_block_size", + "max_tx_size", + "max_block_header_size", + "key_deposit", + "pool_deposit", + "e_max", + "n_opt", + "a0", + "rho", + "tau", + "decentralisation_param", + "extra_entropy", + "protocol_major_ver", + "protocol_minor_ver", + "min_utxo", + "min_pool_cost", + "nonce", + "cost_models", + "price_mem", + "price_step", + "max_tx_ex_mem", + "max_tx_ex_steps", + "max_block_ex_mem", + "max_block_ex_steps", + "max_val_size", + "collateral_percent", + "max_collateral_inputs", + "coins_per_utxo_size", + "coins_per_utxo_word", + ], + "type": "object", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/epochs/{number}/previous": { + "params": { + "properties": { + "number": { + "type": "integer", + }, + }, + "type": "object", + }, + "querystring": { + "properties": { + "count": { + "default": 100, + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "page": { + "default": 1, + "maximum": 21474836, + "minimum": 1, + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "items": { + "properties": { + "active_stake": { + "description": "Sum of all the active stakes within the epoch in Lovelaces", + "example": "784953934049314", + "nullable": true, + "type": "string", + }, + "block_count": { + "description": "Number of blocks within the epoch", + "example": 21298, + "type": "integer", + }, + "end_time": { + "description": "Unix time of the end of the epoch", + "example": 1603835086, + "type": "integer", + }, + "epoch": { + "description": "Epoch number", + "example": 225, + "type": "integer", + }, + "fees": { + "description": "Sum of all the fees within the epoch in Lovelaces", + "example": "4203312194", + "type": "string", + }, + "first_block_time": { + "description": "Unix time of the first block of the epoch", + "example": 1603403092, + "type": "integer", + }, + "last_block_time": { + "description": "Unix time of the last block of the epoch", + "example": 1603835084, + "type": "integer", + }, + "output": { + "description": "Sum of all the transactions within the epoch in Lovelaces", + "example": "7849943934049314", + "type": "string", + }, + "start_time": { + "description": "Unix time of the start of the epoch", + "example": 1603403091, + "type": "integer", + }, + "tx_count": { + "description": "Number of transactions within the epoch", + "example": 17856, + "type": "integer", + }, + }, + "required": [ + "epoch", + "start_time", + "end_time", + "first_block_time", + "last_block_time", + "block_count", + "tx_count", + "output", + "fees", + "active_stake", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/epochs/{number}/stakes": { + "params": { + "properties": { + "number": { + "type": "integer", + }, + }, + "type": "object", + }, + "querystring": { + "properties": { + "count": { + "default": 100, + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "page": { + "default": 1, + "maximum": 21474836, + "minimum": 1, + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "items": { + "properties": { + "amount": { + "description": "Amount of active delegated stake in Lovelaces", + "example": "4440295078", + "type": "string", + }, + "pool_id": { + "description": "Bech32 prefix of the pool delegated to", + "example": "pool1pu5jlj4q9w9jlxeu370a3c9myx47md5j5m2str0naunn2q3lkdy", + "type": "string", + }, + "stake_address": { + "description": "Stake address", + "example": "stake1u9l5q5jwgelgagzyt6nuaasefgmn8pd25c8e9qpeprq0tdcp0e3uk", + "type": "string", + }, + }, + "required": [ + "stake_address", + "pool_id", + "amount", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/epochs/{number}/stakes/{pool_id}": { + "params": { + "properties": { + "number": { + "type": "integer", + }, + "pool_id": { + "type": "string", + }, + }, + "type": "object", + }, + "querystring": { + "properties": { + "count": { + "default": 100, + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "page": { + "default": 1, + "maximum": 21474836, + "minimum": 1, + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "items": { + "properties": { + "amount": { + "description": "Amount of active delegated stake in Lovelaces", + "example": "4440295078", + "type": "string", + }, + "stake_address": { + "description": "Stake address", + "example": "stake1u9l5q5jwgelgagzyt6nuaasefgmn8pd25c8e9qpeprq0tdcp0e3uk", + "type": "string", + }, + }, + "required": [ + "stake_address", + "amount", + ], + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/genesis": { + "response": { + "200": { + "properties": { + "active_slots_coefficient": { + "description": "The proportion of slots in which blocks should be issued", + "example": 0.05, + "type": "number", + }, + "epoch_length": { + "description": "Number of slots in an epoch", + "example": 432000, + "type": "integer", + }, + "max_kes_evolutions": { + "description": "The maximum number of time a KES key can be evolved before a pool operator must create a new operational certificate", + "example": 62, + "type": "integer", + }, + "max_lovelace_supply": { + "description": "The total number of lovelace in the system", + "example": "45000000000000000", + "type": "string", + }, + "network_magic": { + "description": "Network identifier", + "example": 764824073, + "type": "integer", + }, + "security_param": { + "description": "Security parameter k", + "example": 2160, + "type": "integer", + }, + "slot_length": { + "description": "Duration of one slot in seconds", + "example": 1, + "type": "integer", + }, + "slots_per_kes_period": { + "description": "Number of slots in an KES period", + "example": 129600, + "type": "integer", + }, + "system_start": { + "description": "Time of slot 0 in UNIX time", + "example": 1506203091, + "type": "integer", + }, + "update_quorum": { + "description": "Determines the quorum needed for votes on the protocol parameter updates", + "example": 5, + "type": "integer", + }, + }, + "required": [ + "active_slots_coefficient", + "update_quorum", + "max_lovelace_supply", + "network_magic", + "epoch_length", + "system_start", + "slots_per_kes_period", + "slot_length", + "max_kes_evolutions", + "security_param", + ], + "type": "object", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/health": { + "response": { + "200": { + "properties": { + "is_healthy": { + "example": true, + "type": "boolean", + }, + }, + "required": [ + "is_healthy", + ], + "type": "object", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/health/clock": { + "response": { + "200": { + "properties": { + "server_time": { + "example": 1603400958947, + "format": "int64", + "type": "integer", + }, + }, + "required": [ + "server_time", + ], + "type": "object", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/ipfs/add": { + "response": { + "200": { + "properties": { + "ipfs_hash": { + "description": "IPFS hash of the file", + "example": "QmZbHqiCxKEVX7QfijzJTkZiSi3WEVTcvANgNAWzDYgZDr", + "type": "string", + }, + "name": { + "description": "Name of the file", + "example": "README.md", + "type": "string", + }, + "size": { + "description": "IPFS node size in Bytes", + "example": "125297", + "type": "string", + }, + }, + "required": [ + "name", + "ipfs_hash", + "size", + ], + "type": "object", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/ipfs/gateway/{IPFS_path}": { + "params": { + "properties": { + "IPFS_path": { + "description": "Path to the IPFS object", + "type": "string", + }, + }, + "type": "object", + }, + "response": { + "200": { + "format": "binary", + "type": "string", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/ipfs/pin/add/{IPFS_path}": { + "params": { + "properties": { + "IPFS_path": { + "description": "Path to the IPFS object", + "type": "string", + }, + }, + "type": "object", + }, + "response": { + "200": { + "properties": { + "ipfs_hash": { + "description": "IPFS hash of the pinned object", + "example": "QmPojRfAXYAXV92Dof7gtSgaVuxEk64xx9CKvprqu9VwA8", + "type": "string", + }, + "state": { + "description": "State of the pin action", + "enum": [ + "queued|pinned|unpinned|failed|gc", + ], + "example": "queued", + "type": "string", + }, + }, + "required": [ + "ipfs_hash", + "state", + ], + "type": "object", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "425": { + "properties": { + "error": { + "example": "Mempool Full", + "type": "string", + }, + "message": { + "example": "Mempool is full, please try resubmitting again later.", + "type": "string", + }, + "status_code": { + "example": 425, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/ipfs/pin/list": { + "querystring": { + "properties": { + "count": { + "default": 100, + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "order": { + "default": "asc", + "enum": [ + "asc", + "desc", + ], + "type": "string", + }, + "page": { + "default": 1, + "maximum": 21474836, + "minimum": 1, + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "items": { + "properties": { + "ipfs_hash": { + "description": "IPFS hash of the pinned object", + "example": "QmdVMnULrY95mth2XkwjxDtMHvzuzmvUPTotKE1tgqKbCx", + "type": "string", + }, + "size": { + "description": "Size of the object in Bytes", + "example": "1615551024", + "type": "string", + }, + "state": { + "description": "State of the pinned object, which is \`queued\` when we are retriving object. If this +is successful the state is changed to \`pinned\` or \`failed\` if not. The state \`gc\` means the +pinned item has been garbage collected due to account being over storage quota or after it has +been moved to \`unpinned\` state by removing the object pin. +", + "enum": [ + "queued|pinned|unpinned|failed|gc", + ], + "example": "pinned", + "type": "string", + }, + "time_created": { + "description": "Creation time of the IPFS object on our backends", + "example": 1615551024, + "type": "integer", + }, + "time_pinned": { + "description": "Pin time of the IPFS object on our backends", + "example": 1615551024, + "type": "integer", + }, + }, + "required": [ + "time_created", + "time_pinned", + "ipfs_hash", + "size", + "state", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/ipfs/pin/list/{IPFS_path}": { + "params": { + "properties": { + "IPFS_path": { + "description": "The path to the IPFS object", + "type": "string", + }, + }, + "type": "object", + }, + "response": { + "200": { + "properties": { + "ipfs_hash": { + "description": "IPFS hash of the pinned object", + "example": "QmdVMnULrY95mth2XkwjxDtMHvzuzmvUPTotKE1tgqKbCx", + "type": "string", + }, + "size": { + "description": "Size of the object in Bytes", + "example": "1615551024", + "type": "string", + }, + "state": { + "description": "State of the pinned object. We define 5 states: \`queued\`, \`pinned\`, \`unpinned\`, \`failed\`, \`gc\`. +When the object is pending retrieval (i.e. after \`/ipfs/pin/add/{IPFS_path}\`), the state is \`queued\`. +If the object is already successfully retrieved, state is changed to \`pinned\` or \`failed\` otherwise. +When object is unpinned (i.e. after \`/ipfs/pin/remove/{IPFS_path}\`) it is marked for garbage collection. +State \`gc\` means that a previously \`unpinned\` item has been garbage collected due to account being over storage quota. +", + "enum": [ + "queued|pinned|unpinned|failed|gc", + ], + "example": "pinned", + "type": "string", + }, + "time_created": { + "description": "Time of the creation of the IPFS object on our backends", + "example": 1615551024, + "type": "integer", + }, + "time_pinned": { + "description": "Time of the pin of the IPFS object on our backends", + "example": 1615551024, + "type": "integer", + }, + }, + "required": [ + "time_created", + "time_pinned", + "ipfs_hash", + "size", + "state", + ], + "type": "object", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/ipfs/pin/remove/{IPFS_path}": { + "params": { + "properties": { + "IPFS_path": { + "description": "The path to the IPFS object", + "type": "string", + }, + }, + "type": "object", + }, + "response": { + "200": { + "properties": { + "ipfs_hash": { + "description": "IPFS hash of the pinned object", + "example": "QmPojRfAXYAXV92Dof7gtSgaVuxEk64xx9CKvprqu9VwA8", + "type": "string", + }, + "state": { + "description": "State of the pin action", + "enum": [ + "queued|pinned|unpinned|failed|gc", + ], + "example": "unpinned", + "type": "string", + }, + }, + "required": [ + "ipfs_hash", + "state", + ], + "type": "object", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/mempool": { + "querystring": { + "properties": { + "count": { + "default": 100, + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "order": { + "default": "asc", + "enum": [ + "asc", + "desc", + ], + "type": "string", + }, + "page": { + "default": 1, + "maximum": 21474836, + "minimum": 1, + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "example": [ + { + "tx_hash": "1a0570af966fb355a7160e4f82d5a80b8681b7955f5d44bec0dce628516157f0", + }, + ], + "items": { + "properties": { + "tx_hash": { + "description": "Hash of the transaction", + "type": "string", + }, + }, + "required": [ + "tx_hash", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/mempool/addresses/{address}": { + "params": { + "properties": { + "address": { + "type": "string", + }, + }, + "type": "object", + }, + "querystring": { + "properties": { + "count": { + "default": 100, + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "order": { + "default": "asc", + "enum": [ + "asc", + "desc", + ], + "type": "string", + }, + "page": { + "default": 1, + "maximum": 21474836, + "minimum": 1, + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "example": [ + { + "tx_hash": "1a0570af966fb355a7160e4f82d5a80b8681b7955f5d44bec0dce628516157f0", + }, + ], + "items": { + "properties": { + "tx_hash": { + "description": "Hash of the transaction", + "type": "string", + }, + }, + "required": [ + "tx_hash", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/mempool/{hash}": { + "params": { + "properties": { + "hash": { + "type": "string", + }, + }, + "type": "object", + }, + "response": { + "200": { + "properties": { + "inputs": { + "items": { + "properties": { + "address": { + "description": "Input address", + "example": "addr1q9ld26v2lv8wvrxxmvg90pn8n8n5k6tdst06q2s856rwmvnueldzuuqmnsye359fqrk8hwvenjnqultn7djtrlft7jnq7dy7wv", + "type": "string", + }, + "collateral": { + "description": "Whether the input is a collateral consumed on script validation failure", + "example": false, + "type": "boolean", + }, + "output_index": { + "description": "UTXO index in the transaction", + "example": 0, + "type": "integer", + }, + "reference": { + "description": "Whether the input is a reference transaction input", + "example": false, + "type": "boolean", + }, + "tx_hash": { + "description": "Hash of the UTXO transaction", + "example": "1a0570af966fb355a7160e4f82d5a80b8681b7955f5d44bec0dce628516157f0", + "type": "string", + }, + }, + "required": [ + "tx_hash", + "output_index", + "collateral", + ], + "type": "object", + }, + "type": "array", + }, + "outputs": { + "items": { + "properties": { + "address": { + "description": "Output address", + "example": "addr1q9ld26v2lv8wvrxxmvg90pn8n8n5k6tdst06q2s856rwmvnueldzuuqmnsye359fqrk8hwvenjnqultn7djtrlft7jnq7dy7wv", + "type": "string", + }, + "amount": { + "example": [ + { + "quantity": "42000000", + "unit": "lovelace", + }, + { + "quantity": "12", + "unit": "b0d07d45fe9514f80213f4020e5a61241458be626841cde717cb38a76e7574636f696e", + }, + ], + "items": { + "description": "The sum of all the UTXO per asset", + "properties": { + "quantity": { + "description": "The quantity of the unit", + "type": "string", + }, + "unit": { + "description": "The unit of the value", + "format": "Lovelace or concatenation of asset policy_id and hex-encoded asset_name", + "type": "string", + }, + }, + "required": [ + "unit", + "quantity", + ], + "type": "object", + }, + "type": "array", + }, + "collateral": { + "description": "Whether the output is a collateral output", + "example": false, + "type": "boolean", + }, + "data_hash": { + "description": "The hash of the transaction output datum", + "example": "9e478573ab81ea7a8e31891ce0648b81229f408d596a3483e6f4f9b92d3cf710", + "nullable": true, + "type": "string", + }, + "inline_datum": { + "description": "CBOR encoded inline datum", + "example": "19a6aa", + "nullable": true, + "type": "string", + }, + "output_index": { + "description": "UTXO index in the transaction", + "example": 0, + "type": "integer", + }, + "reference_script_hash": { + "description": "The hash of the reference script of the output", + "example": "13a3efd825703a352a8f71f4e2758d08c28c564e8dfcce9f77776ad1", + "nullable": true, + "type": "string", + }, + }, + "required": [ + "address", + "amount", + "output_index", + "data_hash", + "inline_datum", + "collateral", + "reference_script_hash", + ], + "type": "object", + }, + "type": "array", + }, + "redeemers": { + "items": { + "properties": { + "purpose": { + "description": "Validation purpose", + "enum": [ + "spend", + "mint", + "cert", + "reward", + ], + "example": "spend", + "type": "string", + }, + "tx_index": { + "description": "Index of the redeemer within the transaction", + "example": 0, + "type": "integer", + }, + "unit_mem": { + "description": "The budget in Memory to run a script", + "example": "1700", + "type": "string", + }, + "unit_steps": { + "description": "The budget in CPU steps to run a script", + "example": "476468", + "type": "string", + }, + }, + "required": [ + "tx_index", + "purpose", + "unit_mem", + "unit_steps", + ], + "type": "object", + }, + "type": "array", + }, + "tx": { + "properties": { + "asset_mint_or_burn_count": { + "description": "Count of asset mints and burns within the transaction", + "example": 0, + "type": "integer", + }, + "delegation_count": { + "description": "Count of the delegations within the transaction", + "example": 0, + "type": "integer", + }, + "deposit": { + "description": "Deposit within the transaction in Lovelaces", + "example": "0", + "type": "string", + }, + "fees": { + "description": "Fees of the transaction in Lovelaces", + "example": "182485", + "type": "string", + }, + "hash": { + "description": "Transaction hash", + "example": "1e043f100dce12d107f679685acd2fc0610e10f72a92d412794c9773d11d8477", + "type": "string", + }, + "invalid_before": { + "description": "Left (included) endpoint of the timelock validity intervals", + "example": null, + "nullable": true, + "type": "string", + }, + "invalid_hereafter": { + "description": "Right (excluded) endpoint of the timelock validity intervals", + "example": "13885913", + "nullable": true, + "type": "string", + }, + "mir_cert_count": { + "description": "Count of the MIR certificates within the transaction", + "example": 0, + "type": "integer", + }, + "output_amount": { + "example": [ + { + "quantity": "42000000", + "unit": "lovelace", + }, + { + "quantity": "12", + "unit": "b0d07d45fe9514f80213f4020e5a61241458be626841cde717cb38a76e7574636f696e", + }, + ], + "items": { + "description": "The sum of all the UTXO per asset", + "properties": { + "quantity": { + "description": "The quantity of the unit", + "type": "string", + }, + "unit": { + "description": "The unit of the value", + "format": "Lovelace or concatenation of asset policy_id and hex-encoded asset_name", + "type": "string", + }, + }, + "required": [ + "unit", + "quantity", + ], + "type": "object", + }, + "type": "array", + }, + "pool_retire_count": { + "description": "Count of the stake pool retirement certificates within the transaction", + "example": 0, + "type": "integer", + }, + "pool_update_count": { + "description": "Count of the stake pool registration and update certificates within the transaction", + "example": 0, + "type": "integer", + }, + "redeemer_count": { + "description": "Count of redeemers within the transaction", + "example": 0, + "type": "integer", + }, + "size": { + "description": "Size of the transaction in Bytes", + "example": 433, + "type": "integer", + }, + "stake_cert_count": { + "description": "Count of the stake keys (de)registration within the transaction", + "example": 0, + "type": "integer", + }, + "utxo_count": { + "description": "Count of UTXOs within the transaction", + "example": 4, + "type": "integer", + }, + "valid_contract": { + "description": "True if contract script passed validation", + "example": true, + "type": "boolean", + }, + "withdrawal_count": { + "description": "Count of the withdrawals within the transaction", + "example": 0, + "type": "integer", + }, + }, + "required": [ + "hash", + "output_amount", + "fees", + "deposit", + "size", + "invalid_before", + "invalid_hereafter", + "utxo_count", + "withdrawal_count", + "mir_cert_count", + "delegation_count", + "stake_cert_count", + "pool_update_count", + "pool_retire_count", + "asset_mint_or_burn_count", + "redeemer_count", + "valid_contract", + ], + "type": "object", + }, + }, + "required": [ + "tx", + "inputs", + "outputs", + ], + "type": "object", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/metadata/txs/labels": { + "querystring": { + "properties": { + "count": { + "default": 100, + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "order": { + "default": "asc", + "enum": [ + "asc", + "desc", + ], + "type": "string", + }, + "page": { + "default": 1, + "maximum": 21474836, + "minimum": 1, + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "example": [ + { + "cip10": null, + "count": "1", + "label": "1990", + }, + { + "cip10": "nut.link metadata oracles registry", + "count": "3", + "label": "1967", + }, + { + "cip10": "nut.link metadata oracles data points", + "count": "16321", + "label": "1968", + }, + ], + "items": { + "properties": { + "cip10": { + "description": "CIP10 defined description", + "nullable": true, + "type": "string", + }, + "count": { + "description": "The count of metadata entries with a specific label", + "type": "string", + }, + "label": { + "description": "Metadata label", + "type": "string", + }, + }, + "required": [ + "label", + "cip10", + "count", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/metadata/txs/labels/{label}": { + "params": { + "properties": { + "label": { + "type": "string", + }, + }, + "type": "object", + }, + "querystring": { + "properties": { + "count": { + "default": 100, + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "order": { + "default": "asc", + "enum": [ + "asc", + "desc", + ], + "type": "string", + }, + "page": { + "default": 1, + "maximum": 21474836, + "minimum": 1, + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "example": [ + { + "json_metadata": { + "ADAUSD": [ + { + "source": "ergoOracles", + "value": "0.10409800535729975", + }, + ], + }, + "tx_hash": "257d75c8ddb0434e9b63e29ebb6241add2b835a307aa33aedba2effe09ed4ec8", + }, + { + "json_metadata": { + "ADAUSD": [ + { + "source": "ergoOracles", + "value": "0.15409850555139935", + }, + ], + }, + "tx_hash": "e865f2cc01ca7381cf98dcdc4de07a5e8674b8ea16e6a18e3ed60c186fde2b9c", + }, + { + "json_metadata": null, + "tx_hash": "4237501da3cfdd53ade91e8911e764bd0699d88fd43b12f44a1f459b89bc91be", + }, + ], + "items": { + "properties": { + "json_metadata": { + "additionalProperties": true, + "anyOf": [ + { + "type": "string", + }, + { + "additionalProperties": true, + "type": "object", + }, + { + "items": {}, + "type": "array", + }, + { + "type": "integer", + }, + { + "type": "number", + }, + { + "type": "boolean", + }, + { + "type": "null", + }, + ], + "description": "Content of the JSON metadata", + "nullable": true, + }, + "tx_hash": { + "description": "Transaction hash that contains the specific metadata", + "type": "string", + }, + }, + "required": [ + "tx_hash", + "json_metadata", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/metadata/txs/labels/{label}/cbor": { + "params": { + "properties": { + "label": { + "type": "string", + }, + }, + "type": "object", + }, + "querystring": { + "properties": { + "count": { + "default": 100, + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "order": { + "default": "asc", + "enum": [ + "asc", + "desc", + ], + "type": "string", + }, + "page": { + "default": 1, + "maximum": 21474836, + "minimum": 1, + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "example": [ + { + "cbor_metadata": null, + "metadata": null, + "tx_hash": "257d75c8ddb0434e9b63e29ebb6241add2b835a307aa33aedba2effe09ed4ec8", + }, + { + "cbor_metadata": null, + "metadata": null, + "tx_hash": "e865f2cc01ca7381cf98dcdc4de07a5e8674b8ea16e6a18e3ed60c186fde2b9c", + }, + { + "cbor_metadata": "\\\\xa100a16b436f6d62696e6174696f6e8601010101010c", + "metadata": "a100a16b436f6d62696e6174696f6e8601010101010c", + "tx_hash": "4237501da3cfdd53ade91e8911e764bd0699d88fd43b12f44a1f459b89bc91be", + }, + ], + "items": { + "properties": { + "cbor_metadata": { + "deprecated": true, + "description": "Content of the CBOR metadata", + "nullable": true, + "type": "string", + }, + "metadata": { + "description": "Content of the CBOR metadata in hex", + "nullable": true, + "type": "string", + }, + "tx_hash": { + "description": "Transaction hash that contains the specific metadata", + "type": "string", + }, + }, + "required": [ + "tx_hash", + "cbor_metadata", + "metadata", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/metrics": { + "response": { + "200": { + "example": [ + { + "calls": 42, + "time": 1612543884, + }, + { + "calls": 6942, + "time": 1614523884, + }, + ], + "items": { + "properties": { + "calls": { + "description": "Sum of all calls for a particular day", + "type": "integer", + }, + "time": { + "description": "Starting time of the call count interval (ends midnight UTC) in UNIX time", + "type": "integer", + }, + }, + "required": [ + "time", + "calls", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/metrics/endpoints": { + "response": { + "200": { + "example": [ + { + "calls": 182, + "endpoint": "block", + "time": 1612543814, + }, + { + "calls": 42, + "endpoint": "epoch", + "time": 1612543814, + }, + { + "calls": 775, + "endpoint": "block", + "time": 1612543812, + }, + { + "calls": 4, + "endpoint": "epoch", + "time": 1612523884, + }, + { + "calls": 89794, + "endpoint": "block", + "time": 1612553884, + }, + ], + "items": { + "properties": { + "calls": { + "description": "Sum of all calls for a particular day and endpoint", + "type": "integer", + }, + "endpoint": { + "description": "Endpoint parent name", + "type": "string", + }, + "time": { + "description": "Starting time of the call count interval (ends midnight UTC) in UNIX time", + "type": "integer", + }, + }, + "required": [ + "time", + "calls", + "endpoint", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/network": { + "response": { + "200": { + "properties": { + "stake": { + "properties": { + "active": { + "description": "Current active stake in Lovelaces", + "example": "22210233523456321", + "type": "string", + }, + "live": { + "description": "Current live stake in Lovelaces", + "example": "23204950463991654", + "type": "string", + }, + }, + "required": [ + "live", + "active", + ], + "type": "object", + }, + "supply": { + "properties": { + "circulating": { + "description": "Current circulating (UTXOs + withdrawables) supply in Lovelaces", + "example": "32412601976210393", + "type": "string", + }, + "locked": { + "description": "Current supply locked by scripts in Lovelaces", + "example": "125006953355", + "type": "string", + }, + "max": { + "description": "Maximum supply in Lovelaces", + "example": "45000000000000000", + "type": "string", + }, + "reserves": { + "description": "Current supply locked in reserves", + "example": "46635632000000", + "type": "string", + }, + "total": { + "description": "Current total (max supply - reserves) supply in Lovelaces", + "example": "32890715183299160", + "type": "string", + }, + "treasury": { + "description": "Current supply locked in treasury", + "example": "98635632000000", + "type": "string", + }, + }, + "required": [ + "max", + "total", + "circulating", + "locked", + "treasury", + "reserves", + ], + "type": "object", + }, + }, + "required": [ + "supply", + "stake", + ], + "type": "object", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/network/eras": { + "response": { + "200": { + "example": [ + { + "end": { + "epoch": 208, + "slot": 4492800, + "time": 89856000, + }, + "parameters": { + "epoch_length": 21600, + "safe_zone": 4320, + "slot_length": 20, + }, + "start": { + "epoch": 0, + "slot": 0, + "time": 0, + }, + }, + { + "end": { + "epoch": 236, + "slot": 16588800, + "time": 101952000, + }, + "parameters": { + "epoch_length": 432000, + "safe_zone": 129600, + "slot_length": 1, + }, + "start": { + "epoch": 208, + "slot": 4492800, + "time": 89856000, + }, + }, + ], + "items": { + "properties": { + "end": { + "description": "End of the blockchain era, +relative to the start of the network +", + "properties": { + "epoch": { + "description": "Epoch number", + "type": "integer", + }, + "slot": { + "description": "Absolute slot number", + "type": "integer", + }, + "time": { + "description": "Time in seconds relative to the start time of the network", + "type": "number", + }, + }, + "required": [ + "time", + "slot", + "epoch", + ], + "type": "object", + }, + "parameters": { + "description": "Era parameters", + "properties": { + "epoch_length": { + "description": "Epoch length in number of slots", + "type": "integer", + }, + "safe_zone": { + "description": "Zone in which it is guaranteed that no hard fork can take place", + "type": "integer", + }, + "slot_length": { + "description": "Slot length in seconds", + "type": "number", + }, + }, + "required": [ + "epoch_length", + "slot_length", + "safe_zone", + ], + "type": "object", + }, + "start": { + "description": "Start of the blockchain era, +relative to the start of the network +", + "properties": { + "epoch": { + "description": "Epoch number", + "type": "integer", + }, + "slot": { + "description": "Absolute slot number", + "type": "integer", + }, + "time": { + "description": "Time in seconds relative to the start time of the network", + "type": "number", + }, + }, + "required": [ + "time", + "slot", + "epoch", + ], + "type": "object", + }, + }, + "required": [ + "start", + "end", + "parameters", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "425": { + "properties": { + "error": { + "example": "Mempool Full", + "type": "string", + }, + "message": { + "example": "Mempool is full, please try resubmitting again later.", + "type": "string", + }, + "status_code": { + "example": 425, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/nutlink/tickers/{ticker}": { + "params": { + "properties": { + "ticker": { + "description": "Ticker for the pool record", + "type": "string", + }, + }, + "type": "object", + }, + "querystring": { + "properties": { + "count": { + "default": 100, + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "order": { + "default": "asc", + "enum": [ + "asc", + "desc", + ], + "type": "string", + }, + "page": { + "default": 1, + "maximum": 21474836, + "minimum": 1, + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "items": { + "properties": { + "address": { + "description": "Address of a metadata oracle", + "type": "string", + }, + "block_height": { + "description": "Block height of the record", + "type": "integer", + }, + "payload": {}, + "tx_hash": { + "description": "Hash of the transaction", + "type": "string", + }, + "tx_index": { + "description": "Transaction index within the block", + "type": "integer", + }, + }, + "required": [ + "address", + "tx_hash", + "block_height", + "tx_index", + "payload", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/nutlink/{address}": { + "params": { + "properties": { + "address": { + "description": "Address of a metadata oracle", + "type": "string", + }, + }, + "type": "object", + }, + "response": { + "200": { + "properties": { + "address": { + "description": "Bech32 encoded address", + "example": "addr1qxqs59lphg8g6qndelq8xwqn60ag3aeyfcp33c2kdp46a09re5df3pzwwmyq946axfcejy5n4x0y99wqpgtp2gd0k09qsgy6pz", + "type": "string", + }, + "metadata": { + "additionalProperties": true, + "description": "The cached metadata of the \`metadata_url\` file.", + "nullable": true, + "type": "object", + }, + "metadata_hash": { + "description": "Hash of the metadata file", + "example": "6bf124f217d0e5a0a8adb1dbd8540e1334280d49ab861127868339f43b3948af", + "type": "string", + }, + "metadata_url": { + "description": "URL of the specific metadata file", + "example": "https://nut.link/metadata.json", + "type": "string", + }, + }, + "required": [ + "address", + "metadata_url", + "metadata_hash", + "metadata", + ], + "type": "object", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/nutlink/{address}/tickers": { + "params": { + "properties": { + "address": { + "description": "Address of a metadata oracle", + "type": "string", + }, + }, + "type": "object", + }, + "querystring": { + "properties": { + "count": { + "default": 100, + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "order": { + "default": "asc", + "enum": [ + "asc", + "desc", + ], + "type": "string", + }, + "page": { + "default": 1, + "maximum": 21474836, + "minimum": 1, + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "example": [ + { + "count": 1980038, + "latest_block": 2657092, + "name": "ADAUSD", + }, + { + "count": 1980038, + "latest_block": 2657092, + "name": "ADAEUR", + }, + { + "count": 1980038, + "latest_block": 2657092, + "name": "ADABTC", + }, + ], + "items": { + "properties": { + "count": { + "description": "Number of ticker records", + "type": "integer", + }, + "latest_block": { + "description": "Block height of the latest record", + "type": "integer", + }, + "name": { + "description": "Name of the ticker", + "type": "string", + }, + }, + "required": [ + "name", + "count", + "latest_block", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/nutlink/{address}/tickers/{ticker}": { + "params": { + "properties": { + "address": { + "description": "Address of a metadata oracle", + "type": "string", + }, + "ticker": { + "description": "Ticker for the pool record", + "type": "string", + }, + }, + "type": "object", + }, + "querystring": { + "properties": { + "count": { + "default": 100, + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "order": { + "default": "asc", + "enum": [ + "asc", + "desc", + ], + "type": "string", + }, + "page": { + "default": 1, + "maximum": 21474836, + "minimum": 1, + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "items": { + "properties": { + "block_height": { + "type": "integer", + }, + "payload": {}, + "tx_hash": { + "type": "string", + }, + "tx_index": { + "type": "integer", + }, + }, + "required": [ + "tx_hash", + "tx_index", + "block_height", + "payload", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/pools": { + "querystring": { + "properties": { + "count": { + "default": 100, + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "order": { + "default": "asc", + "enum": [ + "asc", + "desc", + ], + "type": "string", + }, + "page": { + "default": 1, + "maximum": 21474836, + "minimum": 1, + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "example": [ + "pool1pu5jlj4q9w9jlxeu370a3c9myx47md5j5m2str0naunn2q3lkdy", + "pool1hn7hlwrschqykupwwrtdfkvt2u4uaxvsgxyh6z63703p2knj288", + "pool1ztjyjfsh432eqetadf82uwuxklh28xc85zcphpwq6mmezavzad2", + ], + "items": { + "description": "Bech32 encoded pool ID", + "type": "string", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/pools/extended": { + "querystring": { + "properties": { + "count": { + "default": 100, + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "order": { + "default": "asc", + "enum": [ + "asc", + "desc", + ], + "type": "string", + }, + "page": { + "default": 1, + "maximum": 21474836, + "minimum": 1, + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "example": [ + { + "active_stake": "1541200000", + "hex": "2f355f79ee007502d116ecb07e36f985b34cebf2d84118f5c6b455a1", + "live_stake": "1541400000", + "pool_id": "pool19u64770wqp6s95gkajc8udheske5e6ljmpq33awxk326zjaza0q", + }, + { + "active_stake": "22200000", + "hex": "6b3fda88053dc2cee18a7c2736f032182fcc78a2fe912e869aa4edcd", + "live_stake": "48955550", + "pool_id": "pool1dvla4zq98hpvacv20snndupjrqhuc79zl6gjap565nku6et5zdx", + }, + { + "active_stake": "9989541215", + "hex": "73318ec975cf1125a6367cbb1c9a406cbcb3e510e49d7c3aab14aa31", + "live_stake": "168445464878", + "pool_id": "pool1wvccajt4eugjtf3k0ja3exjqdj7t8egsujwhcw4tzj4rzsxzw5w", + }, + ], + "items": { + "properties": { + "active_stake": { + "description": "Active delegated amount", + "example": "4200000000", + "type": "string", + }, + "hex": { + "description": "Hexadecimal pool ID.", + "example": "0f292fcaa02b8b2f9b3c8f9fd8e0bb21abedb692a6d5058df3ef2735", + "type": "string", + }, + "live_stake": { + "description": "Currently delegated amount", + "example": "6900000000", + "type": "string", + }, + "pool_id": { + "description": "Bech32 encoded pool ID", + "example": "pool1z5uqdk7dzdxaae5633fqfcu2eqzy3a3rgtuvy087fdld7yws0xt", + "type": "string", + }, + }, + "required": [ + "pool_id", + "hex", + "active_stake", + "live_stake", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/pools/retired": { + "querystring": { + "properties": { + "count": { + "default": 100, + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "order": { + "default": "asc", + "enum": [ + "asc", + "desc", + ], + "type": "string", + }, + "page": { + "default": 1, + "maximum": 21474836, + "minimum": 1, + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "example": [ + { + "epoch": 225, + "pool_id": "pool19u64770wqp6s95gkajc8udheske5e6ljmpq33awxk326zjaza0q", + }, + { + "epoch": 215, + "pool_id": "pool1dvla4zq98hpvacv20snndupjrqhuc79zl6gjap565nku6et5zdx", + }, + { + "epoch": 231, + "pool_id": "pool1wvccajt4eugjtf3k0ja3exjqdj7t8egsujwhcw4tzj4rzsxzw5w", + }, + ], + "items": { + "properties": { + "epoch": { + "description": "Retirement epoch number", + "example": 242, + "type": "integer", + }, + "pool_id": { + "description": "Bech32 encoded pool ID", + "example": "pool1z5uqdk7dzdxaae5633fqfcu2eqzy3a3rgtuvy087fdld7yws0xt", + "type": "string", + }, + }, + "required": [ + "pool_id", + "epoch", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/pools/retiring": { + "querystring": { + "properties": { + "count": { + "default": 100, + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "order": { + "default": "asc", + "enum": [ + "asc", + "desc", + ], + "type": "string", + }, + "page": { + "default": 1, + "maximum": 21474836, + "minimum": 1, + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "example": [ + { + "epoch": 225, + "pool_id": "pool19u64770wqp6s95gkajc8udheske5e6ljmpq33awxk326zjaza0q", + }, + { + "epoch": 215, + "pool_id": "pool1dvla4zq98hpvacv20snndupjrqhuc79zl6gjap565nku6et5zdx", + }, + { + "epoch": 231, + "pool_id": "pool1wvccajt4eugjtf3k0ja3exjqdj7t8egsujwhcw4tzj4rzsxzw5w", + }, + ], + "items": { + "properties": { + "epoch": { + "description": "Retirement epoch number", + "example": 242, + "type": "integer", + }, + "pool_id": { + "description": "Bech32 encoded pool ID", + "example": "pool1z5uqdk7dzdxaae5633fqfcu2eqzy3a3rgtuvy087fdld7yws0xt", + "type": "string", + }, + }, + "required": [ + "pool_id", + "epoch", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/pools/{pool_id}": { + "params": { + "properties": { + "pool_id": { + "type": "string", + }, + }, + "type": "object", + }, + "response": { + "200": { + "properties": { + "active_size": { + "example": 0.43, + "type": "number", + }, + "active_stake": { + "example": "4200000000", + "type": "string", + }, + "blocks_epoch": { + "description": "Number of blocks minted in the current epoch", + "example": 4, + "type": "integer", + }, + "blocks_minted": { + "description": "Total minted blocks", + "example": 69, + "type": "integer", + }, + "declared_pledge": { + "description": "Stake pool certificate pledge", + "example": "5000000000", + "type": "string", + }, + "fixed_cost": { + "description": "Fixed tax cost of the stake pool", + "example": "340000000", + "type": "string", + }, + "hex": { + "description": "Hexadecimal pool ID.", + "example": "0f292fcaa02b8b2f9b3c8f9fd8e0bb21abedb692a6d5058df3ef2735", + "type": "string", + }, + "live_delegators": { + "example": 127, + "type": "number", + }, + "live_pledge": { + "description": "Stake pool current pledge", + "example": "5000000001", + "type": "string", + }, + "live_saturation": { + "example": 0.93, + "type": "number", + }, + "live_size": { + "example": 0.42, + "type": "number", + }, + "live_stake": { + "example": "6900000000", + "type": "string", + }, + "margin_cost": { + "description": "Margin tax cost of the stake pool", + "example": 0.05, + "type": "number", + }, + "owners": { + "example": [ + "stake1u98nnlkvkk23vtvf9273uq7cph5ww6u2yq2389psuqet90sv4xv9v", + ], + "items": { + "description": "Bech32 accounts of the pool owners", + "type": "string", + }, + "type": "array", + }, + "pool_id": { + "description": "Bech32 pool ID", + "example": "pool1pu5jlj4q9w9jlxeu370a3c9myx47md5j5m2str0naunn2q3lkdy", + "type": "string", + }, + "registration": { + "example": [ + "9f83e5484f543e05b52e99988272a31da373f3aab4c064c76db96643a355d9dc", + "7ce3b8c433bf401a190d58c8c483d8e3564dfd29ae8633c8b1b3e6c814403e95", + "3e6e1200ce92977c3fe5996bd4d7d7e192bcb7e231bc762f9f240c76766535b9", + ], + "items": { + "description": "Hash of the transaction including registration", + "type": "string", + }, + "type": "array", + }, + "retirement": { + "items": { + "description": "Hash of the transaction including retirement", + "example": "252f622976d39e646815db75a77289cf16df4ad2b287dd8e3a889ce14c13d1a8", + "type": "string", + }, + "type": "array", + }, + "reward_account": { + "description": "Bech32 reward account of the stake pool", + "example": "stake1uxkptsa4lkr55jleztw43t37vgdn88l6ghclfwuxld2eykgpgvg3f", + "type": "string", + }, + "vrf_key": { + "description": "VRF key hash", + "example": "0b5245f9934ec2151116fb8ec00f35fd00e0aa3b075c4ed12cce440f999d8233", + "type": "string", + }, + }, + "required": [ + "pool_id", + "hex", + "vrf_key", + "blocks_minted", + "blocks_epoch", + "live_stake", + "live_size", + "live_saturation", + "live_delegators", + "active_stake", + "active_size", + "declared_pledge", + "live_pledge", + "margin_cost", + "fixed_cost", + "reward_account", + "owners", + "registration", + "retirement", + ], + "type": "object", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/pools/{pool_id}/blocks": { + "params": { + "properties": { + "pool_id": { + "type": "string", + }, + }, + "type": "object", + }, + "querystring": { + "properties": { + "count": { + "default": 100, + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "order": { + "default": "asc", + "enum": [ + "asc", + "desc", + ], + "type": "string", + }, + "page": { + "default": 1, + "maximum": 21474836, + "minimum": 1, + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "example": [ + "d8982ca42cfe76b747cc681d35d671050a9e41e9cfe26573eb214e94fe6ff21d", + "026436c539e2ce84c7f77ffe669f4e4bbbb3b9c53512e5857dcba8bb0b4e9a8c", + "bcc8487f419b8c668a18ea2120822a05df6dfe1de1f0fac3feba88cf760f303c", + "86bf7b4a274e0f8ec9816171667c1b4a0cfc661dc21563f271acea9482b62df7", + ], + "items": { + "description": "Block hashes", + "type": "string", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/pools/{pool_id}/delegators": { + "params": { + "properties": { + "pool_id": { + "type": "string", + }, + }, + "type": "object", + }, + "querystring": { + "properties": { + "count": { + "default": 100, + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "order": { + "default": "asc", + "enum": [ + "asc", + "desc", + ], + "type": "string", + }, + "page": { + "default": 1, + "maximum": 21474836, + "minimum": 1, + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "example": [ + { + "address": "stake1ux4vspfvwuus9uwyp5p3f0ky7a30jq5j80jxse0fr7pa56sgn8kha", + "live_stake": "1137959159981411", + }, + { + "address": "stake1uylayej7esmarzd4mk4aru37zh9yz0luj3g9fsvgpfaxulq564r5u", + "live_stake": "16958865648", + }, + { + "address": "stake1u8lr2pnrgf8f7vrs9lt79hc3sxm8s2w4rwvgpncks3axx6q93d4ck", + "live_stake": "18605647", + }, + ], + "items": { + "properties": { + "address": { + "description": "Bech32 encoded stake addresses", + "type": "string", + }, + "live_stake": { + "description": "Currently delegated amount", + "type": "string", + }, + }, + "required": [ + "address", + "live_stake", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/pools/{pool_id}/history": { + "params": { + "properties": { + "pool_id": { + "type": "string", + }, + }, + "type": "object", + }, + "querystring": { + "properties": { + "count": { + "default": 100, + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "order": { + "default": "asc", + "enum": [ + "asc", + "desc", + ], + "type": "string", + }, + "page": { + "default": 1, + "maximum": 21474836, + "minimum": 1, + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "items": { + "properties": { + "active_size": { + "description": "Pool size (percentage) of overall active stake at that epoch", + "example": 1.2345, + "type": "number", + }, + "active_stake": { + "description": "Active (Snapshot of live stake 2 epochs ago) stake in Lovelaces", + "example": "20485965693569", + "type": "string", + }, + "blocks": { + "description": "Number of blocks created by pool", + "example": 22, + "type": "integer", + }, + "delegators_count": { + "description": "Number of delegators for epoch", + "example": 115, + "type": "integer", + }, + "epoch": { + "description": "Epoch number", + "example": 233, + "type": "integer", + }, + "fees": { + "description": "Pool operator rewards", + "example": "1290968354", + "type": "string", + }, + "rewards": { + "description": "Total rewards received before distribution to delegators", + "example": "206936253674159", + "type": "string", + }, + }, + "required": [ + "epoch", + "blocks", + "active_stake", + "active_size", + "delegators_count", + "rewards", + "fees", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/pools/{pool_id}/metadata": { + "params": { + "properties": { + "pool_id": { + "type": "string", + }, + }, + "type": "object", + }, + "response": { + "200": { + "anyOf": [ + { + "properties": { + "description": { + "description": "Description of the stake pool", + "example": "The best pool ever", + "nullable": true, + "type": "string", + }, + "hash": { + "description": "Hash of the metadata file", + "example": "47c0c68cb57f4a5b4a87bad896fc274678e7aea98e200fa14a1cb40c0cab1d8c", + "nullable": true, + "type": "string", + }, + "hex": { + "description": "Hexadecimal pool ID", + "example": "0f292fcaa02b8b2f9b3c8f9fd8e0bb21abedb692a6d5058df3ef2735", + "type": "string", + }, + "homepage": { + "description": "Home page of the stake pool", + "example": "https://stakentus.com/", + "nullable": true, + "type": "string", + }, + "name": { + "description": "Name of the stake pool", + "example": "Stake Nuts", + "nullable": true, + "type": "string", + }, + "pool_id": { + "description": "Bech32 pool ID", + "example": "pool1pu5jlj4q9w9jlxeu370a3c9myx47md5j5m2str0naunn2q3lkdy", + "type": "string", + }, + "ticker": { + "description": "Ticker of the stake pool", + "example": "NUTS", + "nullable": true, + "type": "string", + }, + "url": { + "description": "URL to the stake pool metadata", + "example": "https://stakenuts.com/mainnet.json", + "nullable": true, + "type": "string", + }, + }, + "required": [ + "pool_id", + "hex", + "url", + "hash", + "ticker", + "name", + "description", + "homepage", + ], + "type": "object", + }, + { + "type": "object", + }, + ], + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/pools/{pool_id}/relays": { + "params": { + "properties": { + "pool_id": { + "type": "string", + }, + }, + "type": "object", + }, + "response": { + "200": { + "items": { + "properties": { + "dns": { + "description": "DNS name of the relay", + "example": "relay1.stakenuts.com", + "nullable": true, + "type": "string", + }, + "dns_srv": { + "description": "DNS SRV entry of the relay", + "example": "_relays._tcp.relays.stakenuts.com", + "nullable": true, + "type": "string", + }, + "ipv4": { + "description": "IPv4 address of the relay", + "example": "4.4.4.4", + "nullable": true, + "type": "string", + }, + "ipv6": { + "description": "IPv6 address of the relay", + "example": "https://stakenuts.com/mainnet.json", + "nullable": true, + "type": "string", + }, + "port": { + "description": "Network port of the relay", + "example": 3001, + "type": "integer", + }, + }, + "required": [ + "ipv4", + "ipv6", + "dns", + "dns_srv", + "port", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/pools/{pool_id}/updates": { + "params": { + "properties": { + "pool_id": { + "type": "string", + }, + }, + "type": "object", + }, + "querystring": { + "properties": { + "count": { + "default": 100, + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "order": { + "default": "asc", + "enum": [ + "asc", + "desc", + ], + "type": "string", + }, + "page": { + "default": 1, + "maximum": 21474836, + "minimum": 1, + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "example": [ + { + "action": "registered", + "cert_index": 0, + "tx_hash": "6804edf9712d2b619edb6ac86861fe93a730693183a262b165fcc1ba1bc99cad", + }, + { + "action": "deregistered", + "cert_index": 0, + "tx_hash": "9c190bc1ac88b2ab0c05a82d7de8b71b67a9316377e865748a89d4426c0d3005", + }, + { + "action": "registered", + "cert_index": 1, + "tx_hash": "e14a75b0eb2625de7055f1f580d70426311b78e0d36dd695a6bdc96c7b3d80e0", + }, + ], + "items": { + "properties": { + "action": { + "description": "Action in the certificate", + "enum": [ + "registered", + "deregistered", + ], + "type": "string", + }, + "cert_index": { + "description": "Certificate within the transaction", + "type": "integer", + }, + "tx_hash": { + "description": "Transaction ID", + "type": "string", + }, + }, + "required": [ + "tx_hash", + "cert_index", + "action", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/scripts": { + "querystring": { + "properties": { + "count": { + "default": 100, + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "order": { + "default": "asc", + "enum": [ + "asc", + "desc", + ], + "type": "string", + }, + "page": { + "default": 1, + "maximum": 21474836, + "minimum": 1, + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "example": [ + { + "script_hash": "13a3efd825703a352a8f71f4e2758d08c28c564e8dfcce9f77776ad1", + }, + { + "script_hash": "e1457a0c47dfb7a2f6b8fbb059bdceab163c05d34f195b87b9f2b30e", + }, + { + "script_hash": "a6e63c0ff05c96943d1cc30bf53112ffff0f34b45986021ca058ec54", + }, + ], + "items": { + "properties": { + "script_hash": { + "description": "Script hash", + "type": "string", + }, + }, + "required": [ + "script_hash", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/scripts/datum/{datum_hash}": { + "params": { + "properties": { + "datum_hash": { + "type": "string", + }, + }, + "type": "object", + }, + "response": { + "200": { + "example": { + "json_value": { + "int": 42, + }, + }, + "properties": { + "json_value": { + "description": "JSON content of the datum", + }, + }, + "required": [ + "json_value", + ], + "type": "object", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/scripts/datum/{datum_hash}/cbor": { + "params": { + "properties": { + "datum_hash": { + "type": "string", + }, + }, + "type": "object", + }, + "response": { + "200": { + "example": { + "cbor": "19a6aa", + }, + "properties": { + "cbor": { + "description": "CBOR serialized datum", + "type": "string", + }, + }, + "required": [ + "cbor", + ], + "type": "object", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/scripts/{script_hash}": { + "params": { + "properties": { + "script_hash": { + "type": "string", + }, + }, + "type": "object", + }, + "response": { + "200": { + "properties": { + "script_hash": { + "description": "Script hash", + "example": "13a3efd825703a352a8f71f4e2758d08c28c564e8dfcce9f77776ad1", + "type": "string", + }, + "serialised_size": { + "description": "The size of the CBOR serialised script, if a Plutus script", + "example": 3119, + "nullable": true, + "type": "integer", + }, + "type": { + "description": "Type of the script language", + "enum": [ + "timelock", + "plutusV1", + "plutusV2", + ], + "example": "plutusV1", + "type": "string", + }, + }, + "required": [ + "script_hash", + "type", + "serialised_size", + ], + "type": "object", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/scripts/{script_hash}/cbor": { + "params": { + "properties": { + "script_hash": { + "type": "string", + }, + }, + "type": "object", + }, + "response": { + "200": { + "example": { + "cbor": "4e4d01000033222220051200120011", + }, + "properties": { + "cbor": { + "description": "CBOR contents of the \`plutus\` script, null for \`timelocks\`", + "nullable": true, + "type": "string", + }, + }, + "required": [ + "cbor", + ], + "type": "object", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/scripts/{script_hash}/json": { + "params": { + "properties": { + "script_hash": { + "type": "string", + }, + }, + "type": "object", + }, + "response": { + "200": { + "properties": { + "json": { + "nullable": true, + }, + }, + "required": [ + "json", + ], + "type": "object", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/scripts/{script_hash}/redeemers": { + "params": { + "properties": { + "script_hash": { + "type": "string", + }, + }, + "type": "object", + }, + "querystring": { + "properties": { + "count": { + "default": 100, + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "order": { + "default": "asc", + "enum": [ + "asc", + "desc", + ], + "type": "string", + }, + "page": { + "default": 1, + "maximum": 21474836, + "minimum": 1, + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "items": { + "properties": { + "datum_hash": { + "deprecated": true, + "description": "Datum hash", + "example": "923918e403bf43c34b4ef6b48eb2ee04babed17320d8d1b9ff9ad086e86f44ec", + "type": "string", + }, + "fee": { + "description": "The fee consumed to run the script", + "example": "172033", + "type": "string", + }, + "purpose": { + "description": "Validation purpose", + "enum": [ + "spend", + "mint", + "cert", + "reward", + ], + "example": "spend", + "type": "string", + }, + "redeemer_data_hash": { + "description": "Datum hash of the redeemer", + "example": "923918e403bf43c34b4ef6b48eb2ee04babed17320d8d1b9ff9ad086e86f44ec", + "type": "string", + }, + "tx_hash": { + "description": "Hash of the transaction", + "example": "1a0570af966fb355a7160e4f82d5a80b8681b7955f5d44bec0dce628516157f0", + "type": "string", + }, + "tx_index": { + "description": "The index of the redeemer pointer in the transaction", + "example": 0, + "type": "integer", + }, + "unit_mem": { + "description": "The budget in Memory to run a script", + "example": "1700", + "type": "string", + }, + "unit_steps": { + "description": "The budget in CPU steps to run a script", + "example": "476468", + "type": "string", + }, + }, + "required": [ + "tx_hash", + "tx_index", + "purpose", + "redeemer_data_hash", + "datum_hash", + "unit_mem", + "unit_steps", + "fee", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/tx/submit": { + "response": { + "200": { + "example": "d1662b24fa9fe985fc2dce47455df399cb2e31e1e1819339e885801cc3578908", + "format": "hex", + "maxLength": 64, + "minLength": 64, + "type": "string", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "425": { + "properties": { + "error": { + "example": "Mempool Full", + "type": "string", + }, + "message": { + "example": "Mempool is full, please try resubmitting again later.", + "type": "string", + }, + "status_code": { + "example": 425, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/txs/{hash}": { + "params": { + "properties": { + "hash": { + "type": "string", + }, + }, + "type": "object", + }, + "response": { + "200": { + "properties": { + "asset_mint_or_burn_count": { + "description": "Count of asset mints and burns within the transaction", + "example": 0, + "type": "integer", + }, + "block": { + "description": "Block hash", + "example": "356b7d7dbb696ccd12775c016941057a9dc70898d87a63fc752271bb46856940", + "type": "string", + }, + "block_height": { + "description": "Block number", + "example": 123456, + "type": "integer", + }, + "block_time": { + "description": "Block creation time in UNIX time", + "example": 1635505891, + "type": "integer", + }, + "delegation_count": { + "description": "Count of the delegations within the transaction", + "example": 0, + "type": "integer", + }, + "deposit": { + "description": "Deposit within the transaction in Lovelaces", + "example": "0", + "type": "string", + }, + "fees": { + "description": "Fees of the transaction in Lovelaces", + "example": "182485", + "type": "string", + }, + "hash": { + "description": "Transaction hash", + "example": "1e043f100dce12d107f679685acd2fc0610e10f72a92d412794c9773d11d8477", + "type": "string", + }, + "index": { + "description": "Transaction index within the block", + "example": 1, + "type": "integer", + }, + "invalid_before": { + "description": "Left (included) endpoint of the timelock validity intervals", + "example": null, + "nullable": true, + "type": "string", + }, + "invalid_hereafter": { + "description": "Right (excluded) endpoint of the timelock validity intervals", + "example": "13885913", + "nullable": true, + "type": "string", + }, + "mir_cert_count": { + "description": "Count of the MIR certificates within the transaction", + "example": 0, + "type": "integer", + }, + "output_amount": { + "example": [ + { + "quantity": "42000000", + "unit": "lovelace", + }, + { + "quantity": "12", + "unit": "b0d07d45fe9514f80213f4020e5a61241458be626841cde717cb38a76e7574636f696e", + }, + ], + "items": { + "description": "The sum of all the UTXO per asset", + "properties": { + "quantity": { + "description": "The quantity of the unit", + "type": "string", + }, + "unit": { + "description": "The unit of the value", + "format": "Lovelace or concatenation of asset policy_id and hex-encoded asset_name", + "type": "string", + }, + }, + "required": [ + "unit", + "quantity", + ], + "type": "object", + }, + "type": "array", + }, + "pool_retire_count": { + "description": "Count of the stake pool retirement certificates within the transaction", + "example": 0, + "type": "integer", + }, + "pool_update_count": { + "description": "Count of the stake pool registration and update certificates within the transaction", + "example": 0, + "type": "integer", + }, + "redeemer_count": { + "description": "Count of redeemers within the transaction", + "example": 0, + "type": "integer", + }, + "size": { + "description": "Size of the transaction in Bytes", + "example": 433, + "type": "integer", + }, + "slot": { + "description": "Slot number", + "example": 42000000, + "type": "integer", + }, + "stake_cert_count": { + "description": "Count of the stake keys (de)registration within the transaction", + "example": 0, + "type": "integer", + }, + "utxo_count": { + "description": "Count of UTXOs within the transaction", + "example": 4, + "type": "integer", + }, + "valid_contract": { + "description": "True if contract script passed validation", + "example": true, + "type": "boolean", + }, + "withdrawal_count": { + "description": "Count of the withdrawals within the transaction", + "example": 0, + "type": "integer", + }, + }, + "required": [ + "hash", + "block", + "block_height", + "block_time", + "slot", + "index", + "output_amount", + "fees", + "deposit", + "size", + "invalid_before", + "invalid_hereafter", + "utxo_count", + "withdrawal_count", + "mir_cert_count", + "delegation_count", + "stake_cert_count", + "pool_update_count", + "pool_retire_count", + "asset_mint_or_burn_count", + "redeemer_count", + "valid_contract", + ], + "type": "object", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/txs/{hash}/delegations": { + "params": { + "properties": { + "hash": { + "type": "string", + }, + }, + "type": "object", + }, + "response": { + "200": { + "items": { + "properties": { + "active_epoch": { + "description": "Epoch in which the delegation becomes active", + "example": 210, + "type": "integer", + }, + "address": { + "description": "Bech32 delegation stake address", + "example": "stake1u9r76ypf5fskppa0cmttas05cgcswrttn6jrq4yd7jpdnvc7gt0yc", + "type": "string", + }, + "cert_index": { + "description": "Index of the certificate within the transaction", + "example": 0, + "type": "integer", + }, + "index": { + "deprecated": true, + "description": "Index of the certificate within the transaction", + "example": 0, + "type": "integer", + }, + "pool_id": { + "description": "Bech32 ID of delegated stake pool", + "example": "pool1pu5jlj4q9w9jlxeu370a3c9myx47md5j5m2str0naunn2q3lkdy", + "type": "string", + }, + }, + "required": [ + "index", + "cert_index", + "address", + "pool_id", + "active_epoch", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/txs/{hash}/metadata": { + "params": { + "properties": { + "hash": { + "type": "string", + }, + }, + "type": "object", + }, + "response": { + "200": { + "items": { + "properties": { + "json_metadata": {}, + "label": { + "type": "string", + }, + }, + "required": [ + "label", + "json_metadata", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/txs/{hash}/metadata/cbor": { + "params": { + "properties": { + "hash": { + "type": "string", + }, + }, + "type": "object", + }, + "response": { + "200": { + "example": [ + { + "cbor_metadata": "\\\\xa100a16b436f6d62696e6174696f6e8601010101010c", + "label": "1968", + "metadata": "a100a16b436f6d62696e6174696f6e8601010101010c", + }, + ], + "items": { + "properties": { + "cbor_metadata": { + "deprecated": true, + "description": "Content of the CBOR metadata", + "nullable": true, + "type": "string", + }, + "label": { + "description": "Metadata label", + "type": "string", + }, + "metadata": { + "description": "Content of the CBOR metadata in hex", + "nullable": true, + "type": "string", + }, + }, + "required": [ + "label", + "cbor_metadata", + "metadata", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/txs/{hash}/mirs": { + "params": { + "properties": { + "hash": { + "type": "string", + }, + }, + "type": "object", + }, + "response": { + "200": { + "items": { + "properties": { + "address": { + "description": "Bech32 stake address", + "example": "stake1u9r76ypf5fskppa0cmttas05cgcswrttn6jrq4yd7jpdnvc7gt0yc", + "type": "string", + }, + "amount": { + "description": "MIR amount in Lovelaces", + "example": "431833601", + "type": "string", + }, + "cert_index": { + "description": "Index of the certificate within the transaction", + "example": 0, + "type": "integer", + }, + "pot": { + "description": "Source of MIR funds", + "enum": [ + "reserve", + "treasury", + ], + "example": "reserve", + "type": "string", + }, + }, + "required": [ + "pot", + "cert_index", + "address", + "amount", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/txs/{hash}/pool_retires": { + "params": { + "properties": { + "hash": { + "type": "string", + }, + }, + "type": "object", + }, + "response": { + "200": { + "items": { + "properties": { + "cert_index": { + "description": "Index of the certificate within the transaction", + "example": 0, + "type": "integer", + }, + "pool_id": { + "description": "Bech32 stake pool ID", + "example": "pool1pu5jlj4q9w9jlxeu370a3c9myx47md5j5m2str0naunn2q3lkdy", + "type": "string", + }, + "retiring_epoch": { + "description": "Epoch in which the pool becomes retired", + "example": 216, + "type": "integer", + }, + }, + "required": [ + "cert_index", + "pool_id", + "retiring_epoch", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/txs/{hash}/pool_updates": { + "params": { + "properties": { + "hash": { + "type": "string", + }, + }, + "type": "object", + }, + "response": { + "200": { + "items": { + "properties": { + "active_epoch": { + "description": "Epoch in which the update becomes active", + "example": 210, + "type": "integer", + }, + "cert_index": { + "description": "Index of the certificate within the transaction", + "example": 0, + "type": "integer", + }, + "fixed_cost": { + "description": "Fixed tax cost of the stake pool in Lovelaces", + "example": "340000000", + "type": "string", + }, + "margin_cost": { + "description": "Margin tax cost of the stake pool", + "example": 0.05, + "type": "number", + }, + "metadata": { + "nullable": true, + "properties": { + "description": { + "description": "Description of the stake pool", + "example": "The best pool ever", + "nullable": true, + "type": "string", + }, + "hash": { + "description": "Hash of the metadata file", + "example": "47c0c68cb57f4a5b4a87bad896fc274678e7aea98e200fa14a1cb40c0cab1d8c", + "nullable": true, + "type": "string", + }, + "homepage": { + "description": "Home page of the stake pool", + "example": "https://stakentus.com/", + "nullable": true, + "type": "string", + }, + "name": { + "description": "Name of the stake pool", + "example": "Stake Nuts", + "nullable": true, + "type": "string", + }, + "ticker": { + "description": "Ticker of the stake pool", + "example": "NUTS", + "nullable": true, + "type": "string", + }, + "url": { + "description": "URL to the stake pool metadata", + "example": "https://stakenuts.com/mainnet.json", + "nullable": true, + "type": "string", + }, + }, + "required": [ + "url", + "hash", + "ticker", + "name", + "description", + "homepage", + ], + "type": "object", + }, + "owners": { + "example": [ + "stake1u98nnlkvkk23vtvf9273uq7cph5ww6u2yq2389psuqet90sv4xv9v", + ], + "items": { + "description": "Bech32 accounts of the pool owners", + "type": "string", + }, + "type": "array", + }, + "pledge": { + "description": "Stake pool certificate pledge in Lovelaces", + "example": "5000000000", + "type": "string", + }, + "pool_id": { + "description": "Bech32 encoded pool ID", + "example": "pool1pu5jlj4q9w9jlxeu370a3c9myx47md5j5m2str0naunn2q3lkdy", + "type": "string", + }, + "relays": { + "items": { + "properties": { + "dns": { + "description": "DNS name of the relay", + "example": "relay1.stakenuts.com", + "nullable": true, + "type": "string", + }, + "dns_srv": { + "description": "DNS SRV entry of the relay", + "example": "_relays._tcp.relays.stakenuts.com", + "nullable": true, + "type": "string", + }, + "ipv4": { + "description": "IPv4 address of the relay", + "example": "4.4.4.4", + "nullable": true, + "type": "string", + }, + "ipv6": { + "description": "IPv6 address of the relay", + "example": "https://stakenuts.com/mainnet.json", + "nullable": true, + "type": "string", + }, + "port": { + "description": "Network port of the relay", + "example": 3001, + "type": "integer", + }, + }, + "required": [ + "ipv4", + "ipv6", + "dns", + "dns_srv", + "port", + ], + "type": "object", + }, + "type": "array", + }, + "reward_account": { + "description": "Bech32 reward account of the stake pool", + "example": "stake1uxkptsa4lkr55jleztw43t37vgdn88l6ghclfwuxld2eykgpgvg3f", + "type": "string", + }, + "vrf_key": { + "description": "VRF key hash", + "example": "0b5245f9934ec2151116fb8ec00f35fd00e0aa3b075c4ed12cce440f999d8233", + "type": "string", + }, + }, + "required": [ + "cert_index", + "pool_id", + "vrf_key", + "pledge", + "margin_cost", + "fixed_cost", + "reward_account", + "owners", + "metadata", + "relays", + "active_epoch", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/txs/{hash}/redeemers": { + "params": { + "properties": { + "hash": { + "type": "string", + }, + }, + "type": "object", + }, + "response": { + "200": { + "items": { + "properties": { + "datum_hash": { + "deprecated": true, + "description": "Datum hash", + "example": "923918e403bf43c34b4ef6b48eb2ee04babed17320d8d1b9ff9ad086e86f44ec", + "type": "string", + }, + "fee": { + "description": "The fee consumed to run the script", + "example": "172033", + "type": "string", + }, + "purpose": { + "description": "Validation purpose", + "enum": [ + "spend", + "mint", + "cert", + "reward", + ], + "example": "spend", + "type": "string", + }, + "redeemer_data_hash": { + "description": "Redeemer data hash", + "example": "923918e403bf43c34b4ef6b48eb2ee04babed17320d8d1b9ff9ad086e86f44ec", + "type": "string", + }, + "script_hash": { + "description": "Script hash", + "example": "ec26b89af41bef0f7585353831cb5da42b5b37185e0c8a526143b824", + "type": "string", + }, + "tx_index": { + "description": "Index of the redeemer within the transaction", + "example": 0, + "type": "integer", + }, + "unit_mem": { + "description": "The budget in Memory to run a script", + "example": "1700", + "type": "string", + }, + "unit_steps": { + "description": "The budget in CPU steps to run a script", + "example": "476468", + "type": "string", + }, + }, + "required": [ + "tx_index", + "purpose", + "unit_mem", + "unit_steps", + "script_hash", + "redeemer_data_hash", + "datum_hash", + "fee", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/txs/{hash}/stakes": { + "params": { + "properties": { + "hash": { + "type": "string", + }, + }, + "type": "object", + }, + "response": { + "200": { + "items": { + "properties": { + "address": { + "description": "Delegation stake address", + "example": "stake1u9t3a0tcwune5xrnfjg4q7cpvjlgx9lcv0cuqf5mhfjwrvcwrulda", + "type": "string", + }, + "cert_index": { + "description": "Index of the certificate within the transaction", + "example": 0, + "type": "integer", + }, + "registration": { + "description": "Registration boolean, false if deregistration", + "example": true, + "type": "boolean", + }, + }, + "required": [ + "cert_index", + "address", + "registration", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/txs/{hash}/utxos": { + "params": { + "properties": { + "hash": { + "type": "string", + }, + }, + "type": "object", + }, + "response": { + "200": { + "properties": { + "hash": { + "description": "Transaction hash", + "example": "1e043f100dce12d107f679685acd2fc0610e10f72a92d412794c9773d11d8477", + "type": "string", + }, + "inputs": { + "items": { + "properties": { + "address": { + "description": "Input address", + "example": "addr1q9ld26v2lv8wvrxxmvg90pn8n8n5k6tdst06q2s856rwmvnueldzuuqmnsye359fqrk8hwvenjnqultn7djtrlft7jnq7dy7wv", + "type": "string", + }, + "amount": { + "example": [ + { + "quantity": "42000000", + "unit": "lovelace", + }, + { + "quantity": "12", + "unit": "b0d07d45fe9514f80213f4020e5a61241458be626841cde717cb38a76e7574636f696e", + }, + ], + "items": { + "description": "The sum of all the UTXO per asset", + "properties": { + "quantity": { + "description": "The quantity of the unit", + "type": "string", + }, + "unit": { + "description": "The unit of the value", + "format": "Lovelace or concatenation of asset policy_id and hex-encoded asset_name", + "type": "string", + }, + }, + "required": [ + "unit", + "quantity", + ], + "type": "object", + }, + "type": "array", + }, + "collateral": { + "description": "Whether the input is a collateral consumed on script validation failure", + "example": false, + "type": "boolean", + }, + "data_hash": { + "description": "The hash of the transaction output datum", + "example": "9e478573ab81ea7a8e31891ce0648b81229f408d596a3483e6f4f9b92d3cf710", + "nullable": true, + "type": "string", + }, + "inline_datum": { + "description": "CBOR encoded inline datum", + "example": "19a6aa", + "nullable": true, + "type": "string", + }, + "output_index": { + "description": "UTXO index in the transaction", + "example": 0, + "type": "integer", + }, + "reference": { + "description": "Whether the input is a reference transaction input", + "example": false, + "type": "boolean", + }, + "reference_script_hash": { + "description": "The hash of the reference script of the input", + "example": "13a3efd825703a352a8f71f4e2758d08c28c564e8dfcce9f77776ad1", + "nullable": true, + "type": "string", + }, + "tx_hash": { + "description": "Hash of the UTXO transaction", + "example": "1a0570af966fb355a7160e4f82d5a80b8681b7955f5d44bec0dce628516157f0", + "type": "string", + }, + }, + "required": [ + "address", + "amount", + "tx_hash", + "output_index", + "data_hash", + "inline_datum", + "reference_script_hash", + "collateral", + ], + "type": "object", + }, + "type": "array", + }, + "outputs": { + "items": { + "properties": { + "address": { + "description": "Output address", + "example": "addr1q9ld26v2lv8wvrxxmvg90pn8n8n5k6tdst06q2s856rwmvnueldzuuqmnsye359fqrk8hwvenjnqultn7djtrlft7jnq7dy7wv", + "type": "string", + }, + "amount": { + "example": [ + { + "quantity": "42000000", + "unit": "lovelace", + }, + { + "quantity": "12", + "unit": "b0d07d45fe9514f80213f4020e5a61241458be626841cde717cb38a76e7574636f696e", + }, + ], + "items": { + "description": "The sum of all the UTXO per asset", + "properties": { + "quantity": { + "description": "The quantity of the unit", + "type": "string", + }, + "unit": { + "description": "The unit of the value", + "format": "Lovelace or concatenation of asset policy_id and hex-encoded asset_name", + "type": "string", + }, + }, + "required": [ + "unit", + "quantity", + ], + "type": "object", + }, + "type": "array", + }, + "collateral": { + "description": "Whether the output is a collateral output", + "example": false, + "type": "boolean", + }, + "data_hash": { + "description": "The hash of the transaction output datum", + "example": "9e478573ab81ea7a8e31891ce0648b81229f408d596a3483e6f4f9b92d3cf710", + "nullable": true, + "type": "string", + }, + "inline_datum": { + "description": "CBOR encoded inline datum", + "example": "19a6aa", + "nullable": true, + "type": "string", + }, + "output_index": { + "description": "UTXO index in the transaction", + "example": 0, + "type": "integer", + }, + "reference_script_hash": { + "description": "The hash of the reference script of the output", + "example": "13a3efd825703a352a8f71f4e2758d08c28c564e8dfcce9f77776ad1", + "nullable": true, + "type": "string", + }, + }, + "required": [ + "address", + "amount", + "output_index", + "data_hash", + "inline_datum", + "collateral", + "reference_script_hash", + ], + "type": "object", + }, + "type": "array", + }, + }, + "required": [ + "hash", + "inputs", + "outputs", + ], + "type": "object", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/txs/{hash}/withdrawals": { + "params": { + "properties": { + "hash": { + "type": "string", + }, + }, + "type": "object", + }, + "response": { + "200": { + "items": { + "properties": { + "address": { + "description": "Bech32 withdrawal address", + "example": "stake1u9r76ypf5fskppa0cmttas05cgcswrttn6jrq4yd7jpdnvc7gt0yc", + "type": "string", + }, + "amount": { + "description": "Withdrawal amount in Lovelaces", + "example": "431833601", + "type": "string", + }, + }, + "required": [ + "address", + "amount", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/utils/addresses/xpub/{xpub}/{role}/{index}": { + "params": { + "properties": { + "index": { + "type": "integer", + }, + "role": { + "type": "integer", + }, + "xpub": { + "type": "string", + }, + }, + "type": "object", + }, + "response": { + "200": { + "example": [ + { + "address": "addr1q90sqnljxky88s0jsnps48jd872p7znzwym0jpzqnax6qs5nfrlkaatu28n0qzmqh7f2cpksxhpc9jefx3wrl0a2wu8q5amen7", + "index": 0, + "role": 0, + "xpub": "d507c8f866691bd96e131334c355188b1a1d0b2fa0ab11545075aab332d77d9eb19657ad13ee581b56b0f8d744d66ca356b93d42fe176b3de007d53e9c4c4e7a", + }, + ], + "properties": { + "address": { + "description": "Derived address", + "type": "string", + }, + "index": { + "description": "Address index", + "type": "integer", + }, + "role": { + "description": "Account role", + "type": "integer", + }, + "xpub": { + "description": "Script hash", + "type": "string", + }, + }, + "required": [ + "xpub", + "role", + "index", + "address", + ], + "type": "object", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/utils/txs/evaluate": { + "response": { + "200": { + "additionalProperties": true, + "type": "object", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "425": { + "properties": { + "error": { + "example": "Mempool Full", + "type": "string", + }, + "message": { + "example": "Mempool is full, please try resubmitting again later.", + "type": "string", + }, + "status_code": { + "example": 425, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, + "/utils/txs/evaluate/utxos": { + "response": { + "200": { + "additionalProperties": true, + "type": "object", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "425": { + "properties": { + "error": { + "example": "Mempool Full", + "type": "string", + }, + "message": { + "example": "Mempool is full, please try resubmitting again later.", + "type": "string", + }, + "status_code": { + "example": 425, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + }, +} +`; diff --git a/test/tests/get-schema-for-endpoint.test.ts b/test/tests/get-schema-for-endpoint.test.ts index 754334d3..c5ee7123 100644 --- a/test/tests/get-schema-for-endpoint.test.ts +++ b/test/tests/get-schema-for-endpoint.test.ts @@ -1,4 +1,5 @@ import { expect, describe, test } from 'vitest'; +import { generateSchemas } from '../../src/functions/schema'; import { getSchemaForEndpoint } from '../../src/index'; import { error400, @@ -923,4 +924,873 @@ describe('getSchemaForEndpoint', () => { }, }); }); + + test('/scripts/datum/{datum_hash}', () => { + expect(getSchemaForEndpoint('/scripts/datum/{datum_hash}')).toStrictEqual({ + response: { + '200': { + type: 'object', + properties: { + json_value: { + description: 'JSON content of the datum', + }, + }, + required: ['json_value'], + example: { + json_value: { + int: 42, + }, + }, + }, + '400': { + type: 'object', + properties: { + status_code: { + type: 'integer', + example: 400, + }, + error: { + type: 'string', + example: 'Bad Request', + }, + message: { + type: 'string', + example: 'Backend did not understand your request.', + }, + }, + required: ['status_code', 'error', 'message'], + }, + '403': { + type: 'object', + properties: { + status_code: { + type: 'integer', + example: 403, + }, + error: { + type: 'string', + example: 'Forbidden', + }, + message: { + type: 'string', + example: 'Invalid project token.', + }, + }, + required: ['status_code', 'error', 'message'], + }, + '404': { + type: 'object', + properties: { + status_code: { + type: 'integer', + example: 404, + }, + error: { + type: 'string', + example: 'Not Found', + }, + message: { + type: 'string', + example: 'The requested component has not been found.', + }, + }, + required: ['status_code', 'error', 'message'], + }, + '418': { + type: 'object', + properties: { + status_code: { + type: 'integer', + example: 418, + }, + error: { + type: 'string', + example: 'Requested Banned', + }, + message: { + type: 'string', + example: 'IP has been auto-banned for flooding.', + }, + }, + required: ['status_code', 'error', 'message'], + }, + '429': { + type: 'object', + properties: { + status_code: { + type: 'integer', + example: 429, + }, + error: { + type: 'string', + example: 'Project Over Limit', + }, + message: { + type: 'string', + example: 'Usage is over limit.', + }, + }, + required: ['status_code', 'error', 'message'], + }, + '500': { + type: 'object', + properties: { + status_code: { + type: 'integer', + example: 500, + }, + error: { + type: 'string', + example: 'Internal Server Error', + }, + message: { + type: 'string', + example: 'An unexpected response was received from the backend.', + }, + }, + required: ['status_code', 'error', 'message'], + }, + }, + params: { + type: 'object', + properties: { + datum_hash: { + type: 'string', + }, + }, + }, + }); + }); + test('/scripts/{script_hash}/json', () => { + expect(getSchemaForEndpoint('/scripts/{script_hash}/json')) + .toMatchInlineSnapshot(` + { + "params": { + "properties": { + "script_hash": { + "type": "string", + }, + }, + "type": "object", + }, + "response": { + "200": { + "properties": { + "json": { + "nullable": true, + }, + }, + "required": [ + "json", + ], + "type": "object", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + } + `); + }); + + test('/txs/{hash}/metadata', () => { + expect(getSchemaForEndpoint('/txs/{hash}/metadata')).toMatchInlineSnapshot(` + { + "params": { + "properties": { + "hash": { + "type": "string", + }, + }, + "type": "object", + }, + "response": { + "200": { + "items": { + "properties": { + "json_metadata": {}, + "label": { + "type": "string", + }, + }, + "required": [ + "label", + "json_metadata", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + } + `); + }); + test('/metadata/txs/labels/{label}', () => { + expect(getSchemaForEndpoint('/metadata/txs/labels/{label}')) + .toMatchInlineSnapshot(` + { + "params": { + "properties": { + "label": { + "type": "string", + }, + }, + "type": "object", + }, + "querystring": { + "properties": { + "count": { + "default": 100, + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "order": { + "default": "asc", + "enum": [ + "asc", + "desc", + ], + "type": "string", + }, + "page": { + "default": 1, + "maximum": 21474836, + "minimum": 1, + "type": "integer", + }, + }, + "type": "object", + }, + "response": { + "200": { + "example": [ + { + "json_metadata": { + "ADAUSD": [ + { + "source": "ergoOracles", + "value": "0.10409800535729975", + }, + ], + }, + "tx_hash": "257d75c8ddb0434e9b63e29ebb6241add2b835a307aa33aedba2effe09ed4ec8", + }, + { + "json_metadata": { + "ADAUSD": [ + { + "source": "ergoOracles", + "value": "0.15409850555139935", + }, + ], + }, + "tx_hash": "e865f2cc01ca7381cf98dcdc4de07a5e8674b8ea16e6a18e3ed60c186fde2b9c", + }, + { + "json_metadata": null, + "tx_hash": "4237501da3cfdd53ade91e8911e764bd0699d88fd43b12f44a1f459b89bc91be", + }, + ], + "items": { + "properties": { + "json_metadata": { + "additionalProperties": true, + "anyOf": [ + { + "type": "string", + }, + { + "additionalProperties": true, + "type": "object", + }, + { + "items": {}, + "type": "array", + }, + { + "type": "integer", + }, + { + "type": "number", + }, + { + "type": "boolean", + }, + { + "type": "null", + }, + ], + "description": "Content of the JSON metadata", + "nullable": true, + }, + "tx_hash": { + "description": "Transaction hash that contains the specific metadata", + "type": "string", + }, + }, + "required": [ + "tx_hash", + "json_metadata", + ], + "type": "object", + }, + "type": "array", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + } + `); + }); + + test('/ipfs/gateway/{IPFS_path}', () => { + expect(getSchemaForEndpoint('/ipfs/gateway/{IPFS_path}')) + .toMatchInlineSnapshot(` + { + "params": { + "properties": { + "IPFS_path": { + "description": "Path to the IPFS object", + "type": "string", + }, + }, + "type": "object", + }, + "response": { + "200": { + "format": "binary", + "type": "string", + }, + "400": { + "properties": { + "error": { + "example": "Bad Request", + "type": "string", + }, + "message": { + "example": "Backend did not understand your request.", + "type": "string", + }, + "status_code": { + "example": 400, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "403": { + "properties": { + "error": { + "example": "Forbidden", + "type": "string", + }, + "message": { + "example": "Invalid project token.", + "type": "string", + }, + "status_code": { + "example": 403, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "404": { + "properties": { + "error": { + "example": "Not Found", + "type": "string", + }, + "message": { + "example": "The requested component has not been found.", + "type": "string", + }, + "status_code": { + "example": 404, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "418": { + "properties": { + "error": { + "example": "Requested Banned", + "type": "string", + }, + "message": { + "example": "IP has been auto-banned for flooding.", + "type": "string", + }, + "status_code": { + "example": 418, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "429": { + "properties": { + "error": { + "example": "Project Over Limit", + "type": "string", + }, + "message": { + "example": "Usage is over limit.", + "type": "string", + }, + "status_code": { + "example": 429, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + "500": { + "properties": { + "error": { + "example": "Internal Server Error", + "type": "string", + }, + "message": { + "example": "An unexpected response was received from the backend.", + "type": "string", + }, + "status_code": { + "example": 500, + "type": "integer", + }, + }, + "required": [ + "status_code", + "error", + "message", + ], + "type": "object", + }, + }, + } + `); + }); + + test(`generateSchemas`, async () => { + expect(generateSchemas()).toMatchSnapshot(); + }); }); diff --git a/test/tests/get-schema.test.ts b/test/tests/get-schema.test.ts index 85bd192c..355f97fa 100644 --- a/test/tests/get-schema.test.ts +++ b/test/tests/get-schema.test.ts @@ -1,6 +1,6 @@ import { expect, describe, test } from 'vitest'; import { getSchema } from '../../src/index'; -import { convertType } from '../../src/functions/schema'; +import { transformSchemaElement } from '../../src/functions/schema'; import * as fixtures from '../fixtures/schema'; describe('getSchema', () => { @@ -152,14 +152,23 @@ describe('getSchema', () => { }); }); - fixtures.convertType.map(fixture => { - test(`getMetadataFromOutputDatum: ${fixture.description}`, async () => { - expect(convertType(fixture.data)).toStrictEqual(fixture.result); + fixtures.transformSchemaElement.map(fixture => { + test(`transformSchemaElement: ${fixture.description}`, async () => { + expect(transformSchemaElement(fixture.data)).toStrictEqual( + fixture.result, + ); }); }); - fixtures.convertTypeError.map(fixture => { - test(`getMetadataFromOutputDatum: ${fixture.description}`, async () => { - expect(() => convertType(fixture.data)).toThrowError(fixture.result); + fixtures.transformSchemaElementError.map(fixture => { + test(`transformSchemaElement: ${fixture.description}`, async () => { + expect(() => transformSchemaElement(fixture.data)).toThrowError( + fixture.result, + ); + }); + test(`transformSchemaElement: ${fixture.description}`, async () => { + expect(() => transformSchemaElement(fixture.data)).toThrowError( + fixture.result, + ); }); }); }); diff --git a/yarn.lock b/yarn.lock index 0795fc66..d27cd4f1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -188,11 +188,11 @@ __metadata: ajv: ^8.11.2 cbor: ^8.1.0 core-js: 3.1.4 - openapi-typescript: ^6.1.0 + openapi-typescript: 6.1.0 react-is: 16.8.2 redoc-cli: ^0.13.20 rimraf: ^3.0.2 - typescript: ^4.8.4 + typescript: ^5.0.2 vite: ^3.2.4 vitest: ^0.24.3 yaml: ^2.2.1 @@ -3218,7 +3218,7 @@ __metadata: languageName: node linkType: hard -"openapi-typescript@npm:^6.1.0": +"openapi-typescript@npm:6.1.0": version: 6.1.0 resolution: "openapi-typescript@npm:6.1.0" dependencies: @@ -4548,23 +4548,23 @@ __metadata: languageName: node linkType: hard -"typescript@npm:^4.8.4": - version: 4.8.4 - resolution: "typescript@npm:4.8.4" +"typescript@npm:^5.0.2": + version: 5.0.2 + resolution: "typescript@npm:5.0.2" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 3e4f061658e0c8f36c820802fa809e0fd812b85687a9a2f5430bc3d0368e37d1c9605c3ce9b39df9a05af2ece67b1d844f9f6ea8ff42819f13bcb80f85629af0 + checksum: bef1dcd166acfc6934b2ec4d72f93edb8961a5fab36b8dd2aaf6f4f4cd5c0210f2e0850aef4724f3b4913d5aef203a94a28ded731b370880c8bcff7e4ff91fc1 languageName: node linkType: hard -"typescript@patch:typescript@^4.8.4#~builtin": - version: 4.8.4 - resolution: "typescript@patch:typescript@npm%3A4.8.4#~builtin::version=4.8.4&hash=0102e9" +"typescript@patch:typescript@^5.0.2#~builtin": + version: 5.0.2 + resolution: "typescript@patch:typescript@npm%3A5.0.2#~builtin::version=5.0.2&hash=d73830" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 301459fc3eb3b1a38fe91bf96d98eb55da88a9cb17b4ef80b4d105d620f4d547ba776cc27b44cc2ef58b66eda23fe0a74142feb5e79a6fb99f54fc018a696afa + checksum: bdbf3d0aac0d6cf010fbe0536753dc19f278eb4aba88140dcd25487dfe1c56ca8b33abc0dcd42078790a939b08ebc4046f3e9bb961d77d3d2c3cfa9829da4d53 languageName: node linkType: hard @@ -4578,11 +4578,11 @@ __metadata: linkType: hard "undici@npm:^5.12.0": - version: 5.20.0 - resolution: "undici@npm:5.20.0" + version: 5.21.0 + resolution: "undici@npm:5.21.0" dependencies: busboy: ^1.6.0 - checksum: 25412a785b2bd0b12f0bb0ec47ef00aa7a611ca0e570cb7af97cffe6a42e0d78e4b15190363a43771e9002defc3c6647c1b2d52201b3f64e2196819db4d150d3 + checksum: 013d5fd503b631d607942c511c2ab3f3fa78ebcab302acab998b43176b4815503ec15ed9752c5a47918b3bff8a0137768001d3eb57625b2bb6f6d30d8a794d6c languageName: node linkType: hard