Overview
Auction Excellence uses Supabase’s auto-generated REST API (PostgREST) for data access. All endpoints support CRUD operations with powerful filtering, sorting, and pagination capabilities.
RESTful Design Standard HTTP methods (GET, POST, PATCH, DELETE)
PostgREST Syntax Advanced filtering, embedding, and aggregation
RLS Protected All requests filtered by Row Level Security
Real-time Ready Subscribe to changes via WebSocket
Base URL
https://your-project.supabase.co/rest/v1/
All endpoints require authentication headers:
curl -X GET 'https://your-project.supabase.co/rest/v1/locations' \
-H "apikey: YOUR_ANON_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json"
Success Response
[
{
"id" : "uuid" ,
"created_at" : "2025-01-15T10:30:00Z" ,
...
}
]
Single Record Response
Add Prefer: return=representation header to get the created/updated record:
curl -X POST '...' \
-H "Prefer: return=representation"
Error Response
{
"code" : "PGRST116" ,
"details" : null ,
"hint" : null ,
"message" : "The result contains 0 rows"
}
Request record count with Prefer: count=exact:
curl -X GET '...' \
-H "Prefer: count=exact"
# Response headers include: Content-Range: 0-24/100
Common Query Parameters
Filtering
Operator Syntax Example Equals eq.value?status=eq.openNot equals neq.value?status=neq.closedGreater than gt.value?car_count=gt.10Less than lt.value?car_count=lt.100Greater or equal gte.value?created_at=gte.2025-01-01Less or equal lte.value?submitted_at=lte.2025-01-31Like (case sensitive) like.pattern?name=like.*North*ILike (case insensitive) ilike.pattern?name=ilike.*north*Is null is.null?parent_message_id=is.nullIs not null not.is.null?image_url=not.is.nullIn list in.(a,b,c)?status=in.(open,in_progress)
Ordering
?order=column.asc
?order=column.desc
?order=column1.asc,column2.desc
?offset=0&limit=25 # First page
?offset=25&limit=25 # Second page
Or use range headers:
curl -X GET '...' \
-H "Range: 0-24" # First 25 records
Column Selection
?select=id,name,created_at
?select=* # All columns (default)
?select=*,locations(*) # Include related locations
?select=*,user:users(full_name) # Renamed relation with specific columns
Auctions
Manage multi-tenant organizations.
List Auctions
Get Auction
Create Auction
Update Auction
GET /auctionsGet all auctions the user belongs to. curl -X GET 'https://your-project.supabase.co/rest/v1/auctions?select=*' \
-H "apikey: YOUR_ANON_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
Response: [
{
"id" : "abc123-uuid" ,
"name" : "Main Auto Auction" ,
"slug" : "main-auto" ,
"is_active" : true ,
"subscription_tier" : "pro" ,
"settings" : {},
"created_at" : "2025-01-01T00:00:00Z" ,
"updated_at" : "2025-01-15T10:30:00Z"
}
]
GET /auctions?id=eq.{auction_id}Get a specific auction by ID. curl -X GET 'https://your-project.supabase.co/rest/v1/auctions?id=eq.abc123-uuid&select=*,auction_branding(*)' \
-H "apikey: YOUR_ANON_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
POST /auctionsCreate a new auction (owner role assigned automatically). curl -X POST 'https://your-project.supabase.co/rest/v1/auctions' \
-H "apikey: YOUR_ANON_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-H "Prefer: return=representation" \
-d '{
"name": "New Auto Auction",
"slug": "new-auto"
}'
PATCH /auctions?id=eq.{auction_id}Update auction settings (admin+ required). curl -X PATCH 'https://your-project.supabase.co/rest/v1/auctions?id=eq.abc123-uuid' \
-H "apikey: YOUR_ANON_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-H "Prefer: return=representation" \
-d '{
"name": "Updated Auction Name",
"settings": {"timezone": "America/New_York"}
}'
Auction Members
Manage user membership and roles within auctions.
List Members
Invite Member (RPC)
Accept Invite (RPC)
Change Role (RPC)
Remove Member (RPC)
GET /auction_memberscurl -X GET 'https://your-project.supabase.co/rest/v1/auction_members?auction_id=eq.abc123&select=*,user:users(id,email,full_name)' \
-H "apikey: YOUR_ANON_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
Response: [
{
"id" : "member-uuid" ,
"auction_id" : "abc123" ,
"user_id" : "user-uuid" ,
"role" : "admin" ,
"joined_at" : "2025-01-01T00:00:00Z" ,
"user" : {
"id" : "user-uuid" ,
"email" : "[email protected] " ,
"full_name" : "John Admin"
}
}
]
POST /rpc/invite_user_to_auctionInvite a new member via email. curl -X POST 'https://your-project.supabase.co/rest/v1/rpc/invite_user_to_auction' \
-H "apikey: YOUR_ANON_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"p_auction_id": "abc123-uuid",
"p_email": "[email protected] ",
"p_role": "team_member"
}'
Response: POST /rpc/accept_auction_inviteAccept an invitation using the token. curl -X POST 'https://your-project.supabase.co/rest/v1/rpc/accept_auction_invite' \
-H "apikey: YOUR_ANON_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"p_token": "invitation-token-here"
}'
POST /rpc/change_member_roleUpdate a member’s role (owner/admin only). curl -X POST 'https://your-project.supabase.co/rest/v1/rpc/change_member_role' \
-H "apikey: YOUR_ANON_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"p_auction_id": "abc123-uuid",
"p_user_id": "member-uuid",
"p_new_role": "admin"
}'
POST /rpc/remove_auction_memberRemove a member from the auction. curl -X POST 'https://your-project.supabase.co/rest/v1/rpc/remove_auction_member' \
-H "apikey: YOUR_ANON_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"p_auction_id": "abc123-uuid",
"p_user_id": "member-uuid"
}'
Locations
Manage parking lots and facilities.
List Locations
Create Location
Update Location
Delete Location
Get Submission Types
GET /locationscurl -X GET 'https://your-project.supabase.co/rest/v1/locations?auction_id=eq.abc123&is_active=eq.true&order=name.asc' \
-H "apikey: YOUR_ANON_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
Response: [
{
"id" : "loc-uuid" ,
"auction_id" : "abc123" ,
"name" : "North Lot" ,
"address" : "123 Main St" ,
"operating_hours_start" : "06:00:00" ,
"operating_hours_end" : "18:00:00" ,
"submission_frequency_minutes" : 60 ,
"is_active" : true ,
"created_at" : "2025-01-01T00:00:00Z"
}
]
POST /locationsCreate a new location (admin+ required). curl -X POST 'https://your-project.supabase.co/rest/v1/locations' \
-H "apikey: YOUR_ANON_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-H "Prefer: return=representation" \
-d '{
"auction_id": "abc123-uuid",
"name": "South Lot",
"address": "456 Oak Ave",
"operating_hours_start": "07:00:00",
"operating_hours_end": "17:00:00",
"submission_frequency_minutes": 30
}'
PATCH /locations?id=eq.{location_id}curl -X PATCH 'https://your-project.supabase.co/rest/v1/locations?id=eq.loc-uuid' \
-H "apikey: YOUR_ANON_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-H "Prefer: return=representation" \
-d '{
"submission_frequency_minutes": 45,
"is_active": true
}'
DELETE /locations?id=eq.{location_id}Soft delete by setting is_active=false is recommended. curl -X PATCH 'https://your-project.supabase.co/rest/v1/locations?id=eq.loc-uuid' \
-H "apikey: YOUR_ANON_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"is_active": false}'
POST /rpc/get_location_submission_types_orderedGet ordered submission types for a location. curl -X POST 'https://your-project.supabase.co/rest/v1/rpc/get_location_submission_types_ordered' \
-H "apikey: YOUR_ANON_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"p_location_id": "loc-uuid"}'
Lot Submissions
Submit and retrieve parking lot occupancy data.
GET /recent_submissions (view)Use the view for aggregated data with entries. curl -X GET 'https://your-project.supabase.co/rest/v1/recent_submissions?auction_id=eq.abc123&order=submitted_at.desc&limit=50' \
-H "apikey: YOUR_ANON_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
Response: [
{
"id" : "sub-uuid" ,
"location_id" : "loc-uuid" ,
"location_name" : "North Lot" ,
"user_id" : "user-uuid" ,
"submitted_by" : "John Smith" ,
"submitted_at" : "2025-01-15T10:30:00Z" ,
"entries" : [
{ "type_name" : "Dealer" , "car_count" : 45 , "image_url" : null },
{ "type_name" : "Retail" , "car_count" : 30 , "image_url" : "https://..." }
],
"entry_count" : 2 ,
"total_car_count" : 75 ,
"image_url" : "https://..."
}
]
POST /rpc/create_lot_submission_with_entriesCreate a submission with multiple entries. curl -X POST 'https://your-project.supabase.co/rest/v1/rpc/create_lot_submission_with_entries' \
-H "apikey: YOUR_ANON_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"p_location_id": "loc-uuid",
"p_entries": [
{"submission_type_id": "type1-uuid", "car_count": 45},
{"submission_type_id": "type2-uuid", "car_count": 30, "image_url": "https://..."}
],
"p_image_url": "https://storage.../main-photo.jpg"
}'
Response: POST /rpc/get_submission_with_entriesGet a single submission with all entries. curl -X POST 'https://your-project.supabase.co/rest/v1/rpc/get_submission_with_entries' \
-H "apikey: YOUR_ANON_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"p_submission_id": "sub-uuid"}'
GET /recent_submissions?submitted_at=gte.{date}curl -X GET 'https://your-project.supabase.co/rest/v1/recent_submissions?auction_id=eq.abc123&submitted_at=gte.2025-01-01&submitted_at=lte.2025-01-31' \
-H "apikey: YOUR_ANON_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
GET /recent_submissions?location_id=eq.{location_id}curl -X GET 'https://your-project.supabase.co/rest/v1/recent_submissions?location_id=eq.loc-uuid&order=submitted_at.desc' \
-H "apikey: YOUR_ANON_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
Quality Inspections
Create and retrieve vehicle inspection records.
List Inspections
Create Inspection
Add Defects
Get with Defects
List Defect Categories
GET /recent_quality_inspections (view)curl -X GET 'https://your-project.supabase.co/rest/v1/recent_quality_inspections?auction_id=eq.abc123&order=submitted_at.desc&limit=50' \
-H "apikey: YOUR_ANON_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
Response: [
{
"id" : "insp-uuid" ,
"location_id" : "loc-uuid" ,
"location_name" : "North Lot" ,
"user_id" : "user-uuid" ,
"inspector_name" : "Jane Inspector" ,
"vin_number" : "1HGBH41JXMN109186" ,
"barcode" : "A12345" ,
"submitted_at" : "2025-01-15T10:30:00Z" ,
"defect_count" : 3
}
]
POST /quality_inspectionscurl -X POST 'https://your-project.supabase.co/rest/v1/quality_inspections' \
-H "apikey: YOUR_ANON_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-H "Prefer: return=representation" \
-d '{
"auction_id": "abc123-uuid",
"location_id": "loc-uuid",
"vin_number": "1HGBH41JXMN109186",
"barcode": "A12345"
}'
POST /quality_defectsAdd defects to an inspection. curl -X POST 'https://your-project.supabase.co/rest/v1/quality_defects' \
-H "apikey: YOUR_ANON_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-H "Prefer: return=representation" \
-d '[
{"inspection_id": "insp-uuid", "category_id": "cat1-uuid", "notes": "Scratch on hood"},
{"inspection_id": "insp-uuid", "category_id": "cat2-uuid", "notes": "Missing hubcap"}
]'
GET /quality_inspections?select=*,quality_defects(*,defect_categories(*))curl -X GET 'https://your-project.supabase.co/rest/v1/quality_inspections?id=eq.insp-uuid&select=*,quality_defects(*,category:defect_categories(name))' \
-H "apikey: YOUR_ANON_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
GET /defect_categoriescurl -X GET 'https://your-project.supabase.co/rest/v1/defect_categories?order=display_order.asc' \
-H "apikey: YOUR_ANON_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
Problem Reports
Create and manage A3-style problem reports.
List Problems
Create Problem
Add Facts (5W2H)
Add Causes
Add Actions
Update Status
GET /active_problem_reports (view)curl -X GET 'https://your-project.supabase.co/rest/v1/active_problem_reports?auction_id=eq.abc123&status=neq.closed&order=submitted_at.desc' \
-H "apikey: YOUR_ANON_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
Response: [
{
"id" : "prob-uuid" ,
"issue_name" : "Delayed Vehicle Processing" ,
"area" : "Intake" ,
"location_name" : "North Lot" ,
"status" : "in_progress" ,
"prepared_by_name" : "John Smith" ,
"assigned_to_name" : "Jane Manager" ,
"action_count" : 5 ,
"completed_action_count" : 2 ,
"submitted_at" : "2025-01-10T10:00:00Z"
}
]
POST /problem_reportscurl -X POST 'https://your-project.supabase.co/rest/v1/problem_reports' \
-H "apikey: YOUR_ANON_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-H "Prefer: return=representation" \
-d '{
"auction_id": "abc123-uuid",
"issue_name": "Delayed Vehicle Processing",
"area": "Intake",
"location_id": "loc-uuid",
"assigned_to": "manager-uuid"
}'
POST /problem_factscurl -X POST 'https://your-project.supabase.co/rest/v1/problem_facts' \
-H "apikey: YOUR_ANON_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"problem_id": "prob-uuid",
"who": "Intake team",
"what": "Vehicles not processed within SLA",
"where_field": "Vehicle intake area",
"when_field": "Peak hours 9am-11am",
"how_many": "15-20 vehicles daily",
"how_much": "$500/day in delays"
}'
POST /potential_causescurl -X POST 'https://your-project.supabase.co/rest/v1/potential_causes' \
-H "apikey: YOUR_ANON_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '[
{"problem_id": "prob-uuid", "cause_text": "Insufficient staffing", "order_number": 1},
{"problem_id": "prob-uuid", "cause_text": "Outdated equipment", "order_number": 2}
]'
POST /problem_actionscurl -X POST 'https://your-project.supabase.co/rest/v1/problem_actions' \
-H "apikey: YOUR_ANON_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"problem_id": "prob-uuid",
"issue": "Peak hour bottleneck",
"countermeasure": "Add temporary staff during peak",
"responsible_person": "HR Manager",
"completion_date": "2025-02-01",
"status": "pending"
}'
PATCH /problem_reports?id=eq.{problem_id}curl -X PATCH 'https://your-project.supabase.co/rest/v1/problem_reports?id=eq.prob-uuid' \
-H "apikey: YOUR_ANON_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"status": "closed"}'
Chat
Real-time messaging with channels and reactions.
List Channels
Create Channel
List Messages
Send Message
Thread Reply
Edit Message
Add Reaction
Mark as Read (RPC)
GET /channelscurl -X GET 'https://your-project.supabase.co/rest/v1/channels?auction_id=eq.abc123&is_archived=eq.false&order=name.asc' \
-H "apikey: YOUR_ANON_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
Response: [
{
"id" : "chan-uuid" ,
"auction_id" : "abc123" ,
"name" : "general" ,
"description" : "General discussion" ,
"is_default" : true ,
"is_archived" : false ,
"created_at" : "2025-01-01T00:00:00Z"
}
]
POST /channelscurl -X POST 'https://your-project.supabase.co/rest/v1/channels' \
-H "apikey: YOUR_ANON_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-H "Prefer: return=representation" \
-d '{
"auction_id": "abc123-uuid",
"name": "north-lot-team",
"description": "North Lot team discussion",
"location_id": "loc-uuid"
}'
GET /messages_with_reply_count (view)curl -X GET 'https://your-project.supabase.co/rest/v1/messages_with_reply_count?channel_id=eq.chan-uuid&parent_message_id=is.null&order=created_at.desc&limit=50' \
-H "apikey: YOUR_ANON_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
Response: [
{
"id" : "msg-uuid" ,
"channel_id" : "chan-uuid" ,
"user_id" : "user-uuid" ,
"content" : "Hello team!" ,
"message_type" : "text" ,
"created_at" : "2025-01-15T10:30:00Z" ,
"reply_count" : 3 ,
"last_reply_at" : "2025-01-15T11:00:00Z" ,
"is_edited" : false ,
"is_deleted" : false
}
]
POST /messagescurl -X POST 'https://your-project.supabase.co/rest/v1/messages' \
-H "apikey: YOUR_ANON_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-H "Prefer: return=representation" \
-d '{
"auction_id": "abc123-uuid",
"channel_id": "chan-uuid",
"content": "Hello team!",
"message_type": "text"
}'
POST /messagesReply to a message (creates thread). curl -X POST 'https://your-project.supabase.co/rest/v1/messages' \
-H "apikey: YOUR_ANON_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"auction_id": "abc123-uuid",
"channel_id": "chan-uuid",
"content": "Thanks for the update!",
"message_type": "text",
"parent_message_id": "parent-msg-uuid"
}'
PATCH /messages?id=eq.{message_id}curl -X PATCH 'https://your-project.supabase.co/rest/v1/messages?id=eq.msg-uuid' \
-H "apikey: YOUR_ANON_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"content": "Updated message content",
"is_edited": true
}'
POST /message_reactionscurl -X POST 'https://your-project.supabase.co/rest/v1/message_reactions' \
-H "apikey: YOUR_ANON_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"auction_id": "abc123-uuid",
"message_id": "msg-uuid",
"emoji": "👍"
}'
POST /rpc/mark_channel_as_readcurl -X POST 'https://your-project.supabase.co/rest/v1/rpc/mark_channel_as_read' \
-H "apikey: YOUR_ANON_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"p_channel_id": "chan-uuid"}'
Analytics
Retrieve aggregated statistics and trends.
POST /rpc/get_location_statscurl -X POST 'https://your-project.supabase.co/rest/v1/rpc/get_location_stats' \
-H "apikey: YOUR_ANON_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"p_location_id": "loc-uuid",
"p_start_date": "2025-01-01T00:00:00Z",
"p_end_date": "2025-01-31T23:59:59Z"
}'
Response: {
"total_submissions" : 124 ,
"total_car_count" : 4567 ,
"average_car_count" : 36.8 ,
"by_type" : [
{ "type_name" : "Dealer" , "count" : 2345 },
{ "type_name" : "Retail" , "count" : 2222 }
]
}
POST /rpc/get_all_locations_statsDashboard overview statistics. curl -X POST 'https://your-project.supabase.co/rest/v1/rpc/get_all_locations_stats' \
-H "apikey: YOUR_ANON_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"p_start_date": "2025-01-01T00:00:00Z",
"p_end_date": "2025-01-31T23:59:59Z"
}'
POST /rpc/get_defect_trendsQuality inspection defect trends. curl -X POST 'https://your-project.supabase.co/rest/v1/rpc/get_defect_trends' \
-H "apikey: YOUR_ANON_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"p_start_date": "2025-01-01T00:00:00Z",
"p_end_date": "2025-01-31T23:59:59Z",
"p_location_id": null
}'
POST /rpc/get_pending_submissionsFind locations overdue for submissions. curl -X POST 'https://your-project.supabase.co/rest/v1/rpc/get_pending_submissions' \
-H "apikey: YOUR_ANON_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
POST /rpc/get_total_unread_countGet total unread message count. curl -X POST 'https://your-project.supabase.co/rest/v1/rpc/get_total_unread_count' \
-H "apikey: YOUR_ANON_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"p_auction_id": "abc123-uuid"}'
File Storage
Upload and manage files in Supabase Storage.
Upload Image
Get Public URL
Delete Image
List Files
POST /storage/v1/object/lot-images/{path}curl -X POST 'https://your-project.supabase.co/storage/v1/object/lot-images/user-uuid/1705323000_abc123.jpg' \
-H "apikey: YOUR_ANON_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: image/jpeg" \
--data-binary @photo.jpg
Response: {
"Key" : "lot-images/user-uuid/1705323000_abc123.jpg"
}
GET /storage/v1/object/public/lot-images/{path}Public images are accessible without authentication: https://your-project.supabase.co/storage/v1/object/public/lot-images/user-uuid/1705323000_abc123.jpg
DELETE /storage/v1/object/lot-images/{path}curl -X DELETE 'https://your-project.supabase.co/storage/v1/object/lot-images/user-uuid/1705323000_abc123.jpg' \
-H "apikey: YOUR_ANON_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
POST /storage/v1/object/list/lot-imagescurl -X POST 'https://your-project.supabase.co/storage/v1/object/list/lot-images' \
-H "apikey: YOUR_ANON_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"prefix": "user-uuid/",
"limit": 100
}'
Error Codes
Common PostgREST error codes:
Code Meaning Resolution PGRST000Connection error Check Supabase project status PGRST100Relation not found Verify table name PGRST116No rows returned Check filter conditions PGRST200Invalid query Review filter syntax PGRST301JWT expired Refresh authentication token 42501RLS policy violation User lacks permission 23505Unique constraint violation Duplicate value exists 23503Foreign key violation Referenced record missing
Rate Limiting
API rate limits per IP address:
Tier Requests/min Requests/hour Free 60 1,000 Pro 300 10,000 Enterprise Custom Custom
Heavy operations (reports, analytics) count as 5 requests.
Next Steps