# Partake ## Docs - [Payments Module](https://docs.partake.ng/payments-module-9563618f0.md): Paid vote payment flow: initiate a transaction, receive gateway webhooks, and query transaction status. - Payments Module [Webhooks](https://docs.partake.ng/webhooks-9563638f0.md): Gateway-to-server webhook endpoints. Called by Paystack and Flutterwave — not by the frontend. Signature verification occurs before any processing. Always returns 200. ## API Docs - Auth Module > Merchant [Register Merchant](https://docs.partake.ng/register-merchant-39837936e0.md): Registers a new merchant account. Returns the created merchant record. Public. - Auth Module > Merchant [Login Merchant](https://docs.partake.ng/login-merchant-39837937e0.md): Authenticates a merchant. Returns an access token and sets an HttpOnly refresh_token cookie (7 days). Public. - Auth Module > User [Register User](https://docs.partake.ng/register-user-39837938e0.md): Registers a new user/voter account. Public. - Auth Module > User [Login User](https://docs.partake.ng/login-user-39837939e0.md): Authenticates a user/voter. Returns an access token and sets a HttpOnly refresh_token cookie (7 days). Public. - Auth Module > OTP [Send OTP](https://docs.partake.ng/send-otp-39837940e0.md): Sends an OTP for email verification, phone verification, or password reset. Public (optional auth). Rate-limited to 5 requests per 10 minutes. - Auth Module > OTP [Verify OTP](https://docs.partake.ng/verify-otp-39837941e0.md): Verifies a previously sent OTP code. For password_reset purpose, returns a short-lived resetToken to be used in the Reset Password request. Public (optional auth). - Auth Module > OTP [Reset Password](https://docs.partake.ng/reset-password-39837942e0.md): Resets the actor's password using the resetToken obtained from Verify OTP (password_reset purpose). Public. Rate-limited to 5 requests per 15 minutes. - Auth Module > Token [Refresh Access Token](https://docs.partake.ng/refresh-access-token-39837943e0.md): Issues a new access token using the refresh_token HttpOnly cookie. The cookie must be present on the request. Authenticated (cookie). - Auth Module > Token [Logout](https://docs.partake.ng/logout-39837944e0.md): Invalidates the refresh token in Redis and clears the refresh_token cookie. Returns 204 No Content. Authenticated (bearer). - Auth Module > OAuth > Google [Initiate Google Sign-In (User)](https://docs.partake.ng/initiate-google-sign-in-user-39837947e0.md): Initiates Google OAuth flow for users. Opens the Google consent screen. Public — open in a browser, not via direct API call. - Auth Module > OAuth > Google [Google Callback (User)](https://docs.partake.ng/google-callback-user-39837948e0.md): Google OAuth callback for users. Called by Google after consent. On success, sets refresh_token cookie and redirects to frontend with a one-time exchange code. Public. - Auth Module > OAuth > Google [Initiate Google Sign-In (Merchant)](https://docs.partake.ng/initiate-google-sign-in-merchant-39837949e0.md): Initiates Google OAuth flow for merchants. Opens the Google consent screen. Public — open in a browser, not via direct API call. - Auth Module > OAuth > Google [Google Callback (Merchant)](https://docs.partake.ng/google-callback-merchant-39837950e0.md): Google OAuth callback for merchants. Existing merchants get tokens; new merchants are redirected to complete their profile. Public. - Auth Module > OAuth [Exchange OAuth Code](https://docs.partake.ng/exchange-oauth-code-39837945e0.md): Redeems the one-time code from the OAuth redirect for a JWT access token. Code is deleted from Redis on first use. Public. - Auth Module > OAuth [Complete Merchant Profile (OAuth)](https://docs.partake.ng/complete-merchant-profile-oauth-39837946e0.md): Completes merchant profile after OAuth sign-up when the provider did not supply a business name. Redeems the pending_token from the OAuth redirect. Sets refresh_token cookie. Public. - Merchants Module > Banks [List Banks](https://docs.partake.ng/list-banks-39837951e0.md): Retrieves the list of Nigerian banks for payout account setup. Merchant only. - Merchants Module > Banks [Resolve Bank Account](https://docs.partake.ng/resolve-bank-account-39837952e0.md): Resolves a bank account number to the account holder name. Merchant only. - Merchants Module > Profile [Get My Profile](https://docs.partake.ng/get-my-profile-39837953e0.md): Returns the authenticated merchant's profile. Merchant only. - Merchants Module > Profile [Update My Profile](https://docs.partake.ng/update-my-profile-39837954e0.md): Updates the authenticated merchant's profile fields. All fields are optional. Merchant only. - Merchants Module > Profile [Update Avatar](https://docs.partake.ng/update-avatar-39837955e0.md): Upload or replace the merchant logo. Accepts multipart/form-data with a `file` field. Merchant only. - Merchants Module > Contests [List My Contests](https://docs.partake.ng/list-my-contests-39837956e0.md): Returns a paginated list of contests owned by the authenticated merchant. Merchant only. - Merchants Module > Contests [Create Contest](https://docs.partake.ng/create-contest-39837957e0.md): Creates a new contest for the authenticated merchant. Paid contests require costPerVote. Merchant only. - Merchants Module > Contests [Get Contest](https://docs.partake.ng/get-contest-39837958e0.md): Returns a single contest by ID. Only accessible by the owning merchant. Merchant only. - Merchants Module > Contests [Update Contest](https://docs.partake.ng/update-contest-39837959e0.md): Updates a contest. Only allowed on non-cancelled, non-completed contests owned by the authenticated merchant. Merchant only. - Merchants Module > Contests [Cancel Contest](https://docs.partake.ng/cancel-contest-39837960e0.md): Soft-cancels a contest (sets status to cancelled). Cannot cancel already-completed contests. Merchant only. - Merchants Module > Entries [Add Entry](https://docs.partake.ng/add-entry-39837961e0.md): Adds a new entry to a contest. Contest must be in a state that accepts entries. Merchant only. - Merchants Module > Entries [Remove Entry](https://docs.partake.ng/remove-entry-39837962e0.md): Soft-removes an entry from a contest. Returns 204 No Content on success. Merchant only. - Merchants Module > Analytics [Get Contest Analytics](https://docs.partake.ng/get-contest-analytics-39837963e0.md): Returns vote counts, revenue, commission breakdown, and per-entry stats for a contest. Merchant only. - Merchants Module > Analytics [Get Merchant Analytics](https://docs.partake.ng/get-merchant-analytics-39837964e0.md): - Merchants Module > Payouts [Save Bank Details](https://docs.partake.ng/save-bank-details-39837965e0.md): Save or update the merchant's bank account. Validates format and verifies via gateway. Merchant auth required. - Merchants Module > Payouts [Get Bank Details](https://docs.partake.ng/get-bank-details-39837966e0.md): Returns the merchant's saved bank details with the account number masked (last 4 digits only). Merchant auth required. - Merchants Module > Payouts [Get Payout Summary](https://docs.partake.ng/get-payout-summary-39837967e0.md): Returns total earned, total paid out, and outstanding balance for the authenticated merchant. Merchant auth required. - Merchants Module > Payouts [List Payout Requests](https://docs.partake.ng/list-payout-requests-39837968e0.md): Returns a paginated list of the authenticated merchant's own payout requests. Merchant auth required. - Merchants Module > Payouts [Get Payout Request](https://docs.partake.ng/get-payout-request-39837969e0.md): Returns full detail for a single payout request. Merchant auth required. - Merchants Module > KYC [Submit BVN](https://docs.partake.ng/submit-bvn-39837970e0.md): Submit a BVN for KYC verification. Merchant only. - Merchants Module > KYC [Submit NIN](https://docs.partake.ng/submit-nin-39837971e0.md): Add NIN as secondary KYC verification. Merchant only. - Merchants Module > KYC [Get KYC Status](https://docs.partake.ng/get-kyc-status-39837972e0.md): Get own KYC status. Merchant only. - Users Module [Get My Profile](https://docs.partake.ng/get-my-profile-39837973e0.md): Returns the authenticated user's profile including balance. Excludes passwordHash. Requires user JWT. - Users Module [Update My Profile](https://docs.partake.ng/update-my-profile-39837974e0.md): Updates the authenticated user's username and/or profilePicture. Email, status, and balance cannot be updated here. Returns 409 if the username is already taken by another user. Requires user JWT. - Users Module [Get My Vote History](https://docs.partake.ng/get-my-vote-history-39837975e0.md): Returns a paginated vote history for the authenticated user. Each item includes voteId, entryId, contestId, voteTimestamp, entryName, and contestTitle. voterIpAddress is never exposed. Requires user JWT. - Payments Module > Webhooks [Paystack Webhook](https://docs.partake.ng/paystack-webhook-39837978e0.md): Paystack webhook receiver. Called by Paystack on charge.success / charge.failed events. Requires a valid x-paystack-signature header — invalid signature returns 401. Amount is in kobo (divide by 100 for NGN). Always returns 200 to prevent gateway retries. - Payments Module > Webhooks [Flutterwave Webhook](https://docs.partake.ng/flutterwave-webhook-39837979e0.md): Flutterwave webhook receiver. Called by Flutterwave on charge.completed events. Requires verif-hash header matching FLUTTERWAVE_SECRET_HASH — mismatch returns 401. Amount is already in NGN. Always returns 200 to prevent gateway retries. - Payments Module > Webhooks [Payout Webhook (Payouts)](https://docs.partake.ng/payout-webhook-payouts-39837980e0.md): Receives payout transfer confirmation from Paystack/Flutterwave. Verifies gateway signature before processing. Public — no JWT required. - Payments Module [Initiate Payment](https://docs.partake.ng/initiate-payment-39837976e0.md): Creates a pending transaction and returns a gateway redirect URL. Public — JWT optional. Rate-limited to 20 requests per 10 minutes per IP. - Payments Module [Get Transaction Status](https://docs.partake.ng/get-transaction-status-39837977e0.md): Returns the public status of a transaction by ID without exposing raw gateway metadata. Public — JWT optional. Used by the frontend for polling after redirect from the payment gateway. - Admin Module > Dashboard [Get Platform Dashboard](https://docs.partake.ng/get-platform-dashboard-39837983e0.md): Returns aggregated platform KPIs: merchant/user/contest counts, vote totals, and revenue. Admin only. - Admin Module > Merchants [List Merchants](https://docs.partake.ng/list-merchants-39837984e0.md): Returns a paginated, filterable list of all merchants. passwordHash and paymentDetails excluded. Admin only. - Admin Module > Merchants [Get Merchant Detail](https://docs.partake.ng/get-merchant-detail-39837985e0.md): Returns full merchant profile, contest stats, total revenue, and last 5 audit log entries. Admin only. - Admin Module > Merchants [Ban Merchant](https://docs.partake.ng/ban-merchant-39837986e0.md): Updates merchant status. Valid transitions: pending→active, active↔suspended, active/suspended→banned. banned is terminal. Admin only. - Admin Module > Merchants [Approve Merchant](https://docs.partake.ng/approve-merchant-39837987e0.md): - Admin Module > Merchants [Suspend Merchant](https://docs.partake.ng/suspend-merchant-39837988e0.md): - Admin Module > Users [List Users](https://docs.partake.ng/list-users-39837989e0.md): Returns a paginated, filterable list of all users. passwordHash excluded; balance included. Admin only. - Admin Module > Users [Get User Detail](https://docs.partake.ng/get-user-detail-39837990e0.md): Returns full user profile, vote stats, total spend, and last 5 audit log entries. Admin only. - Admin Module > Users [Suspend User](https://docs.partake.ng/suspend-user-39837991e0.md): Suspends a user account. Writes audit log. Admin only. - Admin Module > Users [Ban User](https://docs.partake.ng/ban-user-39837992e0.md): Bans a user account. Writes audit log. Admin only. - Admin Module > Contests [List Contests](https://docs.partake.ng/list-contests-39837993e0.md): Returns a paginated list of all contests across all merchants. Admin only. - Admin Module > Contests [Get Contest Detail](https://docs.partake.ng/get-contest-detail-39837994e0.md): Returns full contest detail including merchant info, top 3 entries, vote stats, revenue, and last 10 audit logs. Admin only. - Admin Module > Contests [Cancel Contest](https://docs.partake.ng/cancel-contest-39837995e0.md): Approves (draft→active) or cancels (active/draft→cancelled) a contest. Cancellation triggers user balance refunds. completed contests are immutable. Admin only. - Admin Module > Contests [Approve Contest](https://docs.partake.ng/approve-contest-39837996e0.md): - Admin Module > Transactions [List Transactions](https://docs.partake.ng/list-transactions-39837997e0.md): Returns a paginated, filterable list of all transactions. Raw gateway metadata excluded from list. Admin only. - Admin Module > Transactions [Get Transaction Detail](https://docs.partake.ng/get-transaction-detail-39837998e0.md): Returns full transaction detail including raw gateway metadata payload. Admin only. - Admin Module > Audit Logs [List Audit Logs](https://docs.partake.ng/list-audit-logs-39837999e0.md): Queries the MongoDB audit_logs collection with optional filters. Sorted by created_at DESC. Admin only. - Admin Module > Settings [Get Platform Settings](https://docs.partake.ng/get-platform-settings-39838000e0.md): Returns all current platform settings. Admin only. - Admin Module > Settings [Update Platform Settings](https://docs.partake.ng/update-platform-settings-39838001e0.md): Updates one or more platform settings (patch semantics). Cache is busted immediately. At least one gateway must remain enabled. Admin only. - Admin Module > RBAC > Roles [List Available Permissions](https://docs.partake.ng/list-available-permissions-39838002e0.md): Returns all available system permissions grouped by resource (e.g. merchants, contests, admins). Use this to populate a permission picker when creating or editing a role. Admin only, requires admins:view. - Admin Module > RBAC > Roles [List Roles](https://docs.partake.ng/list-roles-39838003e0.md): Lists all admin roles with active admin count. Admin only. - Admin Module > RBAC > Roles [Create Role](https://docs.partake.ng/create-role-39838004e0.md): Creates a custom admin role with a set of permissions. Admin only. - Admin Module > RBAC > Roles [Get Role Detail](https://docs.partake.ng/get-role-detail-39838005e0.md): Gets role detail with assigned admins. Admin only. - Admin Module > RBAC > Roles [Update Role](https://docs.partake.ng/update-role-39838006e0.md): Updates role displayName, description, or permissions. Admin only. - Admin Module > RBAC > Roles [Delete Role](https://docs.partake.ng/delete-role-39838007e0.md): Deletes a custom role (non-system, no active admins). Admin only. - Admin Module > RBAC > Admins [List Admins](https://docs.partake.ng/list-admins-39838008e0.md): Lists admin accounts with pagination. Admin only. - Admin Module > RBAC > Admins [Create Admin](https://docs.partake.ng/create-admin-39838009e0.md): Creates a new admin account and assigns a role. Super admin only. - Admin Module > RBAC > Admins [Get Admin Detail](https://docs.partake.ng/get-admin-detail-39838010e0.md): Gets admin detail with role and creator info. Admin only. - Admin Module > RBAC > Admins [Update Admin](https://docs.partake.ng/update-admin-39838011e0.md): Updates admin first/last name or assigned role. Admin only. - Admin Module > RBAC > Admins [Update Admin Status](https://docs.partake.ng/update-admin-status-39838012e0.md): Suspends or deactivates an admin account. Cannot modify self. Admin only. - Admin Module > RBAC > Admins [Force Logout Admin](https://docs.partake.ng/force-logout-admin-39838013e0.md): Revokes an admin's refresh token, forcing re-authentication. Admin only. - Admin Module > Admin Profile [Update 2FA Channel](https://docs.partake.ng/update-2fa-channel-39838014e0.md): Updates the preferred 2FA delivery channel for the authenticated admin. Requires verified phone for sms/whatsapp. Admin only. - Admin Module > Payouts [Create Payout Request (Admin)](https://docs.partake.ng/create-payout-request-admin-39838015e0.md): Admin creates a payout request for a merchant for a given period, calculating earnings and deducting commission. Requires payouts:manage permission. - Admin Module > Payouts [List Payout Requests (Admin)](https://docs.partake.ng/list-payout-requests-admin-39838016e0.md): Returns a paginated list of all payout requests across all merchants. Admin auth required. - Admin Module > Payouts [Get Payout Request (Admin)](https://docs.partake.ng/get-payout-request-admin-39838017e0.md): Returns full payout detail including merchant info, earnings breakdown, and processing timeline. Admin auth required. - Admin Module > Payouts [Approve Payout Request](https://docs.partake.ng/approve-payout-request-39838018e0.md): Approves a pending payout request and schedules it for processing. Requires payouts:manage permission. - Admin Module > Payouts [Process Payout Request](https://docs.partake.ng/process-payout-request-39838019e0.md): Immediately initiates a bank transfer for an approved payout via the configured gateway. Requires payouts:manage permission. - Admin Module > Payouts [Cancel Payout Request](https://docs.partake.ng/cancel-payout-request-39838020e0.md): Cancels a pending or approved payout request with a mandatory reason. Requires payouts:manage permission. - Admin Module > Payouts [Get Merchant Payout Summary (Admin)](https://docs.partake.ng/get-merchant-payout-summary-admin-39838021e0.md): Returns a merchant's full payout summary: total earned, paid out, outstanding balance, and bank details on file. Admin auth required. - Admin Module > Terms of Service [Publish New ToS Version](https://docs.partake.ng/publish-new-tos-version-39838022e0.md): Publish a new Terms of Service version. Admin only, requires admins:manage_tos permission. - Admin Module > Terms of Service [List All ToS Versions (Admin)](https://docs.partake.ng/list-all-tos-versions-admin-39838023e0.md): List all ToS versions including retired ones. Admin only. - Admin Module > Terms of Service [List ToS Acceptances](https://docs.partake.ng/list-tos-acceptances-39838024e0.md): List acceptance records for a specific ToS version. Admin only. - Admin Module > Terms of Service [Get Actor ToS History](https://docs.partake.ng/get-actor-tos-history-39838025e0.md): Get full ToS acceptance history for a specific merchant or user. Admin only. - Admin Module > Data Erasure [List Erasure Requests](https://docs.partake.ng/list-erasure-requests-39838026e0.md): List all erasure requests with optional filters by status and actor type. Requires data_erasure:view permission. Admin only. - Admin Module > Data Erasure [Get Erasure Request Detail](https://docs.partake.ng/get-erasure-request-detail-39838027e0.md): Get full details of a single erasure request by ID. Requires data_erasure:view permission. Admin only. - Admin Module > Data Erasure [Execute Erasure Request](https://docs.partake.ng/execute-erasure-request-39838028e0.md): Manually trigger execution of a confirmed erasure request. Requires data_erasure:manage permission. Admin only. - Admin Module > Queue Management [Get Queue Status](https://docs.partake.ng/get-queue-status-39838029e0.md): Get job counts (waiting, active, completed, failed, delayed) for all queues. Admin only. - Admin Module > Queue Management [List Failed (DLQ) Jobs](https://docs.partake.ng/list-failed-dlq-jobs-39838030e0.md): List failed dead-letter jobs for the specified queue. Valid queue names: otp, notifications, file-cleanup, data-export, webhook-retry. Admin only. - Admin Module > Queue Management [Retry Failed Job](https://docs.partake.ng/retry-failed-job-39838031e0.md): Requeue a single failed job for retry. Requires the queue name and job ID. Admin only. - Admin Module > Queue Management [Discard Failed Job](https://docs.partake.ng/discard-failed-job-39838032e0.md): Permanently remove a failed job from the dead-letter queue. Admin only. - Admin Module > Queue Management [Retry All Failed Jobs](https://docs.partake.ng/retry-all-failed-jobs-39838033e0.md): Requeue all failed (dead-letter) jobs in the specified queue. Admin only. - Admin Module > Queue Management [Discard All Failed Jobs](https://docs.partake.ng/discard-all-failed-jobs-39838034e0.md): Permanently discard all failed (dead-letter) jobs in the specified queue. Admin only. - Admin Module > Webhook Deliveries [List Webhook Deliveries](https://docs.partake.ng/list-webhook-deliveries-39838035e0.md): List all webhook delivery records with optional filters. Requires webhooks:view permission. Admin only. - Admin Module > Webhook Deliveries [Get Webhook Delivery Detail](https://docs.partake.ng/get-webhook-delivery-detail-39838036e0.md): Get the full detail of a webhook delivery record including retry history. Requires webhooks:view permission. Admin only. - Admin Module > Webhook Deliveries [Retry Webhook Delivery](https://docs.partake.ng/retry-webhook-delivery-39838037e0.md): Manually retry a failed or dead-letter webhook delivery. Requires webhooks:manage permission. Admin only. - Admin Module > Webhook Deliveries [Discard Webhook Delivery](https://docs.partake.ng/discard-webhook-delivery-39838038e0.md): Permanently discard a webhook delivery record. Requires webhooks:manage permission. Admin only. - Admin Module > Fraud Detection [Get Fraud Dashboard](https://docs.partake.ng/get-fraud-dashboard-39838039e0.md): Returns fraud detection KPI dashboard stats. Admin only — requires fraud:view permission. - Admin Module > Fraud Detection [List Fraud Flags](https://docs.partake.ng/list-fraud-flags-39838040e0.md): Returns a paginated list of fraud flags. Admin only — requires fraud:view permission. - Admin Module > Fraud Detection [Get Fraud Flag Detail](https://docs.partake.ng/get-fraud-flag-detail-39838041e0.md): Returns full detail for a single fraud flag. Admin only — requires fraud:view permission. - Admin Module > Fraud Detection [Resolve Fraud Flag](https://docs.partake.ng/resolve-fraud-flag-39838042e0.md): Resolve or dismiss a fraud flag. Admin only — requires fraud:manage permission. Action: dismiss | block_user | block_ip | rate_limit_increase. - Admin Module > KYC [List Merchant KYC Records](https://docs.partake.ng/list-merchant-kyc-records-39838043e0.md): Lists all merchant KYC records, optionally filtered by status. Admin only — requires kyc:view permission. - Admin Module > KYC [Get KYC Service Status](https://docs.partake.ng/get-kyc-service-status-39838044e0.md): Returns the active KYC provider name and availability status. Admin only — requires kyc:view permission. - Admin Module > KYC [Switch KYC Provider](https://docs.partake.ng/switch-kyc-provider-39838045e0.md): Switches the active KYC provider. Admin only — requires kyc:manage permission. - Admin Module > KYC [Get Merchant KYC Detail](https://docs.partake.ng/get-merchant-kyc-detail-39838046e0.md): View KYC detail for a specific merchant. Admin only — requires kyc:view permission. - Admin Module > KYC [Review Merchant KYC](https://docs.partake.ng/review-merchant-kyc-39838047e0.md): Manually approve or reject a merchant's KYC submission. Admin only — requires kyc:manage permission. - Admin Module [Login Admin](https://docs.partake.ng/login-admin-39837981e0.md): Authenticates a platform admin. JWT carries adminRoleId; permissions are resolved per-request from Redis. Sets a HttpOnly refresh_token cookie. Admin only. - Admin Module [Verify Admin 2FA (Step 2)](https://docs.partake.ng/verify-admin-2fa-step-2-39837982e0.md): Step 2 of admin login. Submits the 2FA OTP code along with the intermediateToken received from Step 1. Returns accessToken on success. Admin. - Uploads Module [Upload File](https://docs.partake.ng/upload-file-39838048e0.md): Uploads an image file and returns a fileId and public URL. Authenticated (any role); permitted contexts vary by actor role. Merchant/Admin. - Public Access Module > Entries Module [List Contest Entries](https://docs.partake.ng/list-contest-entries-39838049e0.md): Returns a paginated list of active entries for a contest, sorted by voteCount descending (leaderboard order). Excludes removed entries and hides userId/PII. Public — no authentication required. - Public Access Module > Entries Module [Get Entry Detail](https://docs.partake.ng/get-entry-detail-39838050e0.md): Returns a single active entry by ID within the specified contest. Returns 404 if the entry is removed, belongs to a different contest, or the contest is draft/cancelled. Public — no authentication required. - Public Access Module > Votes Module [Cast Free Vote](https://docs.partake.ng/cast-free-vote-39838051e0.md): Casts a free vote on the specified entry within a contest. JWT is optional — authenticated users are tracked by userId, anonymous voters are tracked by IP + User-Agent. Public — no authentication required. - Public Access Module > Contests Module [List Public Contests](https://docs.partake.ng/list-public-contests-39838052e0.md): Returns a paginated list of public contests. Excludes draft and cancelled contests. Public — no authentication required. - Public Access Module > Contests Module [Get Contest Detail](https://docs.partake.ng/get-contest-detail-39838053e0.md): Returns full detail for a single public contest including merchant name, entry count, and total vote count. Returns 404 for draft or cancelled contests. Public — no authentication required. - Public Access Module > Activity [Get Contest Activity](https://docs.partake.ng/get-contest-activity-39838054e0.md): Returns the latest activity items for a contest. Public — no authentication required. - Public Access Module > Activity [Stream Contest Activity (SSE)](https://docs.partake.ng/stream-contest-activity-sse-39838055e0.md): Opens a Server-Sent Events (SSE) stream of live contest activity. Public — no authentication required. Use a browser or SSE client; Postman can preview but will not keep the connection open indefinitely. - Terms of Service Module [Get Current ToS](https://docs.partake.ng/get-current-tos-39838056e0.md): Returns the currently active ToS version. Public. - Terms of Service Module [Get ToS History](https://docs.partake.ng/get-tos-history-39838057e0.md): Returns all published ToS versions (summary only). Public. - Terms of Service Module [Get ToS By Version](https://docs.partake.ng/get-tos-by-version-39838058e0.md): Returns full content of a specific ToS version by version number. Public. - Terms of Service Module [Accept Current ToS](https://docs.partake.ng/accept-current-tos-39838059e0.md): Record the authenticated user or merchant's acceptance of the current active ToS. Requires a valid access token. - Data Erasure Module [Submit Erasure Request](https://docs.partake.ng/submit-erasure-request-39838060e0.md): Submit a GDPR/NDPR data erasure request. Sends a confirmation email with a token link. Accessible by authenticated users and merchants. - Data Erasure Module [Confirm Erasure (Email Token)](https://docs.partake.ng/confirm-erasure-email-token-39838061e0.md): Confirm an erasure request using the token sent via email. Enqueues the data export job. Accessible by authenticated users and merchants. - Data Erasure Module [Cancel Erasure (Email Token)](https://docs.partake.ng/cancel-erasure-email-token-39838062e0.md): Cancel a pending erasure request using the cancel token sent via email. Accessible by authenticated users and merchants. - Data Erasure Module [Get Export Status](https://docs.partake.ng/get-export-status-39838063e0.md): Poll the status of the data export generation for a confirmed erasure request. Accessible by authenticated users and merchants. - Data Erasure Module [Download Data Export](https://docs.partake.ng/download-data-export-39838064e0.md): Retrieve a pre-signed download URL for the completed data export ZIP. Accessible by authenticated users and merchants. - Monitoring Module [Get Prometheus Metrics](https://docs.partake.ng/get-prometheus-metrics-39838065e0.md): Prometheus scrape endpoint. Public (no auth), served on a dedicated metrics port (default 9090), outside the /api/v1 prefix. Returns plain-text metrics in Prometheus exposition format. - [Health Check](https://docs.partake.ng/health-check-39837934e0.md): Checks liveness of PostgreSQL, MongoDB, and Redis. Returns individual status for each dependency. Public. - [API Root](https://docs.partake.ng/api-root-39837935e0.md): Returns the API welcome message and current version. Public.