openapi: 3.1.0 info: title: Jabbercracky API description: Core API for the Jabbercracky project. version: 1.5.1 contact: name: John Jabbercracky email: contact@jabbercracky.com servers: - url: https://jabbercracky.com paths: /api/ping: get: summary: Returns the status of the server. description: This endpoint is used to check the health status of the server. It returns a simple message indicating that the server is running. tags: - Unauthenticated responses: '200': description: Successful response content: application/json: schema: type: object properties: authenticated: type: string examples: - value: "true" message: type: string examples: - value: "pong" server_time: type: string format: date-time examples: - value: "2025-01-29T21:28:20Z" user: type: string examples: - value: "your-username" /api/login: post: summary: User login description: Authenticates a user and returns a JWT token. tags: - Unauthenticated requestBody: required: true content: application/json: schema: type: object properties: username: type: string examples: - value: "your-username" password: type: string examples: - value: "your-password" responses: '200': description: Login successful content: application/json: schema: type: object properties: token: type: string examples: - value: "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ..." /api/register: post: summary: User registration description: Registers a new user. tags: - Unauthenticated requestBody: required: true content: application/json: schema: type: object properties: username: type: string examples: - value: "your-username" password: type: string examples: - value: "your-password" responses: '200': description: Registration successful content: application/json: schema: type: object properties: PasswordResetCode: type: string examples: - value: "your-password-reset-code" message: type: string examples: - value: "Registration successful" /api/login/reset: post: summary: Reset password description: Resets the password for an existing user. tags: - Unauthenticated requestBody: required: true content: application/json: schema: type: object properties: username: type: string examples: - value: "your-username" password_reset_code: type: string examples: - value: "your-password-reset-code" new_password: type: string examples: - value: "your-new-password" responses: '200': description: Password reset successful content: application/json: schema: type: object properties: PasswordResetCode: type: string examples: - value: "your-new-password-reset-code" message: type: string examples: - value: "Password reset successful" /api/game: get: summary: Get game details description: Retrieves game details. tags: - Unauthenticated - Game responses: '200': description: Game details retrieved successfully content: application/json: schema: type: object properties: config: type: object properties: game_active: type: boolean examples: - value: false time_remaining: type: string examples: - value: "357h6m31.641986056s" total_cracked: type: integer examples: - value: 400000 total_players: type: integer examples: - value: 5 total_items: type: integer examples: - value: 543 total_rare_items: type: integer examples: - value: 412 total_legendary_items: type: integer examples: - value: 112 total_mythical_items: type: integer examples: - value: 19 total_foretold_items: type: integer examples: - value: 0 total_ancient_items: type: integer examples: - value: 0 total_omniscient_items: type: integer examples: - value: 0 total_transcendent_items: type: integer examples: - value: 0 total_score: type: number examples: - value: 803246.17 casual_leaderboard: type: array items: type: object properties: username: type: string examples: - value: "your-username" total_cracked: type: integer examples: - value: 200000 total_casual_unique_cracked: type: integer examples: - value: 1000 total_competitive_unique_cracked: type: integer examples: - value: 500 score: type: number examples: - value: 401623.08 item_count: type: integer examples: - value: 1 visible_item: type: object properties: item_id: type: string examples: - value: "d6c0b2ee-2deb-4c0a-84a6-e51ae3a00045" item_name: type: string examples: - value: "Festive Chalice of PXE Booting" item_rarity: type: string examples: - value: "mythical" item_attribute: type: string examples: - value: "none" do_not_sell: type: boolean examples: - value: false color: type: string examples: - value: "#FF5733" date_obtained: type: string examples: - value: "2025-01-26 03:36:58" has_won_competitive_event: type: boolean examples: - value: false has_placed_competitive_event: type: boolean examples: - value: false has_won_casual_event: type: boolean examples: - value: false has_placed_casual_event: type: boolean examples: - value: false has_won_season: type: boolean examples: - value: false has_placed_season: type: boolean examples: - value: false competitive_leaderboard: type: array items: type: object properties: username: type: string examples: - value: "your-username" total_cracked: type: integer examples: - value: 200000 total_casual_unique_cracked: type: integer examples: - value: 1000 total_competitive_unique_cracked: type: integer examples: - value: 500 score: type: number examples: - value: 401623.08 item_count: type: integer examples: - value: 1 visible_item: type: object properties: item_id: type: string examples: - value: "d6c0b2ee-2deb-4c0a-84a6-e51ae3a00045" item_name: type: string examples: - value: "Festive Chalice of PXE Booting" item_rarity: type: string examples: - value: "mythical" item_attribute: type: string examples: - value: "none" do_not_sell: type: boolean examples: - value: false color: type: string examples: - value: "#FF5733" date_obtained: type: string examples: - value: "2025-01-26 03:36:58" has_won_competitive_event: type: boolean examples: - value: false has_placed_competitive_event: type: boolean examples: - value: false has_won_casual_event: type: boolean examples: - value: false has_placed_casual_event: type: boolean examples: - value: false has_won_season: type: boolean examples: - value: false has_placed_season: type: boolean examples: - value: false total_gold: type: integer examples: - value: 14 message: type: string examples: - value: "success" /api/game/leaderboard: get: summary: Get leaderboard description: Retrieves the leaderboard. tags: - Authenticated - Game responses: '200': description: Leaderboard retrieved successfully content: application/json: schema: type: object properties: message: type: string examples: - value: "success" casual_users: type: array items: type: object properties: username: type: string examples: - value: "your-username" total_cracked: type: integer examples: - value: 200000 total_casual_unique_cracked: type: integer examples: - value: 1000 total_competitive_unique_cracked: type: integer examples: - value: 500 score: type: number examples: - value: 401623.08 item_count: type: integer examples: - value: 1 visible_item: type: object properties: item_id: type: string examples: - value: "d6c0b2ee-2deb-4c0a-84a6-e51ae3a00045" item_name: type: string examples: - value: "Festive Chalice of PXE Booting" item_rarity: type: string examples: - value: "mythical" item_attribute: type: string examples: - value: "none" do_not_sell: type: boolean examples: - value: false color: type: string examples: - value: "#FF5733" date_obtained: type: string examples: - value: "2025-01-26 03:36:58" has_won_competitive_event: type: boolean examples: - value: false has_placed_competitive_event: type: boolean examples: - value: false has_won_casual_event: type: boolean examples: - value: false has_placed_casual_event: type: boolean examples: - value: false has_won_season: type: boolean examples: - value: false has_placed_season: type: boolean examples: - value: false competitive_users: type: array items: type: object properties: username: type: string examples: - value: "your-username" total_cracked: type: integer examples: - value: 200000 total_casual_unique_cracked: type: integer examples: - value: 1000 total_competitive_unique_cracked: type: integer examples: - value: 500 score: type: number examples: - value: 401623.08 item_count: type: integer examples: - value: 1 visible_item: type: object properties: item_id: type: string examples: - value: "d6c0b2ee-2deb-4c0a-84a6-e51ae3a00045" item_name: type: string examples: - value: "Festive Chalice of PXE Booting" item_rarity: type: string examples: - value: "mythical" item_attribute: type: string examples: - value: "none" do_not_sell: type: boolean examples: - value: false color: type: string examples: - value: "#FF5733" date_obtained: type: string examples: - value: "2025-01-26 03:36:58" has_won_competitive_event: type: boolean examples: - value: false has_placed_competitive_event: type: boolean examples: - value: false has_won_casual_event: type: boolean examples: - value: false has_won_season: type: boolean examples: - value: false has_placed_season: type: boolean examples: - value: false /api/game/leaderboard/log: get: summary: Get game session log description: Retrieves the game session state log. tags: - Unauthenticated - Game responses: '200': description: Game session log retrieved successfully content: application/json: schema: type: object properties: log: type: array items: type: object properties: current_time: type: string format: date-time examples: - value: "2025-01-26T03:30:38Z" time_remaining: type: string examples: - value: "447h29m26.95479424s" total_cracked: type: integer examples: - value: 0 total_items: type: integer examples: - value: 0 total_rare_items: type: integer examples: - value: 0 total_legendary_items: type: integer examples: - value: 0 total_mythical_items: type: integer examples: - value: 0 total_foretold_items: type: integer examples: - value: 0 total_ancient_items: type: integer examples: - value: 0 total_omniscient_items: type: integer examples: - value: 0 total_transcendent_items: type: integer examples: - value: 0 total_score: type: number examples: - value: 0 total_gold: type: integer examples: - value: 0 leaderboard: type: array items: type: object properties: username: type: string examples: - value: "your-username" total_cracked: type: integer examples: - value: 200000 total_casual_unique_cracked: type: integer examples: - value: 1000 total_competitive_unique_cracked: type: integer examples: - value: 500 score: type: number examples: - value: 401623.08 item_count: type: integer examples: - value: 537 level: type: integer examples: - value: 0 visible_item: type: object properties: item_name: type: string examples: - value: "Ticklish Rat Mace of Copious Amounts of Coffee" item_rarity: type: string examples: - value: "legendary" item_attribute: type: string examples: - value: "none" do_not_sell: type: boolean examples: - value: false color: type: string examples: - value: "#FF5733" date_obtained: type: string examples: - value: "2025-01-26 03:42:55" has_won: type: boolean examples: - value: false has_placed: type: boolean examples: - value: false has_won_season: type: boolean examples: - value: false has_placed_season: type: boolean examples: - value: false competitive_leaderboard: type: array items: type: object properties: username: type: string examples: - value: "your-username" total_cracked: type: integer examples: - value: 200000 total_casual_unique_cracked: type: integer examples: - value: 1000 total_competitive_unique_cracked: type: integer examples: - value: 500 score: type: number examples: - value: 401623.08 item_count: type: integer examples: - value: 537 level: type: integer examples: - value: 0 visible_item: type: object properties: item_name: type: string examples: - value: "Ticklish Rat Mace of Copious Amounts of Coffee" item_rarity: type: string examples: - value: "legendary" item_attribute: type: string examples: - value: "none" do_not_sell: type: boolean examples: - value: false color: type: string examples: - value: "#FF5733" date_obtained: type: string examples: - value: "2025-01-26 03:42:55" has_won: type: boolean examples: - value: false has_placed: type: boolean examples: - value: false has_won_season: type: boolean examples: - value: false has_placed_season: type: boolean examples: - value: false message: type: string examples: - value: "success" /api/game/announcements: get: summary: Get announcements description: Retrieves announcements. tags: - Authenticated - Game responses: '200': description: Announcements retrieved successfully content: application/json: schema: type: object properties: announcements: type: object properties: announcement_log: type: array items: type: object properties: announcement_time: type: string format: date-time examples: - value: "2025-01-26T03:30:33Z" announcement_message: type: string examples: - value: "your announcement message" message: type: string examples: - value: "success" /api/game/hashlist: get: summary: Get hash lists description: Retrieves the list of available hash lists. tags: - Authenticated - Game responses: '200': description: Hash lists retrieved successfully content: application/json: schema: type: object properties: hash_lists: type: array items: type: object properties: hash_list_id: type: integer examples: - value: 1 hash_list_name: type: string examples: - value: "SpookySc4ry-01" message: type: string examples: - value: "success" /api/game/hashlist/{hashlistid}: get: summary: Get hash list description: Retrieves the hash list specified by hashlistid. tags: - Authenticated - Game parameters: - name: hashlistid in: path required: true schema: type: string responses: '200': description: Hash list retrieved successfully content: application/json: schema: type: object properties: hash_list: type: array items: type: string examples: - value: "5d41402abc4b2a76b9719d911017c592" - value: "bc934e0ed9ac13a76e5b9d0590932c6e" - value: "cafd1eaf9f03752bd6320f05ab039a39" message: type: string examples: - value: "success" text/plain: schema: type: string examples: example-success: value: | 5d41402abc4b2a76b9719d911017c592 bc934e0ed9ac13a76e5b9d0590932c6e cafd1eaf9f03752bd6320f05ab039a39 /api/game/hashlist/found/{hashlistid}: get: summary: Get found hashes description: Retrieves the list of found hashes for the specified hashlistid. tags: - Authenticated - Game parameters: - name: hashlistid in: path required: true schema: type: string responses: '200': description: Found hashes retrieved successfully content: application/json: schema: type: object properties: found_hashes: type: array items: type: string examples: - value: "5d41402abc4b2a76b9719d911017c592" - value: "bc934e0ed9ac13a76e5b9d0590932c6e" - value: "cafd1eaf9f03752bd6320f05ab039a39" message: type: string examples: - value: "success" text/plain: schema: type: string examples: example-success: value: | 5d41402abc4b2a76b9719d911017c592 bc934e0ed9ac13a76e5b9d0590932c6e cafd1eaf9f03752bd6320f05ab039a39 /api/game/submit/{hashlistid}: post: summary: Submit game data description: Submit game data identified by hashlistid. tags: - Authenticated - Game parameters: - name: hashlistid in: path required: true schema: type: string requestBody: required: true content: multipart/form-data: schema: type: object properties: file: type: string format: binary description: The file containing HASH:PLAIN game data to be submitted. examples: - file: "sample_hashes.txt" application/json: schema: type: object properties: hashes: type: array items: type: string examples: - value: hashes: ["HASH:PLAIN"] responses: '200': description: Successful submission content: application/json: schema: type: object properties: submission_uid: type: string examples: - value: "3fa5cc74-bbf3-46b2-bd92-09754ed04300" hash_list_id: type: string examples: - value: "1" username: type: string examples: - value: "berryt3st" found_count: type: integer examples: - value: 1 added_score: type: number examples: - value: 2.35 new_items: type: array items: type: string examples: - value: [] total_item_count: type: integer examples: - value: 0 date_submitted: type: string format: date-time examples: - value: "2024-12-01T01:01:49Z" /api/user: get: summary: Get user details description: Retrieves user details. tags: - Authenticated - User responses: '200': description: Successful retrieval content: application/json: schema: type: object properties: enabled: type: boolean examples: - value: true gold: type: integer examples: - value: 14 item_count: type: integer examples: - value: 1 message: type: string examples: - value: "success" casual_score: type: number examples: - value: 401623.08 competitive_score: type: number examples: - value: 401623.08 total_casual_cracked: type: integer examples: - value: 200000 total_competitive_cracked: type: integer examples: - value: 200000 username: type: string examples: - value: "your-username" visible_item: type: object properties: item_id: type: string examples: - value: "d6c0b2ee-2deb-4c0a-84a6-e51ae3a00045" item_name: type: string examples: - value: "Festive Chalice of PXE Booting" item_rarity: type: string examples: - value: "mythical" item_attribute: type: string examples: - value: "none" do_not_sell: type: boolean examples: - value: false color: type: string examples: - value: "#FF5733" date_obtained: type: string examples: - value: "2025-01-26 03:36:58" has_won_competitive_event: type: boolean examples: - value: false has_placed_competitive_event: type: boolean examples: - value: false has_won_casual_event: type: boolean examples: - value: false has_placed_casual_event: type: boolean examples: - value: false has_won_season: type: boolean examples: - value: false has_placed_season: type: boolean examples: - value: false /api/user/{username}: get: summary: Get user by username description: Retrieves user details by username. tags: - Authenticated - User parameters: - name: username in: path required: true schema: type: string responses: '200': description: Successful retrieval content: application/json: schema: type: object properties: enabled: type: boolean examples: - value: true gold: type: integer examples: - value: 14 item_count: type: integer examples: - value: 1 message: type: string examples: - value: "success" casual_score: type: number examples: - value: 401623.08 competitive_score: type: number examples: - value: 401623.08 total_casual_cracked: type: integer examples: - value: 200000 total_competitive_cracked: type: integer examples: - value: 200000 username: type: string examples: - value: "your-username" visible_item: type: object properties: item_id: type: string examples: - value: "d6c0b2ee-2deb-4c0a-84a6-e51ae3a00045" item_name: type: string examples: - value: "Festive Chalice of PXE Booting" item_rarity: type: string examples: - value: "mythical" item_attribute: type: string examples: - value: "none" do_not_sell: type: boolean examples: - value: false color: type: string examples: - value: "#FF5733" date_obtained: type: string examples: - value: "2025-01-26 03:36:58" has_won_competitive_event: type: boolean examples: - value: false has_placed_competitive_event: type: boolean examples: - value: false has_won_casual_event: type: boolean examples: - value: false has_placed_casual_event: type: boolean examples: - value: false has_won_season: type: boolean examples: - value: false has_placed_season: type: boolean examples: - value: false /api/user/submissions: get: summary: Get user submissions description: Retrieves a list of user submissions. tags: - Authenticated - User responses: '200': description: Submissions retrieved successfully content: application/json: schema: type: object properties: events: type: array items: type: object properties: submission_uid: type: string examples: - value: "3dabbf41-11d5-4b06-9138-ed38388a8517" hash_list_id: type: string examples: - value: "1" username: type: string examples: - value: "your-username" found_count: type: integer examples: - value: 10 added_score: type: number examples: - value: 20.081154187739436 new_items: type: array items: type: string examples: - value: [] total_item_count: type: integer examples: - value: 0 date_submitted: type: string format: date-time examples: - value: "2025-01-29T22:24:10Z" message: type: string examples: - value: "success" /api/user/wield: post: summary: Wield an item description: Endpoint to wield an item. tags: - Authenticated - User requestBody: required: true content: application/json: schema: type: object properties: item_id: type: string examples: - value: "d6c0b2ee-2deb-4c0a-84a6-e51ae3a00045" item_name: type: string examples: - value: "The Bcrypt Breaker's Ashen Laser Sword" item_rarity: type: string examples: - value: "mythical" item_attribute: type: string examples: - value: "none" do_not_sell: type: boolean examples: - value: false color: type: string examples: - value: "#FF5733" date_obtained: type: string examples: - value: "2025-01-29 22:29:50" responses: '200': description: Item wielded successfully content: application/json: schema: type: object properties: item: type: object properties: item_id: type: string examples: - value: "d6c0b2ee-2deb-4c0a-84a6-e51ae3a00045" item_name: type: string examples: - value: "The Bcrypt Breaker's Ashen Laser Sword" item_rarity: type: string examples: - value: "mythical" item_attribute: type: string examples: - value: "none" do_not_sell: type: boolean examples: - value: false color: type: string examples: - value: "#FF5733" date_obtained: type: string examples: - value: "2025-01-29 22:29:50" message: type: string examples: - value: "success" /api/user/unwield: delete: summary: Unwield an item description: Endpoint to unwield an item. tags: - Authenticated - User responses: '200': description: Item unwielded successfully content: application/json: schema: type: object properties: item: type: object properties: item_id: type: string examples: - value: "d6c0b2ee-2deb-4c0a-84a6-e51ae3a00045" item_name: type: string examples: - value: "" item_rarity: type: string examples: - value: "" item_attribute: type: string examples: - value: "" do_not_sell: type: boolean examples: - value: false color: type: string examples: - value: "" date_obtained: type: string examples: - value: "" message: type: string examples: - value: "success" /api/user/items: get: summary: Get items description: Retrieves a list of items. tags: - Authenticated - User responses: '200': description: Items retrieved successfully content: application/json: schema: type: object properties: items: type: array items: type: object properties: item_id: type: string examples: - value: "d6c0b2ee-2deb-4c0a-84a6-e51ae3a00045" item_name: type: string examples: - value: "The Bcrypt Breaker's Ashen Laser Sword" item_rarity: type: string examples: - value: "mythical" item_attribute: type: string examples: - value: "none" do_not_sell: type: boolean examples: - value: false color: type: string examples: - value: "#FF5733" date_obtained: type: string examples: - value: "2025-01-29 22:29:50" message: type: string examples: - value: "success" /api/user/item: put: summary: Update user item description: Updates an item's no sell status for the user. tags: - Authenticated - User requestBody: required: true content: application/json: schema: type: object properties: item_id: type: string examples: - value: "d6c0b2ee-2deb-4c0a-84a6-e51ae3a00045" item_name: type: string examples: - value: "Weirdly-Smelling Spell Book of Mythical Truths" item_rarity: type: string examples: - value: "legendary" item_attribute: type: string examples: - value: "none" do_not_sell: type: boolean examples: - value: true color: type: string examples: - value: "#FF5733" date_obtained: type: string examples: - value: "2025-03-15 21:33:25" responses: '200': description: Item updated successfully content: application/json: schema: type: object properties: message: type: string examples: - value: "success" /api/user/delete: delete: summary: Delete user account description: Deletes the account of the currently authenticated user. tags: - Authenticated - User responses: '200': description: Account deleted successfully content: application/json: schema: type: object properties: message: type: string examples: - value: "Account deleted successfully" /api/user/uid: get: summary: Get user UID description: Returns the user's UID. tags: - Authenticated - User responses: '200': description: UID retrieved successfully content: application/json: schema: type: object properties: message: type: string examples: - value: "success" uid: type: string examples: - value: "user-uid-example" /api/user/uid/auth: get: summary: Check UID authentication status description: Returns whether the user is using UID authentication or not. tags: - Authenticated - User responses: '200': description: UID authentication status retrieved successfully content: application/json: schema: type: object properties: message: type: string examples: - value: "success" uid_auth: type: boolean examples: - value: true post: summary: Update user UID authentication settings description: Updates the user's UID authentication settings. tags: - Authenticated requestBody: required: true content: application/json: schema: type: object properties: uid_auth: type: boolean examples: - value: true responses: '200': description: User settings updated successfully content: application/json: schema: type: object properties: message: type: string examples: - value: "success" username: type: string examples: - value: "username-example" /api/user/admin/disable: post: summary: Disable user description: Disables a user. tags: - Authenticated - Administrator requestBody: required: true content: application/json: schema: type: object properties: username: type: string examples: - value: "Cherry" responses: '200': description: User disabled successfully content: application/json: schema: type: object properties: message: type: string examples: - value: "success" username: type: string examples: - value: "Cherry" /api/user/admin/enable: post: summary: Enable user description: Enables a user. tags: - Authenticated - Administrator requestBody: required: true content: application/json: schema: type: object properties: username: type: string examples: - value: "Cherry" responses: '200': description: User enabled successfully content: application/json: schema: type: object properties: message: type: string examples: - value: "success" username: type: string examples: - value: "Cherry" /api/user/admin/delete: post: summary: Delete user description: Deletes a user. tags: - Authenticated - Administrator requestBody: required: true content: application/json: schema: type: object properties: username: type: string examples: - value: "Cherry" responses: '200': description: User deleted successfully content: application/json: schema: type: object properties: message: type: string examples: - value: "success" username: type: string examples: - value: "Cherry" /api/user/admin/flair: post: summary: Mark user as having won or placed in a competition description: Marks a user as having played in a competition. Admin-only operation. tags: - Authenticated - Administrator requestBody: required: true content: application/json: schema: type: object properties: username: type: string examples: - value: "Apollo" type: type: string enum: [HasWon, HasPlaced] examples: - value: "HasWon" responses: '200': description: User marked as having placed in a competition content: application/json: schema: type: object properties: message: type: string examples: - value: "success" username: type: string examples: - value: "Apollo" /api/user/admin/game/download: get: summary: Download game backup description: Returns a zip file of the game backup. tags: - Authenticated - Administrator responses: '200': description: Zip file of the game backup content: application/zip: schema: type: string format: binary /api/user/items/sell: post: summary: Sell an item description: Endpoint to sell an item. tags: - Authenticated - User requestBody: required: true content: application/json: schema: type: object properties: items: type: array items: type: object properties: item_id: type: string examples: - value: "d6c0b2ee-2deb-4c0a-84a6-e51ae3a00045" item_name: type: string examples: - value: "Gluten-Free Catfish of Key Exchange Protocols" item_rarity: type: string examples: - value: "mythical" item_attribute: type: string examples: - value: "none" do_not_sell: type: boolean examples: - value: false color: type: string examples: - value: "#FF5733" date_obtained: type: string examples: - value: "2025-01-29 22:29:50" responses: '200': description: Item sold successfully content: application/json: schema: type: object properties: gold: type: integer examples: - value: 100 message: type: string examples: - value: "success" /api/admin/logs: get: summary: Get admin logs description: Retrieves admin logs. tags: - Authenticated - Administrator responses: '200': description: Admin logs retrieved successfully content: application/json: schema: type: object properties: entries: type: array items: type: object properties: id: type: string examples: - value: "31f39cd1-445a-4860-8bc6-1e61ebd91b72" time: type: string format: date-time examples: - value: "2025-01-29T21:51:45Z" first_seen: type: string examples: - value: "2025-01-29T21:51:45Z" times_seen: type: integer examples: - value: 1 severity: type: string examples: - value: "Low" authenticated: type: boolean examples: - value: false username: type: string examples: - value: "berry24444" type: type: string examples: - value: "Authentication Success" event: type: string examples: - value: "Password Reset" function: type: string examples: - value: "auth.ResetPasswordHandler()" message: type: string examples: - value: "Password reset for user berry24444." message: type: string examples: - value: "success" /api/user/progress: get: summary: Get user progress description: Retrieves user progress. tags: - Authenticated - User responses: '200': description: Successful retrieval content: application/json: schema: type: object properties: message: type: string examples: - value: "success" point_per_crack: type: number examples: - value: 1.05 progress: type: object properties: hash_list_progress: type: array items: type: object properties: hash_list_id: type: integer examples: - value: 1 total_cracked: type: integer examples: - value: 166818 total_remaining: type: integer examples: - value: 33182 points_remaining: type: string examples: - value: "66633.29" user_cracked_percent: type: string examples: - value: "83.41%" average_cracked_percent: type: string examples: - value: "83.41%" /api/user/items/oracle: get: summary: Get oracle data description: Returns the user's oracle data including fatigue charges, last use time, hint, and cost. tags: - Authenticated - User responses: '200': description: Successful retrieval content: application/json: schema: type: object properties: message: type: string examples: - value: "success" oracle: type: object properties: fatigue_charges: type: integer examples: - value: 0 last_use_time: type: string format: date-time examples: - value: "2025-01-26T03:30:38Z" hint: type: string examples: - value: "your hint" cost: type: integer examples: - value: 450 post: summary: Use oracle description: Submits gold to the oracle to receive a random unfound hash from the requested hash list ID. tags: - Authenticated - User requestBody: required: true content: application/json: schema: type: object properties: hash_list_id: type: integer examples: - value: 1 responses: '200': description: Oracle used successfully content: application/json: schema: type: object properties: message: type: string examples: - value: "success" hint: type: string examples: - value: "your hint" cost: type: integer examples: - value: 1125 /api/user/analyze/{hashlistid}: get: summary: Analyze user data description: Analyzes user data identified by hashlistid. tags: - Authenticated - User parameters: - name: hashlistid in: path required: true schema: type: string responses: '200': description: Analysis successful content: application/json: schema: type: object properties: analysis: type: object properties: total_cracked: type: integer examples: - value: 4 length_min: type: integer examples: - value: 15 length_q1: type: integer examples: - value: 15 length_median: type: integer examples: - value: 15 length_q3: type: integer examples: - value: 22 length_max: type: integer examples: - value: 22 top_masks: type: array items: type: string examples: - value: ["?l?l?l?l?l?l?l?l?l?l?l?l?s?d?d", "?l?l?l?l?l?l?l?l?l?l?l?d?d?d?d", "?l?l?l?l?l?l?l?l?l?l?l?l?l?d?d?d?d?d?d?d?d"] top_words: type: array items: type: string examples: - value: ["keepsusyoung", "onceuponatime", "ifyouarehere", "powerranger"] top_alpha_hybrid_masks: type: array items: type: string examples: - value: ["powerranger?d?d?d?d", "keepsusyoung?s?d?d", "onceuponatime?d?d?d?d?d?d?d?d?d", "ifyouarehere?s?d?d"] top_digit_hybrid_masks: type: array items: type: string examples: - value: ["?l?l?l?l?l?l?l?l?l?l?l6825", "?l?l?l?l?l?l?l?l?l?l?l?l.18", "?l?l?l?l?l?l?l?l?l?l?l?l?l012343210", "?l?l?l?l?l?l?l?l?l?l?l?l.00"] total_unique_hashes: type: integer examples: - value: 4 unique_hashes: type: array items: type: string examples: - value: ["keepsusyoung", "onceuponatime", "ifyouarehere", "powerranger"] message: type: string examples: - value: "success" /api/user/admin/generate/{n}: post: summary: Generate plaintext list description: Generates a new plaintext list using two uploaded files and a specified number of items. tags: - Authenticated - Administrator parameters: - name: n in: path required: true schema: type: integer description: Number of plaintext items to generate. requestBody: required: true content: multipart/form-data: schema: type: object properties: file1: type: string format: binary description: The base material file. file2: type: string format: binary description: The meta material file. examples: example-1: value: file1: "example_base.txt" file2: "example_meta.txt" responses: '200': description: List generated successfully content: application/json: schema: type: object properties: message: type: string examples: - value: "success" generated_list: type: array items: type: string examples: - value: ["plaintext1", "plaintext2", "plaintext3"] /api/user/admin/generate: get: summary: Retrieve the latest generated plaintext list description: Retrieves the last generated plaintext list from the system. tags: - Authenticated - Administrator responses: '200': description: Successfully retrieved the latest generated list content: text/plain: schema: type: string description: The contents of the latest generated plaintext list, returned as plain text. examples: example-1: value: | plaintext1 plaintext2 plaintext3 /api/user/admin/generate/hashlist: post: summary: Generate a hash list description: | Generates a hash list by hashing each line in the file using the specified algorithm. tags: - Authenticated - Administrator requestBody: required: true content: multipart/form-data: schema: type: object properties: file: type: string format: binary description: | A plaintext file where each line represents a value to be hashed. algorithm: type: string description: | Specifies the hash algorithm to use. examples: example-md5: value: file: "plaintext_list.txt" algorithm: "md5" example-sha256: value: file: "plaintext_list.txt" algorithm: "sha256" responses: '200': description: Successfully generated the hash list content: text/plain: schema: type: string description: | A plain text response containing the generated hashes, one hash per line. examples: example-success: value: | 5d41402abc4b2a76b9719d911017c592 bc934e0ed9ac13a76e5b9d0590932c6e cafd1eaf9f03752bd6320f05ab039a39