{"components":{"securitySchemes":{"apiKeyAuth":{"description":"API key for external developers (higher rate limits)","in":"header","name":"X-API-Key","type":"apiKey"},"cookieAuth":{"description":"Session-based authentication","in":"cookie","name":"session","type":"apiKey"}}},"info":{"contact":{"name":"Gopnik Support","url":"https://gopnik.wallet"},"description":"Public REST API for the Gopnik XRPL NFT Wallet & Marketplace","title":"Gopnik Wallet API","version":"1.0.0"},"openapi":"3.0.3","paths":{"/health":{"get":{"description":"Returns system health with database, XRPL, and uptime status.","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"database":{"type":"string"},"status":{"type":"string"},"uptime_seconds":{"type":"number"},"xrpl":{"type":"string"}},"type":"object"}}},"description":"System healthy"}},"summary":"Health check","tags":["Health"]}},"/nft/analytics/api/export-csv":{"get":{"description":"Download trade history as CSV file.","responses":{"200":{"content":{"text/csv":{}},"description":"CSV file"}},"security":[{"cookieAuth":[]}],"summary":"Export trades CSV","tags":["Analytics"]}},"/nft/analytics/api/portfolio-history":{"get":{"description":"Historical portfolio snapshots for charting.","parameters":[{"in":"query","name":"days","schema":{"default":30,"type":"integer"}}],"responses":{"200":{"description":"Portfolio snapshots"}},"security":[{"cookieAuth":[]}],"summary":"Portfolio value history","tags":["Analytics"]}},"/nft/analytics/api/trade-history":{"get":{"description":"Paginated trade records with profit/loss summary.","parameters":[{"in":"query","name":"page","schema":{"default":1,"type":"integer"}},{"in":"query","name":"per_page","schema":{"default":25,"type":"integer"}},{"description":"Filter by NFT ID","in":"query","name":"nft_id","schema":{"type":"string"}}],"responses":{"200":{"description":"Trade records"}},"security":[{"cookieAuth":[]}],"summary":"Trade history with P&L","tags":["Analytics"]}},"/nft/arena/api/my-nfts":{"get":{"description":"Fetch NFTs owned by a given XRPL address with pagination.","parameters":[{"description":"XRPL address","in":"query","name":"address","required":true,"schema":{"type":"string"}},{"in":"query","name":"page","schema":{"default":1,"type":"integer"}},{"in":"query","name":"per_page","schema":{"default":20,"type":"integer"}}],"responses":{"200":{"description":"Paginated NFT list"}},"security":[{"cookieAuth":[]}],"summary":"List owned NFTs","tags":["NFT Arena"]}},"/nft/dashboard/api/collections":{"get":{"description":"Group user NFTs by issuer+taxon with thumbnails.","responses":{"200":{"description":"Collection list"}},"security":[{"cookieAuth":[]}],"summary":"List collections","tags":["NFT Dashboard"]}},"/nft/dashboard/api/portfolio":{"get":{"description":"Returns aggregated portfolio data with pagination.","parameters":[{"in":"query","name":"page","schema":{"default":1,"type":"integer"}},{"in":"query","name":"per_page","schema":{"default":20,"type":"integer"}}],"responses":{"200":{"description":"Portfolio data"}},"security":[{"cookieAuth":[]}],"summary":"Portfolio summary","tags":["NFT Dashboard"]}},"/nft/marketplace/api/search":{"get":{"description":"Search across NFTs, addresses, and collections.","parameters":[{"description":"Search query","in":"query","name":"q","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Categorised search results"}},"security":[{"cookieAuth":[]}],"summary":"Global search","tags":["NFT Marketplace"]}},"/nft/offers/api/counter":{"post":{"description":"Create a counter-offer for an existing offer.","requestBody":{"content":{"application/json":{"schema":{"properties":{"amount_drops":{"type":"integer"},"expiration":{"type":"integer"},"parent_offer_id":{"type":"integer"}},"type":"object"}}}},"responses":{"201":{"description":"Counter-offer created"}},"security":[{"cookieAuth":[]}],"summary":"Counter-offer","tags":["Offers"]}},"/nft/offers/api/my-offers":{"get":{"description":"Paginated list of user's NFT offers.","parameters":[{"in":"query","name":"status","schema":{"enum":["all","open","accepted","cancelled","countered"],"type":"string"}}],"responses":{"200":{"description":"Offer list"}},"security":[{"cookieAuth":[]}],"summary":"List my offers","tags":["Offers"]}},"/nft/watchlist/api/alerts":{"get":{"description":"User's price alert rules.","responses":{"200":{"description":"Alert list"}},"security":[{"cookieAuth":[]}],"summary":"List price alerts","tags":["Watchlist"]}},"/nft/watchlist/api/items":{"get":{"description":"User's watchlisted NFTs and collections.","responses":{"200":{"description":"Watchlist items"}},"security":[{"cookieAuth":[]}],"summary":"List watchlist","tags":["Watchlist"]}},"/notifications/api/list":{"get":{"description":"Paginated notifications with unread count.","parameters":[{"in":"query","name":"page","schema":{"default":1,"type":"integer"}},{"in":"query","name":"unread_only","schema":{"enum":["true","false"],"type":"string"}}],"responses":{"200":{"description":"Notification list"}},"security":[{"cookieAuth":[]}],"summary":"List notifications","tags":["Notifications"]}},"/trading-feed/api/comment":{"post":{"description":"Comment on a feed item.","requestBody":{"content":{"application/json":{"schema":{"properties":{"activity_id":{"type":"integer"},"content":{"maxLength":500,"type":"string"}},"type":"object"}}}},"responses":{"201":{"description":"Comment created"}},"security":[{"cookieAuth":[]}],"summary":"Add comment","tags":["Trading Feed"]}},"/trading-feed/api/feed":{"get":{"description":"Paginated feed of marketplace activity.","parameters":[{"in":"query","name":"page","schema":{"default":1,"type":"integer"}},{"in":"query","name":"per_page","schema":{"default":20,"type":"integer"}},{"in":"query","name":"filter","schema":{"enum":["all","following","trades","listings","burns"],"type":"string"}},{"description":"Only return items newer than this ID","in":"query","name":"since_id","schema":{"type":"integer"}}],"responses":{"200":{"description":"Feed items"}},"security":[{"cookieAuth":[]}],"summary":"Get trading feed","tags":["Trading Feed"]}},"/trading-feed/api/like":{"post":{"description":"Like or unlike a feed item.","requestBody":{"content":{"application/json":{"schema":{"properties":{"activity_id":{"type":"integer"}},"type":"object"}}}},"responses":{"200":{"description":"Like toggled"}},"security":[{"cookieAuth":[]}],"summary":"Toggle like","tags":["Trading Feed"]}}},"servers":[{"description":"Current instance","url":"/"}],"tags":[{"description":"NFT trading hub endpoints","name":"NFT Arena"},{"description":"Portfolio and collection endpoints","name":"NFT Dashboard"},{"description":"Marketplace search and listings","name":"NFT Marketplace"},{"description":"Social trading feed","name":"Trading Feed"},{"description":"Portfolio analytics and trade history","name":"Analytics"},{"description":"Offer management (create, counter, accept)","name":"Offers"},{"description":"Watchlist and price alerts","name":"Watchlist"},{"description":"NFT metadata editor","name":"Metadata"},{"description":"Notification management","name":"Notifications"},{"description":"System health check","name":"Health"}]}
