-
Notifications
You must be signed in to change notification settings - Fork 6
Description
We need to implement a comprehensive API endpoint to retrieve donations data with flexible filtering, sorting, and pagination capabilities. This will support various use cases including donation history, campaign analytics, user dashboards, and administrative reporting.
User Stories
As a campaign creator, I want to view all donations made to my campaigns so I can track fundraising progress and thank supporters
As a donor, I want to see my donation history across all campaigns so I can track my contributions
As an admin, I want to access comprehensive donation data for reporting and analytics purposes
As a public user, I want to see anonymized donation statistics for transparency
API Endpoints
Primary: GET /api/v1/donations - Retrieve all donations (admin only)
Campaign Donations: GET /api/v1/campaigns/{campaign_id}/donations
User Donations: GET /api/v1/users/{user_id}/donations
My Donations: GET /api/v1/users/me/donations
Core Features
Pagination: Support for page-based pagination with configurable page sizes
Sorting: Multiple sort options (date, amount, campaign, donor)
Filtering: Advanced filtering by date range, amount range, status, campaign, donor
Search: Text search across campaign names and descriptions
Aggregation: Summary statistics (total amount, donor count, averages)
Query Parameters Support
Pagination: page, limit, sort_by, sort_order
Date filtering: from_date, to_date
Amount filtering: min_amount, max_amount
Entity filtering: campaign_id, donor_id, donation_token
Status filtering: status, confirmed
Search: search parameter for text matching
Response Data Structure
Each donation should include:
Transaction details (hash, block number, gas fee)
Campaign information (ID, reference, title)
Donor information (ID, address, name - respecting privacy settings)
Amount details (raw amount, USD equivalent, token information)
Status and confirmation data
Timestamps (created, confirmed)
Optional message and anonymity flags