{ "definitions": { "AdminNotifications": { "type": [ "object", "null" ], "properties": { "emailAddress": { "type": [ "string", "null" ] }, "enabled": { "type": "boolean" }, "notifyBlockFound": { "type": "boolean" }, "notifyPaymentSuccess": { "type": "boolean" } } }, "ApiConfig": { "type": [ "object", "null" ], "properties": { "adminIpWhitelist": { "type": [ "array", "null" ], "items": { "type": [ "string", "null" ] } }, "adminPort": { "type": [ "integer", "null" ] }, "enabled": { "type": "boolean" }, "legacyNullValueHandling": { "type": "boolean" }, "listenAddress": { "type": [ "string", "null" ] }, "metricsIpWhitelist": { "type": [ "array", "null" ], "items": { "type": [ "string", "null" ] } }, "metricsPort": { "type": [ "integer", "null" ] }, "port": { "type": "integer" }, "rateLimiting": { "$ref": "#/definitions/ApiRateLimitConfig" }, "tls": { "$ref": "#/definitions/ApiTlsConfig" } } }, "ApiRateLimitConfig": { "type": [ "object", "null" ], "properties": { "disabled": { "type": "boolean" }, "ipWhitelist": { "type": [ "array", "null" ], "items": { "type": [ "string", "null" ] } }, "rules": { "type": [ "array", "null" ], "items": { "$ref": "#/definitions/RateLimitRule" } } } }, "ApiTlsConfig": { "type": [ "object", "null" ], "properties": { "enabled": { "type": "boolean" }, "tlsPfxFile": { "type": [ "string", "null" ] }, "tlsPfxPassword": { "type": [ "string", "null" ] } } }, "ClusterBanningConfig": { "type": [ "object", "null" ], "properties": { "banOnInvalidShares": { "type": [ "boolean", "null" ] }, "banOnJunkReceive": { "type": [ "boolean", "null" ] }, "manager": { "type": [ "string", "null" ], "enum": [ null, "Integrated", "IpTables" ] } } }, "ClusterLoggingConfig": { "type": [ "object", "null" ], "properties": { "apiLogFile": { "type": [ "string", "null" ] }, "enableConsoleColors": { "type": "boolean" }, "enableConsoleLog": { "type": "boolean" }, "level": { "type": [ "string", "null" ] }, "logBaseDirectory": { "type": [ "string", "null" ] }, "logFile": { "type": [ "string", "null" ] }, "perPoolLogFile": { "type": "boolean" } } }, "ClusterMemoryConfig": { "type": [ "object", "null" ], "properties": { "rmsmMaximumFreeLargePoolBytes": { "type": [ "integer", "null" ] }, "rmsmMaximumFreeSmallPoolBytes": { "type": [ "integer", "null" ] } } }, "ClusterPaymentProcessingConfig": { "type": [ "object", "null" ], "properties": { "coinbaseString": { "type": [ "string", "null" ] }, "enabled": { "type": "boolean" }, "interval": { "type": "integer" } } }, "DaemonEndpointConfig": { "type": [ "object", "null" ], "properties": { "category": { "type": [ "string", "null" ] }, "host": { "type": [ "string", "null" ] }, "http2": { "type": "boolean" }, "httpPath": { "type": [ "string", "null" ] }, "password": { "type": [ "string", "null" ] }, "port": { "type": "integer" }, "ssl": { "type": "boolean" }, "user": { "type": [ "string", "null" ] } } }, "EmailSenderConfig": { "type": [ "object", "null" ], "properties": { "fromAddress": { "type": [ "string", "null" ] }, "fromName": { "type": [ "string", "null" ] }, "host": { "type": [ "string", "null" ] }, "password": { "type": [ "string", "null" ] }, "port": { "type": "integer" }, "user": { "type": [ "string", "null" ] } } }, "NicehashClusterConfig": { "type": [ "object", "null" ], "properties": { "enableAutoDiff": { "type": "boolean" } } }, "NotificationsConfig": { "type": [ "object", "null" ], "properties": { "admin": { "$ref": "#/definitions/AdminNotifications" }, "email": { "$ref": "#/definitions/EmailSenderConfig" }, "enabled": { "type": "boolean" }, "pushover": { "$ref": "#/definitions/PushoverConfig" } } }, "PersistenceConfig": { "type": [ "object", "null" ], "properties": { "postgres": { "$ref": "#/definitions/PostgresConfig" } } }, "PoolConfig": { "type": [ "object", "null" ], "properties": { "address": { "type": [ "string", "null" ] }, "banning": { "$ref": "#/definitions/PoolShareBasedBanningConfig" }, "blockRefreshInterval": { "type": "integer" }, "clientConnectionTimeout": { "type": "integer" }, "coin": { "type": "string" }, "daemons": { "type": "array", "items": { "$ref": "#/definitions/DaemonEndpointConfig" } }, "enabled": { "type": "boolean" }, "enableInternalStratum": { "type": [ "boolean", "null" ] }, "id": { "type": "string" }, "jobRebroadcastTimeout": { "type": "integer" }, "paymentProcessing": { "$ref": "#/definitions/PoolPaymentProcessingConfig" }, "ports": { "type": "object", "additionalProperties": { "$ref": "#/definitions/PoolEndpoint" } }, "pubKey": { "type": [ "string", "null" ] }, "rewardRecipients": { "type": [ "array", "null" ], "items": { "$ref": "#/definitions/RewardRecipient" } }, "vardiffIdleSweepInterval": { "type": [ "integer", "null" ] } }, "required": [ "coin", "daemons", "id", "ports" ] }, "PoolEndpoint": { "type": [ "object", "null" ], "properties": { "difficulty": { "type": "number" }, "listenAddress": { "type": [ "string", "null" ] }, "name": { "type": [ "string", "null" ] }, "tcpProxyProtocol": { "$ref": "#/definitions/TcpProxyProtocolConfig" }, "tls": { "type": "boolean" }, "tlsAuto": { "type": "boolean" }, "tlsPfxFile": { "type": [ "string", "null" ] }, "tlsPfxPassword": { "type": [ "string", "null" ] }, "varDiff": { "$ref": "#/definitions/VarDiffConfig" } } }, "PoolPaymentProcessingConfig": { "type": [ "object", "null" ], "properties": { "enabled": { "type": "boolean" }, "minimumPayment": { "type": "number" }, "payoutScheme": { "type": "string", "enum": [ "PPLNS", "PROP", "SOLO", "PPS", "PPBS" ] }, "payoutSchemeConfig": {} } }, "PoolShareBasedBanningConfig": { "type": [ "object", "null" ], "properties": { "checkThreshold": { "type": "integer" }, "enabled": { "type": "boolean" }, "invalidPercent": { "type": "number" }, "time": { "type": "integer" } } }, "PostgresConfig": { "type": [ "object", "null" ], "properties": { "commandTimeout": { "type": [ "integer", "null" ] }, "database": { "type": [ "string", "null" ] }, "host": { "type": [ "string", "null" ] }, "password": { "type": [ "string", "null" ] }, "port": { "type": "integer" }, "tls": { "type": "boolean" }, "tlsCert": { "type": [ "string", "null" ] }, "tlsKey": { "type": [ "string", "null" ] }, "tlsNoValidate": { "type": "boolean" }, "tlsPassword": { "type": [ "string", "null" ] }, "user": { "type": [ "string", "null" ] } } }, "PushoverConfig": { "type": [ "object", "null" ], "properties": { "enabled": { "type": "boolean" }, "token": { "type": [ "string", "null" ] }, "user": { "type": [ "string", "null" ] } } }, "QuotaExceededResponse": { "type": [ "object", "null" ], "properties": { "content": { "type": [ "string", "null" ] }, "contentType": { "type": [ "string", "null" ] }, "statusCode": { "type": [ "integer", "null" ] } } }, "RateLimitRule": { "type": [ "object", "null" ], "properties": { "endpoint": { "type": [ "string", "null" ] }, "limit": { "type": "number" }, "monitorMode": { "type": "boolean" }, "period": { "type": [ "string", "null" ] }, "periodTimespan": { "type": [ "string", "null" ] }, "quotaExceededResponse": { "$ref": "#/definitions/QuotaExceededResponse" } } }, "RewardRecipient": { "type": [ "object", "null" ], "properties": { "address": { "type": [ "string", "null" ] }, "percentage": { "type": "number" }, "type": { "type": [ "string", "null" ] } } }, "ShareRelayConfig": { "type": [ "object", "null" ], "properties": { "connect": { "type": "boolean" }, "publishUrl": { "type": [ "string", "null" ] }, "sharedEncryptionKey": { "type": [ "string", "null" ] } } }, "ShareRelayEndpointConfig": { "type": [ "object", "null" ], "properties": { "sharedEncryptionKey": { "type": [ "string", "null" ] }, "url": { "type": [ "string", "null" ] } } }, "Statistics": { "type": [ "object", "null" ], "properties": { "cleanupDays": { "type": [ "integer", "null" ] }, "gcInterval": { "type": [ "integer", "null" ] }, "hashrateCalculationWindow": { "type": [ "integer", "null" ] }, "updateInterval": { "type": [ "integer", "null" ] } } }, "TcpProxyProtocolConfig": { "type": [ "object", "null" ], "properties": { "enable": { "type": "boolean" }, "mandatory": { "type": "boolean" }, "proxyAddresses": { "type": [ "array", "null" ], "items": { "type": [ "string", "null" ] } } } }, "VarDiffConfig": { "type": [ "object", "null" ], "properties": { "maxDelta": { "type": [ "number", "null" ] }, "maxDiff": { "type": [ "number", "null" ] }, "minDiff": { "type": "number" }, "retargetTime": { "type": "number" }, "targetTime": { "type": "number" }, "variancePercent": { "type": "number" } } } }, "type": "object", "properties": { "api": { "$ref": "#/definitions/ApiConfig" }, "banning": { "$ref": "#/definitions/ClusterBanningConfig" }, "clusterName": { "type": [ "string", "null" ] }, "coinTemplates": { "type": [ "array", "null" ], "items": { "type": [ "string", "null" ] } }, "cryptonightMaxThreads": { "type": [ "integer", "null" ] }, "equihashMaxThreads": { "type": [ "integer", "null" ] }, "instanceId": { "type": [ "integer", "null" ] }, "logging": { "$ref": "#/definitions/ClusterLoggingConfig" }, "memory": { "$ref": "#/definitions/ClusterMemoryConfig" }, "nicehash": { "$ref": "#/definitions/NicehashClusterConfig" }, "notifications": { "$ref": "#/definitions/NotificationsConfig" }, "paymentProcessing": { "$ref": "#/definitions/ClusterPaymentProcessingConfig" }, "persistence": { "$ref": "#/definitions/PersistenceConfig" }, "pools": { "type": "array", "items": { "$ref": "#/definitions/PoolConfig" } }, "shareRecoveryFile": { "type": [ "string", "null" ] }, "shareRelay": { "$ref": "#/definitions/ShareRelayConfig" }, "shareRelays": { "type": [ "array", "null" ], "items": { "$ref": "#/definitions/ShareRelayEndpointConfig" } }, "statistics": { "$ref": "#/definitions/Statistics" } }, "required": [ "pools" ] }