2025-09-23 14:50:58 +02:00
{
2025-10-21 12:17:49 +02:00
"openapi" : "3.0.3" ,
"info" : {
"title" : "Status Network API - sn-api - V1" ,
"description" : "This is the OpenAPI documentation of the Status Network API. The service is not intended for public use but for Status company and its products." ,
"version" : "1.0.0" ,
"contact" : { }
2025-09-23 14:50:58 +02:00
},
2025-10-21 12:17:49 +02:00
"servers" : [ {
"url" : "http://localhost:3001/api/v1"
} ],
"paths" : {
"/status" : {
"get" : {
"summary" : "Server Status" ,
"description" : "Returns 200 and \"Alive check\" message if the server is running properly" ,
"tags" : [ "status" ],
"operationId" : "serverStatus" ,
"responses" : {
"200" : {
"description" : "Message returned by the server on its liveness" ,
"content" : {
"application/json" : {
"schema" : {
"properties" : {
"message" : {
"type" : "string"
}
},
"type" : "object"
}
}
}
}
}
}
},
"/auth/ethereum" : {
"post" : {
"summary" : "Unified login + register endpoint via Ethereum signature" ,
"tags" : [ "auth" ],
"requestBody" : {
"content" : {
"application/json" : {
"schema" : {
"properties" : {
"payload" : {
"type" : "string" ,
"description" : "Stringified base64 encoded representation of the signed payload. The payload is an object containing unix timestamp of signature time. ({ timestamp: number })"
},
"signature" : {
"type" : "string" ,
"description" : "The signature hash of the signed payload object."
}
},
2025-10-23 13:00:45 +02:00
"type" : "object" ,
"required" : [ "payload" , "signature" ]
2025-10-21 12:17:49 +02:00
}
}
}
},
"responses" : {
"200" : {
2025-11-04 11:18:06 +01:00
"$ref" : "#/components/responses/UserSession"
2025-10-21 12:17:49 +02:00
}
}
}
},
"/auth/me" : {
"get" : {
"summary" : "Returns currently logged in user's data" ,
"tags" : [ "auth" ],
"responses" : {
"200" : {
2025-11-04 11:18:06 +01:00
"description" : "" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/User"
}
}
}
2025-10-21 12:17:49 +02:00
}
}
}
},
"/auth/logout" : {
"post" : {
"summary" : "Logs out currently authenticated user" ,
"tags" : [ "auth" ],
"responses" : {
"200" : {
"description" : ""
}
}
}
},
"/apps" : {
"get" : {
"description" : "List of applications in the ecosystem" ,
"tags" : [ "apps" ],
"parameters" : [ {
"name" : "offset" ,
"in" : "query" ,
"description" : "Offset for pagination, determined by application's UUID" ,
"allowEmptyValue" : true ,
"schema" : {
"type" : "string" ,
"format" : "uuid"
}
}, {
"name" : "limit" ,
"in" : "query" ,
"description" : "Number of maximal items to get" ,
"allowEmptyValue" : true ,
"schema" : {
"type" : "number"
}
}, {
"name" : "category" ,
"in" : "query" ,
"allowEmptyValue" : true ,
"schema" : {
"items" : {
"type" : "string" ,
"enum" : [ "AI" , "BRIDGE" , "COMMUNITY" , "DEFI" , "GAMING" , "INFRA" , "NFT" , "PAYMENT" , "PRIVACY" , "SOCIAL" , "SPENDING" , "TOOLING" , "WALLET" ]
},
"type" : "array"
}
}, {
"name" : "sortBy" ,
"in" : "query" ,
"description" : "Sorting parameter" ,
"allowEmptyValue" : true ,
"schema" : {
"type" : "string" ,
"enum" : [ "POPULAR" , "NEW" ]
}
}, {
2025-10-23 13:00:45 +02:00
"name" : "onlyFeatured" ,
2025-10-21 12:17:49 +02:00
"in" : "query" ,
"allowEmptyValue" : true ,
"schema" : {
"type" : "boolean"
},
"description" : "Filter only featured ecosystem application"
} ],
"responses" : {
"200" : {
"description" : "" ,
"content" : {
"application/json" : {
"schema" : {
"items" : {
"$ref" : "#/components/schemas/EcosystemApplication"
},
"type" : "array"
}
}
}
}
}
}
},
"/karma/{walletAddress}" : {
"parameters" : [ {
"name" : "walletAddress" ,
"in" : "path" ,
"description" : "Wallet address of the Karma holder" ,
"required" : true ,
"schema" : {
"type" : "string" ,
"description" : "Ethereum wallet address"
}
} ],
"get" : {
"description" : "Gets the Karma data about a specific wallet address" ,
"tags" : [ "karma" ],
"responses" : {
"200" : {
"description" : "" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/KarmaHolder"
}
}
}
}
}
}
},
"/karma/leaderboard" : {
"get" : {
"summary" : "Gets the leaderboard of all of the karma holders" ,
"description" : "Returns multiple lists.\n\"best\" - The best ranked addresses overall\n\"gainers\" - The biggest gainers for a time period defined by the backend, (a week)\n\"ranked\" - List that will be empty if no session, but will return ranked list of 10 addresses with the authenticated one and their respective positions" ,
"tags" : [ "karma" ],
"responses" : {
"200" : {
"description" : "" ,
"content" : {
"application/json" : {
"schema" : {
"properties" : {
"best" : {
"items" : {
"properties" : {
"address" : {
"type" : "string"
},
"karma" : {
"type" : "number"
}
},
"type" : "object"
},
"type" : "array" ,
"description" : "Overall best addresses that hold the most karma"
},
"gainers" : {
"items" : {
"properties" : {
"address" : {
"type" : "string"
},
"diff" : {
"type" : "number"
}
},
"type" : "object"
},
"type" : "array" ,
"description" : "Top gainers for a specific time period (week)"
},
"ranked" : {
"items" : {
"properties" : {
"address" : {
"type" : "string"
},
"karma" : {
"type" : "number"
},
"globalPosition" : {
"type" : "number" ,
"minimum" : 1
}
},
"type" : "object"
},
"type" : "array" ,
"description" : "List of ranked addresses based on authenticated wallet. Will return an empty array in case of no authenticated session"
}
},
"type" : "object"
}
}
}
2025-09-23 14:50:58 +02:00
}
}
}
2025-11-03 20:57:10 +01:00
},
"/captcha/cap/challenge" : {
"post" : {
"summary" : "Generates challenge for the frontend to solve" ,
"tags" : [ "captcha" ],
"responses" : {
"200" : {
"description" : "" ,
"content" : {
"application/json" : {
"schema" : {
"properties" : {
"challenge" : {
"properties" : {
"c" : {
"type" : "number"
},
"s" : {
"type" : "number"
},
"d" : {
"type" : "number"
}
},
"type" : "object"
},
"token" : {
"type" : "string"
},
"expires" : {
"type" : "number"
}
},
"type" : "object"
}
}
}
}
}
}
},
"/captcha/cap/redeem" : {
"post" : {
"summary" : "Route used for validating the result of PoW for a given challenge" ,
"tags" : [ "captcha" ],
"requestBody" : {
"content" : {
"application/json" : {
"schema" : {
"properties" : {
"token" : {
"type" : "string" ,
"required" : [ null ]
},
"solutions" : {
"items" : {
"type" : "number"
},
"type" : "array" ,
"required" : [ null ]
}
},
"type" : "object"
}
}
}
},
"responses" : {
"200" : {
"description" : "" ,
"content" : {
"application/json" : {
"schema" : {
"properties" : {
"success" : {
"type" : "boolean" ,
"required" : [ null ]
},
"message" : {
"type" : "string"
},
"token" : {
"type" : "string"
},
"expires" : {
"type" : "number"
}
},
"type" : "object"
}
}
}
}
}
}
2025-11-04 11:33:08 +01:00
},
"/auth/me/session" : {
"get" : {
"summary" : "Adds currently logged in user's session data (primarily used for SIWE)" ,
"tags" : [ "auth" ],
"responses" : {
"200" : {
"$ref" : "#/components/responses/UserSession"
}
}
}
2025-11-04 14:22:39 +01:00
},
"/sybil/connect-provider/pow" : {
"post" : {
"description" : "Connect POW provider via Captcha verification for minting onboarding karma" ,
"tags" : [ "sybil" ],
"requestBody" : {
"content" : {
"application/json" : {
"schema" : {
"properties" : {
"token" : {
"type" : "string" ,
"description" : "Token received from successfull Captcha challenge redeeming"
}
},
"type" : "object"
}
}
}
},
"responses" : {
"200" : {
"$ref" : "#/components/responses/ConnectProviderResponse"
},
"409" : {
"description" : "Error when provider is already connected"
},
"400" : {
"description" : "Bad request error if token is invalid"
}
}
}
2025-12-03 20:46:43 +01:00
},
"/predeposits/vaults" : {
"get" : {
"tags" : [ "predeposits" ],
"responses" : {
"200" : {
"description" : "" ,
"content" : {
"application/json" : {
"schema" : {
"type" : "array" ,
"items" : {
"properties" : {
"vaultAddress" : {
"type" : "string" ,
"description" : "Ethereum address of the vault"
},
"apy" : {
"type" : "number" ,
"minimum" : 0 ,
"maximum" : 100 ,
2026-01-27 22:39:09 +01:00
"description" : "Expected APY percentage for the given vault. Can be undefined in case of calculation failure"
2025-12-03 20:46:43 +01:00
}
},
"type" : "object"
}
}
}
}
}
}
}
2025-12-26 19:06:51 +01:00
},
"/auth/me/quota" : {
"get" : {
"description" : "Fetches user transaction quotas" ,
"tags" : [ "auth" ],
"responses" : {
"200" : {
"description" : "" ,
"content" : {
"application/json" : {
"schema" : {
"properties" : {
"address" : {
"type" : "string" ,
"description" : "Ethereum address of the logged in user"
},
"tier" : {
"properties" : {
"name" : {
"type" : "string" ,
"description" : "Karma Tier name"
},
"quotaPerEpoch" : {
"type" : "string" ,
"description" : "Total number of transactions available for an epoch of the specified tier" ,
"example" : "2025-12-27T00:00:00.432Z"
}
},
"type" : "object"
},
"epoch" : {
"properties" : {
"id" : {
"type" : "string" ,
"description" : "Current epoch ID"
},
"txCount" : {
"type" : "string" ,
"description" : "Total number of transactions available for an epoch of the specified tier"
},
"remainingQuota" : {
"type" : "string" ,
"description" : "Transactions left for the address in the current epoch"
},
"resetsAt" : {
"type" : "string" ,
"format" : "date" ,
"description" : "Epoch restart time" ,
"example" : "2025-12-27T00:00:00.432Z"
}
},
"type" : "object"
},
"denyList" : {
"properties" : {
"isActive" : {
"type" : "boolean" ,
"description" : "Indicator if the current address is on the deny list"
},
"expiresAt" : {
"type" : "string" ,
"format" : "date" ,
"example" : "2025-12-27T00:00:00.432Z"
}
},
"type" : "object"
},
"lastUpdatedAt" : {
"type" : "string" ,
"format" : "date" ,
"example" : "2025-12-27T00:00:00.432Z"
}
},
"type" : "object"
},
"example" : {
"result" : {
"address" : "0xb71a06a1c801941f48181140232ecbf16623b28d" ,
"tier" : {
"name" : "regular" ,
"quotaPerEpoch" : "480"
},
"epoch" : {
"id" : "20449" ,
"txCount" : "480" ,
"remainingQuota" : "129" ,
"resetsAt" : "2025-12-27T00:00:00.432Z"
},
"denyList" : {
"isActive" : false ,
"expiresAt" : null
},
"lastUpdatedAt" : "2025-12-26T17:32:47.432Z"
}
}
}
}
}
}
}
2025-09-23 14:50:58 +02:00
}
},
2025-10-21 12:17:49 +02:00
"tags" : [ {
"name" : "status" ,
"description" : "Server health data"
}, {
"name" : "auth" ,
"description" : "Server authentication"
}, {
"name" : "apps" ,
"description" : "Ecosystem applications"
}, {
"name" : "karma" ,
"description" : "Karma related endpoints"
2025-11-03 20:57:10 +01:00
}, {
"name" : "captcha" ,
"description" : "Captcha endpoints"
2025-11-04 14:22:39 +01:00
}, {
"name" : "sybil" ,
"description" : "Sybil protection related routes"
2025-12-03 20:46:43 +01:00
}, {
"name" : "predeposits" ,
"description" : "Pre-Deposit campaing related routes"
2025-10-21 12:17:49 +02:00
} ],
"components" : {
"schemas" : {
"EcosystemApplication" : {
"properties" : {
2025-10-23 13:00:45 +02:00
"id" : {
"type" : "string" ,
"format" : "uuid" ,
"description" : "Unique ID of the ecosystem application"
},
2025-10-21 12:17:49 +02:00
"title" : {
"type" : "string" ,
"description" : "The title of the ecosystem project"
},
"description" : {
"type" : "string" ,
"description" : "Description of the ecosystem project"
},
"socials" : {
"properties" : {
"x" : {
"type" : "string" ,
"format" : "uri" ,
"description" : "X/Twitter URI of the ecosystem project"
}
},
"type" : "object"
},
"isFeatured" : {
"type" : "boolean" ,
"description" : "Flag indicating if the project should be marked as featured"
},
2025-10-23 13:00:45 +02:00
"link" : {
2025-10-21 12:17:49 +02:00
"type" : "string" ,
"format" : "uri" ,
2025-10-23 13:00:45 +02:00
"description" : "Ecosystem application website link"
2025-10-21 12:17:49 +02:00
},
2025-10-23 13:00:45 +02:00
"profileImgURI" : {
2025-10-21 12:17:49 +02:00
"type" : "string" ,
2025-10-23 13:00:45 +02:00
"format" : "uri" ,
"description" : "URI of the image to be displayed"
},
"bannerImgURI" : {
"type" : "string" ,
"format" : "uri" ,
"description" : "Banner image URI"
2025-10-21 12:17:49 +02:00
}
},
"type" : "object"
},
"KarmaHolder" : {
"properties" : {
"address" : {
"type" : "string"
},
"balance" : {
"type" : "integer"
},
"breakdown" : {
"items" : {
"properties" : {
"source" : {
"type" : "string" ,
"enum" : [ "ONBOARDING" , "STAKING" , "LIQUIDITY_PROVIDING" , "PFP_DONATOR" , "ECOSYSTEM_BUILDING" , "APP_USAGE" ],
"description" : "The source of which the karma was gained"
},
"amount" : {
"type" : "integer"
}
},
"type" : "object"
},
"type" : "array"
},
"tierLevel" : {
"type" : "number"
2025-10-23 13:00:45 +02:00
},
"globalPosition" : {
"type" : "number" ,
"description" : "Global position on the leaderboard of an address"
2025-10-21 12:17:49 +02:00
}
},
"type" : "object"
2025-11-04 11:18:06 +01:00
},
"User" : {
"properties" : {
"address" : {
"type" : "string" ,
"description" : "Ethereum wallet address of the user in lower case"
},
"connectedSybilProviders" : {
"type" : "string" ,
"enum" : [ "POW" ]
},
"globalPosition" : {
"type" : "number"
}
},
"type" : "object"
2025-10-21 12:17:49 +02:00
}
},
"responses" : {
2025-11-04 11:18:06 +01:00
"UserSession" : {
"description" : "" ,
2025-10-21 12:17:49 +02:00
"content" : {
"application/json" : {
"schema" : {
2025-11-04 11:18:06 +01:00
"properties" : {
"address" : {
"type" : "string"
}
},
"type" : "object"
2025-10-21 12:17:49 +02:00
}
}
}
2025-11-04 14:22:39 +01:00
},
"ConnectProviderResponse" : {
"description" : "" ,
"content" : {
"application/json" : {
"schema" : {
"properties" : {
"success" : {
"type" : "boolean"
}
},
"type" : "object"
}
}
}
2025-10-21 12:17:49 +02:00
}
2025-09-23 14:50:58 +02:00
}
2025-10-21 12:17:49 +02:00
}
2025-09-23 14:50:58 +02:00
}