diff --git a/.redocly.yaml b/.redocly.yaml deleted file mode 100644 index 64db82c424..0000000000 --- a/.redocly.yaml +++ /dev/null @@ -1,83 +0,0 @@ -extends: - - minimal -apis: - nym-api: - root: ./formatted-openapi.json -rules: - # https://redocly.com/docs/cli/rules/oas/operation-summary - operation-summary: off - # https://redocly.com/docs/cli/rules/oas/security-defined - security-defined: off - struct: off - # https://redocly.com/docs/cli/rules/oas/operation-2xx-response - operation-2xx-response: off -# rules: -# skip-warnings: true - # ignore: - # - path: /v1/gateways - # method: get - # - path: /v1/gateways/blacklisted - # method: get - # - path: /v1/mixnodes - # method: get - # - path: /v1/mixnodes/active - # method: get - # - path: /v1/mixnodes/active/detailed - # method: get - # - path: /v1/mixnodes/blacklisted - # method: get - # - path: /v1/mixnodes/detailed - # method: get - # - path: /v1/mixnodes/rewarded - # method: get - # - path: /v1/mixnodes/rewarded/detailed - # method: get - # - path: /v1/gateways/described - # method: get - # # network-monitor-status (deprecated) - # - path: /v1/status/gateway/{identity}/avg_uptime - # method: GET - # - path: /v1/status/gateway/{identity}/core-status-count - # method: GET - # - path: /v1/status/gateway/{identity}/history - # method: GET - # - path: /v1/status/gateway/{identity}/report - # method: GET - # - path: /v1/status/gateways/detailed - # method: GET - # - path: /v1/status/gateways/detailed-unfiltered - # method: GET - # - path: /v1/status/mixnode/{mix_id}/avg_uptime - # method: GET - # - path: /v1/status/mixnode/{mix_id}/compute-reward-estimation - # method: POST - # - path: /v1/status/mixnode/{mix_id}/core-status-count - # method: GET - # - path: /v1/status/mixnode/{mix_id}/history - # method: GET - # - path: /v1/status/mixnode/{mix_id}/report - # method: GET - # - path: /v1/status/mixnode/{mix_id}/reward-estimation - # method: GET - # - path: /v1/status/mixnodes/detailed-unfiltered - # method: GET - # # status - # - path: /v1/status/mixnode/{mix_id}/inclusion-probability - # method: GET - # - path: /v1/status/mixnode/{mix_id}/stake-saturation - # method: GET - # - path: /v1/status/mixnode/{mix_id}/status - # method: GET - # - path: /v1/status/mixnodes/active/detailed - # method: GET - # - path: /v1/status/mixnodes/detailed - # method: GET - # - path: /v1/status/mixnodes/inclusion-probability - # method: GET - # - path: /v1/status/mixnodes/rewarded/detailed - # method: GET - # # unstable nym nodes - # - path: /v1/unstable/nym-nodes/gateways/skimmed - # method: get - # - path: /v1/unstable/nym-nodes/mixnodes/skimmed - # method: get diff --git a/.redocly.lint-ignore.yaml b/nym-api/redocly/.redocly.lint-ignore.yaml similarity index 62% rename from .redocly.lint-ignore.yaml rename to nym-api/redocly/.redocly.lint-ignore.yaml index 07461cd17d..4cd758f99f 100644 --- a/.redocly.lint-ignore.yaml +++ b/nym-api/redocly/.redocly.lint-ignore.yaml @@ -2,22 +2,18 @@ # See https://redocly.com/docs/cli/ for more information. formatted-openapi.json: path-parameters-defined: - # - >- - # #/paths/~1v1~1status~1mixnode~1{mix_id}~1compute-reward-estimation/post/parameters/0/name - # - >- - # #/paths/~1v1~1status~1mixnode~1{mix_id}~1compute-reward-estimation/post/parameters/1/name - # - >- - # #/paths/~1v1~1status~1mixnode~1{mix_id}~1compute-reward-estimation/post/parameters/2/name - # - >- - # #/paths/~1v1~1status~1mixnode~1{mix_id}~1compute-reward-estimation/post/parameters/3/name - # - >- - # #/paths/~1v1~1status~1mixnode~1{mix_id}~1compute-reward-estimation/post/parameters/4/name - # - >- - # #/paths/~1v1~1status~1mixnode~1{mix_id}~1compute-reward-estimation/post/parameters/5/name - # - '#/paths/~1v1~1unstable~1nym-nodes~1skimmed~1active/get/parameters/0/name' - # - '#/paths/~1v1~1unstable~1nym-nodes~1skimmed~1active/get/parameters/1/name' - # - '#/paths/~1v1~1unstable~1nym-nodes~1skimmed~1active/get/parameters/2/name' - # - '#/paths/~1v1~1unstable~1nym-nodes~1skimmed~1active/get/parameters/3/name' + - >- + #/paths/~1v1~1status~1mixnode~1{mix_id}~1compute-reward-estimation/post/parameters/0/name + - >- + #/paths/~1v1~1status~1mixnode~1{mix_id}~1compute-reward-estimation/post/parameters/1/name + - >- + #/paths/~1v1~1status~1mixnode~1{mix_id}~1compute-reward-estimation/post/parameters/2/name + - >- + #/paths/~1v1~1status~1mixnode~1{mix_id}~1compute-reward-estimation/post/parameters/3/name + - >- + #/paths/~1v1~1status~1mixnode~1{mix_id}~1compute-reward-estimation/post/parameters/4/name + - >- + #/paths/~1v1~1status~1mixnode~1{mix_id}~1compute-reward-estimation/post/parameters/5/name operation-operationId-unique: - >- #/paths/~1v1~1status~1mixnodes~1active~1detailed/get/get_active_set_detailed @@ -30,6 +26,7 @@ formatted-openapi.json: - '#/components/schemas/EcashTicketVerificationRejection' - '#/components/schemas/ExpirationDatePathParam' - '#/components/schemas/FullFatNode' + - '#/components/schemas/G2ProjectiveSchema' - '#/components/schemas/HistoricalPerformanceResponse' - '#/components/schemas/HistoricalUptimeResponse' - '#/components/schemas/MasterVerificationKeyResponse' @@ -41,6 +38,7 @@ formatted-openapi.json: - '#/components/schemas/NymNodeDetails' - '#/components/schemas/PaginationRequest' - '#/components/schemas/PartialCoinIndicesSignatureResponse' + - '#/components/schemas/PayInfo' - '#/components/schemas/SpentCredentialsResponse' - '#/components/schemas/UptimeHistoryResponse' - '#/components/schemas/VerifyEcashCredentialBody' diff --git a/nym-api/redocly/.redocly.yaml b/nym-api/redocly/.redocly.yaml new file mode 100644 index 0000000000..99a71053f0 --- /dev/null +++ b/nym-api/redocly/.redocly.yaml @@ -0,0 +1,12 @@ +extends: + - minimal +apis: + nym-api: + root: ./formatted-openapi.json +rules: + # https://redocly.com/docs/cli/rules/oas/operation-summary + operation-summary: off + # https://redocly.com/docs/cli/rules/oas/security-defined + security-defined: off + # https://redocly.com/docs/cli/rules/oas/operation-2xx-response + operation-2xx-response: off diff --git a/nym-api/redocly/formatted-openapi.json b/nym-api/redocly/formatted-openapi.json new file mode 100644 index 0000000000..3fabd5efee --- /dev/null +++ b/nym-api/redocly/formatted-openapi.json @@ -0,0 +1,7419 @@ +{ + "openapi": "3.1.0", + "info": { + "title": "Nym API", + "description": "", + "contact": { + "name": "Nym Technologies SA" + }, + "license": { + "name": "GPL-3.0" + }, + "version": "1.1.47" + }, + "servers": [ + { + "url": "/api", + "description": "Main Nym Api Server" + }, + { + "url": "/", + "description": "Auxiliary Nym Api Instances" + }, + { + "url": "/", + "description": "Local Development Server" + } + ], + "paths": { + "/v1/api-status/build-information": { + "get": { + "tags": [ + "API Status" + ], + "operationId": "build_information", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BinaryBuildInformationOwned" + } + } + } + } + } + } + }, + "/v1/api-status/health": { + "get": { + "tags": [ + "API Status" + ], + "operationId": "health", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiHealthResponse" + } + } + } + } + } + } + }, + "/v1/api-status/signer-information": { + "get": { + "tags": [ + "API Status" + ], + "operationId": "signer_information", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SignerInformationResponse" + } + } + } + } + } + } + }, + "/v1/circulating-supply": { + "get": { + "tags": [ + "circulating-supply" + ], + "operationId": "get_full_circulating_supply", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CirculatingSupplyResponse" + } + } + } + } + } + } + }, + "/v1/circulating-supply/circulating-supply-value": { + "get": { + "tags": [ + "circulating-supply" + ], + "operationId": "get_circulating_supply", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "number", + "format": "double" + } + } + } + } + } + } + } + }, + "/v1/circulating-supply/total-supply-value": { + "get": { + "tags": [ + "circulating-supply" + ], + "operationId": "get_total_supply", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "number", + "format": "double" + } + } + } + } + } + } + } + }, + "/v1/ecash/aggregated-coin-indices-signatures": { + "get": { + "tags": [ + "Ecash Global Data" + ], + "operationId": "coin_indices_signatures", + "parameters": [ + { + "name": "epoch_id", + "in": "query", + "required": false, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int64", + "minimum": 0 + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AggregatedCoinIndicesSignatureResponse" + } + } + } + } + } + } + }, + "/v1/ecash/aggregated-expiration-date-signatures": { + "get": { + "tags": [ + "Ecash Global Data" + ], + "operationId": "expiration_date_signatures", + "parameters": [ + { + "name": "expiration_date", + "in": "query", + "required": false, + "schema": { + "type": [ + "string", + "null" + ] + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AggregatedExpirationDateSignatureResponse" + } + } + } + } + } + } + }, + "/v1/ecash/batch-redeem-ecash-tickets": { + "post": { + "tags": [ + "Ecash" + ], + "operationId": "batch_redeem_tickets", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchRedeemTicketsBody" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EcashBatchTicketRedemptionResponse" + } + } + } + }, + "400": { + "description": "this nym-api is not an ecash signer in the current epoch", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/v1/ecash/blind-sign": { + "post": { + "tags": [ + "Ecash" + ], + "operationId": "post_blind_sign", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BlindSignRequestBody" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BlindedSignatureResponse" + } + } + } + }, + "400": { + "description": "this nym-api is not an ecash signer in the current epoch", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/v1/ecash/double-spending-filter-v1": { + "get": { + "tags": [ + "Ecash" + ], + "operationId": "double_spending_filter_v1", + "responses": { + "500": { + "description": "bloomfilters got disabled", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + }, + "deprecated": true + } + }, + "/v1/ecash/issued-ticketbooks-challenge": { + "post": { + "tags": [ + "Ecash" + ], + "operationId": "issued_ticketbooks_challenge", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IssuedTicketbooksChallengeRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IssuedTicketbooksChallengeResponse" + } + } + } + }, + "400": { + "description": "this nym-api is not an ecash signer in the current epoch", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/v1/ecash/issued-ticketbooks-for/{expiration_date}": { + "get": { + "tags": [ + "Ecash" + ], + "operationId": "issued_ticketbooks_for", + "parameters": [ + { + "name": "expiration_date", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "date" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IssuedTicketbooksForResponse" + } + } + } + }, + "400": { + "description": "this nym-api is not an ecash signer in the current epoch", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/v1/ecash/master-verification-key": { + "get": { + "tags": [ + "Ecash Global Data" + ], + "operationId": "master_verification_key", + "parameters": [ + { + "name": "epoch_id", + "in": "query", + "required": false, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int64", + "minimum": 0 + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VerificationKeyResponse" + } + } + } + } + } + } + }, + "/v1/ecash/partial-coin-indices-signatures": { + "get": { + "tags": [ + "Ecash" + ], + "operationId": "partial_coin_indices_signatures", + "parameters": [ + { + "name": "epoch_id", + "in": "query", + "required": false, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int64", + "minimum": 0 + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PartialExpirationDateSignatureResponse" + } + } + } + }, + "400": { + "description": "this nym-api is not an ecash signer in the current epoch", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/v1/ecash/partial-expiration-date-signatures": { + "get": { + "tags": [ + "Ecash" + ], + "operationId": "partial_expiration_date_signatures", + "parameters": [ + { + "name": "expiration_date", + "in": "query", + "required": false, + "schema": { + "type": [ + "string", + "null" + ] + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PartialExpirationDateSignatureResponse" + } + } + } + }, + "400": { + "description": "this nym-api is not an ecash signer in the current epoch", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/v1/ecash/verify-ecash-ticket": { + "post": { + "tags": [ + "Ecash" + ], + "operationId": "verify_ticket", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VerifyEcashTicketBody" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EcashTicketVerificationResponse" + } + } + } + }, + "400": { + "description": "this nym-api is not an ecash signer in the current epoch", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/v1/epoch/current": { + "get": { + "tags": [ + "contract-cache" + ], + "operationId": "get_current_epoch", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/Interval" + } + ] + } + } + } + } + } + } + }, + "/v1/epoch/reward_params": { + "get": { + "tags": [ + "contract-cache" + ], + "operationId": "get_interval_reward_params", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/RewardingParams" + } + ] + } + } + } + } + } + } + }, + "/v1/gateways": { + "get": { + "tags": [ + "contract-cache" + ], + "operationId": "get_gateways", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/GatewayBond" + } + } + } + } + } + }, + "deprecated": true + } + }, + "/v1/gateways/blacklisted": { + "get": { + "tags": [ + "contract-cache" + ], + "operationId": "get_blacklisted_gateways", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": [ + "array", + "null" + ], + "items": { + "type": "string" + }, + "uniqueItems": true + } + } + } + } + }, + "deprecated": true + } + }, + "/v1/gateways/described": { + "get": { + "tags": [ + "Legacy gateways" + ], + "operationId": "get_gateways_described", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LegacyDescribedGateway" + } + } + } + } + } + }, + "deprecated": true + } + }, + "/v1/mixnodes": { + "get": { + "tags": [ + "contract-cache" + ], + "operationId": "get_mixnodes", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LegacyMixNodeDetailsWithLayer" + } + } + } + } + } + }, + "deprecated": true + } + }, + "/v1/mixnodes/active": { + "get": { + "tags": [ + "contract-cache" + ], + "operationId": "get_active_set", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LegacyMixNodeDetailsWithLayer" + } + } + } + } + } + }, + "deprecated": true + } + }, + "/v1/mixnodes/active/detailed": { + "get": { + "tags": [ + "contract-cache" + ], + "operationId": "get_active_set_detailed", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MixNodeBondAnnotated" + } + } + } + } + } + }, + "deprecated": true + } + }, + "/v1/mixnodes/blacklisted": { + "get": { + "tags": [ + "contract-cache" + ], + "operationId": "get_blacklisted_mixnodes", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/components/schemas/u32" + }, + "uniqueItems": true + } + } + } + } + }, + "deprecated": true + } + }, + "/v1/mixnodes/described": { + "get": { + "tags": [ + "Legacy Mixnodes" + ], + "operationId": "get_mixnodes_described", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LegacyDescribedMixNode" + } + } + } + } + } + }, + "deprecated": true + } + }, + "/v1/mixnodes/detailed": { + "get": { + "tags": [ + "contract-cache" + ], + "operationId": "get_mixnodes_detailed", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MixNodeBondAnnotated" + } + } + } + } + } + }, + "deprecated": true + } + }, + "/v1/mixnodes/rewarded": { + "get": { + "tags": [ + "contract-cache" + ], + "operationId": "get_rewarded_set", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LegacyMixNodeDetailsWithLayer" + } + } + } + } + } + }, + "deprecated": true + } + }, + "/v1/mixnodes/rewarded/detailed": { + "get": { + "tags": [ + "contract-cache" + ], + "operationId": "get_rewarded_set_detailed", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MixNodeBondAnnotated" + } + } + } + } + } + }, + "deprecated": true + } + }, + "/v1/network/details": { + "get": { + "tags": [ + "network" + ], + "operationId": "network_details", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NetworkDetails" + } + } + } + } + } + } + }, + "/v1/network/nym-contracts": { + "get": { + "tags": [ + "network" + ], + "operationId": "nym_contracts", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/ContractInformationContractVersion" + }, + "propertyNames": { + "type": "string" + } + } + } + } + } + } + } + }, + "/v1/network/nym-contracts-detailed": { + "get": { + "tags": [ + "network" + ], + "operationId": "nym_contracts_detailed", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/ContractInformationBuildInformation" + }, + "propertyNames": { + "type": "string" + } + } + } + } + } + } + } + }, + "/v1/nym-nodes/annotation/{node_id}": { + "get": { + "tags": [ + "Nym Nodes" + ], + "operationId": "get_node_annotation", + "parameters": [ + { + "name": "node_id", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/u32" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AnnotationResponse" + } + } + } + } + } + } + }, + "/v1/nym-nodes/bonded": { + "get": { + "tags": [ + "Nym Nodes" + ], + "operationId": "get_bonded_nodes", + "parameters": [ + { + "name": "page", + "in": "query", + "required": false, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + }, + { + "name": "per_page", + "in": "query", + "required": false, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PaginatedResponse_NymNodeDetails" + } + } + } + } + } + } + }, + "/v1/nym-nodes/described": { + "get": { + "tags": [ + "Nym Nodes" + ], + "operationId": "get_described_nodes", + "parameters": [ + { + "name": "page", + "in": "query", + "required": false, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + }, + { + "name": "per_page", + "in": "query", + "required": false, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PaginatedResponse_NymNodeDescription" + } + } + } + } + } + } + }, + "/v1/nym-nodes/historical-performance/{node_id}": { + "get": { + "tags": [ + "Nym Nodes" + ], + "operationId": "get_historical_performance", + "parameters": [ + { + "name": "date", + "in": "query", + "required": true, + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "node_id", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/u32" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NodeDatePerformanceResponse" + } + } + } + } + } + } + }, + "/v1/nym-nodes/noise": { + "get": { + "tags": [ + "Nym Nodes" + ], + "operationId": "nodes_noise", + "parameters": [ + { + "name": "page", + "in": "query", + "required": false, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + }, + { + "name": "per_page", + "in": "query", + "required": false, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PaginatedResponse_NoiseDetails" + } + } + } + } + } + } + }, + "/v1/nym-nodes/performance-history/{node_id}": { + "get": { + "tags": [ + "Nym Nodes" + ], + "operationId": "get_node_performance_history", + "parameters": [ + { + "name": "page", + "in": "query", + "required": false, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + }, + { + "name": "per_page", + "in": "query", + "required": false, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + }, + { + "name": "node_id", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/u32" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PerformanceHistoryResponse" + } + } + } + } + } + } + }, + "/v1/nym-nodes/performance/{node_id}": { + "get": { + "tags": [ + "Nym Nodes" + ], + "operationId": "get_current_node_performance", + "parameters": [ + { + "name": "node_id", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/u32" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NodePerformanceResponse" + } + } + } + } + } + } + }, + "/v1/nym-nodes/refresh-described": { + "post": { + "tags": [ + "Nym Nodes" + ], + "operationId": "refresh_described", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NodeRefreshBody" + } + } + }, + "required": true + }, + "responses": {} + } + }, + "/v1/nym-nodes/rewarded-set": { + "get": { + "tags": [ + "Nym Nodes" + ], + "operationId": "rewarded_set", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NodeRefreshBody" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RewardedSetResponse" + } + } + } + } + } + } + }, + "/v1/nym-nodes/uptime-history/{node_id}": { + "get": { + "tags": [ + "Nym Nodes" + ], + "operationId": "get_node_uptime_history", + "parameters": [ + { + "name": "page", + "in": "query", + "required": false, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + }, + { + "name": "per_page", + "in": "query", + "required": false, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + }, + { + "name": "node_id", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/u32" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PerformanceHistoryResponse" + } + } + } + } + } + } + }, + "/v1/status/config-score-details": { + "get": { + "tags": [ + "Status" + ], + "operationId": "config_score_details", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigScoreDataResponse" + } + } + } + } + } + } + }, + "/v1/status/gateway/{identity}/avg_uptime": { + "get": { + "tags": [ + "network-monitor-status" + ], + "operationId": "get_gateway_avg_uptime", + "parameters": [ + { + "name": "identity", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GatewayUptimeResponse" + } + } + } + } + }, + "deprecated": true + } + }, + "/v1/status/gateway/{identity}/core-status-count": { + "get": { + "tags": [ + "network-monitor-status" + ], + "operationId": "gateway_core_status_count", + "parameters": [ + { + "name": "since", + "in": "query", + "required": false, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int64" + } + }, + { + "name": "identity", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GatewayCoreStatusResponse" + } + } + } + } + }, + "deprecated": true + } + }, + "/v1/status/gateway/{identity}/history": { + "get": { + "tags": [ + "network-monitor-status" + ], + "operationId": "gateway_uptime_history", + "parameters": [ + { + "name": "identity", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GatewayUptimeHistoryResponse" + } + } + } + } + }, + "deprecated": true + } + }, + "/v1/status/gateway/{identity}/report": { + "get": { + "tags": [ + "network-monitor-status" + ], + "operationId": "gateway_report", + "parameters": [ + { + "name": "identity", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GatewayStatusReportResponse" + } + } + } + } + }, + "deprecated": true + } + }, + "/v1/status/gateways/detailed": { + "get": { + "tags": [ + "network-monitor-status" + ], + "operationId": "get_gateways_detailed", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GatewayBondAnnotated" + } + } + } + } + }, + "deprecated": true + } + }, + "/v1/status/gateways/detailed-unfiltered": { + "get": { + "tags": [ + "network-monitor-status" + ], + "operationId": "get_gateways_detailed_unfiltered", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GatewayBondAnnotated" + } + } + } + } + }, + "deprecated": true + } + }, + "/v1/status/gateways/unstable/{identity}/test-results": { + "get": { + "tags": [ + "UNSTABLE - DO **NOT** USE" + ], + "operationId": "gateway_test_results", + "parameters": [ + { + "name": "page", + "in": "query", + "required": false, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + }, + { + "name": "per_page", + "in": "query", + "required": false, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + }, + { + "name": "identity", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PaginatedResponse" + } + } + } + } + } + } + }, + "/v1/status/mixnode/{mix_id}/avg_uptime": { + "get": { + "tags": [ + "network-monitor-status" + ], + "operationId": "get_mixnode_avg_uptime", + "parameters": [ + { + "name": "mix_id", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/u32" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UptimeResponse" + } + } + } + } + }, + "deprecated": true + } + }, + "/v1/status/mixnode/{mix_id}/compute-reward-estimation": { + "post": { + "tags": [ + "network-monitor-status" + ], + "operationId": "compute_mixnode_reward_estimation", + "parameters": [ + { + "name": "performance", + "in": "path", + "required": true, + "schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "active_in_rewarded_set", + "in": "path", + "required": true, + "schema": { + "type": [ + "boolean", + "null" + ] + } + }, + { + "name": "pledge_amount", + "in": "path", + "required": true, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int64", + "minimum": 0 + } + }, + { + "name": "total_delegation", + "in": "path", + "required": true, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int64", + "minimum": 0 + } + }, + { + "name": "interval_operating_cost", + "in": "path", + "required": true, + "schema": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/CoinSchema" + } + ] + } + }, + { + "name": "profit_margin_percent", + "in": "path", + "required": true, + "schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "mix_id", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/u32" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ComputeRewardEstParam" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RewardEstimationResponse" + } + } + } + } + }, + "deprecated": true + } + }, + "/v1/status/mixnode/{mix_id}/core-status-count": { + "get": { + "tags": [ + "network-monitor-status" + ], + "operationId": "mixnode_core_status_count", + "parameters": [ + { + "name": "mix_id", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/u32" + } + }, + { + "name": "since", + "in": "query", + "required": false, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MixnodeCoreStatusResponse" + } + } + } + } + }, + "deprecated": true + } + }, + "/v1/status/mixnode/{mix_id}/history": { + "get": { + "tags": [ + "network-monitor-status" + ], + "operationId": "mixnode_uptime_history", + "parameters": [ + { + "name": "mix_id", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/u32" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MixnodeUptimeHistoryResponse" + } + } + } + } + }, + "deprecated": true + } + }, + "/v1/status/mixnode/{mix_id}/inclusion-probability": { + "get": { + "tags": [ + "status" + ], + "operationId": "get_mixnode_inclusion_probability", + "parameters": [ + { + "name": "mix_id", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/u32" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InclusionProbabilityResponse" + } + } + } + } + }, + "deprecated": true + } + }, + "/v1/status/mixnode/{mix_id}/report": { + "get": { + "tags": [ + "network-monitor-status" + ], + "operationId": "mixnode_report", + "parameters": [ + { + "name": "mix_id", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/u32" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MixnodeStatusReportResponse" + } + } + } + } + }, + "deprecated": true + } + }, + "/v1/status/mixnode/{mix_id}/reward-estimation": { + "get": { + "tags": [ + "network-monitor-status" + ], + "operationId": "get_mixnode_reward_estimation", + "parameters": [ + { + "name": "mix_id", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/u32" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RewardEstimationResponse" + } + } + } + } + }, + "deprecated": true + } + }, + "/v1/status/mixnode/{mix_id}/stake-saturation": { + "get": { + "tags": [ + "status" + ], + "operationId": "get_mixnode_stake_saturation", + "parameters": [ + { + "name": "mix_id", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/u32" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StakeSaturationResponse" + } + } + } + } + }, + "deprecated": true + } + }, + "/v1/status/mixnode/{mix_id}/status": { + "get": { + "tags": [ + "status" + ], + "operationId": "get_mixnode_status", + "parameters": [ + { + "name": "mix_id", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/u32" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MixnodeStatusResponse" + } + } + } + } + }, + "deprecated": true + } + }, + "/v1/status/mixnodes/active/detailed": { + "get": { + "tags": [ + "status" + ], + "operationId": "get_active_set_detailed", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MixNodeBondAnnotated" + } + } + } + } + }, + "deprecated": true + } + }, + "/v1/status/mixnodes/detailed": { + "get": { + "tags": [ + "status" + ], + "operationId": "get_mixnodes_detailed", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MixNodeBondAnnotated" + } + } + } + } + }, + "deprecated": true + } + }, + "/v1/status/mixnodes/detailed-unfiltered": { + "get": { + "tags": [ + "network-monitor-status" + ], + "operationId": "get_mixnodes_detailed_unfiltered", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MixNodeBondAnnotated" + } + } + } + } + }, + "deprecated": true + } + }, + "/v1/status/mixnodes/inclusion-probability": { + "get": { + "tags": [ + "status" + ], + "operationId": "get_mixnode_inclusion_probabilities", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AllInclusionProbabilitiesResponse" + } + } + } + } + }, + "deprecated": true + } + }, + "/v1/status/mixnodes/rewarded/detailed": { + "get": { + "tags": [ + "status" + ], + "operationId": "get_rewarded_set_detailed", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MixNodeBondAnnotated" + } + } + } + } + }, + "deprecated": true + } + }, + "/v1/status/mixnodes/unstable/{mix_id}/test-results": { + "get": { + "tags": [ + "UNSTABLE - DO **NOT** USE" + ], + "operationId": "mixnode_test_results", + "parameters": [ + { + "name": "mix_id", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/u32" + } + }, + { + "name": "page", + "in": "query", + "required": false, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + }, + { + "name": "per_page", + "in": "query", + "required": false, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PaginatedResponse" + } + } + } + } + } + } + }, + "/v1/status/network-monitor/unstable/run/latest/details": { + "get": { + "tags": [ + "UNSTABLE - DO **NOT** USE" + ], + "operationId": "latest_monitor_run_report", + "parameters": [ + { + "name": "page", + "in": "query", + "required": false, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + }, + { + "name": "per_page", + "in": "query", + "required": false, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NetworkMonitorRunDetailsResponse" + } + } + } + } + } + } + }, + "/v1/status/network-monitor/unstable/run/{monitor_run_id}/details": { + "get": { + "tags": [ + "UNSTABLE - DO **NOT** USE" + ], + "operationId": "monitor_run_report", + "parameters": [ + { + "name": "page", + "in": "query", + "required": false, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + }, + { + "name": "per_page", + "in": "query", + "required": false, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + }, + { + "name": "monitor_run_id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NetworkMonitorRunDetailsResponse" + } + } + } + } + } + } + }, + "/v1/status/submit-gateway-monitoring-results": { + "post": { + "tags": [ + "status" + ], + "operationId": "submit_gateway_monitoring_results", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MonitorMessage" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "" + }, + "400": { + "description": "TBD", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + }, + "403": { + "description": "TBD", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + }, + "500": { + "description": "TBD", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/v1/status/submit-node-monitoring-results": { + "post": { + "tags": [ + "status" + ], + "operationId": "submit_node_monitoring_results", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MonitorMessage" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "" + }, + "400": { + "description": "TBD", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + }, + "403": { + "description": "TBD", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + }, + "500": { + "description": "TBD", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/v1/unstable/nym-nodes/full-fat": { + "get": { + "tags": [ + "Unstable Nym Nodes" + ], + "operationId": "nodes_detailed", + "parameters": [ + { + "name": "role", + "in": "query", + "required": false, + "schema": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "string", + "enum": [ + "active-mixnode", + "entry-gateway", + "exit-gateway" + ] + } + ] + } + }, + { + "name": "semver_compatibility", + "in": "query", + "required": false, + "schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "no_legacy", + "in": "query", + "required": false, + "schema": { + "type": [ + "boolean", + "null" + ] + } + }, + { + "name": "page", + "in": "query", + "required": false, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + }, + { + "name": "per_page", + "in": "query", + "required": false, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + } + ], + "responses": { + "501": { + "description": "" + } + } + } + }, + "/v1/unstable/nym-nodes/gateways/skimmed": { + "get": { + "tags": [ + "Unstable Nym Nodes" + ], + "summary": "Deprecated query that gets ALL gateways", + "operationId": "deprecated_gateways_basic", + "parameters": [ + { + "name": "semver_compatibility", + "in": "query", + "required": false, + "schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "no_legacy", + "in": "query", + "required": false, + "schema": { + "type": [ + "boolean", + "null" + ] + } + }, + { + "name": "page", + "in": "query", + "required": false, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + }, + { + "name": "per_page", + "in": "query", + "required": false, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CachedNodesResponse_SkimmedNode" + } + } + } + } + }, + "deprecated": true + } + }, + "/v1/unstable/nym-nodes/mixnodes/skimmed": { + "get": { + "tags": [ + "Unstable Nym Nodes" + ], + "summary": "Deprecated query that gets ACTIVE-ONLY mixnodes", + "operationId": "deprecated_mixnodes_basic", + "parameters": [ + { + "name": "semver_compatibility", + "in": "query", + "required": false, + "schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "no_legacy", + "in": "query", + "required": false, + "schema": { + "type": [ + "boolean", + "null" + ] + } + }, + { + "name": "page", + "in": "query", + "required": false, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + }, + { + "name": "per_page", + "in": "query", + "required": false, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CachedNodesResponse_SkimmedNode" + } + } + } + } + }, + "deprecated": true + } + }, + "/v1/unstable/nym-nodes/semi-skimmed": { + "get": { + "tags": [ + "Unstable Nym Nodes" + ], + "operationId": "nodes_expanded", + "parameters": [ + { + "name": "role", + "in": "query", + "required": false, + "schema": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "string", + "enum": [ + "active-mixnode", + "entry-gateway", + "exit-gateway" + ] + } + ] + } + }, + { + "name": "semver_compatibility", + "in": "query", + "required": false, + "schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "no_legacy", + "in": "query", + "required": false, + "schema": { + "type": [ + "boolean", + "null" + ] + } + }, + { + "name": "page", + "in": "query", + "required": false, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + }, + { + "name": "per_page", + "in": "query", + "required": false, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + } + ], + "responses": { + "501": { + "description": "" + } + } + } + }, + "/v1/unstable/nym-nodes/skimmed": { + "get": { + "tags": [ + "Unstable Nym Nodes" + ], + "summary": "Return all Nym Nodes and optionally legacy mixnodes/gateways (if `no-legacy` flag is not used)\nthat are currently bonded.", + "operationId": "nodes_basic_all", + "parameters": [ + { + "name": "role", + "in": "query", + "required": false, + "schema": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "string", + "enum": [ + "active-mixnode", + "entry-gateway", + "exit-gateway" + ] + } + ] + } + }, + { + "name": "semver_compatibility", + "in": "query", + "required": false, + "schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "no_legacy", + "in": "query", + "required": false, + "schema": { + "type": [ + "boolean", + "null" + ] + } + }, + { + "name": "page", + "in": "query", + "required": false, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + }, + { + "name": "per_page", + "in": "query", + "required": false, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PaginatedCachedNodesResponseSchema" + } + } + } + } + } + } + }, + "/v1/unstable/nym-nodes/skimmed/active": { + "get": { + "tags": [ + "Unstable Nym Nodes" + ], + "summary": "Return Nym Nodes and optionally legacy mixnodes/gateways (if `no-legacy` flag is not used)\nthat are currently bonded and are in the **active set**", + "operationId": "nodes_basic_active", + "parameters": [ + { + "name": "semver_compatibility", + "in": "query", + "required": false, + "schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "no_legacy", + "in": "query", + "required": false, + "schema": { + "type": [ + "boolean", + "null" + ] + } + }, + { + "name": "page", + "in": "query", + "required": false, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + }, + { + "name": "per_page", + "in": "query", + "required": false, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PaginatedCachedNodesResponseSchema" + } + } + } + } + } + } + }, + "/v1/unstable/nym-nodes/skimmed/entry-gateways/active": { + "get": { + "tags": [ + "Unstable Nym Nodes" + ], + "summary": "Returns Nym Nodes and optionally legacy gateways (if `no-legacy` flag is not used)\nthat are currently bonded and are in the active set with the entry role.", + "operationId": "entry_gateways_basic_active", + "parameters": [ + { + "name": "semver_compatibility", + "in": "query", + "required": false, + "schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "no_legacy", + "in": "query", + "required": false, + "schema": { + "type": [ + "boolean", + "null" + ] + } + }, + { + "name": "page", + "in": "query", + "required": false, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + }, + { + "name": "per_page", + "in": "query", + "required": false, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PaginatedCachedNodesResponseSchema" + } + } + } + } + } + } + }, + "/v1/unstable/nym-nodes/skimmed/entry-gateways/all": { + "get": { + "tags": [ + "Unstable Nym Nodes" + ], + "summary": "Returns Nym Nodes and optionally legacy gateways (if `no-legacy` flag is not used)\nthat are currently bonded and support entry gateway role.", + "operationId": "entry_gateways_basic_all", + "parameters": [ + { + "name": "semver_compatibility", + "in": "query", + "required": false, + "schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "no_legacy", + "in": "query", + "required": false, + "schema": { + "type": [ + "boolean", + "null" + ] + } + }, + { + "name": "page", + "in": "query", + "required": false, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + }, + { + "name": "per_page", + "in": "query", + "required": false, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PaginatedCachedNodesResponseSchema" + } + } + } + } + } + } + }, + "/v1/unstable/nym-nodes/skimmed/exit-gateways/active": { + "get": { + "tags": [ + "Unstable Nym Nodes" + ], + "summary": "Returns Nym Nodes and optionally legacy gateways (if `no-legacy` flag is not used)\nthat are currently bonded and are in the active set with the exit role.", + "operationId": "exit_gateways_basic_active", + "parameters": [ + { + "name": "semver_compatibility", + "in": "query", + "required": false, + "schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "no_legacy", + "in": "query", + "required": false, + "schema": { + "type": [ + "boolean", + "null" + ] + } + }, + { + "name": "page", + "in": "query", + "required": false, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + }, + { + "name": "per_page", + "in": "query", + "required": false, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PaginatedCachedNodesResponseSchema" + } + } + } + } + } + } + }, + "/v1/unstable/nym-nodes/skimmed/exit-gateways/all": { + "get": { + "tags": [ + "Unstable Nym Nodes" + ], + "summary": "Returns Nym Nodes and optionally legacy gateways (if `no-legacy` flag is not used)\nthat are currently bonded and support exit gateway role.", + "operationId": "exit_gateways_basic_all", + "parameters": [ + { + "name": "semver_compatibility", + "in": "query", + "required": false, + "schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "no_legacy", + "in": "query", + "required": false, + "schema": { + "type": [ + "boolean", + "null" + ] + } + }, + { + "name": "page", + "in": "query", + "required": false, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + }, + { + "name": "per_page", + "in": "query", + "required": false, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PaginatedCachedNodesResponseSchema" + } + } + } + } + } + } + }, + "/v1/unstable/nym-nodes/skimmed/mixnodes/active": { + "get": { + "tags": [ + "Unstable Nym Nodes" + ], + "summary": "Returns Nym Nodes and optionally legacy mixnodes (if `no-legacy` flag is not used)\nthat are currently bonded and are in the active set with one of the mixing roles.", + "operationId": "mixnodes_basic_active", + "parameters": [ + { + "name": "semver_compatibility", + "in": "query", + "required": false, + "schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "no_legacy", + "in": "query", + "required": false, + "schema": { + "type": [ + "boolean", + "null" + ] + } + }, + { + "name": "page", + "in": "query", + "required": false, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + }, + { + "name": "per_page", + "in": "query", + "required": false, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PaginatedCachedNodesResponseSchema" + } + } + } + } + } + } + }, + "/v1/unstable/nym-nodes/skimmed/mixnodes/all": { + "get": { + "tags": [ + "Unstable Nym Nodes" + ], + "summary": "Returns Nym Nodes and optionally legacy mixnodes (if `no-legacy` flag is not used)\nthat are currently bonded and support mixing role.", + "operationId": "mixnodes_basic_all", + "parameters": [ + { + "name": "semver_compatibility", + "in": "query", + "required": false, + "schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "no_legacy", + "in": "query", + "required": false, + "schema": { + "type": [ + "boolean", + "null" + ] + } + }, + { + "name": "page", + "in": "query", + "required": false, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + }, + { + "name": "per_page", + "in": "query", + "required": false, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PaginatedCachedNodesResponseSchema" + } + } + } + } + } + } + } + }, + "components": { + "schemas": { + "AggregatedCoinIndicesSignatureResponse": { + "type": "object", + "required": [ + "epoch_id", + "signatures" + ], + "properties": { + "epoch_id": { + "type": "integer", + "format": "int64", + "minimum": 0 + }, + "signatures": { + "$ref": "#/components/schemas/Signature" + } + } + }, + "AggregatedExpirationDateSignatureResponse": { + "type": "object", + "required": [ + "epoch_id", + "expiration_date", + "signatures" + ], + "properties": { + "epoch_id": { + "type": "integer", + "format": "int64", + "minimum": 0 + }, + "expiration_date": { + "type": "string", + "example": "1970-01-01" + }, + "signatures": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AnnotatedExpirationDateSignature" + } + } + } + }, + "AllInclusionProbabilitiesResponse": { + "type": "object", + "required": [ + "inclusion_probabilities", + "samples", + "elapsed", + "delta_max", + "delta_l2", + "as_at" + ], + "properties": { + "as_at": { + "type": "integer", + "format": "int64" + }, + "delta_l2": { + "type": "number", + "format": "double" + }, + "delta_max": { + "type": "number", + "format": "double" + }, + "elapsed": { + "type": "string" + }, + "inclusion_probabilities": { + "type": "array", + "items": { + "$ref": "#/components/schemas/InclusionProbability" + } + }, + "samples": { + "type": "integer", + "format": "int64", + "minimum": 0 + } + }, + "deprecated": true + }, + "AnnotatedCoinIndexSignature": { + "type": "object", + "required": [ + "signature", + "index" + ], + "properties": { + "index": { + "type": "integer", + "format": "int64", + "minimum": 0 + }, + "signature": { + "$ref": "#/components/schemas/Signature" + } + } + }, + "AnnotatedExpirationDateSignature": { + "type": "object", + "required": [ + "signature", + "expiration_timestamp", + "spending_timestamp" + ], + "properties": { + "expiration_timestamp": { + "type": "integer", + "format": "int32", + "minimum": 0 + }, + "signature": { + "$ref": "#/components/schemas/Signature" + }, + "spending_timestamp": { + "type": "integer", + "format": "int32", + "minimum": 0 + } + } + }, + "AnnotationResponse": { + "type": "object", + "required": [ + "node_id" + ], + "properties": { + "annotation": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/NodeAnnotation" + } + ] + }, + "node_id": { + "type": "integer", + "format": "int32", + "minimum": 0 + } + } + }, + "AnnouncePorts": { + "type": "object", + "properties": { + "mix_port": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + }, + "verloc_port": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + } + }, + "ApiHealthResponse": { + "type": "object", + "required": [ + "status", + "uptime" + ], + "properties": { + "status": { + "$ref": "#/components/schemas/ApiStatus" + }, + "uptime": { + "type": "integer", + "format": "int64", + "minimum": 0 + } + } + }, + "ApiStatus": { + "type": "string", + "enum": [ + "up" + ] + }, + "AuthenticatorDetails": { + "type": "object", + "required": [ + "address" + ], + "properties": { + "address": { + "type": "string", + "description": "address of the embedded authenticator" + } + } + }, + "AuxiliaryDetails": { + "type": "object", + "description": "Auxiliary details of the associated Nym Node.", + "properties": { + "accepted_operator_terms_and_conditions": { + "type": "boolean", + "description": "Specifies whether this node operator has agreed to the terms and conditions\nas defined at " + }, + "announce_ports": { + "$ref": "#/components/schemas/AnnouncePorts" + }, + "location": { + "type": [ + "string", + "null" + ], + "description": "Optional ISO 3166 alpha-2 two-letter country code of the node's **physical** location", + "example": "PL" + } + } + }, + "BasicEntryInformation": { + "type": "object", + "required": [ + "ws_port" + ], + "properties": { + "hostname": { + "type": [ + "string", + "null" + ] + }, + "ws_port": { + "type": "integer", + "format": "int32", + "minimum": 0 + }, + "wss_port": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + } + }, + "BatchRedeemTicketsBody": { + "type": "object", + "required": [ + "digest", + "included_serial_numbers", + "proposal_id", + "gateway_cosmos_addr" + ], + "properties": { + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "int32", + "minimum": 0 + } + }, + "gateway_cosmos_addr": { + "type": "string" + }, + "included_serial_numbers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SerialNumberWrapper" + } + }, + "proposal_id": { + "type": "integer", + "format": "int64", + "minimum": 0 + } + } + }, + "BinaryBuildInformationOwned": { + "type": "object", + "required": [ + "binary_name", + "build_timestamp", + "build_version", + "commit_sha", + "commit_timestamp", + "commit_branch", + "rustc_version", + "rustc_channel", + "cargo_profile" + ], + "properties": { + "binary_name": { + "type": "string", + "description": "Provides the name of the binary, i.e. the content of `CARGO_PKG_NAME` environmental variable." + }, + "build_timestamp": { + "type": "string", + "description": "Provides the build timestamp, for example `2021-02-23T20:14:46.558472672+00:00`." + }, + "build_version": { + "type": "string", + "description": "Provides the build version, for example `0.1.0-9-g46f83e1`." + }, + "cargo_profile": { + "type": "string", + "description": "Provides the cargo debug mode that was used for the build." + }, + "cargo_triple": { + "type": "string", + "description": "Provides the cargo target triple that was used for the build." + }, + "commit_branch": { + "type": "string", + "description": "Provides the name of the git branch that was used for the build, for example `master`." + }, + "commit_sha": { + "type": "string", + "description": "Provides the hash of the commit that was used for the build, for example `46f83e112520533338245862d366f6a02cef07d4`." + }, + "commit_timestamp": { + "type": "string", + "description": "Provides the timestamp of the commit that was used for the build, for example `2021-02-23T08:08:02-05:00`." + }, + "rustc_channel": { + "type": "string", + "description": "Provides the rustc channel that was used for the build, for example `nightly`." + }, + "rustc_version": { + "type": "string", + "description": "Provides the rustc version that was used for the build, for example `1.52.0-nightly`." + } + } + }, + "BlindSignRequestBody": { + "type": "object", + "required": [ + "inner_sign_request", + "deposit_id", + "signature", + "ecash_pubkey", + "expiration_date", + "ticketbook_type" + ], + "properties": { + "deposit_id": { + "type": "integer", + "format": "int32", + "description": "the id of the associated deposit", + "minimum": 0 + }, + "ecash_pubkey": { + "$ref": "#/components/schemas/PublicKeyUser" + }, + "expiration_date": { + "type": "string", + "example": "1970-01-01" + }, + "inner_sign_request": { + "$ref": "#/components/schemas/WithdrawalRequest" + }, + "signature": { + "type": "string", + "description": "Signature on the inner sign request and the tx hash" + }, + "ticketbook_type": { + "type": "string" + } + } + }, + "BlindedSignature": { + "type": "object", + "required": [ + "h", + "c" + ], + "properties": { + "c": { + "type": "string" + }, + "h": { + "type": "string" + } + } + }, + "BlindedSignatureResponse": { + "type": "object", + "required": [ + "blinded_signature" + ], + "properties": { + "blinded_signature": { + "$ref": "#/components/schemas/BlindedSignature" + } + } + }, + "CachedNodesResponse_SkimmedNode": { + "type": "object", + "required": [ + "refreshed_at", + "nodes" + ], + "properties": { + "nodes": { + "type": "array", + "items": { + "type": "object", + "required": [ + "node_id", + "ed25519_identity_pubkey", + "ip_addresses", + "mix_port", + "x25519_sphinx_pubkey", + "role", + "performance" + ], + "properties": { + "ed25519_identity_pubkey": { + "type": "string" + }, + "entry": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/BasicEntryInformation" + } + ] + }, + "ip_addresses": { + "type": "array", + "items": { + "type": "string" + } + }, + "mix_port": { + "type": "integer", + "format": "int32", + "minimum": 0 + }, + "node_id": { + "type": "integer", + "format": "int32", + "minimum": 0 + }, + "performance": { + "type": "string", + "description": "Average node performance in last 24h period" + }, + "role": { + "$ref": "#/components/schemas/NodeRole" + }, + "supported_roles": { + "$ref": "#/components/schemas/DeclaredRoles" + }, + "x25519_sphinx_pubkey": { + "type": "string" + } + } + } + }, + "refreshed_at": { + "$ref": "#/components/schemas/OffsetDateTimeJsonSchemaWrapper" + } + } + }, + "ChainDetails": { + "type": "object", + "required": [ + "bech32_account_prefix", + "mix_denom", + "stake_denom" + ], + "properties": { + "bech32_account_prefix": { + "type": "string" + }, + "mix_denom": { + "$ref": "#/components/schemas/DenomDetailsOwned" + }, + "stake_denom": { + "$ref": "#/components/schemas/DenomDetailsOwned" + } + } + }, + "CirculatingSupplyResponse": { + "type": "object", + "required": [ + "total_supply", + "mixmining_reserve", + "vesting_tokens", + "circulating_supply" + ], + "properties": { + "circulating_supply": { + "$ref": "#/components/schemas/CoinSchema" + }, + "mixmining_reserve": { + "$ref": "#/components/schemas/CoinSchema" + }, + "total_supply": { + "$ref": "#/components/schemas/CoinSchema" + }, + "vesting_tokens": { + "$ref": "#/components/schemas/CoinSchema" + } + } + }, + "CoinSchema": { + "type": "object", + "title": "Coin", + "required": [ + "denom", + "amount" + ], + "properties": { + "amount": { + "type": "string" + }, + "denom": { + "type": "string" + } + } + }, + "CommitedDeposit": { + "type": "object", + "required": [ + "depositId", + "merkleIndex" + ], + "properties": { + "depositId": { + "type": "integer", + "format": "int32", + "minimum": 0 + }, + "merkleIndex": { + "type": "integer", + "minimum": 0 + } + } + }, + "ComputeRewardEstParam": { + "type": "object", + "properties": { + "active_in_rewarded_set": { + "type": [ + "boolean", + "null" + ] + }, + "interval_operating_cost": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/CoinSchema" + } + ] + }, + "performance": { + "type": [ + "string", + "null" + ] + }, + "pledge_amount": { + "type": [ + "integer", + "null" + ], + "format": "int64", + "minimum": 0 + }, + "profit_margin_percent": { + "type": [ + "string", + "null" + ] + }, + "total_delegation": { + "type": [ + "integer", + "null" + ], + "format": "int64", + "minimum": 0 + } + } + }, + "ConfigScore": { + "type": "object", + "required": [ + "score", + "self_described_api_available", + "accepted_terms_and_conditions", + "runs_nym_node_binary" + ], + "properties": { + "accepted_terms_and_conditions": { + "type": "boolean" + }, + "runs_nym_node_binary": { + "type": "boolean" + }, + "score": { + "type": "number", + "format": "double", + "description": "Total score after taking all the criteria into consideration" + }, + "self_described_api_available": { + "type": "boolean" + }, + "versions_behind": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + } + }, + "ConfigScoreDataResponse": { + "type": "object", + "required": [ + "parameters", + "version_history" + ], + "properties": { + "parameters": { + "$ref": "#/components/schemas/ConfigScoreParams" + }, + "version_history": { + "type": "array", + "items": { + "$ref": "#/components/schemas/HistoricalNymNodeVersionEntry" + } + } + } + }, + "ConfigScoreParams": { + "type": "object", + "required": [ + "version_weights", + "version_score_formula_params" + ], + "properties": { + "version_score_formula_params": { + "$ref": "#/components/schemas/VersionScoreFormulaParams", + "description": "Defines the parameters of the formula for calculating the version score" + }, + "version_weights": { + "$ref": "#/components/schemas/OutdatedVersionWeights", + "description": "Defines weights for calculating numbers of versions behind the current release." + } + } + }, + "ContractBuildInformation": { + "type": "object", + "required": [ + "build_timestamp", + "build_version", + "commit_sha", + "commit_timestamp", + "commit_branch", + "rustc_version" + ], + "properties": { + "build_timestamp": { + "type": "string", + "description": "Provides the build timestamp, for example `2021-02-23T20:14:46.558472672+00:00`." + }, + "build_version": { + "type": "string", + "description": "Provides the build version, for example `0.1.0-9-g46f83e1`." + }, + "cargo_debug": { + "type": "string", + "description": "Provides the cargo debug mode that was used for the build." + }, + "cargo_opt_level": { + "type": "string", + "description": "Provides the opt value set by cargo during the build" + }, + "commit_branch": { + "type": "string", + "description": "Provides the name of the git branch that was used for the build, for example `master`." + }, + "commit_sha": { + "type": "string", + "description": "Provides the hash of the commit that was used for the build, for example `46f83e112520533338245862d366f6a02cef07d4`." + }, + "commit_timestamp": { + "type": "string", + "description": "Provides the timestamp of the commit that was used for the build, for example `2021-02-23T08:08:02-05:00`." + }, + "contract_name": { + "type": "string", + "description": "Provides the name of the binary, i.e. the content of `CARGO_PKG_NAME` environmental variable." + }, + "rustc_version": { + "type": "string", + "description": "Provides the rustc version that was used for the build, for example `1.52.0-nightly`." + } + }, + "additionalProperties": false + }, + "ContractInformationBuildInformation": { + "type": "object", + "properties": { + "address": { + "type": [ + "string", + "null" + ] + }, + "details": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/ContractBuildInformation" + } + ] + } + } + }, + "ContractInformationContractVersion": { + "type": "object", + "properties": { + "address": { + "type": [ + "string", + "null" + ] + }, + "details": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/ContractVersionSchemaResponse" + } + ] + } + } + }, + "ContractVersionSchemaResponse": { + "type": "object", + "title": "ContractVersion", + "required": [ + "contract", + "version" + ], + "properties": { + "contract": { + "type": "string", + "description": "contract is the crate name of the implementing contract, eg. `crate:cw20-base`\nwe will use other prefixes for other languages, and their standard global namespacing" + }, + "version": { + "type": "string", + "description": "version is any string that this implementation knows. It may be simple counter \"1\", \"2\".\nor semantic version on release tags \"v0.7.0\", or some custom feature flag list.\nthe only code that needs to understand the version parsing is code that knows how to\nmigrate from the given contract (and is tied to it's implementation somehow)" + } + } + }, + "CredentialSpendingData": { + "type": "object", + "required": [ + "payment", + "pay_info", + "spend_date", + "epoch_id" + ], + "properties": { + "epoch_id": { + "type": "integer", + "format": "int64", + "description": "The (DKG) epoch id under which the credential has been issued so that the verifier could use correct verification key for validation.", + "minimum": 0 + }, + "pay_info": { + "type": "array", + "items": { + "type": "integer", + "format": "binary", + "minimum": 0 + } + }, + "payment": { + "$ref": "#/components/schemas/Payment" + }, + "spend_date": { + "type": "string", + "format": "date" + } + } + }, + "DateQuery": { + "type": "object", + "required": [ + "date" + ], + "properties": { + "date": { + "type": "string", + "example": "1970-01-01" + } + } + }, + "DeclaredRoles": { + "type": "object", + "required": [ + "mixnode", + "entry", + "exit_nr", + "exit_ipr" + ], + "properties": { + "entry": { + "type": "boolean" + }, + "exit_ipr": { + "type": "boolean" + }, + "exit_nr": { + "type": "boolean" + }, + "mixnode": { + "type": "boolean" + } + } + }, + "DenomDetailsOwned": { + "type": "object", + "required": [ + "base", + "display", + "display_exponent" + ], + "properties": { + "base": { + "type": "string" + }, + "display": { + "type": "string" + }, + "display_exponent": { + "type": "integer", + "format": "int32", + "minimum": 0 + } + } + }, + "DescribedNodeType": { + "type": "string", + "enum": [ + "legacy_mixnode", + "legacy_gateway", + "nym_node" + ] + }, + "DetailedNodePerformance": { + "type": "object", + "required": [ + "performance_score", + "routing_score", + "config_score" + ], + "properties": { + "config_score": { + "$ref": "#/components/schemas/ConfigScore" + }, + "performance_score": { + "type": "number", + "format": "double", + "description": "routing_score * config_score" + }, + "routing_score": { + "$ref": "#/components/schemas/RoutingScore" + } + } + }, + "DisplayRole": { + "type": "string", + "enum": [ + "entryGateway", + "layer1", + "layer2", + "layer3", + "exitGateway", + "standby" + ] + }, + "EcashBatchTicketRedemptionResponse": { + "type": "object", + "required": [ + "proposal_accepted" + ], + "properties": { + "proposal_accepted": { + "type": "boolean" + } + } + }, + "EcashTicketVerificationRejection": { + "oneOf": [ + { + "type": "object", + "required": [ + "InvalidSpentDate" + ], + "properties": { + "InvalidSpentDate": { + "type": "object", + "required": [ + "today", + "yesterday", + "received" + ], + "properties": { + "received": { + "type": "string", + "example": "1970-01-01" + }, + "today": { + "type": "string", + "example": "1970-01-01" + }, + "yesterday": { + "type": "string", + "example": "1970-01-01" + } + } + } + } + }, + { + "type": "string", + "enum": [ + "ReplayedTicket" + ] + }, + { + "type": "string", + "enum": [ + "DoubleSpend" + ] + }, + { + "type": "string", + "enum": [ + "InvalidTicket" + ] + }, + { + "type": "string", + "enum": [ + "MultipleTickets" + ] + } + ] + }, + "EcashTicketVerificationResponse": { + "type": "object", + "required": [ + "verified" + ], + "properties": { + "verified": { + "$ref": "#/components/schemas/EcashTicketVerificationResult" + } + } + }, + "EcashTicketVerificationResult": { + "oneOf": [ + { + "type": "object", + "required": [ + "Ok" + ], + "properties": { + "Ok": { + "default": null + } + } + }, + { + "type": "string", + "enum": [ + "EcashTicketVerificationRejection" + ] + } + ], + "description": "Used exclusively as part of OpenAPI docs" + }, + "ExpirationDatePathParam": { + "type": "object", + "required": [ + "expiration_date" + ], + "properties": { + "expiration_date": { + "type": "string", + "example": "1970-01-01" + } + } + }, + "FullFatNode": { + "type": "object", + "required": [ + "expanded" + ], + "properties": { + "expanded": { + "$ref": "#/components/schemas/SemiSkimmedNode" + }, + "self_described": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/NymNodeData" + } + ] + } + } + }, + "Gateway": { + "type": "object", + "description": "Information provided by the node operator during bonding that are used to allow other entities to use the services of this node.", + "required": [ + "host", + "mix_port", + "clients_port", + "location", + "sphinx_key", + "identity_key", + "version" + ], + "properties": { + "clients_port": { + "type": "integer", + "format": "int32", + "description": "Port used by this gateway for listening for client requests.", + "minimum": 0 + }, + "host": { + "type": "string", + "description": "Network address of this gateway, for example 1.1.1.1 or foo.gateway.com" + }, + "identity_key": { + "type": "string", + "description": "Base58 encoded ed25519 EdDSA public key of the gateway used to derive shared keys with clients" + }, + "location": { + "type": "string", + "description": "The physical, self-reported, location of this gateway." + }, + "mix_port": { + "type": "integer", + "format": "int32", + "description": "Port used by this gateway for listening for mix packets.", + "minimum": 0 + }, + "sphinx_key": { + "type": "string", + "description": "Base58-encoded x25519 public key used for sphinx key derivation." + }, + "version": { + "type": "string", + "description": "The self-reported semver version of this gateway." + } + }, + "additionalProperties": false + }, + "GatewayBond": { + "type": "object", + "description": "Basic gateway information provided by the node operator.", + "required": [ + "pledge_amount", + "owner", + "block_height", + "gateway", + "proxy" + ], + "properties": { + "block_height": { + "type": "integer", + "format": "int64", + "description": "Block height at which this gateway has been bonded.", + "minimum": 0 + }, + "gateway": { + "$ref": "#/components/schemas/Gateway", + "description": "Information provided by the operator for the purposes of bonding." + }, + "owner": { + "type": "string", + "description": "Address of the owner of this gateway." + }, + "pledge_amount": { + "$ref": "#/components/schemas/CoinSchema", + "description": "Original amount pledged by the operator of this node." + }, + "proxy": { + "type": "string", + "description": "Entity who bonded this gateway on behalf of the owner.\nIf exists, it's most likely the address of the vesting contract." + } + }, + "additionalProperties": false + }, + "GatewayBondAnnotated": { + "type": "object", + "required": [ + "gateway_bond", + "performance", + "node_performance", + "blacklisted" + ], + "properties": { + "blacklisted": { + "type": "boolean" + }, + "gateway_bond": { + "$ref": "#/components/schemas/LegacyGatewayBondWithId" + }, + "ip_addresses": { + "type": "array", + "items": { + "type": "string" + } + }, + "node_performance": { + "$ref": "#/components/schemas/NodePerformance" + }, + "performance": { + "type": "string" + }, + "self_described": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/GatewayDescription" + } + ] + } + } + }, + "GatewayCoreStatusResponse": { + "type": "object", + "required": [ + "identity", + "count" + ], + "properties": { + "count": { + "type": "integer", + "format": "int32" + }, + "identity": { + "type": "string" + } + } + }, + "GatewayDescription": { + "type": "object" + }, + "GatewayStatusReportResponse": { + "type": "object", + "required": [ + "identity", + "owner", + "most_recent", + "last_hour", + "last_day" + ], + "properties": { + "identity": { + "type": "string" + }, + "last_day": { + "type": "integer", + "format": "int32", + "minimum": 0 + }, + "last_hour": { + "type": "integer", + "format": "int32", + "minimum": 0 + }, + "most_recent": { + "type": "integer", + "format": "int32", + "minimum": 0 + }, + "owner": { + "type": "string" + } + } + }, + "GatewayUptimeHistoryResponse": { + "type": "object", + "required": [ + "identity", + "owner", + "history" + ], + "properties": { + "history": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OldHistoricalUptimeResponse" + } + }, + "identity": { + "type": "string" + }, + "owner": { + "type": "string" + } + } + }, + "GatewayUptimeResponse": { + "type": "object", + "required": [ + "identity", + "avg_uptime", + "node_performance" + ], + "properties": { + "avg_uptime": { + "type": "integer", + "format": "int32", + "minimum": 0 + }, + "identity": { + "type": "string" + }, + "node_performance": { + "$ref": "#/components/schemas/NodePerformance" + } + } + }, + "HistoricalNymNodeVersion": { + "type": "object", + "required": [ + "semver", + "introduced_at_height" + ], + "properties": { + "introduced_at_height": { + "type": "integer", + "format": "int64", + "description": "Block height of when this version has been added to the contract", + "minimum": 0 + }, + "semver": { + "type": "string", + "description": "Version of the nym node that is going to be used for determining the version score of a node.\nnote: value stored here is pre-validated `semver::Version`" + } + } + }, + "HistoricalNymNodeVersionEntry": { + "type": "object", + "required": [ + "id", + "version_information" + ], + "properties": { + "id": { + "type": "integer", + "format": "int32", + "description": "The unique, ordered, id of this particular entry", + "minimum": 0 + }, + "version_information": { + "$ref": "#/components/schemas/HistoricalNymNodeVersion", + "description": "Data associated with this particular version" + } + } + }, + "HistoricalPerformanceResponse": { + "type": "object", + "required": [ + "date", + "performance" + ], + "properties": { + "date": { + "type": "string", + "example": "1970-01-01" + }, + "performance": { + "type": "number", + "format": "double" + } + } + }, + "HistoricalUptimeResponse": { + "type": "object", + "required": [ + "date", + "uptime" + ], + "properties": { + "date": { + "type": "string", + "example": "1970-01-01" + }, + "uptime": { + "$ref": "#/components/schemas/u8" + } + } + }, + "HostInformation": { + "type": "object", + "required": [ + "ip_address", + "keys" + ], + "properties": { + "hostname": { + "type": [ + "string", + "null" + ] + }, + "ip_address": { + "type": "array", + "items": { + "type": "string" + } + }, + "keys": { + "$ref": "#/components/schemas/HostKeys" + } + } + }, + "HostKeys": { + "type": "object", + "required": [ + "ed25519", + "x25519" + ], + "properties": { + "ed25519": { + "type": "string" + }, + "x25519": { + "type": "string" + }, + "x25519_noise": { + "type": "string" + } + } + }, + "InclusionProbability": { + "type": "object", + "required": [ + "mix_id", + "in_active", + "in_reserve" + ], + "properties": { + "in_active": { + "type": "number", + "format": "double" + }, + "in_reserve": { + "type": "number", + "format": "double" + }, + "mix_id": { + "type": "integer", + "format": "int32", + "minimum": 0 + } + }, + "deprecated": true + }, + "InclusionProbabilityResponse": { + "type": "object", + "required": [ + "in_active", + "in_reserve" + ], + "properties": { + "in_active": { + "$ref": "#/components/schemas/SelectionChance" + }, + "in_reserve": { + "$ref": "#/components/schemas/SelectionChance" + } + }, + "deprecated": true + }, + "Interval": { + "type": "object", + "description": "Specification of a rewarding interval.", + "required": [ + "id", + "epochs_in_interval", + "current_epoch_start", + "current_epoch_id", + "epoch_length", + "total_elapsed_epochs" + ], + "properties": { + "current_epoch_id": { + "type": "integer", + "format": "int32", + "description": "Monotonously increasing id of the current epoch in this interval.", + "minimum": 0 + }, + "current_epoch_start": { + "type": "string", + "format": "date-time", + "description": "The timestamp indicating the start of the current rewarding epoch." + }, + "epoch_length": { + "type": "string", + "description": "The duration of all epochs in this interval." + }, + "epochs_in_interval": { + "type": "integer", + "format": "int32", + "description": "Number of epochs in this interval.", + "minimum": 0 + }, + "id": { + "type": "integer", + "format": "int32", + "description": "Monotonously increasing id of this interval.", + "minimum": 0 + }, + "total_elapsed_epochs": { + "type": "integer", + "format": "int32", + "description": "The total amount of elapsed epochs since the first epoch of the first interval.", + "minimum": 0 + } + } + }, + "IntervalRewardParams": { + "type": "object", + "description": "Parameters required by the mix-mining reward distribution that do not change during an interval.", + "required": [ + "reward_pool", + "staking_supply", + "staking_supply_scale_factor", + "epoch_reward_budget", + "stake_saturation_point", + "sybil_resistance", + "active_set_work_factor", + "interval_pool_emission" + ], + "properties": { + "active_set_work_factor": { + "type": "string", + "description": "Current active set work factor.\nIt is not really expected to be changing very often.\nAs a matter of fact, unless there's a very specific reason, it should remain constant." + }, + "epoch_reward_budget": { + "type": "string", + "description": "Current value of the computed reward budget per epoch, per node.\nIt is expected to be constant throughout the interval." + }, + "interval_pool_emission": { + "type": "string", + "description": "Current maximum interval pool emission.\nAssuming all nodes in the rewarded set are fully saturated and have 100% performance,\nthis % of the reward pool would get distributed in rewards to all operators and its delegators.\nIt is not really expected to be changing very often.\nAs a matter of fact, unless there's a very specific reason, it should remain constant." + }, + "reward_pool": { + "type": "string", + "description": "Current value of the rewarding pool.\nIt is expected to be constant throughout the interval." + }, + "stake_saturation_point": { + "type": "string", + "description": "Current value of the stake saturation point.\nIt is expected to be constant throughout the interval." + }, + "staking_supply": { + "type": "string", + "description": "Current value of the staking supply.\nIt is expected to be constant throughout the interval." + }, + "staking_supply_scale_factor": { + "type": "string", + "description": "Defines the percentage of stake needed to reach saturation for all of the nodes in the rewarded set.\nAlso known as `beta`." + }, + "sybil_resistance": { + "type": "string", + "description": "Current value of the sybil resistance percent (`alpha`).\nIt is not really expected to be changing very often.\nAs a matter of fact, unless there's a very specific reason, it should remain constant." + } + }, + "additionalProperties": false + }, + "IpPacketRouterDetails": { + "type": "object", + "required": [ + "address" + ], + "properties": { + "address": { + "type": "string", + "description": "address of the embedded ip packet router" + } + } + }, + "IssuedTicketbook": { + "type": "object", + "required": [ + "depositId", + "epochId", + "blindedPartialCredential", + "joinedEncodedPrivateAttributesCommitments", + "expirationDate", + "ticketbookType" + ], + "properties": { + "blindedPartialCredential": { + "type": "array", + "items": { + "type": "integer", + "format": "int32", + "minimum": 0 + } + }, + "depositId": { + "type": "integer", + "format": "int32", + "minimum": 0 + }, + "epochId": { + "type": "integer", + "format": "int32", + "minimum": 0 + }, + "expirationDate": { + "type": "string" + }, + "joinedEncodedPrivateAttributesCommitments": { + "type": "array", + "items": { + "type": "integer", + "format": "int32", + "minimum": 0 + } + }, + "ticketbookType": { + "type": "string" + } + } + }, + "IssuedTicketbooksChallengeRequest": { + "type": "object", + "required": [ + "expirationDate", + "deposits" + ], + "properties": { + "deposits": { + "type": "array", + "items": { + "type": "integer", + "format": "int32", + "minimum": 0 + } + }, + "expirationDate": { + "type": "string", + "example": "1970-01-01" + } + } + }, + "IssuedTicketbooksChallengeResponse": { + "type": "object", + "required": [ + "body", + "signature" + ], + "properties": { + "body": { + "$ref": "#/components/schemas/IssuedTicketbooksChallengeResponseBody" + }, + "signature": { + "type": "string" + } + } + }, + "IssuedTicketbooksChallengeResponseBody": { + "type": "object", + "required": [ + "expirationDate", + "partialTicketbooks", + "merkleProof" + ], + "properties": { + "expirationDate": { + "type": "string", + "example": "1970-01-01" + }, + "merkleProof": { + "$ref": "#/components/schemas/IssuedTicketbooksFullMerkleProof" + }, + "partialTicketbooks": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/IssuedTicketbook" + }, + "propertyNames": { + "type": "integer", + "format": "int32", + "minimum": 0 + } + } + } + }, + "IssuedTicketbooksForResponse": { + "type": "object", + "required": [ + "body", + "signature" + ], + "properties": { + "body": { + "$ref": "#/components/schemas/IssuedTicketbooksForResponseBody" + }, + "signature": { + "type": "string", + "description": "Signature on the body" + } + } + }, + "IssuedTicketbooksForResponseBody": { + "type": "object", + "required": [ + "expirationDate", + "deposits" + ], + "properties": { + "deposits": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CommitedDeposit" + } + }, + "expirationDate": { + "type": "string", + "example": "1970-01-01" + }, + "merkleRoot": { + "type": [ + "array", + "null" + ], + "items": { + "type": "integer", + "format": "int32", + "minimum": 0 + } + } + } + }, + "IssuedTicketbooksFullMerkleProof": { + "type": "object", + "required": [ + "inner_proof", + "included_leaves", + "total_leaves", + "root" + ], + "properties": { + "included_leaves": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MerkleLeaf" + } + }, + "inner_proof": { + "type": "string" + }, + "root": { + "type": "array", + "items": { + "type": "integer", + "format": "int32", + "minimum": 0 + } + }, + "total_leaves": { + "type": "integer", + "minimum": 0 + } + } + }, + "LegacyDescribedGateway": { + "type": "object", + "required": [ + "bond" + ], + "properties": { + "bond": { + "$ref": "#/components/schemas/GatewayBond" + }, + "self_described": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/NymNodeData" + } + ] + } + } + }, + "LegacyDescribedMixNode": { + "type": "object", + "required": [ + "bond" + ], + "properties": { + "bond": { + "$ref": "#/components/schemas/LegacyMixNodeBondWithLayer" + }, + "self_described": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/NymNodeData" + } + ] + } + } + }, + "LegacyGatewayBondWithId": { + "allOf": [ + { + "$ref": "#/components/schemas/GatewayBond" + }, + { + "type": "object", + "required": [ + "node_id" + ], + "properties": { + "node_id": { + "$ref": "#/components/schemas/u32" + } + } + } + ] + }, + "LegacyMixLayer": { + "type": "string", + "enum": [ + "One", + "Two", + "Three" + ] + }, + "LegacyMixNodeBondWithLayer": { + "allOf": [ + { + "$ref": "#/components/schemas/MixNodeBond" + }, + { + "type": "object", + "required": [ + "layer" + ], + "properties": { + "layer": { + "$ref": "#/components/schemas/LegacyMixLayer" + } + } + } + ] + }, + "LegacyMixNodeDetailsWithLayer": { + "type": "object", + "required": [ + "bond_information", + "rewarding_details" + ], + "properties": { + "bond_information": { + "$ref": "#/components/schemas/LegacyMixNodeBondWithLayer", + "description": "Basic bond information of this mixnode, such as owner address, original pledge, etc." + }, + "pending_changes": { + "$ref": "#/components/schemas/LegacyPendingMixNodeChanges", + "description": "Adjustments to the mixnode that are ought to happen during future epoch transitions." + }, + "rewarding_details": { + "$ref": "#/components/schemas/NodeRewarding", + "description": "Details used for computation of rewarding related data." + } + } + }, + "LegacyMixNodeDetailsWithLayerSchema": { + "type": "object", + "title": "LegacyMixNodeDetailsWithLayer", + "required": [ + "bond_information", + "rewarding_details", + "pending_changes" + ], + "properties": { + "bond_information": { + "type": "string", + "description": "Basic bond information of this mixnode, such as owner address, original pledge, etc.", + "example": "unimplemented schema" + }, + "pending_changes": { + "type": "string", + "description": "Adjustments to the mixnode that are ought to happen during future epoch transitions.", + "example": "unimplemented schema" + }, + "rewarding_details": { + "type": "string", + "description": "Details used for computation of rewarding related data.", + "example": "unimplemented schema" + } + } + }, + "LegacyPendingMixNodeChanges": { + "type": "object", + "properties": { + "pledge_change": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + } + }, + "MasterVerificationKeyResponse": { + "type": "object", + "required": [ + "key" + ], + "properties": { + "key": { + "$ref": "#/components/schemas/VerificationKeyAuth" + } + } + }, + "MerkleLeaf": { + "type": "object", + "required": [ + "hash", + "index" + ], + "properties": { + "hash": { + "type": "array", + "items": { + "type": "integer", + "format": "int32", + "minimum": 0 + } + }, + "index": { + "type": "integer", + "minimum": 0 + } + } + }, + "MixNode": { + "type": "object", + "description": "Information provided by the node operator during bonding that are used to allow other entities to use the services of this node.", + "required": [ + "host", + "mix_port", + "verloc_port", + "http_api_port", + "sphinx_key", + "identity_key", + "version" + ], + "properties": { + "host": { + "type": "string", + "description": "Network address of this mixnode, for example 1.1.1.1 or foo.mixnode.com" + }, + "http_api_port": { + "type": "integer", + "format": "int32", + "description": "Port used by this mixnode for its http(s) API", + "minimum": 0 + }, + "identity_key": { + "$ref": "#/components/schemas/String", + "description": "Base58-encoded ed25519 EdDSA public key." + }, + "mix_port": { + "type": "integer", + "format": "int32", + "description": "Port used by this mixnode for listening for mix packets.", + "minimum": 0 + }, + "sphinx_key": { + "$ref": "#/components/schemas/String", + "description": "Base58-encoded x25519 public key used for sphinx key derivation." + }, + "verloc_port": { + "type": "integer", + "format": "int32", + "description": "Port used by this mixnode for listening for verloc requests.", + "minimum": 0 + }, + "version": { + "type": "string", + "description": "The self-reported semver version of this mixnode." + } + }, + "additionalProperties": false + }, + "MixNodeBond": { + "type": "object", + "description": "Basic mixnode information provided by the node operator.", + "required": [ + "mix_id", + "owner", + "original_pledge", + "mix_node", + "bonding_height", + "is_unbonding" + ], + "properties": { + "bonding_height": { + "type": "integer", + "format": "int64", + "description": "Block height at which this mixnode has been bonded.", + "minimum": 0 + }, + "is_unbonding": { + "type": "boolean", + "description": "Flag to indicate whether this node is in the process of unbonding,\nthat will conclude upon the epoch finishing." + }, + "mix_id": { + "$ref": "#/components/schemas/u32", + "description": "Unique id assigned to the bonded mixnode." + }, + "mix_node": { + "$ref": "#/components/schemas/MixNode", + "description": "Information provided by the operator for the purposes of bonding." + }, + "original_pledge": { + "$ref": "#/components/schemas/CoinSchema", + "description": "Original amount pledged by the operator of this node." + }, + "owner": { + "type": "string", + "description": "Address of the owner of this mixnode." + }, + "proxy": { + "type": [ + "string", + "null" + ], + "description": "Entity who bonded this mixnode on behalf of the owner.\nIf exists, it's most likely the address of the vesting contract." + } + } + }, + "MixNodeBondAnnotated": { + "type": "object", + "required": [ + "mixnode_details", + "stake_saturation", + "uncapped_stake_saturation", + "performance", + "node_performance", + "estimated_operator_apy", + "estimated_delegators_apy", + "blacklisted" + ], + "properties": { + "blacklisted": { + "type": "boolean" + }, + "estimated_delegators_apy": { + "type": "string" + }, + "estimated_operator_apy": { + "type": "string" + }, + "ip_addresses": { + "type": "array", + "items": { + "type": "string" + } + }, + "mixnode_details": { + "$ref": "#/components/schemas/LegacyMixNodeDetailsWithLayerSchema" + }, + "node_performance": { + "$ref": "#/components/schemas/NodePerformance" + }, + "performance": { + "type": "string" + }, + "stake_saturation": { + "type": "string" + }, + "uncapped_stake_saturation": { + "type": "string" + } + } + }, + "MixnodeCoreStatusResponse": { + "type": "object", + "required": [ + "mix_id", + "count" + ], + "properties": { + "count": { + "type": "integer", + "format": "int32" + }, + "mix_id": { + "$ref": "#/components/schemas/u32" + } + } + }, + "MixnodeStatus": { + "type": "string", + "enum": [ + "active", + "standby", + "inactive", + "not_found" + ] + }, + "MixnodeStatusReport": { + "type": "object", + "required": [ + "mix_id", + "identity", + "most_recent", + "last_hour", + "last_day" + ], + "properties": { + "identity": { + "type": "string" + }, + "last_day": { + "type": "integer", + "format": "int32", + "minimum": 0 + }, + "last_hour": { + "type": "integer", + "format": "int32", + "minimum": 0 + }, + "mix_id": { + "type": "integer", + "format": "int32", + "minimum": 0 + }, + "most_recent": { + "type": "integer", + "format": "int32", + "minimum": 0 + } + } + }, + "MixnodeStatusReportResponse": { + "type": "object", + "required": [ + "mix_id", + "identity", + "owner", + "most_recent", + "last_hour", + "last_day" + ], + "properties": { + "identity": { + "$ref": "#/components/schemas/String" + }, + "last_day": { + "type": "integer", + "format": "int32", + "minimum": 0 + }, + "last_hour": { + "type": "integer", + "format": "int32", + "minimum": 0 + }, + "mix_id": { + "$ref": "#/components/schemas/u32" + }, + "most_recent": { + "type": "integer", + "format": "int32", + "minimum": 0 + }, + "owner": { + "type": "string" + } + } + }, + "MixnodeStatusResponse": { + "type": "object", + "required": [ + "status" + ], + "properties": { + "status": { + "$ref": "#/components/schemas/MixnodeStatus" + } + } + }, + "MixnodeUptimeHistoryResponse": { + "type": "object", + "required": [ + "mix_id", + "identity", + "owner", + "history" + ], + "properties": { + "history": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OldHistoricalUptimeResponse" + } + }, + "identity": { + "type": "string" + }, + "mix_id": { + "$ref": "#/components/schemas/u32" + }, + "owner": { + "type": "string" + } + } + }, + "MonitorMessage": { + "type": "object", + "required": [ + "results", + "signature", + "signer", + "timestamp" + ], + "properties": { + "results": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NodeResult" + } + }, + "signature": { + "type": "string" + }, + "signer": { + "type": "string" + }, + "timestamp": { + "type": "integer", + "format": "int64" + } + } + }, + "NetworkDetails": { + "type": "object", + "required": [ + "connected_nyxd", + "network" + ], + "properties": { + "connected_nyxd": { + "type": "string" + }, + "network": { + "$ref": "#/components/schemas/NymNetworkDetails" + } + } + }, + "NetworkMonitorRunDetailsResponse": { + "type": "object", + "required": [ + "monitor_run_id", + "network_reliability", + "total_sent", + "total_received", + "mixnode_results", + "gateway_results" + ], + "properties": { + "gateway_results": { + "type": "object", + "additionalProperties": { + "type": "integer", + "minimum": 0 + }, + "propertyNames": { + "type": "integer", + "format": "int32", + "minimum": 0 + } + }, + "mixnode_results": { + "type": "object", + "additionalProperties": { + "type": "integer", + "minimum": 0 + }, + "propertyNames": { + "type": "integer", + "format": "int32", + "minimum": 0 + } + }, + "monitor_run_id": { + "type": "integer", + "format": "int64" + }, + "network_reliability": { + "type": "number", + "format": "double" + }, + "total_received": { + "type": "integer", + "minimum": 0 + }, + "total_sent": { + "type": "integer", + "minimum": 0 + } + } + }, + "NetworkRequesterDetails": { + "type": "object", + "required": [ + "address", + "uses_exit_policy" + ], + "properties": { + "address": { + "type": "string", + "description": "address of the embedded network requester" + }, + "uses_exit_policy": { + "type": "boolean", + "description": "flag indicating whether this network requester uses the exit policy rather than the deprecated allow list" + } + } + }, + "NodeAnnotation": { + "type": "object", + "required": [ + "last_24h_performance", + "detailed_performance" + ], + "properties": { + "current_role": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/DisplayRole" + } + ] + }, + "detailed_performance": { + "$ref": "#/components/schemas/DetailedNodePerformance" + }, + "last_24h_performance": { + "type": "string" + } + } + }, + "NodeCostParams": { + "type": "object", + "description": "The cost parameters, or the cost function, defined for the particular mixnode that influences\nhow the rewards should be split between the node operator and its delegators.", + "required": [ + "profit_margin_percent", + "interval_operating_cost" + ], + "properties": { + "interval_operating_cost": { + "$ref": "#/components/schemas/CoinSchema", + "description": "Operating cost of the associated node per the entire interval." + }, + "profit_margin_percent": { + "type": "string", + "description": "The profit margin of the associated node, i.e. the desired percent of the reward to be distributed to the operator." + } + }, + "additionalProperties": false + }, + "NodeDatePerformanceResponse": { + "type": "object", + "required": [ + "node_id", + "date" + ], + "properties": { + "date": { + "type": "string", + "example": "1970-01-01" + }, + "node_id": { + "type": "integer", + "format": "int32", + "minimum": 0 + }, + "performance": { + "type": [ + "number", + "null" + ], + "format": "double" + } + } + }, + "NodeId": { + "type": "object", + "title": "NodeId", + "required": [ + "node_id" + ], + "properties": { + "node_id": { + "type": "integer", + "format": "int32", + "minimum": 0 + } + } + }, + "NodePerformance": { + "type": "object", + "required": [ + "most_recent", + "last_hour", + "last_24h" + ], + "properties": { + "last_24h": { + "type": "string" + }, + "last_hour": { + "type": "string" + }, + "most_recent": { + "type": "string" + } + } + }, + "NodePerformanceResponse": { + "type": "object", + "required": [ + "node_id" + ], + "properties": { + "node_id": { + "type": "integer", + "format": "int32", + "minimum": 0 + }, + "performance": { + "type": [ + "number", + "null" + ], + "format": "double" + } + } + }, + "NodeRefreshBody": { + "type": "object", + "required": [ + "node_identity", + "request_timestamp", + "signature" + ], + "properties": { + "node_identity": { + "type": "string" + }, + "request_timestamp": { + "type": "integer", + "format": "int64" + }, + "signature": { + "type": "string" + } + } + }, + "NodeResult": { + "type": "object", + "required": [ + "node_id", + "identity", + "reliability" + ], + "properties": { + "identity": { + "type": "string" + }, + "node_id": { + "type": "integer", + "format": "int32", + "minimum": 0 + }, + "reliability": { + "type": "integer", + "format": "int32", + "minimum": 0 + } + } + }, + "NodeRewarding": { + "type": "object", + "required": [ + "cost_params", + "operator", + "delegates", + "total_unit_reward", + "unit_delegation", + "last_rewarded_epoch", + "unique_delegations" + ], + "properties": { + "cost_params": { + "$ref": "#/components/schemas/NodeCostParams", + "description": "Information provided by the operator that influence the cost function." + }, + "delegates": { + "type": "string", + "description": "Total delegation and compounded reward earned by all node delegators." + }, + "last_rewarded_epoch": { + "$ref": "#/components/schemas/u32", + "description": "Marks the epoch when this node was last rewarded so that we wouldn't accidentally attempt\nto reward it multiple times in the same epoch." + }, + "operator": { + "type": "string", + "description": "Total pledge and compounded reward earned by the node operator." + }, + "total_unit_reward": { + "type": "string", + "description": "Cumulative reward earned by the \"unit delegation\" since the block 0." + }, + "unique_delegations": { + "type": "integer", + "format": "int32", + "minimum": 0 + }, + "unit_delegation": { + "type": "string", + "description": "Value of the theoretical \"unit delegation\" that has delegated to this node at block 0." + } + }, + "additionalProperties": false + }, + "NodeRole": { + "oneOf": [ + { + "type": "object", + "required": [ + "Mixnode" + ], + "properties": { + "Mixnode": { + "type": "object", + "required": [ + "layer" + ], + "properties": { + "layer": { + "type": "integer", + "format": "int32", + "minimum": 0 + } + } + } + } + }, + { + "type": "string", + "enum": [ + "EntryGateway" + ] + }, + { + "type": "string", + "enum": [ + "ExitGateway" + ] + }, + { + "type": "string", + "enum": [ + "Standby" + ] + }, + { + "type": "string", + "enum": [ + "Inactive" + ] + } + ] + }, + "NodeRoleQueryParam": { + "type": "string", + "enum": [ + "active-mixnode", + "entry-gateway", + "exit-gateway" + ] + }, + "NoiseDetails": { + "type": "object", + "required": [ + "x25119_pubkey", + "mixnet_port", + "ip_addresses" + ], + "properties": { + "ip_addresses": { + "type": "array", + "items": { + "type": "string" + } + }, + "mixnet_port": { + "type": "integer", + "format": "int32", + "minimum": 0 + }, + "x25119_pubkey": { + "type": "string" + } + } + }, + "NymContracts": { + "type": "object", + "properties": { + "coconut_dkg_contract_address": { + "type": [ + "string", + "null" + ] + }, + "ecash_contract_address": { + "type": [ + "string", + "null" + ] + }, + "group_contract_address": { + "type": [ + "string", + "null" + ] + }, + "mixnet_contract_address": { + "type": [ + "string", + "null" + ] + }, + "multisig_contract_address": { + "type": [ + "string", + "null" + ] + }, + "vesting_contract_address": { + "type": [ + "string", + "null" + ] + } + } + }, + "NymNetworkDetails": { + "type": "object", + "required": [ + "network_name", + "chain_details", + "endpoints", + "contracts" + ], + "properties": { + "chain_details": { + "$ref": "#/components/schemas/ChainDetails" + }, + "contracts": { + "$ref": "#/components/schemas/NymContracts" + }, + "endpoints": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ValidatorDetails" + } + }, + "explorer_api": { + "type": [ + "string", + "null" + ] + }, + "network_name": { + "type": "string" + }, + "nym_vpn_api_url": { + "type": [ + "string", + "null" + ] + } + } + }, + "NymNode": { + "type": "object", + "description": "Information provided by the node operator during bonding that are used to allow other entities to use the services of this node.", + "required": [ + "host", + "identity_key" + ], + "properties": { + "custom_http_port": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "description": "Allow specifying custom port for accessing the http, and thus self-described, api\nof this node for the capabilities discovery.", + "minimum": 0 + }, + "host": { + "type": "string", + "description": "Network address of this nym-node, for example 1.1.1.1 or foo.mixnode.com\nthat is used to discover other capabilities of this node." + }, + "identity_key": { + "type": "string", + "description": "Base58-encoded ed25519 EdDSA public key." + } + }, + "additionalProperties": false + }, + "NymNodeBond": { + "type": "object", + "required": [ + "node_id", + "owner", + "original_pledge", + "bonding_height", + "is_unbonding", + "node" + ], + "properties": { + "bonding_height": { + "type": "integer", + "format": "int64", + "description": "Block height at which this nym-node has been bonded.", + "minimum": 0 + }, + "is_unbonding": { + "type": "boolean", + "description": "Flag to indicate whether this node is in the process of unbonding,\nthat will conclude upon the epoch finishing." + }, + "node": { + "$ref": "#/components/schemas/NymNode", + "description": "Information provided by the operator for the purposes of bonding." + }, + "node_id": { + "type": "integer", + "format": "int32", + "description": "Unique id assigned to the bonded node.", + "minimum": 0 + }, + "original_pledge": { + "$ref": "#/components/schemas/CoinSchema", + "description": "Original amount pledged by the operator of this node." + }, + "owner": { + "type": "string", + "description": "Address of the owner of this nym-node." + } + }, + "additionalProperties": false + }, + "NymNodeData": { + "type": "object", + "required": [ + "host_information", + "build_information", + "mixnet_websockets" + ], + "properties": { + "authenticator": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/AuthenticatorDetails" + } + ] + }, + "auxiliary_details": { + "$ref": "#/components/schemas/AuxiliaryDetails" + }, + "build_information": { + "$ref": "#/components/schemas/BinaryBuildInformationOwned" + }, + "declared_role": { + "$ref": "#/components/schemas/DeclaredRoles" + }, + "host_information": { + "$ref": "#/components/schemas/HostInformation" + }, + "ip_packet_router": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/IpPacketRouterDetails" + } + ] + }, + "last_polled": { + "$ref": "#/components/schemas/OffsetDateTimeJsonSchemaWrapper" + }, + "mixnet_websockets": { + "$ref": "#/components/schemas/WebSockets" + }, + "network_requester": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/NetworkRequesterDetails" + } + ] + }, + "wireguard": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/WireguardDetails" + } + ] + } + } + }, + "NymNodeDescription": { + "type": "object", + "required": [ + "node_id", + "contract_node_type", + "description" + ], + "properties": { + "contract_node_type": { + "$ref": "#/components/schemas/DescribedNodeType" + }, + "description": { + "$ref": "#/components/schemas/NymNodeData" + }, + "node_id": { + "type": "integer", + "format": "int32", + "minimum": 0 + } + } + }, + "NymNodeDetails": { + "type": "object", + "description": "Full details associated with given node.", + "required": [ + "bond_information", + "rewarding_details", + "pending_changes" + ], + "properties": { + "bond_information": { + "$ref": "#/components/schemas/NymNodeBond", + "description": "Basic bond information of this node, such as owner address, original pledge, etc." + }, + "pending_changes": { + "$ref": "#/components/schemas/PendingNodeChanges", + "description": "Adjustments to the node that are scheduled to happen during future epoch/interval transitions." + }, + "rewarding_details": { + "$ref": "#/components/schemas/NodeRewarding", + "description": "Details used for computation of rewarding related data." + } + }, + "additionalProperties": false + }, + "OffsetDateTimeJsonSchemaWrapper": { + "type": "string", + "format": "date-time" + }, + "OldHistoricalUptimeResponse": { + "type": "object", + "required": [ + "date", + "uptime" + ], + "properties": { + "date": { + "type": "string" + }, + "uptime": { + "type": "integer", + "format": "int32", + "minimum": 0 + } + } + }, + "OutdatedVersionWeights": { + "type": "object", + "description": "Defines weights for calculating numbers of versions behind the current release.", + "required": [ + "major", + "minor", + "patch", + "prerelease" + ], + "properties": { + "major": { + "type": "integer", + "format": "int32", + "minimum": 0 + }, + "minor": { + "type": "integer", + "format": "int32", + "minimum": 0 + }, + "patch": { + "type": "integer", + "format": "int32", + "minimum": 0 + }, + "prerelease": { + "type": "integer", + "format": "int32", + "minimum": 0 + } + } + }, + "PaginatedCachedNodesResponseSchema": { + "type": "object", + "title": "PaginatedCachedNodesResponse", + "required": [ + "refreshed_at", + "nodes" + ], + "properties": { + "nodes": { + "$ref": "#/components/schemas/SkimmedNode" + }, + "refreshed_at": { + "$ref": "#/components/schemas/OffsetDateTimeJsonSchemaWrapper" + } + } + }, + "PaginatedResponse": { + "type": "object", + "required": [ + "pagination", + "data" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PartialTestResult" + } + }, + "pagination": { + "$ref": "#/components/schemas/Pagination" + } + } + }, + "PaginatedResponse_HistoricalPerformanceResponse": { + "type": "object", + "required": [ + "pagination", + "data" + ], + "properties": { + "data": { + "type": "array", + "items": { + "type": "object", + "required": [ + "date", + "performance" + ], + "properties": { + "date": { + "type": "string", + "example": "1970-01-01" + }, + "performance": { + "type": "number", + "format": "double" + } + } + } + }, + "pagination": { + "$ref": "#/components/schemas/Pagination" + } + } + }, + "PaginatedResponse_HistoricalUptimeResponse": { + "type": "object", + "required": [ + "pagination", + "data" + ], + "properties": { + "data": { + "type": "array", + "items": { + "type": "object", + "required": [ + "date", + "uptime" + ], + "properties": { + "date": { + "type": "string", + "example": "1970-01-01" + }, + "uptime": { + "$ref": "#/components/schemas/u8" + } + } + } + }, + "pagination": { + "$ref": "#/components/schemas/Pagination" + } + } + }, + "PaginatedResponse_NoiseDetails": { + "type": "object", + "required": [ + "pagination", + "data" + ], + "properties": { + "data": { + "type": "array", + "items": { + "type": "object", + "required": [ + "x25119_pubkey", + "mixnet_port", + "ip_addresses" + ], + "properties": { + "ip_addresses": { + "type": "array", + "items": { + "type": "string" + } + }, + "mixnet_port": { + "type": "integer", + "format": "int32", + "minimum": 0 + }, + "x25119_pubkey": { + "type": "string" + } + } + } + }, + "pagination": { + "$ref": "#/components/schemas/Pagination" + } + } + }, + "PaginatedResponse_NymNodeDescription": { + "type": "object", + "required": [ + "pagination", + "data" + ], + "properties": { + "data": { + "type": "array", + "items": { + "type": "object", + "required": [ + "node_id", + "contract_node_type", + "description" + ], + "properties": { + "contract_node_type": { + "$ref": "#/components/schemas/DescribedNodeType" + }, + "description": { + "$ref": "#/components/schemas/NymNodeData" + }, + "node_id": { + "type": "integer", + "format": "int32", + "minimum": 0 + } + } + } + }, + "pagination": { + "$ref": "#/components/schemas/Pagination" + } + } + }, + "PaginatedResponse_NymNodeDetails": { + "type": "object", + "required": [ + "pagination", + "data" + ], + "properties": { + "data": { + "type": "array", + "items": { + "type": "object", + "description": "Full details associated with given node.", + "required": [ + "bond_information", + "rewarding_details", + "pending_changes" + ], + "properties": { + "bond_information": { + "$ref": "#/components/schemas/NymNodeBond", + "description": "Basic bond information of this node, such as owner address, original pledge, etc." + }, + "pending_changes": { + "$ref": "#/components/schemas/PendingNodeChanges", + "description": "Adjustments to the node that are scheduled to happen during future epoch/interval transitions." + }, + "rewarding_details": { + "$ref": "#/components/schemas/NodeRewarding", + "description": "Details used for computation of rewarding related data." + } + }, + "additionalProperties": false + } + }, + "pagination": { + "$ref": "#/components/schemas/Pagination" + } + } + }, + "Pagination": { + "type": "object", + "required": [ + "total", + "page", + "size" + ], + "properties": { + "page": { + "type": "integer", + "format": "int32", + "minimum": 0 + }, + "size": { + "type": "integer", + "minimum": 0 + }, + "total": { + "type": "integer", + "minimum": 0 + } + } + }, + "PaginationRequest": { + "type": "object", + "properties": { + "page": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + }, + "per_page": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + } + }, + "PartialCoinIndicesSignatureResponse": { + "type": "object", + "required": [ + "epoch_id", + "signatures" + ], + "properties": { + "epoch_id": { + "type": "integer", + "format": "int64", + "minimum": 0 + }, + "signatures": { + "$ref": "#/components/schemas/AnnotatedCoinIndexSignature" + } + } + }, + "PartialExpirationDateSignatureResponse": { + "type": "object", + "required": [ + "epoch_id", + "expiration_date", + "signatures" + ], + "properties": { + "epoch_id": { + "type": "integer", + "format": "int64", + "minimum": 0 + }, + "expiration_date": { + "type": "string", + "example": "1970-01-01" + }, + "signatures": { + "$ref": "#/components/schemas/AnnotatedExpirationDateSignature" + } + } + }, + "PartialTestResult": { + "type": "object", + "required": [ + "monitor_run_id", + "timestamp", + "test_routes" + ], + "properties": { + "monitor_run_id": { + "type": "integer", + "format": "int64" + }, + "overall_reliability_for_all_routes_in_monitor_run": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + }, + "test_routes": { + "$ref": "#/components/schemas/TestRoute" + }, + "timestamp": { + "type": "integer", + "format": "int64" + } + } + }, + "PayInfo": { + "type": "object", + "required": [ + "pay_info_bytes" + ], + "properties": { + "pay_info_bytes": { + "type": "array", + "items": { + "type": "integer", + "format": "int32", + "minimum": 0 + }, + "contentEncoding": "base16" + } + } + }, + "Payment": { + "type": "object", + "required": [ + "kappa", + "kappa_e", + "sig", + "sig_exp", + "kappa_k", + "omega", + "ss", + "tt", + "aa", + "spend_value", + "cc", + "t_type", + "zk_proof" + ], + "properties": { + "aa": { + "type": "array", + "items": { + "type": "string" + } + }, + "cc": { + "type": "string" + }, + "kappa": { + "type": "string" + }, + "kappa_e": { + "type": "string" + }, + "kappa_k": { + "type": "array", + "items": { + "type": "string" + } + }, + "omega": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Signature" + } + }, + "sig": { + "$ref": "#/components/schemas/Signature" + }, + "sig_exp": { + "$ref": "#/components/schemas/Signature" + }, + "spend_value": { + "type": "integer", + "format": "int64", + "minimum": 0 + }, + "ss": { + "type": "array", + "items": { + "type": "string" + } + }, + "t_type": { + "type": "integer", + "format": "int32", + "minimum": 0 + }, + "tt": { + "type": "array", + "items": { + "type": "string" + } + }, + "zk_proof": { + "$ref": "#/components/schemas/SpendProof" + } + } + }, + "PendingNodeChanges": { + "type": "object", + "properties": { + "cost_params_change": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + }, + "pledge_change": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + }, + "additionalProperties": false + }, + "PerformanceHistoryResponse": { + "type": "object", + "required": [ + "node_id", + "history" + ], + "properties": { + "history": { + "$ref": "#/components/schemas/PaginatedResponse_HistoricalPerformanceResponse" + }, + "node_id": { + "type": "integer", + "format": "int32", + "minimum": 0 + } + } + }, + "PublicKeyUser": { + "type": "object", + "required": [ + "pk" + ], + "properties": { + "pk": { + "type": "string" + } + } + }, + "RewardEstimate": { + "type": "object", + "required": [ + "total_node_reward", + "operator", + "delegates", + "operating_cost" + ], + "properties": { + "delegates": { + "type": "string", + "description": "The share of the reward that is going to get distributed among the node delegators." + }, + "operating_cost": { + "type": "string", + "description": "The operating cost of this node. Note: it's already included in the operator reward." + }, + "operator": { + "type": "string", + "description": "The share of the reward that is going to get distributed to the node operator." + }, + "total_node_reward": { + "type": "string", + "description": "The amount of **decimal** coins that are going to get distributed to the node,\ni.e. the operator and all its delegators." + } + }, + "additionalProperties": false + }, + "RewardEstimationResponse": { + "type": "object", + "required": [ + "estimation", + "reward_params", + "epoch", + "as_at" + ], + "properties": { + "as_at": { + "type": "integer", + "format": "int64" + }, + "epoch": { + "$ref": "#/components/schemas/Interval" + }, + "estimation": { + "$ref": "#/components/schemas/RewardEstimate" + }, + "reward_params": { + "$ref": "#/components/schemas/RewardingParams" + } + } + }, + "RewardedSetParams": { + "type": "object", + "required": [ + "entry_gateways", + "exit_gateways", + "mixnodes", + "standby" + ], + "properties": { + "entry_gateways": { + "type": "integer", + "format": "int32", + "description": "The expected number of nodes assigned entry gateway role (i.e. [`Role::EntryGateway`])", + "minimum": 0 + }, + "exit_gateways": { + "type": "integer", + "format": "int32", + "description": "The expected number of nodes assigned exit gateway role (i.e. [`Role::ExitGateway`])", + "minimum": 0 + }, + "mixnodes": { + "type": "integer", + "format": "int32", + "description": "The expected number of nodes assigned the 'mixnode' role, i.e. total of [`Role::Layer1`], [`Role::Layer2`] and [`Role::Layer3`].", + "minimum": 0 + }, + "standby": { + "type": "integer", + "format": "int32", + "description": "Number of nodes in the 'standby' set. (i.e. [`Role::Standby`])", + "minimum": 0 + } + }, + "additionalProperties": false + }, + "RewardedSetResponse": { + "type": "object", + "required": [ + "entry_gateways", + "exit_gateways", + "layer1", + "layer2", + "layer3", + "standby" + ], + "properties": { + "entry_gateways": { + "type": "array", + "items": { + "$ref": "#/components/schemas/u32" + } + }, + "exit_gateways": { + "type": "array", + "items": { + "$ref": "#/components/schemas/u32" + } + }, + "layer1": { + "type": "array", + "items": { + "$ref": "#/components/schemas/u32" + } + }, + "layer2": { + "type": "array", + "items": { + "$ref": "#/components/schemas/u32" + } + }, + "layer3": { + "type": "array", + "items": { + "$ref": "#/components/schemas/u32" + } + }, + "standby": { + "type": "array", + "items": { + "$ref": "#/components/schemas/u32" + } + } + } + }, + "RewardingParams": { + "type": "object", + "description": "Parameters used for reward calculation.", + "required": [ + "interval", + "rewarded_set" + ], + "properties": { + "interval": { + "$ref": "#/components/schemas/IntervalRewardParams", + "description": "Parameters that should remain unchanged throughout an interval." + }, + "rewarded_set": { + "$ref": "#/components/schemas/RewardedSetParams" + } + }, + "additionalProperties": false + }, + "RoutingScore": { + "type": "object", + "required": [ + "score" + ], + "properties": { + "score": { + "type": "number", + "format": "double", + "description": "Total score after taking all the criteria into consideration" + } + } + }, + "SelectionChance": { + "type": "string", + "enum": [ + "High", + "Good", + "Low" + ], + "deprecated": true + }, + "SemiSkimmedNode": { + "type": "object", + "required": [ + "basic", + "x25519_noise_pubkey" + ], + "properties": { + "basic": { + "$ref": "#/components/schemas/SkimmedNode" + }, + "x25519_noise_pubkey": { + "type": "string" + } + } + }, + "SerialNumberWrapper": { + "type": "array", + "items": { + "type": "integer", + "format": "int32", + "minimum": 0 + } + }, + "Signature": { + "type": "object", + "required": [ + "h", + "s" + ], + "properties": { + "h": { + "type": "string" + }, + "s": { + "type": "string" + } + } + }, + "SignerInformationResponse": { + "type": "object", + "required": [ + "cosmos_address", + "identity", + "announce_address" + ], + "properties": { + "announce_address": { + "type": "string" + }, + "cosmos_address": { + "type": "string" + }, + "identity": { + "type": "string" + }, + "verification_key": { + "type": [ + "string", + "null" + ] + } + } + }, + "SkimmedNode": { + "type": "object", + "required": [ + "node_id", + "ed25519_identity_pubkey", + "ip_addresses", + "mix_port", + "x25519_sphinx_pubkey", + "role", + "performance" + ], + "properties": { + "ed25519_identity_pubkey": { + "type": "string" + }, + "entry": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/BasicEntryInformation" + } + ] + }, + "ip_addresses": { + "type": "array", + "items": { + "type": "string" + } + }, + "mix_port": { + "type": "integer", + "format": "int32", + "minimum": 0 + }, + "node_id": { + "type": "integer", + "format": "int32", + "minimum": 0 + }, + "performance": { + "type": "string", + "description": "Average node performance in last 24h period" + }, + "role": { + "$ref": "#/components/schemas/NodeRole" + }, + "supported_roles": { + "$ref": "#/components/schemas/DeclaredRoles" + }, + "x25519_sphinx_pubkey": { + "type": "string" + } + } + }, + "SpendProof": { + "type": "object", + "required": [ + "challenge", + "response_r", + "response_r_e", + "responses_r_k", + "responses_l", + "responses_o_a", + "response_o_c", + "responses_mu", + "responses_o_mu", + "responses_attributes" + ], + "properties": { + "challenge": { + "type": "array", + "items": { + "type": "integer", + "format": "binary", + "minimum": 0 + } + }, + "response_o_c": { + "type": "array", + "items": { + "type": "integer", + "format": "binary", + "minimum": 0 + } + }, + "response_r": { + "type": "array", + "items": { + "type": "integer", + "format": "binary", + "minimum": 0 + } + }, + "response_r_e": { + "type": "array", + "items": { + "type": "integer", + "format": "binary", + "minimum": 0 + } + }, + "responses_attributes": { + "type": "array", + "items": { + "type": "array", + "items": { + "type": "integer", + "format": "binary", + "minimum": 0 + } + } + }, + "responses_l": { + "type": "array", + "items": { + "type": "array", + "items": { + "type": "integer", + "format": "binary", + "minimum": 0 + } + } + }, + "responses_mu": { + "type": "array", + "items": { + "type": "array", + "items": { + "type": "integer", + "format": "binary", + "minimum": 0 + } + } + }, + "responses_o_a": { + "type": "array", + "items": { + "type": "array", + "items": { + "type": "integer", + "format": "binary", + "minimum": 0 + } + } + }, + "responses_o_mu": { + "type": "array", + "items": { + "type": "array", + "items": { + "type": "integer", + "format": "binary", + "minimum": 0 + } + } + }, + "responses_r_k": { + "type": "array", + "items": { + "type": "array", + "items": { + "type": "integer", + "format": "binary", + "minimum": 0 + } + } + } + } + }, + "SpentCredentialsResponse": { + "type": "object", + "required": [ + "bitmap" + ], + "properties": { + "bitmap": { + "type": "string" + } + } + }, + "StakeSaturationResponse": { + "type": "object", + "required": [ + "saturation", + "uncapped_saturation", + "as_at" + ], + "properties": { + "as_at": { + "type": "integer", + "format": "int64" + }, + "saturation": { + "type": "string" + }, + "uncapped_saturation": { + "type": "string" + } + } + }, + "String": { + "type": "string" + }, + "TestNode": { + "type": "object", + "properties": { + "identity_key": { + "type": [ + "string", + "null" + ] + }, + "node_id": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + } + }, + "TestRoute": { + "type": "object", + "required": [ + "gateway", + "layer1", + "layer2", + "layer3" + ], + "properties": { + "gateway": { + "$ref": "#/components/schemas/TestNode" + }, + "layer1": { + "$ref": "#/components/schemas/TestNode" + }, + "layer2": { + "$ref": "#/components/schemas/TestNode" + }, + "layer3": { + "$ref": "#/components/schemas/TestNode" + } + } + }, + "UptimeHistoryResponse": { + "type": "object", + "required": [ + "node_id", + "history" + ], + "properties": { + "history": { + "$ref": "#/components/schemas/PaginatedResponse_HistoricalUptimeResponse" + }, + "node_id": { + "type": "integer", + "format": "int32", + "minimum": 0 + } + } + }, + "UptimeResponse": { + "type": "object", + "required": [ + "mix_id", + "avg_uptime", + "node_performance" + ], + "properties": { + "avg_uptime": { + "type": "integer", + "format": "int32", + "minimum": 0 + }, + "mix_id": { + "type": "integer", + "format": "int32", + "minimum": 0 + }, + "node_performance": { + "$ref": "#/components/schemas/NodePerformance" + } + } + }, + "ValidatorDetails": { + "type": "object", + "required": [ + "nyxd_url" + ], + "properties": { + "api_url": { + "type": [ + "string", + "null" + ] + }, + "nyxd_url": { + "type": "string" + }, + "websocket_url": { + "type": [ + "string", + "null" + ] + } + } + }, + "VerificationKeyAuth": { + "type": "object", + "required": [ + "alpha", + "beta_g1", + "beta_g2" + ], + "properties": { + "alpha": { + "type": "string" + }, + "beta_g1": { + "type": "array", + "items": { + "type": "string" + } + }, + "beta_g2": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "VerificationKeyResponse": { + "type": "object", + "required": [ + "key" + ], + "properties": { + "key": { + "$ref": "#/components/schemas/VerificationKeyAuth" + } + } + }, + "VerifyEcashCredentialBody": { + "type": "object", + "required": [ + "credential", + "gateway_cosmos_addr", + "proposal_id" + ], + "properties": { + "credential": { + "$ref": "#/components/schemas/CredentialSpendingData", + "description": "The cryptographic material required for spending the underlying credential." + }, + "gateway_cosmos_addr": { + "type": "string", + "description": "Cosmos address of the sender of the credential" + }, + "proposal_id": { + "type": "integer", + "format": "int64", + "description": "Multisig proposal for releasing funds for the provided bandwidth credential", + "minimum": 0 + } + } + }, + "VerifyEcashTicketBody": { + "type": "object", + "required": [ + "credential", + "gateway_cosmos_addr" + ], + "properties": { + "credential": { + "type": "string", + "description": "The cryptographic material required for spending the underlying credential." + }, + "gateway_cosmos_addr": { + "type": "string", + "description": "Cosmos address of the sender of the credential" + } + } + }, + "VersionScoreFormulaParams": { + "type": "object", + "description": "Given the formula of version_score = penalty ^ (versions_behind_factor ^ penalty_scaling)\ndefine the relevant parameters", + "required": [ + "penalty", + "penalty_scaling" + ], + "properties": { + "penalty": { + "type": "number", + "format": "double" + }, + "penalty_scaling": { + "type": "number", + "format": "double" + } + } + }, + "WebSockets": { + "type": "object", + "required": [ + "ws_port" + ], + "properties": { + "ws_port": { + "type": "integer", + "format": "int32", + "minimum": 0 + }, + "wss_port": { + "type": [ + "integer", + "null" + ], + "format": "int32", + "minimum": 0 + } + } + }, + "WireguardDetails": { + "type": "object", + "required": [ + "port", + "public_key" + ], + "properties": { + "port": { + "type": "integer", + "format": "int32", + "minimum": 0 + }, + "public_key": { + "type": "string" + } + } + }, + "WithdrawalReqProof": { + "type": "object", + "required": [ + "challenge", + "response_opening", + "response_openings", + "response_attributes" + ], + "properties": { + "challenge": { + "type": "array", + "items": { + "type": "integer", + "format": "binary", + "minimum": 0 + } + }, + "response_attributes": { + "type": "array", + "items": { + "type": "array", + "items": { + "type": "integer", + "format": "binary", + "minimum": 0 + } + } + }, + "response_opening": { + "type": "array", + "items": { + "type": "integer", + "format": "binary", + "minimum": 0 + } + }, + "response_openings": { + "type": "array", + "items": { + "type": "array", + "items": { + "type": "integer", + "format": "binary", + "minimum": 0 + } + } + } + } + }, + "WithdrawalRequest": { + "type": "object", + "required": [ + "joined_commitment_hash", + "joined_commitment", + "private_attributes_commitments", + "zk_proof" + ], + "properties": { + "joined_commitment": { + "type": "string" + }, + "joined_commitment_hash": { + "type": "string" + }, + "private_attributes_commitments": { + "type": "array", + "items": { + "type": "string" + } + }, + "zk_proof": { + "$ref": "#/components/schemas/WithdrawalReqProof" + } + } + }, + "u32": { + "type": "integer", + "format": "int32", + "minimum": 0 + }, + "u8": { + "type": "integer", + "format": "int32", + "minimum": 0 + } + }, + "responses": { + "CirculatingSupplyResponse": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "total_supply", + "mixmining_reserve", + "vesting_tokens", + "circulating_supply" + ], + "properties": { + "circulating_supply": { + "$ref": "#/components/schemas/CoinSchema" + }, + "mixmining_reserve": { + "$ref": "#/components/schemas/CoinSchema" + }, + "total_supply": { + "$ref": "#/components/schemas/CoinSchema" + }, + "vesting_tokens": { + "$ref": "#/components/schemas/CoinSchema" + } + } + } + } + } + } + } + }, + "tags": [] +} diff --git a/nym-api/redocly/readme.MD b/nym-api/redocly/readme.MD new file mode 100644 index 0000000000..79ac2fbb9f --- /dev/null +++ b/nym-api/redocly/readme.MD @@ -0,0 +1,27 @@ +# Test / validate OpenAPI spec + +`redocly` CLI is an [OpenAPI linter][docs] that enforces good practices by +checking whether a series of lints are applied to your OpenAPI spec. + +## Install + +You need `npm` and `npx` ([official instructions][instructions]) + +## Run + +``` +./redocly.sh +``` + +## Configuration + +- redocly.yaml is the main [config file](https://redocly.com/docs/redoc/config) + +## Ignore file + +- specifies lints to ignore (some lints may be false alarms/not applicable) +- if you want to add current CLI warnings to an ignore file, run redocly CLI + with `--generate-ignore-file` + +[docs]: https://redocly.com/docs/redoc +[instructions]: https://redocly.com/docs/cli/installation diff --git a/redocly.sh b/nym-api/redocly/redocly.sh similarity index 79% rename from redocly.sh rename to nym-api/redocly/redocly.sh index a54769510d..4e7d67693d 100755 --- a/redocly.sh +++ b/nym-api/redocly/redocly.sh @@ -1,7 +1,5 @@ #!/bin/bash -clear curl -s http://localhost:8000/api-docs/openapi.json | jq . > formatted-openapi.json npx @redocly/cli@latest lint --config .redocly.yaml \ - --skip-rule=operation-2xx-response \ # --generate-ignore-file