diff --git a/.redocly.lint-ignore.yaml b/.redocly.lint-ignore.yaml new file mode 100644 index 00000000000..0ee9382ec3c --- /dev/null +++ b/.redocly.lint-ignore.yaml @@ -0,0 +1,249 @@ +# This file instructs Redocly's linter to ignore the rules contained for specific parts of your API. +# See https://redocly.com/docs/cli/ for more information. +formatted-openapi.json: + no-empty-servers: + - '#/openapi' + struct: + - >- + /components/schemas/EcashTicketVerificationResult/oneOf/0/properties/Ok/nullable + - >- + #/paths/~1v1~1epoch~1current/get/responses/200/content/application~1json/schema/nullable + - >- + #/paths/~1v1~1epoch~1reward_params/get/responses/200/content/application~1json/schema/nullable + - >- + #/components/schemas/ContractInformationContractVersion/properties/details/nullable + - >- + #/components/schemas/ContractInformationBuildInformation/properties/details/nullable + - '#/components/schemas/AnnotationResponse/properties/annotation/nullable' + - '#/components/schemas/NodeAnnotation/properties/current_role/nullable' + - >- + #/components/schemas/GatewayBondAnnotated/properties/self_described/nullable + - >- + #/paths/~1v1~1status~1mixnode~1{mix_id}~1compute-reward-estimation/post/parameters/0/schema/nullable + - >- + #/paths/~1v1~1status~1mixnode~1{mix_id}~1compute-reward-estimation/post/parameters/4/schema/nullable + - >- + #/paths/~1v1~1status~1mixnode~1{mix_id}~1compute-reward-estimation/post/parameters/5/schema/nullable + - >- + #/paths/~1v1~1unstable~1nym-nodes~1full-fat~1/get/parameters/0/schema/nullable + - >- + #/paths/~1v1~1unstable~1nym-nodes~1semi-skimmed~1/get/parameters/0/schema/nullable + - >- + #/paths/~1v1~1unstable~1nym-nodes~1skimmed~1/get/parameters/0/schema/nullable + - '#/components/schemas/SkimmedNode/properties/entry/nullable' + - '#/components/schemas/FullFatNode/properties/self_described/nullable' + - '#/components/schemas/NymNodeData/properties/authenticator/nullable' + - '#/components/schemas/NymNodeData/properties/ip_packet_router/nullable' + - '#/components/schemas/NymNodeData/properties/network_requester/nullable' + - '#/components/schemas/NymNodeData/properties/wireguard/nullable' + - >- + #/components/schemas/LegacyDescribedGateway/properties/self_described/nullable + - >- + #/components/schemas/LegacyDescribedMixNode/properties/self_described/nullable + no-unresolved-refs: + # - >- + # #/paths/~1v1~1gateways/get/responses/200/content/application~1json/schema/items + # - >- + # #/paths/~1v1~1gateways~1described/get/responses/200/content/application~1json/schema/items + # - >- + # #/paths/~1v1~1mixnodes/get/responses/200/content/application~1json/schema/items + # - >- + # #/paths/~1v1~1mixnodes~1active/get/responses/200/content/application~1json/schema/items + # - >- + # #/components/schemas/MixNodeBondAnnotated/properties/estimated_delegators_apy + # - >- + # #/components/schemas/MixNodeBondAnnotated/properties/estimated_operator_apy + # - '#/components/schemas/MixNodeBondAnnotated/properties/ip_addresses/items' + # - >- + # #/paths/~1v1~1mixnodes~1described/get/responses/200/content/application~1json/schema/items + # - >- + # #/paths/~1v1~1mixnodes~1rewarded/get/responses/200/content/application~1json/schema/items + # - >- + # #/paths/~1v1~1nym-nodes~1bonded/get/responses/200/content/application~1json/schema + # - >- + # #/paths/~1v1~1nym-nodes~1described/get/responses/200/content/application~1json/schema + # - >- + # #/paths/~1v1~1nym-nodes~1noise/get/responses/200/content/application~1json/schema + # - '#/components/schemas/PerformanceHistoryResponse/properties/history' + # - '#/components/schemas/LegacyGatewayBondWithId/allOf/0' + # - '#/components/schemas/GatewayBondAnnotated/properties/ip_addresses/items' + # - '#/components/schemas/GatewayBondAnnotated/properties/performance' + # - >- + # #/components/schemas/GatewayBondAnnoctated/properties/self_described/allOf/0 + # - >- + # #/paths/~1v1~1status~1gateways~1unstable~1{identity}~1test-results/get/responses/200/content/application~1json/schema + # - >- + # #/paths/~1v1~1status~1mixnode~1{mix_id}~1compute-reward-estimation/post/parameters/0/schema/allOf/0 + # - >- + # #/paths/~1v1~1status~1mixnode~1{mix_id}~1compute-reward-estimation/post/parameters/4/schema/allOf/0 + # - >- + # #/paths/~1v1~1status~1mixnode~1{mix_id}~1compute-reward-estimation/post/parameters/5/schema/allOf/0 + # - '#/components/schemas/RewardEstimationResponse/properties/estimation' + # - '#/components/schemas/MixnodeStatusReportResponse/properties/identity' + # - '#/components/schemas/MixnodeStatusResponse/properties/status' + # - >- + # #/paths/~1v1~1status~1mixnodes~1unstable~1{mix_id}~1test-results/get/responses/200/content/application~1json/schema + # - >- + # #/paths/~1v1~1status~1submit-gateway-monitoring-results/post/requestBody/content/application~1json/schema + # - >- + # #/paths/~1v1~1status~1submit-node-monitoring-results/post/requestBody/content/application~1json/schema + # - >- + # #/paths/~1v1~1unstable~1nym-nodes~1gateways~1skimmed/get/responses/200/content/application~1json/schema + # - >- + # #/paths/~1v1~1unstable~1nym-nodes~1mixnodes~1skimmed/get/responses/200/content/application~1json/schema + # - >- + # #/paths/~1v1~1unstable~1nym-nodes~1skimmed~1/get/responses/200/content/application~1json/schema + # - >- + # #/paths/~1v1~1unstable~1nym-nodes~1skimmed~1active/get/responses/200/content/application~1json/schema + # - >- + # #/paths/~1v1~1unstable~1nym-nodes~1skimmed~1entry-gateways~1active/get/responses/200/content/application~1json/schema + # - >- + # #/paths/~1v1~1unstable~1nym-nodes~1skimmed~1entry-gateways~1all/get/responses/200/content/application~1json/schema + # - >- + # #/paths/~1v1~1unstable~1nym-nodes~1skimmed~1exit-gateways~1active/get/responses/200/content/application~1json/schema + # - >- + # #/paths/~1v1~1unstable~1nym-nodes~1skimmed~1exit-gateways~1all/get/responses/200/content/application~1json/schema + # - >- + # #/paths/~1v1~1unstable~1nym-nodes~1skimmed~1mixnodes~1active/get/responses/200/content/application~1json/schema + # - >- + # #/paths/~1v1~1unstable~1nym-nodes~1skimmed~1mixnodes~1all/get/responses/200/content/application~1json/schema + # - '#/components/schemas/AuxiliaryDetails/properties/announce_ports' + # - '#/components/schemas/SkimmedNode/properties/ed25519_identity_pubkey' + # - '#/components/schemas/SkimmedNode/properties/x25519_sphinx_pubkey' + # - '#/components/schemas/HistoricalUptimeResponse/properties/uptime' + # - '#/components/schemas/LegacyDescribedGateway/properties/bond' + # - '#/components/schemas/LegacyMixNodeBondWithLayer/allOf/0' + # - '#/components/schemas/LegacyMixNodeBondWithLayer/allOf/1/properties/layer' + # - '#/components/schemas/PartialTestResult/properties/test_routes' + # - '#/components/schemas/UptimeHistoryResponse/properties/history' + # - '#/components/schemas/VerifyEcashCredentialBody/properties/credential' + 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' + operation-operationId-unique: + - >- + #/paths/~1v1~1status~1mixnodes~1active~1detailed/get/get_active_set_detailed + - '#/paths/~1v1~1status~1mixnodes~1detailed/get/get_mixnodes_detailed' + - >- + #/paths/~1v1~1status~1mixnodes~1rewarded~1detailed/get/get_rewarded_set_detailed + no-path-trailing-slash: + - '#/paths/~1v1~1unstable~1nym-nodes~1full-fat~1' + - '#/paths/~1v1~1unstable~1nym-nodes~1semi-skimmed~1' + - '#/paths/~1v1~1unstable~1nym-nodes~1skimmed~1' + no-unused-components: + - '#/components/schemas/DateQuery' + - '#/components/schemas/EcashTicketVerificationRejection' + - '#/components/schemas/ExpirationDatePathParam' + - '#/components/schemas/FullFatNode' + - '#/components/schemas/HistoricalPerformanceResponse' + - '#/components/schemas/HistoricalUptimeResponse' + - '#/components/schemas/LegacyDescribedGateway' + - '#/components/schemas/LegacyDescribedMixNode' + - '#/components/schemas/MasterVerificationKeyResponse' + - '#/components/schemas/MixnodeStatusReport' + - '#/components/schemas/NodeRoleQueryParam' + - '#/components/schemas/NoiseDetails' + - '#/components/schemas/NymNodeDescription' + - '#/components/schemas/Pagination' + - '#/components/schemas/PaginationRequest' + - '#/components/schemas/PartialCoinIndicesSignatureResponse' + - '#/components/schemas/PartialTestResult' + - '#/components/schemas/SpentCredentialsResponse' + - '#/components/schemas/UptimeHistoryResponse' + - '#/components/schemas/VerifyEcashCredentialBody' + - '#/components/responses/AxumErrorResponse' + - '#/components/responses/CirculatingSupplyResponse' + - '#/components/responses/RequestError' + security-defined: + - '#/paths/~1v1~1api-status~1build-information/get' + - '#/paths/~1v1~1api-status~1health/get' + - '#/paths/~1v1~1api-status~1signer-information/get' + - '#/paths/~1v1~1circulating-supply/get' + - '#/paths/~1v1~1circulating-supply~1circulating-supply-value/get' + - '#/paths/~1v1~1circulating-supply~1total-supply-value/get' + - '#/paths/~1v1~1ecash~1aggregated-coin-indices-signatures/get' + - '#/paths/~1v1~1ecash~1aggregated-expiration-date-signatures/get' + - '#/paths/~1v1~1ecash~1batch-redeem-ecash-tickets/post' + - '#/paths/~1v1~1ecash~1blind-sign/post' + - '#/paths/~1v1~1ecash~1double-spending-filter-v1/get' + - '#/paths/~1v1~1ecash~1issued-ticketbooks-challenge/post' + - '#/paths/~1v1~1ecash~1issued-ticketbooks-for~1{expiration_date}/get' + - '#/paths/~1v1~1ecash~1master-verification-key/get' + - '#/paths/~1v1~1ecash~1partial-coin-indices-signatures/get' + - '#/paths/~1v1~1ecash~1partial-expiration-date-signatures/get' + - '#/paths/~1v1~1ecash~1verify-ecash-ticket/post' + - '#/paths/~1v1~1epoch~1current/get' + - '#/paths/~1v1~1epoch~1reward_params/get' + - '#/paths/~1v1~1gateways/get' + - '#/paths/~1v1~1gateways~1blacklisted/get' + - '#/paths/~1v1~1gateways~1described/get' + - '#/paths/~1v1~1mixnodes/get' + - '#/paths/~1v1~1mixnodes~1active/get' + - '#/paths/~1v1~1mixnodes~1active~1detailed/get' + - '#/paths/~1v1~1mixnodes~1blacklisted/get' + - '#/paths/~1v1~1mixnodes~1described/get' + - '#/paths/~1v1~1mixnodes~1detailed/get' + - '#/paths/~1v1~1mixnodes~1rewarded/get' + - '#/paths/~1v1~1mixnodes~1rewarded~1detailed/get' + - '#/paths/~1v1~1network~1details/get' + - '#/paths/~1v1~1network~1nym-contracts/get' + - '#/paths/~1v1~1network~1nym-contracts-detailed/get' + - '#/paths/~1v1~1nym-nodes~1annotation~1{node_id}/get' + - '#/paths/~1v1~1nym-nodes~1bonded/get' + - '#/paths/~1v1~1nym-nodes~1described/get' + - '#/paths/~1v1~1nym-nodes~1historical-performance~1{node_id}/get' + - '#/paths/~1v1~1nym-nodes~1noise/get' + - '#/paths/~1v1~1nym-nodes~1performance-history~1{node_id}/get' + - '#/paths/~1v1~1nym-nodes~1performance~1{node_id}/get' + - '#/paths/~1v1~1nym-nodes~1refresh-described/post' + - '#/paths/~1v1~1nym-nodes~1uptime-history~1{node_id}/get' + - '#/paths/~1v1~1status~1gateway~1{identity}~1avg_uptime/get' + - '#/paths/~1v1~1status~1gateway~1{identity}~1core-status-count/get' + - '#/paths/~1v1~1status~1gateway~1{identity}~1history/get' + - '#/paths/~1v1~1status~1gateway~1{identity}~1report/get' + - '#/paths/~1v1~1status~1gateways~1detailed/get' + - '#/paths/~1v1~1status~1gateways~1detailed-unfiltered/get' + - '#/paths/~1v1~1status~1gateways~1unstable~1{identity}~1test-results/get' + - '#/paths/~1v1~1status~1mixnode~1{mix_id}~1avg_uptime/get' + - '#/paths/~1v1~1status~1mixnode~1{mix_id}~1compute-reward-estimation/post' + - '#/paths/~1v1~1status~1mixnode~1{mix_id}~1core-status-count/get' + - '#/paths/~1v1~1status~1mixnode~1{mix_id}~1history/get' + - '#/paths/~1v1~1status~1mixnode~1{mix_id}~1inclusion-probability/get' + - '#/paths/~1v1~1status~1mixnode~1{mix_id}~1report/get' + - '#/paths/~1v1~1status~1mixnode~1{mix_id}~1reward-estimation/get' + - '#/paths/~1v1~1status~1mixnode~1{mix_id}~1stake-saturation/get' + - '#/paths/~1v1~1status~1mixnode~1{mix_id}~1status/get' + - '#/paths/~1v1~1status~1mixnodes~1active~1detailed/get' + - '#/paths/~1v1~1status~1mixnodes~1detailed/get' + - '#/paths/~1v1~1status~1mixnodes~1detailed-unfiltered/get' + - '#/paths/~1v1~1status~1mixnodes~1inclusion-probability/get' + - '#/paths/~1v1~1status~1mixnodes~1rewarded~1detailed/get' + - '#/paths/~1v1~1status~1mixnodes~1unstable~1{mix_id}~1test-results/get' + - '#/paths/~1v1~1status~1submit-gateway-monitoring-results/post' + - '#/paths/~1v1~1status~1submit-node-monitoring-results/post' + - '#/paths/~1v1~1unstable~1nym-nodes~1full-fat~1/get' + - '#/paths/~1v1~1unstable~1nym-nodes~1gateways~1skimmed/get' + - '#/paths/~1v1~1unstable~1nym-nodes~1mixnodes~1skimmed/get' + - '#/paths/~1v1~1unstable~1nym-nodes~1semi-skimmed~1/get' + - '#/paths/~1v1~1unstable~1nym-nodes~1skimmed~1/get' + - '#/paths/~1v1~1unstable~1nym-nodes~1skimmed~1active/get' + - '#/paths/~1v1~1unstable~1nym-nodes~1skimmed~1entry-gateways~1active/get' + - '#/paths/~1v1~1unstable~1nym-nodes~1skimmed~1entry-gateways~1all/get' + - '#/paths/~1v1~1unstable~1nym-nodes~1skimmed~1exit-gateways~1active/get' + - '#/paths/~1v1~1unstable~1nym-nodes~1skimmed~1exit-gateways~1all/get' + - '#/paths/~1v1~1unstable~1nym-nodes~1skimmed~1mixnodes~1active/get' + - '#/paths/~1v1~1unstable~1nym-nodes~1skimmed~1mixnodes~1all/get' diff --git a/.redocly.yaml b/.redocly.yaml new file mode 100644 index 00000000000..64db82c4248 --- /dev/null +++ b/.redocly.yaml @@ -0,0 +1,83 @@ +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/bla.sh b/bla.sh new file mode 100755 index 00000000000..1382e59f1e9 --- /dev/null +++ b/bla.sh @@ -0,0 +1,9 @@ +#!/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 diff --git a/formatted-openapi.json b/formatted-openapi.json new file mode 100644 index 00000000000..0b219c19fb5 --- /dev/null +++ b/formatted-openapi.json @@ -0,0 +1,5778 @@ +{ + "openapi": "3.0.3", + "info": { + "title": "Nym API", + "description": "", + "contact": { + "name": "Nym Technologies SA" + }, + "license": { + "name": "GPL-3.0" + }, + "version": "1.1.47" + }, + "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", + "format": "int64", + "nullable": true, + "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", + "nullable": true + } + } + ], + "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": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/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": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v1/ecash/double-spending-filter-v1": { + "get": { + "tags": [ + "Ecash" + ], + "operationId": "double_spending_filter_v1", + "responses": { + "500": { + "description": "bloomfilters got disabled", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "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": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/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": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/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", + "format": "int64", + "nullable": true, + "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", + "format": "int64", + "nullable": true, + "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": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/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", + "nullable": true + } + } + ], + "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": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/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": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v1/epoch/current": { + "get": { + "tags": [ + "contract-cache" + ], + "operationId": "get_current_epoch", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Interval" + } + ], + "nullable": true + } + } + } + } + } + } + }, + "/v1/epoch/reward_params": { + "get": { + "tags": [ + "contract-cache" + ], + "operationId": "get_interval_reward_params", + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/RewardingParams" + } + ], + "nullable": true + } + } + } + } + } + } + }, + "/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", + "items": { + "type": "string" + }, + "uniqueItems": true, + "nullable": 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/DescribedGateway" + } + } + } + } + } + }, + "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", + "items": { + "$ref": "#/components/schemas/NodeId" + }, + "uniqueItems": true, + "nullable": 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/DescribedMixNode" + } + } + } + } + } + }, + "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" + } + } + } + } + } + } + } + }, + "/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" + } + } + } + } + } + } + } + }, + "/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/NodeId" + } + } + ], + "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", + "format": "int32", + "nullable": true, + "minimum": 0 + } + }, + { + "name": "per_page", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "nullable": true, + "minimum": 0 + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PaginatedResponse" + } + } + } + } + } + } + }, + "/v1/nym-nodes/described": { + "get": { + "tags": [ + "Nym Nodes" + ], + "operationId": "get_described_nodes", + "parameters": [ + { + "name": "page", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "nullable": true, + "minimum": 0 + } + }, + { + "name": "per_page", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "nullable": true, + "minimum": 0 + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PaginatedResponse" + } + } + } + } + } + } + }, + "/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/NodeId" + } + } + ], + "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", + "format": "int32", + "nullable": true, + "minimum": 0 + } + }, + { + "name": "per_page", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "nullable": true, + "minimum": 0 + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PaginatedResponse" + } + } + } + } + } + } + }, + "/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", + "format": "int32", + "nullable": true, + "minimum": 0 + } + }, + { + "name": "per_page", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "nullable": true, + "minimum": 0 + } + }, + { + "name": "node_id", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/NodeId" + } + } + ], + "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/NodeId" + } + } + ], + "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/uptime-history/{node_id}": { + "get": { + "tags": [ + "Nym Nodes" + ], + "operationId": "get_node_uptime_history", + "parameters": [ + { + "name": "page", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "nullable": true, + "minimum": 0 + } + }, + { + "name": "per_page", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "nullable": true, + "minimum": 0 + } + }, + { + "name": "node_id", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/NodeId" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PerformanceHistoryResponse" + } + } + } + } + } + } + }, + "/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", + "format": "int64", + "nullable": true + } + }, + { + "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", + "format": "int32", + "nullable": true, + "minimum": 0 + } + }, + { + "name": "per_page", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "nullable": true, + "minimum": 0 + } + }, + { + "name": "identity", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GatewayTestResultResponse" + } + } + } + } + } + } + }, + "/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/NodeId" + } + } + ], + "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": { + "allOf": [ + { + "$ref": "#/components/schemas/Performance" + } + ], + "nullable": true + } + }, + { + "name": "active_in_rewarded_set", + "in": "path", + "required": true, + "schema": { + "type": "boolean", + "nullable": true + } + }, + { + "name": "pledge_amount", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64", + "nullable": true, + "minimum": 0 + } + }, + { + "name": "total_delegation", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64", + "nullable": true, + "minimum": 0 + } + }, + { + "name": "interval_operating_cost", + "in": "path", + "required": true, + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Coin" + } + ], + "nullable": true + } + }, + { + "name": "profit_margin_percent", + "in": "path", + "required": true, + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Percent" + } + ], + "nullable": true + } + }, + { + "name": "mix_id", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/NodeId" + } + } + ], + "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/NodeId" + } + }, + { + "name": "since", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int64", + "nullable": true + } + } + ], + "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/NodeId" + } + } + ], + "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/NodeId" + } + } + ], + "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/NodeId" + } + } + ], + "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/NodeId" + } + } + ], + "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/NodeId" + } + } + ], + "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/NodeId" + } + } + ], + "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/NodeId" + } + }, + { + "name": "page", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "nullable": true, + "minimum": 0 + } + }, + { + "name": "per_page", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "nullable": true, + "minimum": 0 + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MixnodeTestResultResponse" + } + } + } + } + } + } + }, + "/v1/status/submit-gateway-monitoring-results": { + "post": { + "tags": [ + "status" + ], + "operationId": "submit_gateway_monitoring_results", + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MonitorMessage" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "" + }, + "400": { + "description": "TBD", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "TBD", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "500": { + "description": "TBD", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v1/status/submit-node-monitoring-results": { + "post": { + "tags": [ + "status" + ], + "operationId": "submit_node_monitoring_results", + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MonitorMessage" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "" + }, + "400": { + "description": "TBD", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "403": { + "description": "TBD", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "500": { + "description": "TBD", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/v1/unstable/nym-nodes/full-fat": { + "get": { + "tags": [ + "Unstable Nym Nodes" + ], + "operationId": "nodes_detailed", + "parameters": [ + { + "name": "role", + "in": "query", + "required": false, + "schema": { + "allOf": [ + { + "type": "string", + "enum": [ + "active-mixnode", + "entry-gateway", + "exit-gateway" + ] + } + ], + "nullable": true + } + }, + { + "name": "semver_compatibility", + "in": "query", + "required": false, + "schema": { + "type": "string", + "nullable": true + } + }, + { + "name": "no_legacy", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "nullable": true + } + }, + { + "name": "page", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "nullable": true, + "minimum": 0 + } + }, + { + "name": "per_page", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "nullable": true, + "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", + "nullable": true + } + }, + { + "name": "no_legacy", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "nullable": true + } + }, + { + "name": "page", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "nullable": true, + "minimum": 0 + } + }, + { + "name": "per_page", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "nullable": true, + "minimum": 0 + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CachedNodesResponse" + } + } + } + } + }, + "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", + "nullable": true + } + }, + { + "name": "no_legacy", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "nullable": true + } + }, + { + "name": "page", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "nullable": true, + "minimum": 0 + } + }, + { + "name": "per_page", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "nullable": true, + "minimum": 0 + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CachedNodesResponse" + } + } + } + } + }, + "deprecated": true + } + }, + "/v1/unstable/nym-nodes/semi-skimmed": { + "get": { + "tags": [ + "Unstable Nym Nodes" + ], + "operationId": "nodes_expanded", + "parameters": [ + { + "name": "role", + "in": "query", + "required": false, + "schema": { + "allOf": [ + { + "type": "string", + "enum": [ + "active-mixnode", + "entry-gateway", + "exit-gateway" + ] + } + ], + "nullable": true + } + }, + { + "name": "semver_compatibility", + "in": "query", + "required": false, + "schema": { + "type": "string", + "nullable": true + } + }, + { + "name": "no_legacy", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "nullable": true + } + }, + { + "name": "page", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "nullable": true, + "minimum": 0 + } + }, + { + "name": "per_page", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "nullable": true, + "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)", + "description": "that are currently bonded.", + "operationId": "nodes_basic_all", + "parameters": [ + { + "name": "role", + "in": "query", + "required": false, + "schema": { + "allOf": [ + { + "type": "string", + "enum": [ + "active-mixnode", + "entry-gateway", + "exit-gateway" + ] + } + ], + "nullable": true + } + }, + { + "name": "semver_compatibility", + "in": "query", + "required": false, + "schema": { + "type": "string", + "nullable": true + } + }, + { + "name": "no_legacy", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "nullable": true + } + }, + { + "name": "page", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "nullable": true, + "minimum": 0 + } + }, + { + "name": "per_page", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "nullable": true, + "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)", + "description": "that are currently bonded and are in the **active set**", + "operationId": "nodes_basic_active", + "parameters": [ + { + "name": "semver_compatibility", + "in": "path", + "required": true, + "schema": { + "type": "string", + "nullable": true + } + }, + { + "name": "no_legacy", + "in": "path", + "required": true, + "schema": { + "type": "boolean", + "nullable": true + } + }, + { + "name": "page", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "nullable": true, + "minimum": 0 + } + }, + { + "name": "per_page", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "nullable": true, + "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)", + "description": "that 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", + "nullable": true + } + }, + { + "name": "no_legacy", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "nullable": true + } + }, + { + "name": "page", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "nullable": true, + "minimum": 0 + } + }, + { + "name": "per_page", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "nullable": true, + "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)", + "description": "that are currently bonded and support entry gateway role.", + "operationId": "entry_gateways_basic_all", + "parameters": [ + { + "name": "semver_compatibility", + "in": "query", + "required": false, + "schema": { + "type": "string", + "nullable": true + } + }, + { + "name": "no_legacy", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "nullable": true + } + }, + { + "name": "page", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "nullable": true, + "minimum": 0 + } + }, + { + "name": "per_page", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "nullable": true, + "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)", + "description": "that 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", + "nullable": true + } + }, + { + "name": "no_legacy", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "nullable": true + } + }, + { + "name": "page", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "nullable": true, + "minimum": 0 + } + }, + { + "name": "per_page", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "nullable": true, + "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)", + "description": "that are currently bonded and support exit gateway role.", + "operationId": "exit_gateways_basic_all", + "parameters": [ + { + "name": "semver_compatibility", + "in": "query", + "required": false, + "schema": { + "type": "string", + "nullable": true + } + }, + { + "name": "no_legacy", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "nullable": true + } + }, + { + "name": "page", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "nullable": true, + "minimum": 0 + } + }, + { + "name": "per_page", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "nullable": true, + "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)", + "description": "that 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", + "nullable": true + } + }, + { + "name": "no_legacy", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "nullable": true + } + }, + { + "name": "page", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "nullable": true, + "minimum": 0 + } + }, + { + "name": "per_page", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "nullable": true, + "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)", + "description": "that are currently bonded and support mixing role.", + "operationId": "mixnodes_basic_all", + "parameters": [ + { + "name": "semver_compatibility", + "in": "query", + "required": false, + "schema": { + "type": "string", + "nullable": true + } + }, + { + "name": "no_legacy", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "nullable": true + } + }, + { + "name": "page", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "nullable": true, + "minimum": 0 + } + }, + { + "name": "per_page", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32", + "nullable": true, + "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": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AnnotatedCoinIndexSignature" + } + } + } + }, + "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": { + "allOf": [ + { + "$ref": "#/components/schemas/NodeAnnotation" + } + ], + "nullable": true + }, + "node_id": { + "type": "integer", + "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", + "description": "Optional ISO 3166 alpha-2 two-letter country code of the node's **physical** location", + "example": "PL", + "nullable": true + } + } + }, + "BasicEntryInformation": { + "type": "object", + "required": [ + "ws_port" + ], + "properties": { + "hostname": { + "type": "string", + "nullable": true + }, + "ws_port": { + "type": "integer", + "format": "int32", + "minimum": 0 + }, + "wss_port": { + "type": "integer", + "format": "int32", + "nullable": true, + "minimum": 0 + } + } + }, + "BatchRedeemTicketsBody": { + "type": "object", + "required": [ + "digest", + "included_serial_numbers", + "proposal_id", + "gateway_cosmos_addr" + ], + "properties": { + "digest": { + "type": "string", + "format": "binary" + }, + "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/G1ProjectiveSchema" + }, + "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": { + "$ref": "#/components/schemas/G1ProjectiveSchema" + }, + "h": { + "$ref": "#/components/schemas/G1ProjectiveSchema" + } + } + }, + "BlindedSignatureResponse": { + "type": "object", + "required": [ + "blinded_signature" + ], + "properties": { + "blinded_signature": { + "$ref": "#/components/schemas/BlindedSignature" + } + } + }, + "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", + "required": [ + "performance", + "interval_operating_cost", + "profit_margin_percent" + ], + "properties": { + "active_in_rewarded_set": { + "type": "boolean", + "nullable": true + }, + "interval_operating_cost": { + "$ref": "#/components/schemas/CoinSchema" + }, + "performance": { + "type": "string" + }, + "pledge_amount": { + "type": "integer", + "format": "int64", + "nullable": true, + "minimum": 0 + }, + "profit_margin_percent": { + "type": "string" + }, + "total_delegation": { + "type": "integer", + "format": "int64", + "nullable": true, + "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", + "format": "int32", + "nullable": true, + "minimum": 0 + } + } + }, + "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", + "nullable": true + }, + "details": { + "allOf": [ + { + "$ref": "#/components/schemas/ContractBuildInformation" + } + ], + "nullable": true + } + } + }, + "ContractInformationContractVersion": { + "type": "object", + "properties": { + "address": { + "type": "string", + "nullable": true + }, + "details": { + "allOf": [ + { + "$ref": "#/components/schemas/ContractVersionSchemaResponse" + } + ], + "nullable": true + } + } + }, + "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)" + } + } + }, + "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, + "nullable": true + } + } + }, + { + "type": "string", + "enum": [ + "EcashTicketVerificationRejection" + ] + } + ], + "description": "Used exclusively as part of OpenAPI docs" + }, + "ErrorResponse": { + "type": "object", + "title": "ErrorResponse", + "required": [ + "message", + "status" + ], + "properties": { + "message": { + "$ref": "#/components/schemas/RequestError" + }, + "status": { + "type": "integer", + "format": "int32", + "minimum": 0 + } + } + }, + "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": { + "allOf": [ + { + "$ref": "#/components/schemas/NymNodeData" + } + ], + "nullable": true + } + } + }, + "G1ProjectiveSchema": { + "type": "object", + "title": "G1Projective", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "array", + "items": { + "type": "integer", + "format": "int64", + "minimum": 0 + } + }, + "y": { + "type": "array", + "items": { + "type": "integer", + "format": "int64", + "minimum": 0 + } + }, + "z": { + "type": "array", + "items": { + "type": "integer", + "format": "int64", + "minimum": 0 + } + } + } + }, + "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": { + "$ref": "#/components/schemas/IpAddr" + } + }, + "node_performance": { + "$ref": "#/components/schemas/NodePerformance" + }, + "performance": { + "$ref": "#/components/schemas/Performance" + }, + "self_described": { + "allOf": [ + { + "$ref": "#/components/schemas/GatewayDescription" + } + ], + "nullable": true + } + } + }, + "GatewayCoreStatusResponse": { + "type": "object", + "required": [ + "identity", + "count" + ], + "properties": { + "count": { + "type": "integer", + "format": "int32" + }, + "identity": { + "type": "string" + } + } + }, + "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" + } + } + }, + "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/Uptime" + } + } + }, + "HostInformation": { + "type": "object", + "required": [ + "ip_address", + "keys" + ], + "properties": { + "hostname": { + "type": "string", + "nullable": true + }, + "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": "string", + "format": "binary" + }, + "depositId": { + "type": "integer", + "format": "int32", + "minimum": 0 + }, + "epochId": { + "type": "integer", + "format": "int32", + "minimum": 0 + }, + "expirationDate": { + "type": "string" + }, + "joinedEncodedPrivateAttributesCommitments": { + "type": "string", + "format": "binary" + }, + "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" + } + } + } + }, + "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": "string", + "format": "binary", + "nullable": true + } + } + }, + "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": "string", + "format": "binary" + }, + "total_leaves": { + "type": "integer", + "minimum": 0 + } + } + }, + "LegacyDescribedGateway": { + "type": "object", + "required": [ + "bond" + ], + "properties": { + "bond": { + "$ref": "#/components/schemas/GatewayBond" + }, + "self_described": { + "allOf": [ + { + "$ref": "#/components/schemas/NymNodeData" + } + ], + "nullable": true + } + } + }, + "LegacyDescribedMixNode": { + "type": "object", + "required": [ + "bond" + ], + "properties": { + "bond": { + "$ref": "#/components/schemas/LegacyMixNodeBondWithLayer" + }, + "self_described": { + "allOf": [ + { + "$ref": "#/components/schemas/NymNodeData" + } + ], + "nullable": true + } + } + }, + "LegacyGatewayBondWithId": { + "allOf": [ + { + "$ref": "#/components/schemas/GatewayBond" + }, + { + "type": "object", + "required": [ + "node_id" + ], + "properties": { + "node_id": { + "$ref": "#/components/schemas/NodeId" + } + } + } + ] + }, + "LegacyMixNodeBondWithLayer": { + "allOf": [ + { + "$ref": "#/components/schemas/MixNodeBond" + }, + { + "type": "object", + "required": [ + "layer" + ], + "properties": { + "layer": { + "$ref": "#/components/schemas/LegacyMixLayer" + } + } + } + ] + }, + "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" + } + } + }, + "MasterVerificationKeyResponse": { + "type": "object", + "required": [ + "key" + ], + "properties": { + "key": { + "$ref": "#/components/schemas/VerificationKeyAuth" + } + } + }, + "MerkleLeaf": { + "type": "object", + "required": [ + "hash", + "index" + ], + "properties": { + "hash": { + "type": "string", + "format": "binary" + }, + "index": { + "type": "integer", + "minimum": 0 + } + } + }, + "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": { + "$ref": "#/components/schemas/Decimal" + }, + "estimated_operator_apy": { + "$ref": "#/components/schemas/Decimal" + }, + "ip_addresses": { + "type": "array", + "items": { + "$ref": "#/components/schemas/IpAddr" + } + }, + "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/NodeId" + } + } + }, + "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/IdentityKey" + }, + "last_day": { + "type": "integer", + "format": "int32", + "minimum": 0 + }, + "last_hour": { + "type": "integer", + "format": "int32", + "minimum": 0 + }, + "mix_id": { + "$ref": "#/components/schemas/NodeId" + }, + "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/NodeId" + }, + "owner": { + "type": "string" + } + } + }, + "NetworkDetails": { + "type": "object", + "required": [ + "connected_nyxd", + "network" + ], + "properties": { + "connected_nyxd": { + "type": "string" + }, + "network": { + "$ref": "#/components/schemas/NymNetworkDetails" + } + } + }, + "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": { + "allOf": [ + { + "$ref": "#/components/schemas/DisplayRole" + } + ], + "nullable": true + }, + "detailed_performance": { + "$ref": "#/components/schemas/DetailedNodePerformance" + }, + "last_24h_performance": { + "type": "string" + } + } + }, + "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", + "format": "double", + "nullable": true + } + } + }, + "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", + "format": "double", + "nullable": true + } + } + }, + "NodeRefreshBody": { + "type": "object", + "required": [ + "node_identity", + "request_timestamp", + "signature" + ], + "properties": { + "node_identity": { + "type": "string" + }, + "request_timestamp": { + "type": "integer", + "format": "int64" + }, + "signature": { + "type": "string" + } + } + }, + "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", + "nullable": true + }, + "ecash_contract_address": { + "type": "string", + "nullable": true + }, + "group_contract_address": { + "type": "string", + "nullable": true + }, + "mixnet_contract_address": { + "type": "string", + "nullable": true + }, + "multisig_contract_address": { + "type": "string", + "nullable": true + }, + "vesting_contract_address": { + "type": "string", + "nullable": true + } + } + }, + "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", + "nullable": true + }, + "network_name": { + "type": "string" + }, + "nym_vpn_api_url": { + "type": "string", + "nullable": true + } + } + }, + "NymNodeData": { + "type": "object", + "required": [ + "host_information", + "build_information", + "mixnet_websockets" + ], + "properties": { + "authenticator": { + "allOf": [ + { + "$ref": "#/components/schemas/AuthenticatorDetails" + } + ], + "nullable": true + }, + "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": { + "allOf": [ + { + "$ref": "#/components/schemas/IpPacketRouterDetails" + } + ], + "nullable": true + }, + "last_polled": { + "$ref": "#/components/schemas/OffsetDateTimeJsonSchemaWrapper" + }, + "mixnet_websockets": { + "$ref": "#/components/schemas/WebSockets" + }, + "network_requester": { + "allOf": [ + { + "$ref": "#/components/schemas/NetworkRequesterDetails" + } + ], + "nullable": true + }, + "wireguard": { + "allOf": [ + { + "$ref": "#/components/schemas/WireguardDetails" + } + ], + "nullable": true + } + } + }, + "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 + } + } + }, + "OffsetDateTimeJsonSchemaWrapper": { + "type": "string", + "format": "date-time" + }, + "OldHistoricalUptimeResponse": { + "type": "object", + "required": [ + "date", + "uptime" + ], + "properties": { + "date": { + "type": "string" + }, + "uptime": { + "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" + } + } + }, + "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", + "format": "int32", + "nullable": true, + "minimum": 0 + }, + "per_page": { + "type": "integer", + "format": "int32", + "nullable": true, + "minimum": 0 + } + } + }, + "PartialCoinIndicesSignatureResponse": { + "type": "object", + "required": [ + "epoch_id", + "signatures" + ], + "properties": { + "epoch_id": { + "type": "integer", + "format": "int64", + "minimum": 0 + }, + "signatures": { + "type": "array", + "items": { + "$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": { + "type": "array", + "items": { + "$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", + "format": "int32", + "nullable": true, + "minimum": 0 + }, + "test_routes": { + "$ref": "#/components/schemas/TestRoute" + }, + "timestamp": { + "type": "integer", + "format": "int64" + } + } + }, + "PerformanceHistoryResponse": { + "type": "object", + "required": [ + "node_id", + "history" + ], + "properties": { + "history": { + "$ref": "#/components/schemas/PaginatedResponse" + }, + "node_id": { + "type": "integer", + "format": "int32", + "minimum": 0 + } + } + }, + "RequestError": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "message": { + "type": "string" + } + } + }, + "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 + }, + "RewardingParams": { + "type": "object", + "description": "Parameters used for reward calculation.", + "required": [ + "interval", + "rewarded_set" + ], + "properties": { + "interval": { + "$ref": "#/components/schemas/IntervalRewardParams" + }, + "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": "string", + "format": "binary" + }, + "Signature": { + "type": "object", + "required": [ + "h", + "s" + ], + "properties": { + "h": { + "$ref": "#/components/schemas/G1ProjectiveSchema" + }, + "s": { + "$ref": "#/components/schemas/G1ProjectiveSchema" + } + } + }, + "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", + "nullable": true + } + } + }, + "SkimmedNode": { + "type": "object", + "required": [ + "node_id", + "ed25519_identity_pubkey", + "ip_addresses", + "mix_port", + "x25519_sphinx_pubkey", + "role", + "performance" + ], + "properties": { + "ed25519_identity_pubkey": { + "$ref": "#/components/schemas/ed25519.PublicKey" + }, + "entry": { + "allOf": [ + { + "$ref": "#/components/schemas/BasicEntryInformation" + } + ], + "nullable": true + }, + "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": { + "$ref": "#/components/schemas/x25519.PublicKey" + } + } + }, + "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" + } + } + }, + "UptimeHistoryResponse": { + "type": "object", + "required": [ + "node_id", + "history" + ], + "properties": { + "history": { + "$ref": "#/components/schemas/PaginatedResponse" + }, + "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", + "nullable": true + }, + "nyxd_url": { + "type": "string" + }, + "websocket_url": { + "type": "string", + "nullable": true + } + } + }, + "VerificationKeyAuth": { + "type": "object", + "required": [ + "alpha", + "beta_g1", + "beta_g2" + ], + "properties": { + "alpha": { + "$ref": "#/components/schemas/G1ProjectiveSchema" + }, + "beta_g1": { + "type": "array", + "items": { + "$ref": "#/components/schemas/G1ProjectiveSchema" + } + }, + "beta_g2": { + "type": "array", + "items": { + "$ref": "#/components/schemas/G1ProjectiveSchema" + } + } + } + }, + "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" + }, + "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" + } + } + }, + "WebSockets": { + "type": "object", + "required": [ + "ws_port" + ], + "properties": { + "ws_port": { + "type": "integer", + "format": "int32", + "minimum": 0 + }, + "wss_port": { + "type": "integer", + "format": "int32", + "nullable": true, + "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": "int64", + "minimum": 0 + } + }, + "response_attributes": { + "type": "array", + "items": { + "type": "array", + "items": { + "type": "integer", + "format": "int64", + "minimum": 0 + } + } + }, + "response_opening": { + "type": "array", + "items": { + "type": "integer", + "format": "int64", + "minimum": 0 + } + }, + "response_openings": { + "type": "array", + "items": { + "type": "array", + "items": { + "type": "integer", + "format": "int64", + "minimum": 0 + } + } + } + } + }, + "WithdrawalRequest": { + "type": "object", + "description": "Represents a withdrawal request generate by the client who wants to obtain a zk-nym credential.\n\nThis struct encapsulates the necessary components for a withdrawal request, including the joined commitment hash, the joined commitment,\nindividual Pedersen commitments for private attributes, and a zero-knowledge proof for the withdrawal request.\n\n# Fields\n\n* `joined_commitment_hash` - The joined commitment hash represented as a G1Projective element.\n* `joined_commitment` - The joined commitment represented as a G1Projective element.\n* `private_attributes_commitments` - A vector of individual Pedersen commitments for private attributes represented as G1Projective elements.\n* `zk_proof` - The zero-knowledge proof for the withdrawal request.\n\n# Derives\n\nThe struct derives `Debug` and `PartialEq` to provide debug output and basic comparison functionality.\n", + "required": [ + "joined_commitment_hash", + "joined_commitment", + "private_attributes_commitments", + "zk_proof" + ], + "properties": { + "joined_commitment": { + "$ref": "#/components/schemas/G1ProjectiveSchema" + }, + "joined_commitment_hash": { + "$ref": "#/components/schemas/G1ProjectiveSchema" + }, + "private_attributes_commitments": { + "type": "array", + "items": { + "$ref": "#/components/schemas/G1ProjectiveSchema" + } + }, + "zk_proof": { + "$ref": "#/components/schemas/WithdrawalReqProof" + } + } + } + }, + "responses": { + "AxumErrorResponse": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message", + "status" + ], + "properties": { + "message": { + "$ref": "#/components/schemas/RequestError" + }, + "status": { + "type": "integer", + "format": "int32", + "minimum": 0 + } + } + } + } + } + }, + "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" + } + } + } + } + } + }, + "RequestError": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "message" + ], + "properties": { + "message": { + "type": "string" + } + } + } + } + } + } + } + }, + "tags": [] +}