{"openapi":"3.0.1","info":{"title":"OpenAPI definition","version":"v0"},"servers":[{"url":"http://api.moirailabs.com/api/v1","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"paths":{"/users/{id}":{"get":{"tags":["user-info-controller"],"summary":"Get info about user","description":"Get info about user based on UUID","operationId":"getUser","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"X-Request-ID","in":"header","description":"Optional frontend-generated correlation ID. The backend returns the effective value in the response header.","required":false,"schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}],"responses":{"200":{"description":"OK","headers":{"X-Request-ID":{"description":"Effective request correlation ID used by backend audit logging.","schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}},"content":{"*/*":{"schema":{"$ref":"#/components/schemas/UserInfoResponse"}}}}}},"put":{"tags":["user-info-controller"],"summary":"PUT method","description":"Update information about user","operationId":"updateUser","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"X-Request-ID","in":"header","description":"Optional frontend-generated correlation ID. The backend returns the effective value in the response header.","required":false,"schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserInfoRequest"}}},"required":true},"responses":{"200":{"description":"OK","headers":{"X-Request-ID":{"description":"Effective request correlation ID used by backend audit logging.","schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}},"content":{"*/*":{"schema":{"$ref":"#/components/schemas/UserInfoResponse"}}}}}}},"/subscriptions/{id}":{"get":{"tags":["subscription-controller"],"summary":"GET Subscription","description":"GET info about subscription.","operationId":"getSubscription","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"X-Request-ID","in":"header","description":"Optional frontend-generated correlation ID. The backend returns the effective value in the response header.","required":false,"schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}],"responses":{"200":{"description":"OK","headers":{"X-Request-ID":{"description":"Effective request correlation ID used by backend audit logging.","schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}},"content":{"*/*":{"schema":{"$ref":"#/components/schemas/SubscriptionResponse"}}}}}},"put":{"tags":["subscription-controller"],"summary":"PUT Subscription","description":"Update information about subscription.","operationId":"updateSubscription","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"X-Request-ID","in":"header","description":"Optional frontend-generated correlation ID. The backend returns the effective value in the response header.","required":false,"schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionUpdateRequest"}}},"required":true},"responses":{"200":{"description":"OK","headers":{"X-Request-ID":{"description":"Effective request correlation ID used by backend audit logging.","schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}},"content":{"*/*":{"schema":{"$ref":"#/components/schemas/SubscriptionResponse"}}}}}}},"/plans/{id}":{"get":{"tags":["plan-controller"],"summary":"GET info about plan","description":"GET-method to retrieve info about plan","operationId":"getPlan","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"X-Request-ID","in":"header","description":"Optional frontend-generated correlation ID. The backend returns the effective value in the response header.","required":false,"schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}],"responses":{"200":{"description":"OK","headers":{"X-Request-ID":{"description":"Effective request correlation ID used by backend audit logging.","schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}},"content":{"*/*":{"schema":{"$ref":"#/components/schemas/PlanResponse"}}}}},"security":[]},"put":{"tags":["plan-controller"],"summary":"UPDATE plan","description":"Update plan. PUT-method is available only for ADMIN","operationId":"updatePlan","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"X-Request-ID","in":"header","description":"Optional frontend-generated correlation ID. The backend returns the effective value in the response header.","required":false,"schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlanRequest"}}},"required":true},"responses":{"200":{"description":"OK","headers":{"X-Request-ID":{"description":"Effective request correlation ID used by backend audit logging.","schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}},"content":{"*/*":{"schema":{"$ref":"#/components/schemas/PlanResponse"}}}}},"security":[]},"delete":{"tags":["plan-controller"],"summary":"DELETE plan","description":"DELETE plan. DELETE method is available only for ADMIN","operationId":"deletePlan","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"X-Request-ID","in":"header","description":"Optional frontend-generated correlation ID. The backend returns the effective value in the response header.","required":false,"schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}],"responses":{"200":{"description":"OK","headers":{"X-Request-ID":{"description":"Effective request correlation ID used by backend audit logging.","schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}}}},"security":[]}},"/wallet-profiling/simple":{"post":{"tags":["wallet-profiling-controller"],"operationId":"simpleProfile","parameters":[{"name":"X-Request-ID","in":"header","description":"Optional frontend-generated correlation ID. The backend returns the effective value in the response header.","required":false,"schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WalletProfilingSimpleRequest"}}},"required":true},"responses":{"200":{"description":"OK","headers":{"X-Request-ID":{"description":"Effective request correlation ID used by backend audit logging.","schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}},"content":{"*/*":{"schema":{"$ref":"#/components/schemas/WalletProfilingResponse"}}}}}}},"/wallet-profiling/enriched":{"post":{"tags":["wallet-profiling-controller"],"operationId":"enrichedProfile","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string"}},{"name":"X-Request-ID","in":"header","description":"Optional frontend-generated correlation ID. The backend returns the effective value in the response header.","required":false,"schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WalletProfilingEnrichedRequest"}}},"required":true},"responses":{"200":{"description":"OK","headers":{"X-Request-ID":{"description":"Effective request correlation ID used by backend audit logging.","schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}},"content":{"*/*":{"schema":{"$ref":"#/components/schemas/WalletProfilingResponse"}}}}}}},"/users":{"post":{"tags":["user-info-controller"],"summary":"POST method","description":"Create a new user.","operationId":"createUser","parameters":[{"name":"X-Request-ID","in":"header","description":"Optional frontend-generated correlation ID. The backend returns the effective value in the response header.","required":false,"schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserInfoRequest"}}},"required":true},"responses":{"200":{"description":"OK","headers":{"X-Request-ID":{"description":"Effective request correlation ID used by backend audit logging.","schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}},"content":{"*/*":{"schema":{"$ref":"#/components/schemas/UserInfoResponse"}}}}},"security":[]}},"/subscriptions":{"post":{"tags":["subscription-controller"],"summary":"CREATE new Subscription","description":"POST Method to create a new subscription by user.","operationId":"createSubscription","parameters":[{"name":"X-Request-ID","in":"header","description":"Optional frontend-generated correlation ID. The backend returns the effective value in the response header.","required":false,"schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionRequest"}}},"required":true},"responses":{"200":{"description":"OK","headers":{"X-Request-ID":{"description":"Effective request correlation ID used by backend audit logging.","schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}},"content":{"*/*":{"schema":{"$ref":"#/components/schemas/SubscriptionResponse"}}}}}}},"/plans":{"get":{"tags":["plan-controller"],"summary":"GET all plans","description":"Get all existed plans","operationId":"getAllPlans","parameters":[{"name":"X-Request-ID","in":"header","description":"Optional frontend-generated correlation ID. The backend returns the effective value in the response header.","required":false,"schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}],"responses":{"200":{"description":"OK","headers":{"X-Request-ID":{"description":"Effective request correlation ID used by backend audit logging.","schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}},"content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PlanResponse"}}}}}},"security":[]},"post":{"tags":["plan-controller"],"summary":"POST-method to create a new plan","description":"Admin can create a new plan","operationId":"createPlan","parameters":[{"name":"X-Request-ID","in":"header","description":"Optional frontend-generated correlation ID. The backend returns the effective value in the response header.","required":false,"schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlanRequest"}}},"required":true},"responses":{"200":{"description":"OK","headers":{"X-Request-ID":{"description":"Effective request correlation ID used by backend audit logging.","schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}},"content":{"*/*":{"schema":{"$ref":"#/components/schemas/PlanResponse"}}}}},"security":[]}},"/contracts":{"post":{"tags":["contract-info-controller"],"summary":"Register new contract for user","description":"Register new contract for user to start calculate analytics","operationId":"registerContract","parameters":[{"name":"X-Request-ID","in":"header","description":"Optional frontend-generated correlation ID. The backend returns the effective value in the response header.","required":false,"schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContractInfoRequest"}}},"required":true},"responses":{"200":{"description":"OK","headers":{"X-Request-ID":{"description":"Effective request correlation ID used by backend audit logging.","schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}},"content":{"*/*":{"schema":{"$ref":"#/components/schemas/ContractInfoResponse"}}}}}}},"/analytics/invocations":{"post":{"tags":["analytics-invocation-controller"],"summary":"Create an analytics invocation","description":"Creates one durable calculation. Prefer: wait=N waits for the same job; Prefer: respond-async returns immediately.","operationId":"create","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string"}},{"name":"Prefer","in":"header","required":false,"schema":{"type":"string"}},{"name":"X-Request-ID","in":"header","description":"Optional frontend-generated correlation ID. The backend returns the effective value in the response header.","required":false,"schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalyticsInvocationCreateRequest"}}},"required":true},"responses":{"202":{"description":"Calculation continues asynchronously","headers":{"Retry-After":{"description":"Polling delay in seconds","style":"simple"},"X-Request-ID":{"description":"Effective request correlation ID used by backend audit logging.","schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}},"Location":{"description":"Invocation status URL","style":"simple"}},"content":{"*/*":{"schema":{"$ref":"#/components/schemas/AnalyticsInvocationStatusResponse"}}}},"200":{"description":"Calculation completed inside the wait budget","headers":{"X-Request-ID":{"description":"Effective request correlation ID used by backend audit logging.","schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}},"content":{"*/*":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CohortTransactionResponse"},{"$ref":"#/components/schemas/CohortAnalysisResponse"},{"$ref":"#/components/schemas/DashboardAnalyticsResponse"},{"$ref":"#/components/schemas/ProductAnalyticsDashboardResponse"},{"$ref":"#/components/schemas/ProductMetricsResponse"},{"$ref":"#/components/schemas/MethodAnalysisResponse"},{"$ref":"#/components/schemas/TokenAnalysisResponse"}]}}}},"410":{"description":"The reused invocation result has expired","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Analytics invocations are disabled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"The authenticated user cannot access the requested contract","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Per-user active invocation quota or create rate limit was exceeded","headers":{"Retry-After":{"description":"Delay in seconds before another create attempt","schema":{"minimum":1,"type":"integer","format":"int32"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Invalid operation, request body, Prefer, Idempotency-Key, or analytics parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Idempotency-Key was reused for another request or the invocation is no longer reusable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"The calculation failed permanently inside the wait budget","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/analytics/invocations/{id}/cancel":{"post":{"tags":["analytics-invocation-controller"],"summary":"Request analytics invocation cancellation","operationId":"cancel","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"X-Request-ID","in":"header","description":"Optional frontend-generated correlation ID. The backend returns the effective value in the response header.","required":false,"schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}],"responses":{"200":{"description":"OK","headers":{"X-Request-ID":{"description":"Effective request correlation ID used by backend audit logging.","schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}},"content":{"*/*":{"schema":{"$ref":"#/components/schemas/AnalyticsInvocationStatusResponse"}}}},"404":{"description":"Invocation is absent or belongs to another user","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Invocation is already complete and cannot be cancelled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"202":{"description":"Cancellation was accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalyticsInvocationStatusResponse"}}}}}}},"/wallet-profiling/requests/{requestId}":{"get":{"tags":["wallet-profiling-controller"],"operationId":"getRequestStatus","parameters":[{"name":"requestId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"X-Request-ID","in":"header","description":"Optional frontend-generated correlation ID. The backend returns the effective value in the response header.","required":false,"schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}],"responses":{"200":{"description":"OK","headers":{"X-Request-ID":{"description":"Effective request correlation ID used by backend audit logging.","schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}},"content":{"*/*":{"schema":{"$ref":"#/components/schemas/WalletProfilingResponse"}}}}}}},"/users/registration-status":{"get":{"tags":["user-info-controller"],"summary":"Check user registration status","description":"Returns whether the Supabase user is already registered in the backend.","operationId":"getRegistrationStatus","parameters":[{"name":"userId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"email","in":"query","required":true,"schema":{"type":"string"}},{"name":"X-Request-ID","in":"header","description":"Optional frontend-generated correlation ID. The backend returns the effective value in the response header.","required":false,"schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}],"responses":{"200":{"description":"OK","headers":{"X-Request-ID":{"description":"Effective request correlation ID used by backend audit logging.","schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}},"content":{"*/*":{"schema":{"$ref":"#/components/schemas/UserRegistrationStatusResponse"}}}}},"security":[]}},"/subscriptions/current/wallet-profiling-quota":{"get":{"tags":["wallet-profiling-controller"],"operationId":"getCurrentQuota","parameters":[{"name":"X-Request-ID","in":"header","description":"Optional frontend-generated correlation ID. The backend returns the effective value in the response header.","required":false,"schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}],"responses":{"200":{"description":"OK","headers":{"X-Request-ID":{"description":"Effective request correlation ID used by backend audit logging.","schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}},"content":{"*/*":{"schema":{"$ref":"#/components/schemas/WalletProfilingQuotaResponse"}}}}}}},"/plans/active":{"get":{"tags":["plan-controller"],"summary":"GET all active plans","description":"Get all active plans","operationId":"getActivePlans","parameters":[{"name":"X-Request-ID","in":"header","description":"Optional frontend-generated correlation ID. The backend returns the effective value in the response header.","required":false,"schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}],"responses":{"200":{"description":"OK","headers":{"X-Request-ID":{"description":"Effective request correlation ID used by backend audit logging.","schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}},"content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PlanResponse"}}}}}},"security":[]}},"/functions/balance":{"get":{"tags":["functions-controller"],"summary":"Get price for tokens","description":"GET-method retrieve info about balances of wallet","operationId":"getTokensBalance","parameters":[{"name":"addresses","in":"query","required":true,"schema":{"type":"string"}},{"name":"chainId","in":"query","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"wallet","in":"query","required":true,"schema":{"type":"string"}},{"name":"X-Request-ID","in":"header","description":"Optional frontend-generated correlation ID. The backend returns the effective value in the response header.","required":false,"schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}],"responses":{"200":{"description":"OK","headers":{"X-Request-ID":{"description":"Effective request correlation ID used by backend audit logging.","schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}},"content":{"*/*":{"schema":{"$ref":"#/components/schemas/BalancesResponse"}}}}}}},"/contracts/{id}":{"get":{"tags":["contract-info-controller"],"summary":"Get exact contract","description":"Get method to get information about contract. User can take info about only his registred contracts","operationId":"getContract","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-Request-ID","in":"header","description":"Optional frontend-generated correlation ID. The backend returns the effective value in the response header.","required":false,"schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}],"responses":{"200":{"description":"OK","headers":{"X-Request-ID":{"description":"Effective request correlation ID used by backend audit logging.","schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}},"content":{"*/*":{"schema":{"$ref":"#/components/schemas/ContractInfoResponse"}}}}}}},"/contracts/{contractAddress}/fetchdata":{"get":{"tags":["contract-info-controller"],"summary":"Retrieve method","description":"GET-method just to update last data about contract and retrieve last tx from blockchain","operationId":"fetchDataContract","parameters":[{"name":"contractAddress","in":"path","required":true,"schema":{"type":"string"}},{"name":"startBlock","in":"query","required":true,"schema":{"type":"string"}},{"name":"endBlock","in":"query","required":true,"schema":{"type":"string"}},{"name":"X-Request-ID","in":"header","description":"Optional frontend-generated correlation ID. The backend returns the effective value in the response header.","required":false,"schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}],"responses":{"200":{"description":"OK","headers":{"X-Request-ID":{"description":"Effective request correlation ID used by backend audit logging.","schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}},"content":{"*/*":{"schema":{"$ref":"#/components/schemas/ContractInfoResponse"}}}}}}},"/contracts/user":{"get":{"tags":["contract-info-controller"],"summary":"Get all user's contracts","description":"GET-method to get all contract registred by user","operationId":"getUserContracts","parameters":[{"name":"X-Request-ID","in":"header","description":"Optional frontend-generated correlation ID. The backend returns the effective value in the response header.","required":false,"schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}],"responses":{"200":{"description":"OK","headers":{"X-Request-ID":{"description":"Effective request correlation ID used by backend audit logging.","schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}},"content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ContractInfoResponse"}}}}}}}},"/contracts/status":{"get":{"tags":["contract-info-controller"],"summary":"Get contract sync status","description":"Check synced block in DB against current blockchain head","operationId":"getContractStatus","parameters":[{"name":"contractAddress","in":"query","required":true,"schema":{"type":"string"}},{"name":"X-Request-ID","in":"header","description":"Optional frontend-generated correlation ID. The backend returns the effective value in the response header.","required":false,"schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}],"responses":{"200":{"description":"OK","headers":{"X-Request-ID":{"description":"Effective request correlation ID used by backend audit logging.","schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}},"content":{"*/*":{"schema":{"$ref":"#/components/schemas/ContractSyncStatusResponse"}}}}}}},"/api/reports/daily/{contractAddress}":{"get":{"tags":["report-controller"],"operationId":"getReports","parameters":[{"name":"contractAddress","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-Request-ID","in":"header","description":"Optional frontend-generated correlation ID. The backend returns the effective value in the response header.","required":false,"schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}],"responses":{"200":{"description":"OK","headers":{"X-Request-ID":{"description":"Effective request correlation ID used by backend audit logging.","schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}},"content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DailyReportResponse"}}}}}}}},"/analytics/tokens":{"get":{"tags":["analytics-controller"],"summary":"GET info about tokens on contract","description":"GET-method to retrieve info about tokens on contract. User can receive this info only if this contract was registered by him","operationId":"getTokenAnalysis","parameters":[{"name":"contractId","in":"query","required":true,"schema":{"type":"string"}},{"name":"X-Request-ID","in":"header","description":"Optional frontend-generated correlation ID. The backend returns the effective value in the response header.","required":false,"schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}],"responses":{"200":{"description":"OK","headers":{"X-Request-ID":{"description":"Effective request correlation ID used by backend audit logging.","schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}},"content":{"*/*":{"schema":{"$ref":"#/components/schemas/TokenAnalysisResponse"}}}}}}},"/analytics/product-dashboard":{"get":{"tags":["analytics-controller"],"summary":"Get product analytics dashboard","description":"Returns product analytics for a contract registered by the authenticated user.","operationId":"getProductDashboard","parameters":[{"name":"contractAddress","in":"query","required":true,"schema":{"type":"string"}},{"name":"chainId","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"chain","in":"query","required":false,"schema":{"type":"string"}},{"name":"dateFrom","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"dateTo","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"compareDateFrom","in":"query","required":false,"schema":{"type":"string","format":"date"}},{"name":"compareDateTo","in":"query","required":false,"schema":{"type":"string","format":"date"}},{"name":"granularity","in":"query","required":false,"schema":{"type":"string","default":"day"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","default":"all"}},{"name":"topLimit","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":8}},{"name":"X-Request-ID","in":"header","description":"Optional frontend-generated correlation ID. The backend returns the effective value in the response header.","required":false,"schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}],"responses":{"200":{"description":"OK","headers":{"X-Request-ID":{"description":"Effective request correlation ID used by backend audit logging.","schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}},"content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProductAnalyticsDashboardResponse"}}}},"202":{"description":"Blockchain indexing or dashboard preparation is still running; retry after the advertised delay","headers":{"Retry-After":{"description":"Delay in seconds before the next dashboard request","schema":{"minimum":1,"type":"integer","format":"int32"}},"X-Product-Analytics-Status":{"description":"Current preparation phase","schema":{"type":"string","enum":["queued","syncing"]}},"X-Product-Analytics-Preparation-Id":{"description":"Stable preparation job identifier","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductAnalyticsDashboardResponse"}}}}}}},"/analytics/metrics":{"get":{"tags":["analytics-controller"],"summary":"Calculate Metrics","description":"GET-method to calculate total transactions\n        unique wallets\n        DAU\n        MAU\n        Total Retention rate\n        Total Churn Rate. User can receive this info only if this contract was registered by him","operationId":"getProductMetrics","parameters":[{"name":"contractAddress","in":"query","required":true,"schema":{"type":"string"}},{"name":"X-Request-ID","in":"header","description":"Optional frontend-generated correlation ID. The backend returns the effective value in the response header.","required":false,"schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}],"responses":{"200":{"description":"OK","headers":{"X-Request-ID":{"description":"Effective request correlation ID used by backend audit logging.","schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}},"content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProductMetricsResponse"}}}}}}},"/analytics/methods":{"get":{"tags":["analytics-controller"],"summary":"Calculate used methods","description":"GET-method to calculate usage of methods. User can receive this info only if this contract was registered by him","operationId":"getMethodAnalysis","parameters":[{"name":"contractAddress","in":"query","required":true,"schema":{"type":"string"}},{"name":"X-Request-ID","in":"header","description":"Optional frontend-generated correlation ID. The backend returns the effective value in the response header.","required":false,"schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}],"responses":{"200":{"description":"OK","headers":{"X-Request-ID":{"description":"Effective request correlation ID used by backend audit logging.","schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}},"content":{"*/*":{"schema":{"$ref":"#/components/schemas/MethodAnalysisResponse"}}}}}}},"/analytics/invocations/{id}":{"get":{"tags":["analytics-invocation-controller"],"summary":"Get analytics invocation status","operationId":"status","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"X-Request-ID","in":"header","description":"Optional frontend-generated correlation ID. The backend returns the effective value in the response header.","required":false,"schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}],"responses":{"200":{"description":"OK","headers":{"X-Request-ID":{"description":"Effective request correlation ID used by backend audit logging.","schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}},"content":{"*/*":{"schema":{"$ref":"#/components/schemas/AnalyticsInvocationStatusResponse"}}}},"404":{"description":"Invocation is absent or belongs to another user","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/analytics/invocations/{id}/result":{"get":{"tags":["analytics-invocation-controller"],"summary":"Get the stored analytics invocation result","operationId":"result","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"X-Request-ID","in":"header","description":"Optional frontend-generated correlation ID. The backend returns the effective value in the response header.","required":false,"schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}],"responses":{"202":{"description":"Result is not ready","headers":{"Retry-After":{"description":"Polling delay in seconds","style":"simple"},"X-Request-ID":{"description":"Effective request correlation ID used by backend audit logging.","schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}},"content":{"*/*":{"schema":{"type":"object"}}}},"200":{"description":"Stored result; calculation is not rerun","headers":{"X-Request-ID":{"description":"Effective request correlation ID used by backend audit logging.","schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}},"content":{"*/*":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CohortTransactionResponse"},{"$ref":"#/components/schemas/CohortAnalysisResponse"},{"$ref":"#/components/schemas/DashboardAnalyticsResponse"},{"$ref":"#/components/schemas/ProductAnalyticsDashboardResponse"},{"$ref":"#/components/schemas/ProductMetricsResponse"},{"$ref":"#/components/schemas/MethodAnalysisResponse"},{"$ref":"#/components/schemas/TokenAnalysisResponse"}]}}}},"422":{"description":"Calculation failed permanently","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"410":{"description":"Stored result has expired","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Invocation is absent or belongs to another user","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Invocation was cancelled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/analytics/dashboard":{"get":{"tags":["analytics-controller"],"summary":"Get full analytics dashboard payload","description":"Legacy batch endpoint used by the current dashboard initial load.","operationId":"getDashboardAnalytics","parameters":[{"name":"contractAddress","in":"query","required":true,"schema":{"type":"string"}},{"name":"startDate","in":"query","required":false,"schema":{"type":"string","format":"date"}},{"name":"endDate","in":"query","required":false,"schema":{"type":"string","format":"date"}},{"name":"interval","in":"query","required":false,"schema":{"type":"string","default":"weekly"}},{"name":"granularity","in":"query","required":false,"schema":{"type":"string","default":"day"}},{"name":"X-Request-ID","in":"header","description":"Optional frontend-generated correlation ID. The backend returns the effective value in the response header.","required":false,"schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}],"responses":{"200":{"description":"OK","headers":{"X-Request-ID":{"description":"Effective request correlation ID used by backend audit logging.","schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}},"content":{"*/*":{"schema":{"$ref":"#/components/schemas/DashboardAnalyticsResponse"}}}}}}},"/analytics/cohorts":{"get":{"tags":["analytics-controller"],"summary":"Calculate Cohort Analysis","description":"GET-method to calculate cohort data based on parameters about contract. User can receive this info only if this contract was registered by him. ","operationId":"getCohortAnalysis","parameters":[{"name":"Authorization","in":"header","required":true,"schema":{"type":"string"}},{"name":"contractAddress","in":"query","required":true,"schema":{"type":"string"}},{"name":"interval","in":"query","required":true,"schema":{"type":"string"}},{"name":"startDate","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"endDate","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"X-Request-ID","in":"header","description":"Optional frontend-generated correlation ID. The backend returns the effective value in the response header.","required":false,"schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}],"responses":{"200":{"description":"OK","headers":{"X-Request-ID":{"description":"Effective request correlation ID used by backend audit logging.","schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}},"content":{"*/*":{"schema":{"$ref":"#/components/schemas/CohortAnalysisResponse"}}}}}}},"/analytics/cohort-transactions":{"get":{"tags":["analytics-controller"],"summary":"GET info about tokens on contract","description":"GET-method to retrieve info about tokens on contract. User can receive this info only if this contract was registered by him","operationId":"getCohortTransactions","parameters":[{"name":"contractAddress","in":"query","required":true,"schema":{"type":"string"}},{"name":"period","in":"query","required":true,"schema":{"type":"string"}},{"name":"granularity","in":"query","required":true,"schema":{"type":"string"}},{"name":"X-Request-ID","in":"header","description":"Optional frontend-generated correlation ID. The backend returns the effective value in the response header.","required":false,"schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}],"responses":{"200":{"description":"OK","headers":{"X-Request-ID":{"description":"Effective request correlation ID used by backend audit logging.","schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}},"content":{"*/*":{"schema":{"$ref":"#/components/schemas/CohortTransactionResponse"}}}}}}},"/contracts/{contractAddress}":{"delete":{"tags":["contract-info-controller"],"summary":"DELETE contract for user to analysis","description":"DELETE-method will delete contract from list of analysis","operationId":"deleteContract","parameters":[{"name":"contractAddress","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-Request-ID","in":"header","description":"Optional frontend-generated correlation ID. The backend returns the effective value in the response header.","required":false,"schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}],"responses":{"200":{"description":"OK","headers":{"X-Request-ID":{"description":"Effective request correlation ID used by backend audit logging.","schema":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9._:-]{1,128}$","type":"string","example":"8df31080-3b78-4e63-a67d-c2d107190f3c"}}},"content":{"*/*":{"schema":{"$ref":"#/components/schemas/ContractInfoResponse"}}}}}}}},"components":{"schemas":{"UserInfoRequest":{"required":["email","userId"],"type":"object","properties":{"userId":{"type":"string","format":"uuid"},"email":{"maxLength":255,"minLength":0,"type":"string"},"company":{"maxLength":255,"minLength":0,"type":"string"},"firstName":{"maxLength":255,"minLength":0,"type":"string"},"lastName":{"maxLength":255,"minLength":0,"type":"string"},"country":{"maxLength":255,"minLength":0,"type":"string"}}},"UserInfoResponse":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"email":{"type":"string"},"company":{"type":"string"},"firstName":{"type":"string"},"lastName":{"type":"string"},"country":{"type":"string"}}},"SubscriptionUpdateRequest":{"required":["planId"],"type":"object","properties":{"planId":{"type":"string","format":"uuid"},"paymentId":{"type":"string","format":"uuid"},"startDate":{"type":"string","format":"date-time"},"endDate":{"type":"string","format":"date-time"},"isActive":{"type":"boolean"}}},"SubscriptionResponse":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"userId":{"type":"string","format":"uuid"},"planId":{"type":"string","format":"uuid"},"paymentId":{"type":"string","format":"uuid"},"startDate":{"type":"string","format":"date-time"},"endDate":{"type":"string","format":"date-time"},"isActive":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"PlanRequest":{"required":["contractAmount","enrichedProfilingRequestsPerPeriod","name","period","price"],"type":"object","properties":{"name":{"type":"string"},"contractAmount":{"type":"integer","format":"int32"},"period":{"type":"integer","format":"int32"},"price":{"type":"number"},"enrichedProfilingRequestsPerPeriod":{"type":"integer","format":"int32"}}},"PlanResponse":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"contractAmount":{"type":"integer","format":"int32"},"period":{"type":"integer","format":"int32"},"price":{"type":"number","format":"double"},"is_active":{"type":"boolean"},"enrichedProfilingRequestsPerPeriod":{"type":"integer","format":"int32"}}},"WalletProfilingSimpleRequest":{"required":["chainId","walletAddress"],"type":"object","properties":{"walletAddress":{"type":"string"},"chainId":{"type":"integer","format":"int32"}}},"WalletProfilingBillingResponse":{"type":"object","properties":{"productUnits":{"type":"integer","format":"int32"},"productPricingUnit":{"type":"string"},"chargeStatus":{"type":"string"}}},"WalletProfilingClassResponse":{"type":"object","properties":{"className":{"type":"string"},"confidence":{"type":"number","format":"double"},"scores":{"type":"object","additionalProperties":{"type":"object"}},"explanation":{"type":"object","additionalProperties":{"type":"object"}}}},"WalletProfilingQualityResponse":{"type":"object","properties":{"classificationMode":{"type":"string"},"enrichedDataUsed":{"type":"boolean"},"dataPreparationRequired":{"type":"boolean"}}},"WalletProfilingQuotaResponse":{"type":"object","properties":{"limit":{"type":"integer","format":"int32"},"reserved":{"type":"integer","format":"int32"},"used":{"type":"integer","format":"int32"},"remaining":{"type":"integer","format":"int32"},"periodStart":{"type":"string","format":"date-time"},"periodEnd":{"type":"string","format":"date-time"}}},"WalletProfilingRateLimitResponse":{"type":"object","properties":{"limit":{"type":"integer","format":"int32"},"remaining":{"type":"integer","format":"int32"},"resetAt":{"type":"string","format":"date-time"}}},"WalletProfilingResponse":{"type":"object","properties":{"mode":{"type":"string"},"chainId":{"type":"integer","format":"int32"},"walletAddress":{"type":"string"},"requestId":{"type":"string","format":"uuid"},"status":{"type":"string"},"classificationAvailable":{"type":"boolean"},"dataPreparationRequired":{"type":"boolean"},"quota":{"$ref":"#/components/schemas/WalletProfilingQuotaResponse"},"billing":{"$ref":"#/components/schemas/WalletProfilingBillingResponse"},"quality":{"$ref":"#/components/schemas/WalletProfilingQualityResponse"},"rateLimit":{"$ref":"#/components/schemas/WalletProfilingRateLimitResponse"},"classes":{"type":"array","items":{"$ref":"#/components/schemas/WalletProfilingClassResponse"}}}},"WalletProfilingEnrichedRequest":{"required":["chainId","walletAddress"],"type":"object","properties":{"walletAddress":{"type":"string"},"chainId":{"type":"integer","format":"int32"},"forceRefresh":{"type":"boolean"}}},"SubscriptionRequest":{"required":["endDate","isActive","planId","startDate"],"type":"object","properties":{"planId":{"type":"string","format":"uuid"},"paymentId":{"type":"string","format":"uuid"},"startDate":{"type":"string","format":"date-time"},"endDate":{"type":"string","format":"date-time"},"isActive":{"type":"boolean"}}},"ContractInfoRequest":{"required":["address","chainId"],"type":"object","properties":{"chainId":{"type":"integer","format":"int32"},"address":{"maxLength":42,"minLength":42,"type":"string"},"type":{"maxLength":255,"minLength":0,"type":"string"}}},"ContractInfoResponse":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"chainId":{"type":"integer","format":"int32"},"userId":{"type":"string","format":"uuid"},"address":{"type":"string"},"type":{"type":"string"}}},"AnalyticsInvocationCreateRequest":{"required":["operation","request"],"type":"object","properties":{"operation":{"type":"string","enum":["COHORT_TRANSACTIONS","COHORTS","DASHBOARD","PRODUCT_DASHBOARD","METRICS","METHODS","TOKENS"]},"request":{"type":"object","oneOf":[{"$ref":"#/components/schemas/CohortTransactionsInvocationRequest"},{"$ref":"#/components/schemas/CohortsInvocationRequest"},{"$ref":"#/components/schemas/DashboardInvocationRequest"},{"$ref":"#/components/schemas/ProductDashboardInvocationRequest"},{"$ref":"#/components/schemas/MetricsInvocationRequest"},{"$ref":"#/components/schemas/MethodsInvocationRequest"},{"$ref":"#/components/schemas/TokensInvocationRequest"}]}},"discriminator":{"propertyName":"operation"},"oneOf":[{"$ref":"#/components/schemas/CohortTransactionsInvocationCreateCommand"},{"$ref":"#/components/schemas/CohortsInvocationCreateCommand"},{"$ref":"#/components/schemas/DashboardInvocationCreateCommand"},{"$ref":"#/components/schemas/ProductDashboardInvocationCreateCommand"},{"$ref":"#/components/schemas/MetricsInvocationCreateCommand"},{"$ref":"#/components/schemas/MethodsInvocationCreateCommand"},{"$ref":"#/components/schemas/TokensInvocationCreateCommand"}]},"CohortTransactionsInvocationCreateCommand":{"type":"object","properties":{"operation":{"type":"string","enum":["COHORT_TRANSACTIONS"]},"request":{"$ref":"#/components/schemas/CohortTransactionsInvocationRequest"}},"description":"Create command for the COHORT_TRANSACTIONS analytics operation"},"CohortTransactionsInvocationRequest":{"required":["contractAddress","granularity","period"],"type":"object","properties":{"contractAddress":{"type":"string","example":"0x313416870A4da6F12505a550B67bB73c8E21D5d3"},"period":{"type":"string","example":"1y","enum":["7d","30d","90d","1y"]},"granularity":{"type":"string","example":"day","enum":["day","week","month"]}}},"CohortsInvocationCreateCommand":{"type":"object","properties":{"operation":{"type":"string","enum":["COHORTS"]},"request":{"$ref":"#/components/schemas/CohortsInvocationRequest"}},"description":"Create command for the COHORTS analytics operation"},"CohortsInvocationRequest":{"required":["contractAddress","endDate","interval","startDate"],"type":"object","properties":{"contractAddress":{"type":"string","example":"0x313416870A4da6F12505a550B67bB73c8E21D5d3"},"interval":{"type":"string","example":"weekly","enum":["daily","weekly","monthly"]},"startDate":{"type":"string","format":"date","example":"2026-05-01"},"endDate":{"type":"string","format":"date","example":"2026-07-01"}}},"DashboardInvocationCreateCommand":{"type":"object","properties":{"operation":{"type":"string","enum":["DASHBOARD"]},"request":{"$ref":"#/components/schemas/DashboardInvocationRequest"}},"description":"Create command for the DASHBOARD analytics operation"},"DashboardInvocationRequest":{"required":["contractAddress"],"type":"object","properties":{"contractAddress":{"type":"string","example":"0x313416870A4da6F12505a550B67bB73c8E21D5d3"},"startDate":{"type":"string","format":"date","example":"2026-05-01"},"endDate":{"type":"string","format":"date","example":"2026-07-01"},"interval":{"type":"string","default":"weekly","enum":["daily","weekly","monthly"]},"granularity":{"type":"string","default":"day","enum":["day","week","month"]}}},"MethodsInvocationCreateCommand":{"type":"object","properties":{"operation":{"type":"string","enum":["METHODS"]},"request":{"$ref":"#/components/schemas/MethodsInvocationRequest"}},"description":"Create command for the METHODS analytics operation"},"MethodsInvocationRequest":{"required":["contractAddress"],"type":"object","properties":{"contractAddress":{"type":"string","example":"0x313416870A4da6F12505a550B67bB73c8E21D5d3"}}},"MetricsInvocationCreateCommand":{"type":"object","properties":{"operation":{"type":"string","enum":["METRICS"]},"request":{"$ref":"#/components/schemas/MetricsInvocationRequest"}},"description":"Create command for the METRICS analytics operation"},"MetricsInvocationRequest":{"required":["contractAddress"],"type":"object","properties":{"contractAddress":{"type":"string","example":"0x313416870A4da6F12505a550B67bB73c8E21D5d3"}}},"ProductDashboardInvocationCreateCommand":{"type":"object","properties":{"operation":{"type":"string","enum":["PRODUCT_DASHBOARD"]},"request":{"$ref":"#/components/schemas/ProductDashboardInvocationRequest"}},"description":"Create command for the PRODUCT_DASHBOARD analytics operation"},"ProductDashboardInvocationRequest":{"required":["contractAddress","dateFrom","dateTo"],"type":"object","properties":{"contractAddress":{"type":"string","example":"0x461ffa24b716f68c5a4fb583592f295db5f7ba36"},"chainId":{"minimum":1,"type":"integer","format":"int32","example":1},"chain":{"type":"string","example":"Ethereum"},"dateFrom":{"type":"string","format":"date","example":"2026-07-23"},"dateTo":{"type":"string","format":"date","example":"2026-07-29"},"compareDateFrom":{"type":"string","format":"date","example":"2026-07-16"},"compareDateTo":{"type":"string","format":"date","example":"2026-07-22"},"granularity":{"type":"string","default":"day","enum":["day"]},"status":{"type":"string","default":"all","enum":["all","success","failed"]},"topLimit":{"maximum":50,"minimum":1,"type":"integer","format":"int32","default":8}}},"TokensInvocationCreateCommand":{"type":"object","properties":{"operation":{"type":"string","enum":["TOKENS"]},"request":{"$ref":"#/components/schemas/TokensInvocationRequest"}},"description":"Create command for the TOKENS analytics operation"},"TokensInvocationRequest":{"required":["contractId"],"type":"object","properties":{"contractId":{"type":"string","example":"0x313416870A4da6F12505a550B67bB73c8E21D5d3"}}},"AnalyticsInvocationLinks":{"type":"object","properties":{"self":{"type":"string"},"result":{"type":"string"},"cancel":{"type":"string"}}},"AnalyticsInvocationStatusResponse":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"operation":{"type":"string","enum":["COHORT_TRANSACTIONS","COHORTS","DASHBOARD","PRODUCT_DASHBOARD","METRICS","METHODS","TOKENS"]},"status":{"type":"string","enum":["QUEUED","WAITING_DEPENDENCY","RUNNING","SUCCEEDED","FAILED","CANCEL_REQUESTED","CANCELLED","EXPIRED"]},"stage":{"type":"string","enum":["VALIDATING","WAITING_DEPENDENCY","QUERYING","AGGREGATING","SERIALIZING","SAVING_RESULT","COMPLETED"]},"attempt":{"type":"integer","format":"int32"},"maxAttempts":{"type":"integer","format":"int32"},"retryAfterSeconds":{"type":"integer","format":"int32"},"dependencyId":{"type":"string","format":"uuid"},"errorCode":{"type":"string"},"errorMessage":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"startedAt":{"type":"string","format":"date-time"},"completedAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"links":{"$ref":"#/components/schemas/AnalyticsInvocationLinks"}}},"CohortTransactionResponse":{"type":"object","properties":{"timeSeriesData":{"type":"array","items":{"$ref":"#/components/schemas/TimeSeriesEntry"}},"cohortLabels":{"type":"object","additionalProperties":{"type":"string"}},"metadata":{"$ref":"#/components/schemas/Metadata"}}},"Metadata":{"type":"object","properties":{"totalPeriods":{"type":"integer","format":"int32"},"granularity":{"type":"string"},"contractAddress":{"type":"string"},"blockNumber":{"type":"integer","format":"int64"}}},"TimeSeriesEntry":{"type":"object","properties":{"date":{"type":"string"},"totalTransactions":{"type":"integer","format":"int32"},"cohortBreakdown":{"type":"object","additionalProperties":{"type":"integer","format":"int32"}},"uniqueUsersBreakdown":{"type":"object","additionalProperties":{"type":"integer","format":"int32"}}}},"CohortAnalysisResponse":{"type":"object","properties":{"cohorts":{"type":"array","items":{"$ref":"#/components/schemas/CohortData"}}}},"CohortData":{"type":"object","properties":{"cohortDate":{"type":"string","format":"date"},"totalUsers":{"type":"integer","format":"int32"},"amountOfTx":{"type":"object","additionalProperties":{"type":"integer","format":"int32"}},"retentionRates":{"type":"object","additionalProperties":{"type":"number","format":"double"}}}},"DashboardAnalyticsMeta":{"type":"object","properties":{"generatedAt":{"type":"string","description":"UTC time when this dashboard result was calculated","format":"date-time"},"dataThrough":{"type":"string","description":"Latest activity date represented by non-zero returned data","format":"date-time","nullable":true},"blockFrom":{"type":"integer","description":"First included blockchain block when known","format":"int64","nullable":true},"blockTo":{"type":"integer","description":"Latest included blockchain block when known","format":"int64","nullable":true},"requestId":{"type":"string","description":"Correlation ID also returned in X-Request-ID","nullable":true},"dateFrom":{"type":"string"},"dateTo":{"type":"string"},"interval":{"type":"string"},"granularity":{"type":"string"}}},"DashboardAnalyticsResponse":{"type":"object","properties":{"contractAddress":{"type":"string"},"metrics":{"$ref":"#/components/schemas/ProductMetricsResponse"},"methods":{"$ref":"#/components/schemas/MethodAnalysisResponse"},"cohortsWeekly":{"$ref":"#/components/schemas/CohortAnalysisResponse"},"cohortTransactions7d":{"$ref":"#/components/schemas/CohortTransactionResponse"},"cohortTransactions30d":{"$ref":"#/components/schemas/CohortTransactionResponse"},"meta":{"$ref":"#/components/schemas/DashboardAnalyticsMeta"},"sectionStatus":{"$ref":"#/components/schemas/DashboardSectionStatus"}}},"DashboardSectionStatus":{"type":"object","properties":{"metrics":{"type":"string"},"methods":{"type":"string"},"cohortsWeekly":{"type":"string"},"cohortTransactions7d":{"type":"string"},"cohortTransactions30d":{"type":"string"}},"description":"Per-section readiness: ready, preparing or unavailable"},"MethodAnalysisResponse":{"type":"object","properties":{"methodUsageCount":{"type":"object","additionalProperties":{"type":"integer","format":"int32"}}}},"ProductMetricsResponse":{"type":"object","properties":{"txs":{"type":"array","items":{"$ref":"#/components/schemas/TransactionWithCohort"}},"changeTxForTheLast30days":{"type":"number","format":"double"},"amountUniqueWallets":{"type":"integer","format":"int32"},"changeWalletsForTheLast30days":{"type":"number","format":"double"},"totalTransactions":{"type":"integer","format":"int32"},"last30DaysTx":{"type":"integer","format":"int32"},"totalRetentionRate":{"type":"number","format":"double"},"totalChurnRate":{"type":"number","format":"double"},"dau":{"type":"object","additionalProperties":{"type":"integer","format":"int64"}},"mau":{"type":"object","additionalProperties":{"type":"integer","format":"int64"}}}},"TransactionWithCohort":{"type":"object","properties":{"txHash":{"type":"string"},"blockNumber":{"type":"integer","format":"int64"},"timestamp":{"type":"string","format":"date-time"},"from":{"type":"string"},"to":{"type":"string"},"value":{"type":"number"},"gasUsed":{"type":"integer","format":"int64"},"gasPrice":{"type":"integer","format":"int64"},"contractAddress":{"type":"string"},"functionName":{"type":"string"},"method":{"type":"string"},"nonce":{"type":"integer","format":"int64"},"blockHash":{"type":"string"},"transactionIndex":{"type":"integer","format":"int32"},"isError":{"type":"integer","format":"int32"},"txreceiptStatus":{"type":"integer","format":"int32"},"input":{"type":"string"},"cumulativeGasUsed":{"type":"integer","format":"int64"},"confirmations":{"type":"integer","format":"int64"},"gas":{"type":"integer","format":"int64"},"offsetDays":{"type":"integer","format":"int32"},"firstSeen":{"type":"string","format":"date-time"},"offsetDaysFromDeploy":{"type":"integer","format":"int32"}}},"ProductActivityPoint":{"type":"object","properties":{"date":{"type":"string"},"transactions":{"type":"integer","format":"int64"},"activeWallets":{"type":"integer","format":"int64"},"newWallets":{"type":"integer","format":"int64"},"returningWallets":{"type":"integer","format":"int64"},"failedTransactions":{"type":"integer","format":"int64"},"gasFeeNative":{"type":"number","format":"double"}}},"ProductAnalyticsDashboardResponse":{"type":"object","properties":{"meta":{"$ref":"#/components/schemas/ProductAnalyticsMeta"},"kpis":{"type":"array","items":{"$ref":"#/components/schemas/ProductKpi"}},"activity":{"type":"array","items":{"$ref":"#/components/schemas/ProductActivityPoint"}},"cohortMethodMatrix":{"$ref":"#/components/schemas/ProductMatrix"},"classMethodMatrix":{"$ref":"#/components/schemas/ProductMatrix"},"methodPerformance":{"type":"array","items":{"$ref":"#/components/schemas/ProductMethodPerformance"}},"walletClasses":{"type":"array","items":{"$ref":"#/components/schemas/ProductWalletClass"}},"risk":{"$ref":"#/components/schemas/ProductRiskSummary"},"signals":{"type":"array","items":{"$ref":"#/components/schemas/ProductSignal"}},"sectionStatus":{"$ref":"#/components/schemas/ProductSectionStatus"}}},"ProductAnalyticsMeta":{"type":"object","properties":{"contractAddress":{"type":"string"},"chainId":{"type":"integer","format":"int32"},"chain":{"type":"string"},"dateFrom":{"type":"string"},"dateTo":{"type":"string"},"compareDateFrom":{"type":"string"},"compareDateTo":{"type":"string"},"blockFrom":{"type":"integer","format":"int64"},"blockTo":{"type":"integer","format":"int64"},"generatedAt":{"type":"string","description":"UTC time when this dashboard result was calculated","format":"date-time"},"dataThrough":{"type":"string","description":"Timestamp of the latest transaction included in the snapshot","format":"date-time","nullable":true},"requestId":{"type":"string","description":"Correlation ID also returned in X-Request-ID","nullable":true}}},"ProductKpi":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"},"value":{"type":"number","format":"double"},"unit":{"type":"string"},"deltaPct":{"type":"number","format":"double"},"deltaValue":{"type":"number","format":"double"},"previousValue":{"type":"number","format":"double"},"precision":{"minimum":0,"type":"integer","description":"Recommended number of fractional digits for frontend display","format":"int32"}}},"ProductMatrix":{"type":"object","properties":{"rows":{"type":"array","items":{"$ref":"#/components/schemas/ProductMatrixDimension"}},"columns":{"type":"array","items":{"$ref":"#/components/schemas/ProductMatrixDimension"}},"cells":{"type":"array","items":{"$ref":"#/components/schemas/ProductMatrixCell"}}}},"ProductMatrixCell":{"type":"object","properties":{"rowKey":{"type":"string"},"columnKey":{"type":"string"},"txCount":{"type":"integer","format":"int64"},"activeWallets":{"type":"integer","format":"int64"},"newWallets":{"type":"integer","format":"int64"},"failedTx":{"type":"integer","format":"int64"},"failureRatePct":{"type":"number","format":"double"},"gasFeeNative":{"type":"number","format":"double"},"failedGasFeeNative":{"type":"number","format":"double"}}},"ProductMatrixDimension":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"}}},"ProductMethodPerformance":{"type":"object","properties":{"methodName":{"type":"string"},"activeWallets":{"type":"integer","format":"int64"},"txCount":{"type":"integer","format":"int64"},"failedTx":{"type":"integer","format":"int64"},"failureRatePct":{"type":"number","format":"double"},"gasFeeNative":{"type":"number","format":"double"},"failedGasFeeNative":{"type":"number","format":"double"},"status":{"type":"string"}}},"ProductRiskSummary":{"type":"object","properties":{"failureRatePct":{"type":"number","format":"double"},"failedGasFeeNative":{"type":"number","format":"double"},"worstMethodFailureRatePct":{"type":"number","format":"double"},"gasSpikeMultiplier":{"type":"number","format":"double"},"failedGasByMethod":{"type":"array","items":{"$ref":"#/components/schemas/ProductMethodPerformance"}}}},"ProductSectionStatus":{"type":"object","properties":{"kpis":{"type":"string"},"activity":{"type":"string"},"cohortMethodMatrix":{"type":"string"},"classMethodMatrix":{"type":"string"},"methodPerformance":{"type":"string"},"walletClasses":{"type":"string"},"risk":{"type":"string"},"signals":{"type":"string"}},"description":"Per-section readiness: ready, preparing, syncing or unavailable"},"ProductSignal":{"type":"object","properties":{"key":{"type":"string"},"tone":{"type":"string"},"title":{"type":"string"},"value":{"type":"string"}}},"ProductWalletClass":{"type":"object","properties":{"className":{"type":"string"},"activeWallets":{"type":"integer","format":"int64"},"sharePct":{"type":"number","format":"double"},"color":{"type":"string"}}},"TokenAnalysisResponse":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"change":{"type":"string"},"amount":{"type":"string"}}},"UserRegistrationStatusResponse":{"type":"object","properties":{"registered":{"type":"boolean"}}},"BalancesResponse":{"type":"object","properties":{"balances":{"type":"object","additionalProperties":{"type":"string"}},"error":{"type":"string"}}},"ContractSyncStatusResponse":{"type":"object","properties":{"contractAddress":{"type":"string"},"currentBlock":{"type":"integer","format":"int64"},"targetBlock":{"type":"integer","format":"int64"},"lastSyncedAt":{"type":"string","format":"date-time"},"progress":{"type":"integer","format":"int32"},"syncing":{"type":"boolean"}}},"DailyReportResponse":{"type":"object","properties":{"reportId":{"type":"string","format":"uuid"},"contractAddress":{"type":"string"},"chainId":{"type":"integer","format":"int32"},"startBlock":{"type":"integer","format":"int64"},"endBlock":{"type":"integer","format":"int64"},"datetime":{"type":"string","format":"date-time"},"totalTxAmount":{"type":"integer","format":"int32"},"percentageOfTxPrevDay":{"type":"number","format":"double"},"dau":{"type":"integer","format":"int32"},"dauComparisonPrevDay":{"type":"number","format":"double"},"newWalletsAmount":{"type":"integer","format":"int32"},"usersByCohorts":{"type":"string"},"methodAmount":{"type":"string"},"methodsByCohorts":{"type":"string"},"failedTx":{"type":"integer","format":"int32"},"gasUsed":{"type":"integer","format":"int64"},"txsPerDayByMethods":{"type":"string"},"txsPerDayByCohorts":{"type":"string"}}},"ErrorResponse":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"string"}}}},"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}}}}