{"openapi":"3.1.0","info":{"title":"MeusClubes API","description":"API-first backend for clubs and associations","version":"1.0.0"},"tags":[{"name":"Auth"},{"name":"Clubs"},{"name":"Club Rules"},{"name":"Users"},{"name":"Roles"},{"name":"Members"},{"name":"Dependents"},{"name":"Plans"},{"name":"Subscriptions"},{"name":"Payments"},{"name":"Billing"},{"name":"Cards"},{"name":"Partners"},{"name":"Benefits"},{"name":"Resources"},{"name":"Reservations"},{"name":"Events"},{"name":"Notifications"},{"name":"Messaging"},{"name":"Files"},{"name":"Webhooks"},{"name":"Audit"},{"name":"Admin"},{"name":"Platform"},{"name":"Tenant"}],"components":{"schemas":{},"parameters":{}},"paths":{"/api/v1/me":{"get":{"tags":["Auth"],"responses":{"200":{"description":"Current authenticated user","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string"},"club":{"type":"object","properties":{"clubId":{"type":"string","nullable":true},"role":{"type":"string"},"scope":{"type":"string","enum":["club","platform_global"]}},"required":["clubId","role","scope"]}},"required":["id","email","name","club"]}},"required":["success","data"]}}}}}}},"/api/v1/me/profile":{"get":{"tags":["Auth"],"responses":{"200":{"description":"Current user profile and active club context","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string"},"phone":{"type":"string","nullable":true},"status":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"club":{"type":"object","properties":{"club_id":{"type":"string","nullable":true},"club_name":{"type":"string"},"role":{"type":"string"},"scope":{"type":"string","enum":["club","platform_global"]}},"required":["club_id","club_name","role","scope"],"additionalProperties":false}},"required":["id","email","name","phone","status","created_at","updated_at","club"],"additionalProperties":false}},"required":["success","data"]}}}}}},"patch":{"tags":["Auth"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":2},"phone":{"type":"string","nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Update current user profile","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string"},"phone":{"type":"string","nullable":true},"status":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"club":{"type":"object","properties":{"club_id":{"type":"string","nullable":true},"club_name":{"type":"string"},"role":{"type":"string"},"scope":{"type":"string","enum":["club","platform_global"]}},"required":["club_id","club_name","role","scope"],"additionalProperties":false}},"required":["id","email","name","phone","status","created_at","updated_at","club"],"additionalProperties":false}},"required":["success","data"]}}}}}}},"/api/v1/tenant/resolve":{"get":{"tags":["Tenant"],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"host","in":"query"}],"responses":{"200":{"description":"Resolve white-label tenant by host","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"club_id":{"type":"string"},"name":{"type":"string"},"status":{"type":"string"},"host":{"type":"string"},"branding":{"type":"object","properties":{"name":{"type":"string"},"primary_color":{"type":"string","nullable":true},"logo_url":{"type":"string","nullable":true}},"required":["name"]}},"required":["club_id","name","status","host","branding"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/preferences":{"get":{"tags":["Tenant"],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"clubId","in":"path"}],"responses":{"200":{"description":"Get effective date and time preferences for the current user and club","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"date_format":{"type":"string","enum":["dd/MM/yyyy","MM/dd/yyyy","yyyy-MM-dd"]},"time_format":{"type":"string","enum":["24h","12h"]},"timezone":{"type":"string","enum":["America/Sao_Paulo","America/Recife","America/Manaus","America/Belem","America/Fortaleza","America/Bahia","America/New_York","America/Los_Angeles","Europe/Lisbon","UTC"]},"tenant_defaults":{"type":"object","properties":{"date_format":{"type":"string","enum":["dd/MM/yyyy","MM/dd/yyyy","yyyy-MM-dd"]},"time_format":{"type":"string","enum":["24h","12h"]},"timezone":{"type":"string","enum":["America/Sao_Paulo","America/Recife","America/Manaus","America/Belem","America/Fortaleza","America/Bahia","America/New_York","America/Los_Angeles","Europe/Lisbon","UTC"]}},"required":["date_format","time_format","timezone"],"additionalProperties":false},"user_overrides":{"type":"object","properties":{"date_format":{"type":"string","nullable":true,"enum":["dd/MM/yyyy","MM/dd/yyyy","yyyy-MM-dd"]},"time_format":{"type":"string","nullable":true,"enum":["24h","12h"]},"timezone":{"type":"string","nullable":true,"enum":["America/Sao_Paulo","America/Recife","America/Manaus","America/Belem","America/Fortaleza","America/Bahia","America/New_York","America/Los_Angeles","Europe/Lisbon","UTC"]}},"required":["date_format","time_format","timezone"],"additionalProperties":false}},"required":["date_format","time_format","timezone","tenant_defaults","user_overrides"],"additionalProperties":false}},"required":["success","data"]}}}}}},"patch":{"tags":["Tenant"],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"clubId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"scope":{"type":"string","enum":["tenant","user"]},"date_format":{"type":"string","enum":["dd/MM/yyyy","MM/dd/yyyy","yyyy-MM-dd"]},"time_format":{"type":"string","enum":["24h","12h"]},"timezone":{"type":"string","enum":["America/Sao_Paulo","America/Recife","America/Manaus","America/Belem","America/Fortaleza","America/Bahia","America/New_York","America/Los_Angeles","Europe/Lisbon","UTC"]},"reset":{"type":"boolean"}},"required":["scope"],"additionalProperties":false}}}},"responses":{"200":{"description":"Update tenant defaults or current user date and time preferences","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"date_format":{"type":"string","enum":["dd/MM/yyyy","MM/dd/yyyy","yyyy-MM-dd"]},"time_format":{"type":"string","enum":["24h","12h"]},"timezone":{"type":"string","enum":["America/Sao_Paulo","America/Recife","America/Manaus","America/Belem","America/Fortaleza","America/Bahia","America/New_York","America/Los_Angeles","Europe/Lisbon","UTC"]},"tenant_defaults":{"type":"object","properties":{"date_format":{"type":"string","enum":["dd/MM/yyyy","MM/dd/yyyy","yyyy-MM-dd"]},"time_format":{"type":"string","enum":["24h","12h"]},"timezone":{"type":"string","enum":["America/Sao_Paulo","America/Recife","America/Manaus","America/Belem","America/Fortaleza","America/Bahia","America/New_York","America/Los_Angeles","Europe/Lisbon","UTC"]}},"required":["date_format","time_format","timezone"],"additionalProperties":false},"user_overrides":{"type":"object","properties":{"date_format":{"type":"string","nullable":true,"enum":["dd/MM/yyyy","MM/dd/yyyy","yyyy-MM-dd"]},"time_format":{"type":"string","nullable":true,"enum":["24h","12h"]},"timezone":{"type":"string","nullable":true,"enum":["America/Sao_Paulo","America/Recife","America/Manaus","America/Belem","America/Fortaleza","America/Bahia","America/New_York","America/Los_Angeles","Europe/Lisbon","UTC"]}},"required":["date_format","time_format","timezone"],"additionalProperties":false}},"required":["date_format","time_format","timezone","tenant_defaults","user_overrides"],"additionalProperties":false}},"required":["success","data"]}}}}}}},"/api/v1/billing/webhooks/asaas":{"post":{"tags":["Billing"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"event":{"type":"string"},"dateCreated":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?$"}]},"account":{"type":"object","additionalProperties":{"nullable":true}},"payment":{"type":"object","additionalProperties":{"nullable":true}},"subscription":{"type":"object","additionalProperties":{"nullable":true}},"dispute":{"type":"object","additionalProperties":{"nullable":true}}},"additionalProperties":false}}}},"responses":{"202":{"description":"Asaas webhook accepted","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"accepted":{"type":"boolean"}},"required":["accepted"]}},"required":["success","data"]}}}}}}},"/api/v1/platform/billing/webhook":{"post":{"tags":["Platform"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"event":{"type":"string"},"payment":{"type":"object","properties":{"id":{"type":"string"}},"additionalProperties":false}},"additionalProperties":false}}}},"responses":{"200":{"description":"Platform billing webhook","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{}}},"required":["success","data"]}}}}}}},"/api/v1/auth/login":{"post":{"tags":["Auth"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email"},"password":{"type":"string","minLength":8},"club_id":{"type":"string"}},"required":["email","password"],"additionalProperties":false}}}},"responses":{"200":{"description":"Login successful","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"access_token":{"type":"string"},"refresh_token":{"type":"string"},"expires_in":{"type":"number"}},"required":["access_token","refresh_token","expires_in"]}},"required":["success","data"]}}}}}}},"/api/v1/auth/platform/login":{"post":{"tags":["Auth"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email"},"password":{"type":"string","minLength":8}},"required":["email","password"],"additionalProperties":false}}}},"responses":{"200":{"description":"Platform login successful","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"access_token":{"type":"string"},"refresh_token":{"type":"string"},"expires_in":{"type":"number"}},"required":["access_token","refresh_token","expires_in"]}},"required":["success","data"]}}}}}}},"/api/v1/auth/support-access/exchange":{"post":{"tags":["Auth"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","minLength":32}},"required":["token"],"additionalProperties":false}}}},"responses":{"200":{"description":"Temporary platform support session created","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"access_token":{"type":"string"},"refresh_token":{"type":"string"},"expires_in":{"type":"number"},"support_access":{"type":"boolean"},"support_expires_in":{"type":"number"},"tenant":{"type":"object","properties":{"club_id":{"type":"string"},"name":{"type":"string"},"status":{"type":"string"},"host":{"type":"string"},"branding":{"type":"object","properties":{"name":{"type":"string"},"primary_color":{"type":"string","nullable":true},"logo_url":{"type":"string","nullable":true}},"required":["name"]}},"required":["club_id","name","status","host","branding"]}},"required":["access_token","refresh_token","expires_in","support_access","support_expires_in","tenant"]}},"required":["success","data"]}}}}}}},"/api/v1/auth/logout":{"post":{"tags":["Auth"],"responses":{"200":{"description":"Logout successful","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"logged_out":{"type":"boolean"}},"required":["logged_out"]}},"required":["success","data"]}}}}}}},"/api/v1/auth/refresh":{"post":{"tags":["Auth"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"refresh_token":{"type":"string"}},"required":["refresh_token"],"additionalProperties":false}}}},"responses":{"200":{"description":"Token refreshed","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"access_token":{"type":"string"},"refresh_token":{"type":"string"},"expires_in":{"type":"number"}},"required":["access_token","refresh_token","expires_in"]}},"required":["success","data"]}}}}}}},"/api/v1/auth/forgot-password":{"post":{"tags":["Auth"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email"}},"required":["email"],"additionalProperties":false}}}},"responses":{"200":{"description":"Password reset requested","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"requested":{"type":"boolean"}},"required":["requested"]}},"required":["success","data"]}}}}}}},"/api/v1/auth/reset-password":{"post":{"tags":["Auth"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string"},"password":{"type":"string","minLength":8}},"required":["token","password"],"additionalProperties":false}}}},"responses":{"200":{"description":"Password changed","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"changed":{"type":"boolean"}},"required":["changed"]}},"required":["success","data"]}}}}}}},"/api/v1/auth/sessions":{"get":{"tags":["Auth"],"responses":{"200":{"description":"List active sessions","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"expires_at":{"type":"string"},"ip":{"type":"string","nullable":true},"user_agent":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","expires_at","created_at","updated_at"]}}},"required":["success","data"]}}}}}}},"/api/v1/auth/sessions/{sessionId}/revoke":{"post":{"tags":["Auth"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"sessionId","in":"path"}],"responses":{"200":{"description":"Session revoked","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"revoked":{"type":"boolean"}},"required":["revoked"]}},"required":["success","data"]}}}}}}},"/api/v1/auth/change-password":{"post":{"tags":["Auth"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"current_password":{"type":"string","minLength":8},"new_password":{"type":"string","minLength":8}},"required":["current_password","new_password"],"additionalProperties":false}}}},"responses":{"200":{"description":"Password changed","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"changed":{"type":"boolean"}},"required":["changed"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs":{"get":{"tags":["Clubs"],"parameters":[{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"default":1},"required":false,"name":"page","in":"query"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":100,"default":20},"required":false,"name":"per_page","in":"query"},{"schema":{"type":"string"},"required":false,"name":"search","in":"query"},{"schema":{"type":"string"},"required":false,"name":"sort","in":"query"},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"required":false,"name":"order","in":"query"},{"schema":{"type":"string"},"required":false,"name":"filters","in":"query"}],"responses":{"200":{"description":"List accessible clubs","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"legal_name":{"type":"string","nullable":true},"document":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"address":{"type":"string","nullable":true},"city":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"country":{"type":"string","nullable":true},"status":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true}},"required":["id","name","status","created_at","updated_at"]}},"pagination":{"type":"object","properties":{"page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"per_page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"total":{"type":"integer","minimum":0}},"required":["page","per_page","total"]}},"required":["success","data","pagination"]}}}}}},"post":{"tags":["Clubs"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":2},"legal_name":{"type":"string"},"document":{"type":"string"},"email":{"type":"string","format":"email"},"phone":{"type":"string"},"address":{"type":"string"},"city":{"type":"string"},"state":{"type":"string"},"country":{"type":"string"},"status":{"type":"string","enum":["active","inactive"],"default":"active"}},"required":["name"],"additionalProperties":false}}}},"responses":{"201":{"description":"Club created","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"legal_name":{"type":"string","nullable":true},"document":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"address":{"type":"string","nullable":true},"city":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"country":{"type":"string","nullable":true},"status":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true}},"required":["id","name","status","created_at","updated_at"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}":{"get":{"tags":["Clubs"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"}],"responses":{"200":{"description":"Get club","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"legal_name":{"type":"string","nullable":true},"document":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"address":{"type":"string","nullable":true},"city":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"country":{"type":"string","nullable":true},"status":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true}},"required":["id","name","status","created_at","updated_at"]}},"required":["success","data"]}}}}}},"patch":{"tags":["Clubs"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":2},"legal_name":{"type":"string"},"document":{"type":"string"},"email":{"type":"string","format":"email"},"phone":{"type":"string"},"address":{"type":"string"},"city":{"type":"string"},"state":{"type":"string"},"country":{"type":"string"},"status":{"type":"string","enum":["active","inactive"],"default":"active"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Club updated","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"legal_name":{"type":"string","nullable":true},"document":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"address":{"type":"string","nullable":true},"city":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"country":{"type":"string","nullable":true},"status":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true}},"required":["id","name","status","created_at","updated_at"]}},"required":["success","data"]}}}}}},"delete":{"tags":["Clubs"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"}],"responses":{"200":{"description":"Club soft deleted","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"deleted":{"type":"boolean"}},"required":["id","deleted"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/rules":{"get":{"tags":["Club Rules"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"}],"responses":{"200":{"description":"Get club rules","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"allow_overdue_member_reservations":{"type":"integer"},"allow_overdue_member_benefits":{"type":"integer"},"allow_dependents_reservations":{"type":"integer"},"reservation_advance_days":{"type":"integer"},"reservation_cancel_hours_before":{"type":"integer"},"max_reservations_per_member_per_week":{"type":"integer"},"card_validation_requires_active_status":{"type":"integer"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","club_id","allow_overdue_member_reservations","allow_overdue_member_benefits","allow_dependents_reservations","reservation_advance_days","reservation_cancel_hours_before","max_reservations_per_member_per_week","card_validation_requires_active_status","created_at","updated_at"]}},"required":["success","data"]}}}}}},"patch":{"tags":["Club Rules"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"allow_overdue_member_reservations":{"type":"boolean"},"allow_overdue_member_benefits":{"type":"boolean"},"allow_dependents_reservations":{"type":"boolean"},"reservation_advance_days":{"type":"integer","minimum":0},"reservation_cancel_hours_before":{"type":"integer","minimum":0},"max_reservations_per_member_per_week":{"type":"integer","minimum":0},"card_validation_requires_active_status":{"type":"boolean"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Club rules updated","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"allow_overdue_member_reservations":{"type":"integer"},"allow_overdue_member_benefits":{"type":"integer"},"allow_dependents_reservations":{"type":"integer"},"reservation_advance_days":{"type":"integer"},"reservation_cancel_hours_before":{"type":"integer"},"max_reservations_per_member_per_week":{"type":"integer"},"card_validation_requires_active_status":{"type":"integer"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","club_id","allow_overdue_member_reservations","allow_overdue_member_benefits","allow_dependents_reservations","reservation_advance_days","reservation_cancel_hours_before","max_reservations_per_member_per_week","card_validation_requires_active_status","created_at","updated_at"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/users":{"get":{"tags":["Users"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"default":1},"required":false,"name":"page","in":"query"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":100,"default":20},"required":false,"name":"per_page","in":"query"},{"schema":{"type":"string"},"required":false,"name":"search","in":"query"},{"schema":{"type":"string"},"required":false,"name":"sort","in":"query"},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"required":false,"name":"order","in":"query"},{"schema":{"type":"string"},"required":false,"name":"filters","in":"query"}],"responses":{"200":{"description":"List club users","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"user_id":{"type":"string"},"role_id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"},"phone":{"type":"string","nullable":true},"role":{"type":"string"},"status":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","club_id","user_id","role_id","status","created_at","updated_at"]}},"pagination":{"type":"object","properties":{"page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"per_page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"total":{"type":"integer","minimum":0}},"required":["page","per_page","total"]}},"required":["success","data","pagination"]}}}}}},"post":{"tags":["Users"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":2},"email":{"type":"string","format":"email"},"phone":{"type":"string"},"password":{"type":"string","minLength":8},"role":{"type":"string","minLength":1}},"required":["name","email","role"],"additionalProperties":false}}}},"responses":{"201":{"description":"Create club user","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"user_id":{"type":"string"},"role_id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"},"phone":{"type":"string","nullable":true},"role":{"type":"string"},"status":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","club_id","user_id","role_id","status","created_at","updated_at"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/users/{userId}/sessions":{"get":{"tags":["Users"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"userId","in":"path"}],"responses":{"200":{"description":"List user sessions","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"expires_at":{"type":"string"},"revoked_at":{"type":"string","nullable":true},"ip":{"type":"string","nullable":true},"user_agent":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","expires_at","created_at","updated_at"]}}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/users/{userId}/sessions/{sessionId}/revoke":{"post":{"tags":["Users"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"userId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"sessionId","in":"path"}],"responses":{"200":{"description":"Managed session revoked","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"revoked":{"type":"boolean"}},"required":["revoked"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/users/{userId}":{"get":{"tags":["Users"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"userId","in":"path"}],"responses":{"200":{"description":"Get club user","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"user_id":{"type":"string"},"role_id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"},"phone":{"type":"string","nullable":true},"role":{"type":"string"},"status":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","club_id","user_id","role_id","status","created_at","updated_at"]}},"required":["success","data"]}}}}}},"patch":{"tags":["Users"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"userId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"display_name":{"type":"string","minLength":2},"phone":{"type":"string"},"status":{"type":"string","enum":["active","inactive"]}},"additionalProperties":false}}}},"responses":{"200":{"description":"Update user","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"updated":{"type":"boolean"}},"required":["updated"]}},"required":["success","data"]}}}}}},"delete":{"tags":["Users"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"userId","in":"path"}],"responses":{"200":{"description":"Remove user from club","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"removed":{"type":"boolean"}},"required":["removed"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/roles":{"post":{"tags":["Roles"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":80},"description":{"type":"string","maxLength":240},"permissions":{"type":"object","additionalProperties":{"anyOf":[{"type":"array","items":{"type":"string","enum":["list","read","create","update","delete","special"]}},{"type":"string","enum":["*"]}]},"default":{}}},"required":["name"],"additionalProperties":false}}}},"responses":{"201":{"description":"Custom role created","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"code":{"type":"string"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"club_id":{"type":"string","nullable":true},"permissions":{"type":"object","additionalProperties":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"string","enum":["*"]}]}}},"required":["id","code","name"]}},"required":["success","data"]}}}}}},"get":{"tags":["Roles"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"default":1},"required":false,"name":"page","in":"query"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":100,"default":20},"required":false,"name":"per_page","in":"query"},{"schema":{"type":"string"},"required":false,"name":"search","in":"query"},{"schema":{"type":"string"},"required":false,"name":"sort","in":"query"},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"required":false,"name":"order","in":"query"},{"schema":{"type":"string"},"required":false,"name":"filters","in":"query"}],"responses":{"200":{"description":"List available roles","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"code":{"type":"string"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"club_id":{"type":"string","nullable":true},"permissions":{"type":"object","additionalProperties":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"string","enum":["*"]}]}}},"required":["id","code","name"]}},"pagination":{"type":"object","properties":{"page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"per_page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"total":{"type":"integer","minimum":0}},"required":["page","per_page","total"]}},"required":["success","data","pagination"]}}}}}}},"/api/v1/clubs/{clubId}/permissions":{"get":{"tags":["Roles"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"}],"responses":{"200":{"description":"Effective permission matrix","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"current_role":{"type":"string"},"actions":{"type":"array","items":{"type":"string"}},"resources":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"by_role":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}},"roles":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"code":{"type":"string"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"club_id":{"type":"string","nullable":true},"permissions":{"type":"object","additionalProperties":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"string","enum":["*"]}]}}},"required":["id","code","name"]}}},"required":["current_role","actions","resources","by_role","roles"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/roles/{roleId}":{"patch":{"tags":["Roles"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"roleId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":80},"description":{"type":"string","maxLength":240},"permissions":{"type":"object","additionalProperties":{"anyOf":[{"type":"array","items":{"type":"string","enum":["list","read","create","update","delete","special"]}},{"type":"string","enum":["*"]}]},"default":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Custom role updated","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"code":{"type":"string"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"club_id":{"type":"string","nullable":true},"permissions":{"type":"object","additionalProperties":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"string","enum":["*"]}]}}},"required":["id","code","name"]}},"required":["success","data"]}}}}}},"delete":{"tags":["Roles"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"roleId","in":"path"}],"responses":{"200":{"description":"Custom role deleted","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"deleted":{"type":"boolean"}},"required":["deleted"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/users/{userId}/role":{"patch":{"tags":["Roles"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"userId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"role":{"type":"string","minLength":1}},"required":["role"],"additionalProperties":false}}}},"responses":{"200":{"description":"User role changed","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"changed":{"type":"boolean"}},"required":["changed"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/members":{"get":{"tags":["Members"],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"default":1},"required":false,"name":"page","in":"query"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":100,"default":20},"required":false,"name":"per_page","in":"query"},{"schema":{"type":"string"},"required":false,"name":"search","in":"query"},{"schema":{"type":"string"},"required":false,"name":"sort","in":"query"},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"required":false,"name":"order","in":"query"},{"schema":{"type":"string"},"required":false,"name":"filters","in":"query"}],"responses":{"200":{"description":"List Members","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"document":{"type":"string","nullable":true},"birth_date":{"type":"string","nullable":true},"status":{"type":"string","enum":["active","inactive","overdue","suspended","pending"]},"joined_at":{"type":"string","nullable":true},"notes":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true}},"required":["id","club_id","name","status","created_at","updated_at"]}},"pagination":{"type":"object","properties":{"page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"per_page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"total":{"type":"integer","minimum":0}},"required":["page","per_page","total"]}},"required":["success","data","pagination"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}}}},"post":{"tags":["Members"],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"clubId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":2},"email":{"type":"string","format":"email"},"phone":{"type":"string"},"document":{"type":"string"},"birth_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"status":{"type":"string","enum":["active","inactive","overdue","suspended","pending"],"default":"pending"},"joined_at":{"type":"string","format":"date-time"},"notes":{"type":"string"}},"required":["name"],"additionalProperties":false}}}},"responses":{"201":{"description":"Members created","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"document":{"type":"string","nullable":true},"birth_date":{"type":"string","nullable":true},"status":{"type":"string","enum":["active","inactive","overdue","suspended","pending"]},"joined_at":{"type":"string","nullable":true},"notes":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true}},"required":["id","club_id","name","status","created_at","updated_at"]}},"required":["success","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}}}}},"/api/v1/clubs/{clubId}/members/{memberId}":{"get":{"tags":["Members"],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string","minLength":1},"required":true,"name":"memberId","in":"path"}],"responses":{"200":{"description":"Members details","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"document":{"type":"string","nullable":true},"birth_date":{"type":"string","nullable":true},"status":{"type":"string","enum":["active","inactive","overdue","suspended","pending"]},"joined_at":{"type":"string","nullable":true},"notes":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true}},"required":["id","club_id","name","status","created_at","updated_at"]}},"required":["success","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}}}},"patch":{"tags":["Members"],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string","minLength":1},"required":true,"name":"memberId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":2},"email":{"type":"string","format":"email"},"phone":{"type":"string"},"document":{"type":"string"},"birth_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"status":{"type":"string","enum":["active","inactive","overdue","suspended","pending"],"default":"pending"},"joined_at":{"type":"string","format":"date-time"},"notes":{"type":"string"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Members updated","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"document":{"type":"string","nullable":true},"birth_date":{"type":"string","nullable":true},"status":{"type":"string","enum":["active","inactive","overdue","suspended","pending"]},"joined_at":{"type":"string","nullable":true},"notes":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true}},"required":["id","club_id","name","status","created_at","updated_at"]}},"required":["success","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}}}},"delete":{"tags":["Members"],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string","minLength":1},"required":true,"name":"memberId","in":"path"}],"responses":{"200":{"description":"Members deleted","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"deleted":{"type":"boolean"}},"required":["id","deleted"]}},"required":["success","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}}}}},"/api/v1/clubs/{clubId}/dependents/relation-types":{"get":{"tags":["Dependents"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"}],"responses":{"200":{"description":"List relation types already used by dependents in the club","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"string"}}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/dependents/{dependentId}/user":{"post":{"tags":["Dependents"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"dependentId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email"},"password":{"type":"string","minLength":8}},"required":["email"],"additionalProperties":false}}}},"responses":{"201":{"description":"Create or link a user for the dependent","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"user_id":{"type":"string"},"email":{"type":"string"},"created":{"type":"boolean"}},"required":["user_id","email","created"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/dependents/{dependentId}/promote":{"post":{"tags":["Dependents"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"dependentId","in":"path"}],"responses":{"200":{"description":"Promote dependent to member","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"dependent_id":{"type":"string"},"member_id":{"type":"string"},"user_id":{"type":"string","nullable":true},"promoted":{"type":"boolean"}},"required":["dependent_id","member_id","user_id","promoted"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/dependents":{"get":{"tags":["Dependents"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"default":1},"required":false,"name":"page","in":"query"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":100,"default":20},"required":false,"name":"per_page","in":"query"},{"schema":{"type":"string"},"required":false,"name":"search","in":"query"},{"schema":{"type":"string"},"required":false,"name":"sort","in":"query"},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"required":false,"name":"order","in":"query"},{"schema":{"type":"string"},"required":false,"name":"filters","in":"query"}],"responses":{"200":{"description":"List dependents by club","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"member_id":{"type":"string"},"name":{"type":"string"},"birth_date":{"type":"string","nullable":true},"relation_type":{"type":"string","nullable":true},"user_id":{"type":"string","nullable":true},"status":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true},"display":{"type":"object","additionalProperties":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"resource":{"type":"string"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["id","label","resource","data"],"additionalProperties":false}}},"required":["id","club_id","member_id","name","status","created_at","updated_at"]}},"pagination":{"type":"object","properties":{"page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"per_page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"total":{"type":"integer","minimum":0}},"required":["page","per_page","total"]}},"required":["success","data","pagination"]}}}}}}},"/api/v1/clubs/{clubId}/members/{memberId}/dependents":{"get":{"tags":["Dependents"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"memberId","in":"path"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"default":1},"required":false,"name":"page","in":"query"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":100,"default":20},"required":false,"name":"per_page","in":"query"},{"schema":{"type":"string"},"required":false,"name":"search","in":"query"},{"schema":{"type":"string"},"required":false,"name":"sort","in":"query"},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"required":false,"name":"order","in":"query"},{"schema":{"type":"string"},"required":false,"name":"filters","in":"query"}],"responses":{"200":{"description":"List dependents","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"member_id":{"type":"string"},"name":{"type":"string"},"birth_date":{"type":"string","nullable":true},"relation_type":{"type":"string","nullable":true},"user_id":{"type":"string","nullable":true},"status":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true},"display":{"type":"object","additionalProperties":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"resource":{"type":"string"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["id","label","resource","data"],"additionalProperties":false}}},"required":["id","club_id","member_id","name","status","created_at","updated_at"]}},"pagination":{"type":"object","properties":{"page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"per_page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"total":{"type":"integer","minimum":0}},"required":["page","per_page","total"]}},"required":["success","data","pagination"]}}}}}},"post":{"tags":["Dependents"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"memberId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":2},"birth_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"relation_type":{"type":"string"},"status":{"type":"string","enum":["active","inactive"],"default":"active"}},"required":["name"],"additionalProperties":false}}}},"responses":{"201":{"description":"Create dependent","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"member_id":{"type":"string"},"name":{"type":"string"},"birth_date":{"type":"string","nullable":true},"relation_type":{"type":"string","nullable":true},"user_id":{"type":"string","nullable":true},"status":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true},"display":{"type":"object","additionalProperties":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"resource":{"type":"string"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["id","label","resource","data"],"additionalProperties":false}}},"required":["id","club_id","member_id","name","status","created_at","updated_at"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/dependents/{dependentId}":{"get":{"tags":["Dependents"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"dependentId","in":"path"}],"responses":{"200":{"description":"Get dependent","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"member_id":{"type":"string"},"name":{"type":"string"},"birth_date":{"type":"string","nullable":true},"relation_type":{"type":"string","nullable":true},"user_id":{"type":"string","nullable":true},"status":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true},"display":{"type":"object","additionalProperties":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"resource":{"type":"string"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["id","label","resource","data"],"additionalProperties":false}}},"required":["id","club_id","member_id","name","status","created_at","updated_at"]}},"required":["success","data"]}}}}}},"patch":{"tags":["Dependents"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"dependentId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":2},"birth_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"relation_type":{"type":"string"},"status":{"type":"string","enum":["active","inactive"],"default":"active"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Update dependent","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"member_id":{"type":"string"},"name":{"type":"string"},"birth_date":{"type":"string","nullable":true},"relation_type":{"type":"string","nullable":true},"user_id":{"type":"string","nullable":true},"status":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true},"display":{"type":"object","additionalProperties":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"resource":{"type":"string"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["id","label","resource","data"],"additionalProperties":false}}},"required":["id","club_id","member_id","name","status","created_at","updated_at"]}},"required":["success","data"]}}}}}},"delete":{"tags":["Dependents"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"dependentId","in":"path"}],"responses":{"200":{"description":"Delete dependent","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"deleted":{"type":"boolean"}},"required":["id","deleted"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/plans":{"get":{"tags":["Plans"],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"default":1},"required":false,"name":"page","in":"query"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":100,"default":20},"required":false,"name":"per_page","in":"query"},{"schema":{"type":"string"},"required":false,"name":"search","in":"query"},{"schema":{"type":"string"},"required":false,"name":"sort","in":"query"},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"required":false,"name":"order","in":"query"},{"schema":{"type":"string"},"required":false,"name":"filters","in":"query"}],"responses":{"200":{"description":"List Plans","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"price":{"type":"number"},"billing_cycle":{"type":"string","enum":["monthly","quarterly","yearly","custom"]},"max_dependents":{"type":"integer"},"status":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true}},"required":["id","club_id","name","price","billing_cycle","max_dependents","status","created_at","updated_at"]}},"pagination":{"type":"object","properties":{"page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"per_page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"total":{"type":"integer","minimum":0}},"required":["page","per_page","total"]}},"required":["success","data","pagination"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}}}},"post":{"tags":["Plans"],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"clubId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":2},"description":{"type":"string"},"price":{"type":"number","minimum":0},"billing_cycle":{"type":"string","enum":["monthly","quarterly","yearly","custom"]},"max_dependents":{"type":"integer","minimum":0,"default":0},"status":{"type":"string","enum":["active","inactive"],"default":"active"}},"required":["name","price","billing_cycle"],"additionalProperties":false}}}},"responses":{"201":{"description":"Plans created","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"price":{"type":"number"},"billing_cycle":{"type":"string","enum":["monthly","quarterly","yearly","custom"]},"max_dependents":{"type":"integer"},"status":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true}},"required":["id","club_id","name","price","billing_cycle","max_dependents","status","created_at","updated_at"]}},"required":["success","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}}}}},"/api/v1/clubs/{clubId}/plans/{planId}":{"get":{"tags":["Plans"],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string","minLength":1},"required":true,"name":"planId","in":"path"}],"responses":{"200":{"description":"Plans details","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"price":{"type":"number"},"billing_cycle":{"type":"string","enum":["monthly","quarterly","yearly","custom"]},"max_dependents":{"type":"integer"},"status":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true}},"required":["id","club_id","name","price","billing_cycle","max_dependents","status","created_at","updated_at"]}},"required":["success","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}}}},"patch":{"tags":["Plans"],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string","minLength":1},"required":true,"name":"planId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":2},"description":{"type":"string"},"price":{"type":"number","minimum":0},"billing_cycle":{"type":"string","enum":["monthly","quarterly","yearly","custom"]},"max_dependents":{"type":"integer","minimum":0,"default":0},"status":{"type":"string","enum":["active","inactive"],"default":"active"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Plans updated","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"price":{"type":"number"},"billing_cycle":{"type":"string","enum":["monthly","quarterly","yearly","custom"]},"max_dependents":{"type":"integer"},"status":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true}},"required":["id","club_id","name","price","billing_cycle","max_dependents","status","created_at","updated_at"]}},"required":["success","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}}}},"delete":{"tags":["Plans"],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string","minLength":1},"required":true,"name":"planId","in":"path"}],"responses":{"200":{"description":"Plans deleted","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"deleted":{"type":"boolean"}},"required":["id","deleted"]}},"required":["success","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}}}}},"/api/v1/clubs/{clubId}/subscriptions":{"get":{"tags":["Subscriptions"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"default":1},"required":false,"name":"page","in":"query"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":100,"default":20},"required":false,"name":"per_page","in":"query"},{"schema":{"type":"string"},"required":false,"name":"search","in":"query"},{"schema":{"type":"string"},"required":false,"name":"sort","in":"query"},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"required":false,"name":"order","in":"query"},{"schema":{"type":"string"},"required":false,"name":"filters","in":"query"}],"responses":{"200":{"description":"List subscriptions","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"member_id":{"type":"string"},"plan_id":{"type":"string"},"status":{"type":"string"},"started_at":{"type":"string"},"cancelled_at":{"type":"string","nullable":true},"next_billing_at":{"type":"string","nullable":true},"provider":{"type":"string","nullable":true},"provider_account_id":{"type":"string","nullable":true},"external_id":{"type":"string","nullable":true},"external_status":{"type":"string","nullable":true},"billing_type":{"type":"string","nullable":true},"cancel_at_period_end":{"type":"integer"},"scheduled_cancel_at":{"type":"string","nullable":true},"last_synced_at":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true},"display":{"type":"object","additionalProperties":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"resource":{"type":"string"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["id","label","resource","data"],"additionalProperties":false}}},"required":["id","club_id","member_id","plan_id","status","started_at","created_at","updated_at"]}},"pagination":{"type":"object","properties":{"page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"per_page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"total":{"type":"integer","minimum":0}},"required":["page","per_page","total"]}},"required":["success","data","pagination"]}}}}}}},"/api/v1/clubs/{clubId}/members/{memberId}/subscriptions":{"post":{"tags":["Subscriptions"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"memberId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"plan_id":{"type":"string"},"status":{"type":"string","enum":["active","paused","suspended","cancelled","pending"],"default":"active"},"started_at":{"type":"string","format":"date-time"},"next_billing_at":{"type":"string","format":"date-time"}},"required":["plan_id"],"additionalProperties":false}}}},"responses":{"201":{"description":"Subscription created","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"member_id":{"type":"string"},"plan_id":{"type":"string"},"status":{"type":"string"},"started_at":{"type":"string"},"cancelled_at":{"type":"string","nullable":true},"next_billing_at":{"type":"string","nullable":true},"provider":{"type":"string","nullable":true},"provider_account_id":{"type":"string","nullable":true},"external_id":{"type":"string","nullable":true},"external_status":{"type":"string","nullable":true},"billing_type":{"type":"string","nullable":true},"cancel_at_period_end":{"type":"integer"},"scheduled_cancel_at":{"type":"string","nullable":true},"last_synced_at":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true},"display":{"type":"object","additionalProperties":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"resource":{"type":"string"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["id","label","resource","data"],"additionalProperties":false}}},"required":["id","club_id","member_id","plan_id","status","started_at","created_at","updated_at"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/subscriptions/{subscriptionId}":{"get":{"tags":["Subscriptions"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"subscriptionId","in":"path"}],"responses":{"200":{"description":"Get subscription","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"member_id":{"type":"string"},"plan_id":{"type":"string"},"status":{"type":"string"},"started_at":{"type":"string"},"cancelled_at":{"type":"string","nullable":true},"next_billing_at":{"type":"string","nullable":true},"provider":{"type":"string","nullable":true},"provider_account_id":{"type":"string","nullable":true},"external_id":{"type":"string","nullable":true},"external_status":{"type":"string","nullable":true},"billing_type":{"type":"string","nullable":true},"cancel_at_period_end":{"type":"integer"},"scheduled_cancel_at":{"type":"string","nullable":true},"last_synced_at":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true},"display":{"type":"object","additionalProperties":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"resource":{"type":"string"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["id","label","resource","data"],"additionalProperties":false}}},"required":["id","club_id","member_id","plan_id","status","started_at","created_at","updated_at"]}},"required":["success","data"]}}}}}},"patch":{"tags":["Subscriptions"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"subscriptionId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"plan_id":{"type":"string"},"status":{"type":"string","enum":["active","paused","suspended","cancelled","pending"]},"next_billing_at":{"type":"string","format":"date-time"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Update subscription","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"member_id":{"type":"string"},"plan_id":{"type":"string"},"status":{"type":"string"},"started_at":{"type":"string"},"cancelled_at":{"type":"string","nullable":true},"next_billing_at":{"type":"string","nullable":true},"provider":{"type":"string","nullable":true},"provider_account_id":{"type":"string","nullable":true},"external_id":{"type":"string","nullable":true},"external_status":{"type":"string","nullable":true},"billing_type":{"type":"string","nullable":true},"cancel_at_period_end":{"type":"integer"},"scheduled_cancel_at":{"type":"string","nullable":true},"last_synced_at":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true},"display":{"type":"object","additionalProperties":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"resource":{"type":"string"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["id","label","resource","data"],"additionalProperties":false}}},"required":["id","club_id","member_id","plan_id","status","started_at","created_at","updated_at"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/subscriptions/{subscriptionId}/cancel":{"post":{"tags":["Subscriptions"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"subscriptionId","in":"path"}],"responses":{"200":{"description":"Cancel subscription","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"cancelled":{"type":"boolean"}},"required":["cancelled"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/payments":{"get":{"tags":["Payments"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"default":1},"required":false,"name":"page","in":"query"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":100,"default":20},"required":false,"name":"per_page","in":"query"},{"schema":{"type":"string"},"required":false,"name":"search","in":"query"},{"schema":{"type":"string"},"required":false,"name":"sort","in":"query"},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"required":false,"name":"order","in":"query"},{"schema":{"type":"string"},"required":false,"name":"filters","in":"query"}],"responses":{"200":{"description":"List payments","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"member_id":{"type":"string","nullable":true},"subscription_id":{"type":"string","nullable":true},"provider":{"type":"string","nullable":true},"provider_account_id":{"type":"string","nullable":true},"external_id":{"type":"string","nullable":true},"external_status":{"type":"string","nullable":true},"billing_type":{"type":"string","nullable":true},"amount":{"type":"number"},"currency":{"type":"string"},"status":{"type":"string"},"due_at":{"type":"string","nullable":true},"paid_at":{"type":"string","nullable":true},"invoice_url":{"type":"string","nullable":true},"bank_slip_url":{"type":"string","nullable":true},"pix_qr_code":{"type":"string","nullable":true},"pix_copy_paste":{"type":"string","nullable":true},"amount_cents":{"type":"integer","nullable":true},"total_amount_cents":{"type":"integer","nullable":true},"installment_count":{"type":"integer","nullable":true},"installment_number":{"type":"integer","nullable":true},"failure_code":{"type":"string","nullable":true},"failure_message":{"type":"string","nullable":true},"refunded_amount_cents":{"type":"integer"},"last_synced_at":{"type":"string","nullable":true},"metadata":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true},"display":{"type":"object","additionalProperties":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"resource":{"type":"string"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["id","label","resource","data"],"additionalProperties":false}}},"required":["id","club_id","amount","currency","status","created_at","updated_at"]}},"pagination":{"type":"object","properties":{"page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"per_page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"total":{"type":"integer","minimum":0}},"required":["page","per_page","total"]}},"required":["success","data","pagination"]}}}}}},"post":{"tags":["Payments"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"member_id":{"type":"string"},"subscription_id":{"type":"string"},"provider":{"type":"string","enum":["manual","asaas","mercado_pago","stripe","pagarme"],"default":"manual"},"amount":{"type":"number","minimum":0,"exclusiveMinimum":true},"currency":{"type":"string","default":"BRL"},"status":{"type":"string","enum":["pending","paid","overdue","failed","disputed","cancelled"],"default":"pending"},"due_at":{"type":"string","format":"date-time"},"paid_at":{"type":"string","format":"date-time"},"metadata":{"type":"object","additionalProperties":{"nullable":true}}},"required":["amount"],"additionalProperties":false}}}},"responses":{"201":{"description":"Payment created","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"member_id":{"type":"string","nullable":true},"subscription_id":{"type":"string","nullable":true},"provider":{"type":"string","nullable":true},"provider_account_id":{"type":"string","nullable":true},"external_id":{"type":"string","nullable":true},"external_status":{"type":"string","nullable":true},"billing_type":{"type":"string","nullable":true},"amount":{"type":"number"},"currency":{"type":"string"},"status":{"type":"string"},"due_at":{"type":"string","nullable":true},"paid_at":{"type":"string","nullable":true},"invoice_url":{"type":"string","nullable":true},"bank_slip_url":{"type":"string","nullable":true},"pix_qr_code":{"type":"string","nullable":true},"pix_copy_paste":{"type":"string","nullable":true},"amount_cents":{"type":"integer","nullable":true},"total_amount_cents":{"type":"integer","nullable":true},"installment_count":{"type":"integer","nullable":true},"installment_number":{"type":"integer","nullable":true},"failure_code":{"type":"string","nullable":true},"failure_message":{"type":"string","nullable":true},"refunded_amount_cents":{"type":"integer"},"last_synced_at":{"type":"string","nullable":true},"metadata":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true},"display":{"type":"object","additionalProperties":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"resource":{"type":"string"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["id","label","resource","data"],"additionalProperties":false}}},"required":["id","club_id","amount","currency","status","created_at","updated_at"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/payments/{paymentId}":{"get":{"tags":["Payments"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"paymentId","in":"path"}],"responses":{"200":{"description":"Get payment","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"member_id":{"type":"string","nullable":true},"subscription_id":{"type":"string","nullable":true},"provider":{"type":"string","nullable":true},"provider_account_id":{"type":"string","nullable":true},"external_id":{"type":"string","nullable":true},"external_status":{"type":"string","nullable":true},"billing_type":{"type":"string","nullable":true},"amount":{"type":"number"},"currency":{"type":"string"},"status":{"type":"string"},"due_at":{"type":"string","nullable":true},"paid_at":{"type":"string","nullable":true},"invoice_url":{"type":"string","nullable":true},"bank_slip_url":{"type":"string","nullable":true},"pix_qr_code":{"type":"string","nullable":true},"pix_copy_paste":{"type":"string","nullable":true},"amount_cents":{"type":"integer","nullable":true},"total_amount_cents":{"type":"integer","nullable":true},"installment_count":{"type":"integer","nullable":true},"installment_number":{"type":"integer","nullable":true},"failure_code":{"type":"string","nullable":true},"failure_message":{"type":"string","nullable":true},"refunded_amount_cents":{"type":"integer"},"last_synced_at":{"type":"string","nullable":true},"metadata":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true},"display":{"type":"object","additionalProperties":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"resource":{"type":"string"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["id","label","resource","data"],"additionalProperties":false}}},"required":["id","club_id","amount","currency","status","created_at","updated_at"]}},"required":["success","data"]}}}}}},"patch":{"tags":["Payments"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"paymentId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"due_at":{"type":"string","format":"date-time"},"metadata":{"type":"object","additionalProperties":{"nullable":true}},"amount":{"type":"number","minimum":0,"exclusiveMinimum":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Update payment","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"member_id":{"type":"string","nullable":true},"subscription_id":{"type":"string","nullable":true},"provider":{"type":"string","nullable":true},"provider_account_id":{"type":"string","nullable":true},"external_id":{"type":"string","nullable":true},"external_status":{"type":"string","nullable":true},"billing_type":{"type":"string","nullable":true},"amount":{"type":"number"},"currency":{"type":"string"},"status":{"type":"string"},"due_at":{"type":"string","nullable":true},"paid_at":{"type":"string","nullable":true},"invoice_url":{"type":"string","nullable":true},"bank_slip_url":{"type":"string","nullable":true},"pix_qr_code":{"type":"string","nullable":true},"pix_copy_paste":{"type":"string","nullable":true},"amount_cents":{"type":"integer","nullable":true},"total_amount_cents":{"type":"integer","nullable":true},"installment_count":{"type":"integer","nullable":true},"installment_number":{"type":"integer","nullable":true},"failure_code":{"type":"string","nullable":true},"failure_message":{"type":"string","nullable":true},"refunded_amount_cents":{"type":"integer"},"last_synced_at":{"type":"string","nullable":true},"metadata":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true},"display":{"type":"object","additionalProperties":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"resource":{"type":"string"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["id","label","resource","data"],"additionalProperties":false}}},"required":["id","club_id","amount","currency","status","created_at","updated_at"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/members/{memberId}/payments":{"get":{"tags":["Payments"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"memberId","in":"path"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"default":1},"required":false,"name":"page","in":"query"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":100,"default":20},"required":false,"name":"per_page","in":"query"},{"schema":{"type":"string"},"required":false,"name":"search","in":"query"},{"schema":{"type":"string"},"required":false,"name":"sort","in":"query"},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"required":false,"name":"order","in":"query"},{"schema":{"type":"string"},"required":false,"name":"filters","in":"query"}],"responses":{"200":{"description":"List member payments","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"member_id":{"type":"string","nullable":true},"subscription_id":{"type":"string","nullable":true},"provider":{"type":"string","nullable":true},"provider_account_id":{"type":"string","nullable":true},"external_id":{"type":"string","nullable":true},"external_status":{"type":"string","nullable":true},"billing_type":{"type":"string","nullable":true},"amount":{"type":"number"},"currency":{"type":"string"},"status":{"type":"string"},"due_at":{"type":"string","nullable":true},"paid_at":{"type":"string","nullable":true},"invoice_url":{"type":"string","nullable":true},"bank_slip_url":{"type":"string","nullable":true},"pix_qr_code":{"type":"string","nullable":true},"pix_copy_paste":{"type":"string","nullable":true},"amount_cents":{"type":"integer","nullable":true},"total_amount_cents":{"type":"integer","nullable":true},"installment_count":{"type":"integer","nullable":true},"installment_number":{"type":"integer","nullable":true},"failure_code":{"type":"string","nullable":true},"failure_message":{"type":"string","nullable":true},"refunded_amount_cents":{"type":"integer"},"last_synced_at":{"type":"string","nullable":true},"metadata":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true},"display":{"type":"object","additionalProperties":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"resource":{"type":"string"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["id","label","resource","data"],"additionalProperties":false}}},"required":["id","club_id","amount","currency","status","created_at","updated_at"]}},"pagination":{"type":"object","properties":{"page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"per_page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"total":{"type":"integer","minimum":0}},"required":["page","per_page","total"]}},"required":["success","data","pagination"]}}}}}}},"/api/v1/payments/webhook/{provider}":{"post":{"tags":["Payments"],"parameters":[{"schema":{"type":"string","enum":["asaas","mercado_pago","stripe","pagarme"]},"required":true,"name":"provider","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{"nullable":true}}}}},"responses":{"202":{"description":"Webhook accepted","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"accepted":{"type":"boolean"}},"required":["accepted"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/members/{memberId}/card":{"get":{"tags":["Cards"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"memberId","in":"path"}],"responses":{"200":{"description":"Get digital card","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"member_id":{"type":"string"},"club_id":{"type":"string"},"member_name":{"type":"string"},"status":{"type":"string"},"expires_at":{"type":"string","nullable":true},"validation_token":{"type":"string"},"qr_code_payload":{"type":"string","nullable":true}},"required":["member_id","club_id","member_name","status","validation_token"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/cards/validate":{"post":{"tags":["Cards"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string"},"member_id":{"type":"string"}},"required":["token"],"additionalProperties":false}}}},"responses":{"200":{"description":"Validate card token","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"valid":{"type":"boolean"},"member_id":{"type":"string","nullable":true},"reason":{"type":"string"}},"required":["valid"]}},"required":["success","data"]}}}}}}},"/api/v1/public/cards/{token}":{"get":{"tags":["Cards"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"token","in":"path"}],"responses":{"200":{"description":"Public card validation lookup","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"club_id":{"type":"string"},"member_id":{"type":"string"},"member_name":{"type":"string"},"status":{"type":"string"},"valid":{"type":"boolean"}},"required":["club_id","member_id","member_name","status","valid"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/partners":{"get":{"tags":["Partners"],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"default":1},"required":false,"name":"page","in":"query"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":100,"default":20},"required":false,"name":"per_page","in":"query"},{"schema":{"type":"string"},"required":false,"name":"search","in":"query"},{"schema":{"type":"string"},"required":false,"name":"sort","in":"query"},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"required":false,"name":"order","in":"query"},{"schema":{"type":"string"},"required":false,"name":"filters","in":"query"}],"responses":{"200":{"description":"List Partners","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"name":{"type":"string"},"document":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"address":{"type":"string","nullable":true},"category":{"type":"string","nullable":true},"status":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true}},"required":["id","club_id","name","status","created_at","updated_at"]}},"pagination":{"type":"object","properties":{"page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"per_page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"total":{"type":"integer","minimum":0}},"required":["page","per_page","total"]}},"required":["success","data","pagination"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}}}},"post":{"tags":["Partners"],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"clubId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":2},"document":{"type":"string"},"email":{"type":"string","format":"email"},"phone":{"type":"string"},"address":{"type":"string"},"category":{"type":"string"},"status":{"type":"string","enum":["active","inactive"],"default":"active"}},"required":["name"],"additionalProperties":false}}}},"responses":{"201":{"description":"Partners created","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"name":{"type":"string"},"document":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"address":{"type":"string","nullable":true},"category":{"type":"string","nullable":true},"status":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true}},"required":["id","club_id","name","status","created_at","updated_at"]}},"required":["success","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}}}}},"/api/v1/clubs/{clubId}/partners/{partnerId}":{"get":{"tags":["Partners"],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string","minLength":1},"required":true,"name":"partnerId","in":"path"}],"responses":{"200":{"description":"Partners details","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"name":{"type":"string"},"document":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"address":{"type":"string","nullable":true},"category":{"type":"string","nullable":true},"status":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true}},"required":["id","club_id","name","status","created_at","updated_at"]}},"required":["success","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}}}},"patch":{"tags":["Partners"],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string","minLength":1},"required":true,"name":"partnerId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":2},"document":{"type":"string"},"email":{"type":"string","format":"email"},"phone":{"type":"string"},"address":{"type":"string"},"category":{"type":"string"},"status":{"type":"string","enum":["active","inactive"],"default":"active"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Partners updated","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"name":{"type":"string"},"document":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"address":{"type":"string","nullable":true},"category":{"type":"string","nullable":true},"status":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true}},"required":["id","club_id","name","status","created_at","updated_at"]}},"required":["success","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}}}},"delete":{"tags":["Partners"],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string","minLength":1},"required":true,"name":"partnerId","in":"path"}],"responses":{"200":{"description":"Partners deleted","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"deleted":{"type":"boolean"}},"required":["id","deleted"]}},"required":["success","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}}}}},"/api/v1/clubs/{clubId}/benefits":{"get":{"tags":["Benefits"],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"default":1},"required":false,"name":"page","in":"query"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":100,"default":20},"required":false,"name":"per_page","in":"query"},{"schema":{"type":"string"},"required":false,"name":"search","in":"query"},{"schema":{"type":"string"},"required":false,"name":"sort","in":"query"},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"required":false,"name":"order","in":"query"},{"schema":{"type":"string"},"required":false,"name":"filters","in":"query"}],"responses":{"200":{"description":"List Benefits","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"partner_id":{"type":"string","nullable":true},"title":{"type":"string"},"description":{"type":"string","nullable":true},"rules":{"type":"string","nullable":true},"discount_type":{"type":"string","enum":["percentage","fixed_amount","custom"]},"discount_value":{"type":"number"},"starts_at":{"type":"string","nullable":true},"ends_at":{"type":"string","nullable":true},"usage_limit":{"type":"integer","nullable":true},"usage_limit_per_member":{"type":"integer","nullable":true},"status":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true},"display":{"type":"object","additionalProperties":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"resource":{"type":"string"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["id","label","resource","data"],"additionalProperties":false}}},"required":["id","club_id","title","discount_type","discount_value","status","created_at","updated_at"]}},"pagination":{"type":"object","properties":{"page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"per_page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"total":{"type":"integer","minimum":0}},"required":["page","per_page","total"]}},"required":["success","data","pagination"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}}}},"post":{"tags":["Benefits"],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"clubId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"partner_id":{"type":"string"},"title":{"type":"string","minLength":2},"description":{"type":"string"},"rules":{"type":"string"},"discount_type":{"type":"string","enum":["percentage","fixed_amount","custom"]},"discount_value":{"type":"number","minimum":0},"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"},"usage_limit":{"type":"integer","minimum":0},"usage_limit_per_member":{"type":"integer","minimum":0},"status":{"type":"string","enum":["active","inactive"],"default":"active"}},"required":["title","discount_type","discount_value"],"additionalProperties":false}}}},"responses":{"201":{"description":"Benefits created","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"partner_id":{"type":"string","nullable":true},"title":{"type":"string"},"description":{"type":"string","nullable":true},"rules":{"type":"string","nullable":true},"discount_type":{"type":"string","enum":["percentage","fixed_amount","custom"]},"discount_value":{"type":"number"},"starts_at":{"type":"string","nullable":true},"ends_at":{"type":"string","nullable":true},"usage_limit":{"type":"integer","nullable":true},"usage_limit_per_member":{"type":"integer","nullable":true},"status":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true},"display":{"type":"object","additionalProperties":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"resource":{"type":"string"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["id","label","resource","data"],"additionalProperties":false}}},"required":["id","club_id","title","discount_type","discount_value","status","created_at","updated_at"]}},"required":["success","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}}}}},"/api/v1/clubs/{clubId}/benefits/{benefitId}":{"get":{"tags":["Benefits"],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string","minLength":1},"required":true,"name":"benefitId","in":"path"}],"responses":{"200":{"description":"Benefits details","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"partner_id":{"type":"string","nullable":true},"title":{"type":"string"},"description":{"type":"string","nullable":true},"rules":{"type":"string","nullable":true},"discount_type":{"type":"string","enum":["percentage","fixed_amount","custom"]},"discount_value":{"type":"number"},"starts_at":{"type":"string","nullable":true},"ends_at":{"type":"string","nullable":true},"usage_limit":{"type":"integer","nullable":true},"usage_limit_per_member":{"type":"integer","nullable":true},"status":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true},"display":{"type":"object","additionalProperties":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"resource":{"type":"string"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["id","label","resource","data"],"additionalProperties":false}}},"required":["id","club_id","title","discount_type","discount_value","status","created_at","updated_at"]}},"required":["success","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}}}},"patch":{"tags":["Benefits"],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string","minLength":1},"required":true,"name":"benefitId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"partner_id":{"type":"string"},"title":{"type":"string","minLength":2},"description":{"type":"string"},"rules":{"type":"string"},"discount_type":{"type":"string","enum":["percentage","fixed_amount","custom"]},"discount_value":{"type":"number","minimum":0},"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"},"usage_limit":{"type":"integer","minimum":0},"usage_limit_per_member":{"type":"integer","minimum":0},"status":{"type":"string","enum":["active","inactive"],"default":"active"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Benefits updated","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"partner_id":{"type":"string","nullable":true},"title":{"type":"string"},"description":{"type":"string","nullable":true},"rules":{"type":"string","nullable":true},"discount_type":{"type":"string","enum":["percentage","fixed_amount","custom"]},"discount_value":{"type":"number"},"starts_at":{"type":"string","nullable":true},"ends_at":{"type":"string","nullable":true},"usage_limit":{"type":"integer","nullable":true},"usage_limit_per_member":{"type":"integer","nullable":true},"status":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true},"display":{"type":"object","additionalProperties":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"resource":{"type":"string"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["id","label","resource","data"],"additionalProperties":false}}},"required":["id","club_id","title","discount_type","discount_value","status","created_at","updated_at"]}},"required":["success","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}}}},"delete":{"tags":["Benefits"],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string","minLength":1},"required":true,"name":"benefitId","in":"path"}],"responses":{"200":{"description":"Benefits deleted","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"deleted":{"type":"boolean"}},"required":["id","deleted"]}},"required":["success","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}}}}},"/api/v1/clubs/{clubId}/benefits/{benefitId}/redeem":{"post":{"tags":["Benefits"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"benefitId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"member_id":{"type":"string"},"metadata":{"type":"object","additionalProperties":{"nullable":true}}},"required":["member_id"],"additionalProperties":false}}}},"responses":{"201":{"description":"Benefit redeemed","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"benefit_id":{"type":"string"},"member_id":{"type":"string"},"redeemed_at":{"type":"string"},"metadata":{"type":"string","nullable":true}},"required":["id","club_id","benefit_id","member_id","redeemed_at"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/members/{memberId}/benefit-redemptions":{"get":{"tags":["Benefits"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"memberId","in":"path"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"default":1},"required":false,"name":"page","in":"query"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":100,"default":20},"required":false,"name":"per_page","in":"query"},{"schema":{"type":"string"},"required":false,"name":"search","in":"query"},{"schema":{"type":"string"},"required":false,"name":"sort","in":"query"},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"required":false,"name":"order","in":"query"},{"schema":{"type":"string"},"required":false,"name":"filters","in":"query"}],"responses":{"200":{"description":"List member redemptions","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"benefit_id":{"type":"string"},"member_id":{"type":"string"},"redeemed_at":{"type":"string"},"metadata":{"type":"string","nullable":true}},"required":["id","club_id","benefit_id","member_id","redeemed_at"]}},"pagination":{"type":"object","properties":{"page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"per_page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"total":{"type":"integer","minimum":0}},"required":["page","per_page","total"]}},"required":["success","data","pagination"]}}}}}}},"/api/v1/clubs/{clubId}/resources":{"get":{"tags":["Resources"],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"default":1},"required":false,"name":"page","in":"query"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":100,"default":20},"required":false,"name":"per_page","in":"query"},{"schema":{"type":"string"},"required":false,"name":"search","in":"query"},{"schema":{"type":"string"},"required":false,"name":"sort","in":"query"},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"required":false,"name":"order","in":"query"},{"schema":{"type":"string"},"required":false,"name":"filters","in":"query"}],"responses":{"200":{"description":"List Resources","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"type":{"type":"string"},"capacity":{"type":"integer"},"status":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true}},"required":["id","club_id","name","type","capacity","status","created_at","updated_at"]}},"pagination":{"type":"object","properties":{"page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"per_page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"total":{"type":"integer","minimum":0}},"required":["page","per_page","total"]}},"required":["success","data","pagination"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}}}},"post":{"tags":["Resources"],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"clubId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":2},"description":{"type":"string"},"type":{"type":"string","minLength":2},"capacity":{"type":"integer","minimum":1,"default":1},"status":{"type":"string","enum":["active","inactive"],"default":"active"}},"required":["name","type"],"additionalProperties":false}}}},"responses":{"201":{"description":"Resources created","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"type":{"type":"string"},"capacity":{"type":"integer"},"status":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true}},"required":["id","club_id","name","type","capacity","status","created_at","updated_at"]}},"required":["success","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}}}}},"/api/v1/clubs/{clubId}/resources/{resourceId}":{"get":{"tags":["Resources"],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string","minLength":1},"required":true,"name":"resourceId","in":"path"}],"responses":{"200":{"description":"Resources details","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"type":{"type":"string"},"capacity":{"type":"integer"},"status":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true}},"required":["id","club_id","name","type","capacity","status","created_at","updated_at"]}},"required":["success","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}}}},"patch":{"tags":["Resources"],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string","minLength":1},"required":true,"name":"resourceId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":2},"description":{"type":"string"},"type":{"type":"string","minLength":2},"capacity":{"type":"integer","minimum":1,"default":1},"status":{"type":"string","enum":["active","inactive"],"default":"active"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Resources updated","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"type":{"type":"string"},"capacity":{"type":"integer"},"status":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true}},"required":["id","club_id","name","type","capacity","status","created_at","updated_at"]}},"required":["success","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}}}},"delete":{"tags":["Resources"],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string","minLength":1},"required":true,"name":"resourceId","in":"path"}],"responses":{"200":{"description":"Resources deleted","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"deleted":{"type":"boolean"}},"required":["id","deleted"]}},"required":["success","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}}}}},"/api/v1/clubs/{clubId}/reservations":{"get":{"tags":["Reservations"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"default":1},"required":false,"name":"page","in":"query"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":100,"default":20},"required":false,"name":"per_page","in":"query"},{"schema":{"type":"string"},"required":false,"name":"search","in":"query"},{"schema":{"type":"string"},"required":false,"name":"sort","in":"query"},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"required":false,"name":"order","in":"query"},{"schema":{"type":"string"},"required":false,"name":"filters","in":"query"}],"responses":{"200":{"description":"List reservations","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"resource_id":{"type":"string"},"member_id":{"type":"string"},"starts_at":{"type":"string"},"starts_at_epoch":{"type":"integer","nullable":true,"readOnly":true},"ends_at":{"type":"string"},"ends_at_epoch":{"type":"integer","nullable":true,"readOnly":true},"status":{"type":"string"},"notes":{"type":"string","nullable":true},"created_at":{"type":"string"},"created_at_epoch":{"type":"integer","nullable":true,"readOnly":true},"updated_at":{"type":"string"},"updated_at_epoch":{"type":"integer","nullable":true,"readOnly":true},"deleted_at":{"type":"string","nullable":true},"deleted_at_epoch":{"type":"integer","nullable":true,"readOnly":true},"display":{"type":"object","additionalProperties":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"resource":{"type":"string"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["id","label","resource","data"],"additionalProperties":false}}},"required":["id","club_id","resource_id","member_id","starts_at","ends_at","status","created_at","updated_at"]}},"pagination":{"type":"object","properties":{"page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"per_page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"total":{"type":"integer","minimum":0}},"required":["page","per_page","total"]}},"required":["success","data","pagination"]}}}}}},"post":{"tags":["Reservations"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"resource_id":{"type":"string"},"member_id":{"type":"string"},"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"},"notes":{"type":"string"}},"required":["resource_id","member_id","starts_at","ends_at"],"additionalProperties":false}}}},"responses":{"201":{"description":"Create reservation","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"resource_id":{"type":"string"},"member_id":{"type":"string"},"starts_at":{"type":"string"},"starts_at_epoch":{"type":"integer","nullable":true,"readOnly":true},"ends_at":{"type":"string"},"ends_at_epoch":{"type":"integer","nullable":true,"readOnly":true},"status":{"type":"string"},"notes":{"type":"string","nullable":true},"created_at":{"type":"string"},"created_at_epoch":{"type":"integer","nullable":true,"readOnly":true},"updated_at":{"type":"string"},"updated_at_epoch":{"type":"integer","nullable":true,"readOnly":true},"deleted_at":{"type":"string","nullable":true},"deleted_at_epoch":{"type":"integer","nullable":true,"readOnly":true},"display":{"type":"object","additionalProperties":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"resource":{"type":"string"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["id","label","resource","data"],"additionalProperties":false}}},"required":["id","club_id","resource_id","member_id","starts_at","ends_at","status","created_at","updated_at"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/reservations/{reservationId}":{"get":{"tags":["Reservations"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"reservationId","in":"path"}],"responses":{"200":{"description":"Get reservation","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"resource_id":{"type":"string"},"member_id":{"type":"string"},"starts_at":{"type":"string"},"starts_at_epoch":{"type":"integer","nullable":true,"readOnly":true},"ends_at":{"type":"string"},"ends_at_epoch":{"type":"integer","nullable":true,"readOnly":true},"status":{"type":"string"},"notes":{"type":"string","nullable":true},"created_at":{"type":"string"},"created_at_epoch":{"type":"integer","nullable":true,"readOnly":true},"updated_at":{"type":"string"},"updated_at_epoch":{"type":"integer","nullable":true,"readOnly":true},"deleted_at":{"type":"string","nullable":true},"deleted_at_epoch":{"type":"integer","nullable":true,"readOnly":true},"display":{"type":"object","additionalProperties":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"resource":{"type":"string"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["id","label","resource","data"],"additionalProperties":false}}},"required":["id","club_id","resource_id","member_id","starts_at","ends_at","status","created_at","updated_at"]}},"required":["success","data"]}}}}}},"patch":{"tags":["Reservations"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"reservationId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"notes":{"type":"string"},"status":{"type":"string","enum":["active","cancelled"]}},"additionalProperties":false}}}},"responses":{"200":{"description":"Update reservation","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"resource_id":{"type":"string"},"member_id":{"type":"string"},"starts_at":{"type":"string"},"starts_at_epoch":{"type":"integer","nullable":true,"readOnly":true},"ends_at":{"type":"string"},"ends_at_epoch":{"type":"integer","nullable":true,"readOnly":true},"status":{"type":"string"},"notes":{"type":"string","nullable":true},"created_at":{"type":"string"},"created_at_epoch":{"type":"integer","nullable":true,"readOnly":true},"updated_at":{"type":"string"},"updated_at_epoch":{"type":"integer","nullable":true,"readOnly":true},"deleted_at":{"type":"string","nullable":true},"deleted_at_epoch":{"type":"integer","nullable":true,"readOnly":true},"display":{"type":"object","additionalProperties":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"resource":{"type":"string"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["id","label","resource","data"],"additionalProperties":false}}},"required":["id","club_id","resource_id","member_id","starts_at","ends_at","status","created_at","updated_at"]}},"required":["success","data"]}}}}}},"delete":{"tags":["Reservations"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"reservationId","in":"path"}],"responses":{"200":{"description":"Cancel reservation","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"cancelled":{"type":"boolean"}},"required":["cancelled"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/resources/{resourceId}/availability":{"get":{"tags":["Reservations"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"resourceId","in":"path"},{"schema":{"type":"string","format":"date-time"},"required":true,"name":"starts_at","in":"query"},{"schema":{"type":"string","format":"date-time"},"required":true,"name":"ends_at","in":"query"}],"responses":{"200":{"description":"Check resource availability","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"available":{"type":"boolean"},"conflicts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"resource_id":{"type":"string"},"member_id":{"type":"string"},"starts_at":{"type":"string"},"starts_at_epoch":{"type":"integer","nullable":true,"readOnly":true},"ends_at":{"type":"string"},"ends_at_epoch":{"type":"integer","nullable":true,"readOnly":true},"status":{"type":"string"},"notes":{"type":"string","nullable":true},"created_at":{"type":"string"},"created_at_epoch":{"type":"integer","nullable":true,"readOnly":true},"updated_at":{"type":"string"},"updated_at_epoch":{"type":"integer","nullable":true,"readOnly":true},"deleted_at":{"type":"string","nullable":true},"deleted_at_epoch":{"type":"integer","nullable":true,"readOnly":true},"display":{"type":"object","additionalProperties":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"resource":{"type":"string"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["id","label","resource","data"],"additionalProperties":false}}},"required":["id","club_id","resource_id","member_id","starts_at","ends_at","status","created_at","updated_at"]}}},"required":["available","conflicts"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/events":{"get":{"tags":["Events"],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"default":1},"required":false,"name":"page","in":"query"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":100,"default":20},"required":false,"name":"per_page","in":"query"},{"schema":{"type":"string"},"required":false,"name":"search","in":"query"},{"schema":{"type":"string"},"required":false,"name":"sort","in":"query"},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"required":false,"name":"order","in":"query"},{"schema":{"type":"string"},"required":false,"name":"filters","in":"query"}],"responses":{"200":{"description":"List Events","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"title":{"type":"string"},"description":{"type":"string","nullable":true},"starts_at":{"type":"string"},"ends_at":{"type":"string","nullable":true},"capacity":{"type":"integer","nullable":true},"status":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true}},"required":["id","club_id","title","starts_at","status","created_at","updated_at"]}},"pagination":{"type":"object","properties":{"page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"per_page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"total":{"type":"integer","minimum":0}},"required":["page","per_page","total"]}},"required":["success","data","pagination"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}}}},"post":{"tags":["Events"],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"clubId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":2},"description":{"type":"string"},"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"},"capacity":{"type":"integer","minimum":1},"status":{"type":"string","enum":["draft","published","cancelled"],"default":"draft"}},"required":["title","starts_at"],"additionalProperties":false}}}},"responses":{"201":{"description":"Events created","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"title":{"type":"string"},"description":{"type":"string","nullable":true},"starts_at":{"type":"string"},"ends_at":{"type":"string","nullable":true},"capacity":{"type":"integer","nullable":true},"status":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true}},"required":["id","club_id","title","starts_at","status","created_at","updated_at"]}},"required":["success","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}}}}},"/api/v1/clubs/{clubId}/events/{eventId}":{"get":{"tags":["Events"],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string","minLength":1},"required":true,"name":"eventId","in":"path"}],"responses":{"200":{"description":"Events details","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"title":{"type":"string"},"description":{"type":"string","nullable":true},"starts_at":{"type":"string"},"ends_at":{"type":"string","nullable":true},"capacity":{"type":"integer","nullable":true},"status":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true}},"required":["id","club_id","title","starts_at","status","created_at","updated_at"]}},"required":["success","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}}}},"patch":{"tags":["Events"],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string","minLength":1},"required":true,"name":"eventId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":2},"description":{"type":"string"},"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"},"capacity":{"type":"integer","minimum":1},"status":{"type":"string","enum":["draft","published","cancelled"],"default":"draft"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Events updated","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"title":{"type":"string"},"description":{"type":"string","nullable":true},"starts_at":{"type":"string"},"ends_at":{"type":"string","nullable":true},"capacity":{"type":"integer","nullable":true},"status":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true}},"required":["id","club_id","title","starts_at","status","created_at","updated_at"]}},"required":["success","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}}}},"delete":{"tags":["Events"],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string","minLength":1},"required":true,"name":"eventId","in":"path"}],"responses":{"200":{"description":"Events deleted","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"deleted":{"type":"boolean"}},"required":["id","deleted"]}},"required":["success","data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"nullable":true}},"required":["code","message"]}},"required":["success","error"]}}}}}}},"/api/v1/clubs/{clubId}/events/{eventId}/register":{"post":{"tags":["Events"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"eventId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"member_id":{"type":"string"}},"required":["member_id"],"additionalProperties":false}}}},"responses":{"201":{"description":"Register member in event","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"event_id":{"type":"string"},"member_id":{"type":"string"},"status":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true}},"required":["id","club_id","event_id","member_id","status","created_at","updated_at"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/events/{eventId}/register/{registrationId}":{"delete":{"tags":["Events"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"eventId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"registrationId","in":"path"}],"responses":{"200":{"description":"Cancel event registration","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"cancelled":{"type":"boolean"}},"required":["cancelled"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/events/{eventId}/registrations":{"get":{"tags":["Events"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"eventId","in":"path"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"default":1},"required":false,"name":"page","in":"query"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":100,"default":20},"required":false,"name":"per_page","in":"query"},{"schema":{"type":"string"},"required":false,"name":"search","in":"query"},{"schema":{"type":"string"},"required":false,"name":"sort","in":"query"},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"required":false,"name":"order","in":"query"},{"schema":{"type":"string"},"required":false,"name":"filters","in":"query"}],"responses":{"200":{"description":"List event registrations","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"event_id":{"type":"string"},"member_id":{"type":"string"},"status":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true}},"required":["id","club_id","event_id","member_id","status","created_at","updated_at"]}},"pagination":{"type":"object","properties":{"page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"per_page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"total":{"type":"integer","minimum":0}},"required":["page","per_page","total"]}},"required":["success","data","pagination"]}}}}}}},"/api/v1/clubs/{clubId}/notifications":{"get":{"tags":["Notifications"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"default":1},"required":false,"name":"page","in":"query"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":100,"default":20},"required":false,"name":"per_page","in":"query"},{"schema":{"type":"string"},"required":false,"name":"search","in":"query"},{"schema":{"type":"string"},"required":false,"name":"sort","in":"query"},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"required":false,"name":"order","in":"query"},{"schema":{"type":"string"},"required":false,"name":"filters","in":"query"}],"responses":{"200":{"description":"List notifications","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"member_id":{"type":"string","nullable":true},"channel":{"type":"string","enum":["email","whatsapp","sms","push"]},"title":{"type":"string"},"content":{"type":"string"},"status":{"type":"string"},"reference_type":{"type":"string","nullable":true},"reference_id":{"type":"string","nullable":true},"delivered_at":{"type":"string","nullable":true},"scheduled_at":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true}},"required":["id","club_id","channel","title","content","status","created_at","updated_at"]}},"pagination":{"type":"object","properties":{"page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"per_page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"total":{"type":"integer","minimum":0}},"required":["page","per_page","total"]}},"required":["success","data","pagination"]}}}}}},"post":{"tags":["Notifications"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"member_id":{"type":"string","minLength":1},"channel":{"type":"string","enum":["email","whatsapp","sms","push"]},"title":{"type":"string","minLength":2},"content":{"type":"string","minLength":1},"scheduled_at":{"type":"string","format":"date-time"},"status":{"type":"string","enum":["draft","queued","sent","failed"],"default":"draft"}},"required":["channel","title","content"],"additionalProperties":false}}}},"responses":{"201":{"description":"Create notification","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"member_id":{"type":"string","nullable":true},"channel":{"type":"string","enum":["email","whatsapp","sms","push"]},"title":{"type":"string"},"content":{"type":"string"},"status":{"type":"string"},"reference_type":{"type":"string","nullable":true},"reference_id":{"type":"string","nullable":true},"delivered_at":{"type":"string","nullable":true},"scheduled_at":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true}},"required":["id","club_id","channel","title","content","status","created_at","updated_at"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/notifications/send":{"post":{"tags":["Notifications"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"notification_ids":{"type":"array","items":{"type":"string"},"minItems":1}},"required":["notification_ids"],"additionalProperties":false}}}},"responses":{"202":{"description":"Queue notifications for delivery","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"queued":{"type":"integer"}},"required":["queued"]}},"required":["success","data"]}}}}}}},"/api/v1/messaging/catalog":{"get":{"tags":["Messaging"],"responses":{"200":{"description":"Messaging catalog","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"channels":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","enum":["email","sms","whatsapp","telegram","push"]},"label":{"type":"string"},"status":{"type":"string","enum":["available","planned"]},"supports_backup":{"type":"boolean"},"providers":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","enum":["smtp","twilio","meta_whatsapp","telegram_bot","fcm"]},"label":{"type":"string"},"status":{"type":"string","enum":["available","planned"]},"channels":{"type":"array","items":{"type":"string","enum":["email","sms","whatsapp","telegram","push"]}},"supports_test":{"type":"boolean"}},"required":["code","label","status","channels","supports_test"],"additionalProperties":false}}},"required":["code","label","status","supports_backup","providers"],"additionalProperties":false}},"providers":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","enum":["smtp","twilio","meta_whatsapp","telegram_bot","fcm"]},"label":{"type":"string"},"status":{"type":"string","enum":["available","planned"]},"channels":{"type":"array","items":{"type":"string","enum":["email","sms","whatsapp","telegram","push"]}},"supports_test":{"type":"boolean"}},"required":["code","label","status","channels","supports_test"],"additionalProperties":false}}},"required":["channels","providers"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/messaging/settings":{"get":{"tags":["Messaging"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"}],"responses":{"200":{"description":"Messaging settings by channel","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"channels":{"type":"array","items":{"type":"object","properties":{"channel":{"type":"string","enum":["email","sms","whatsapp","telegram","push"]},"label":{"type":"string"},"status":{"type":"string","enum":["active","incomplete","planned","unconfigured"]},"supports_backup":{"type":"boolean"},"providers":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","enum":["smtp","twilio","meta_whatsapp","telegram_bot","fcm"]},"label":{"type":"string"},"status":{"type":"string","enum":["available","planned"]},"channels":{"type":"array","items":{"type":"string","enum":["email","sms","whatsapp","telegram","push"]}},"supports_test":{"type":"boolean"}},"required":["code","label","status","channels","supports_test"],"additionalProperties":false}},"primary_route":{"type":"object","nullable":true,"properties":{"id":{"type":"string"},"club_id":{"type":"string"},"channel":{"type":"string","enum":["email","sms","whatsapp","telegram","push"]},"slot":{"type":"string","enum":["primary","backup"]},"provider_account_id":{"type":"string"},"provider":{"type":"string","enum":["smtp","twilio","meta_whatsapp","telegram_bot","fcm"]},"provider_label":{"type":"string"},"account_display_name":{"type":"string"},"status":{"type":"string","enum":["active","inactive"]},"settings_summary":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"nullable":true},{"nullable":true}]}},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true}},"required":["id","club_id","channel","slot","provider_account_id","provider","provider_label","account_display_name","status","settings_summary","created_at","updated_at"],"additionalProperties":false},"backup_route":{"type":"object","nullable":true,"properties":{"id":{"type":"string"},"club_id":{"type":"string"},"channel":{"type":"string","enum":["email","sms","whatsapp","telegram","push"]},"slot":{"type":"string","enum":["primary","backup"]},"provider_account_id":{"type":"string"},"provider":{"type":"string","enum":["smtp","twilio","meta_whatsapp","telegram_bot","fcm"]},"provider_label":{"type":"string"},"account_display_name":{"type":"string"},"status":{"type":"string","enum":["active","inactive"]},"settings_summary":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"nullable":true},{"nullable":true}]}},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true}},"required":["id","club_id","channel","slot","provider_account_id","provider","provider_label","account_display_name","status","settings_summary","created_at","updated_at"],"additionalProperties":false}},"required":["channel","label","status","supports_backup","providers","primary_route","backup_route"],"additionalProperties":false}}},"required":["channels"],"additionalProperties":false}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/messaging/provider-accounts":{"get":{"tags":["Messaging"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"}],"responses":{"200":{"description":"List provider accounts","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"provider":{"type":"string","enum":["smtp","twilio","meta_whatsapp","telegram_bot","fcm"]},"display_name":{"type":"string"},"status":{"type":"string","enum":["active","inactive"]},"credentials_version":{"type":"integer"},"config_summary":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"nullable":true},{"nullable":true}]}},"channels":{"type":"array","items":{"type":"string","enum":["email","sms","whatsapp","telegram","push"]}},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true}},"required":["id","club_id","provider","display_name","status","credentials_version","config_summary","channels","created_at","updated_at"],"additionalProperties":false}}},"required":["success","data"]}}}}}},"post":{"tags":["Messaging"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"provider":{"type":"string","enum":["smtp","twilio","meta_whatsapp","telegram_bot","fcm"]},"display_name":{"type":"string","minLength":2},"status":{"type":"string","enum":["active","inactive"],"default":"active"},"credentials":{"type":"object","properties":{"host":{"type":"string","minLength":1},"port":{"type":"integer","minimum":1,"maximum":65535,"default":587},"username":{"type":"string","minLength":1},"password":{"type":"string","minLength":1},"from_email":{"type":"string","format":"email"},"from_name":{"type":"string"},"secure":{"type":"boolean","default":false},"require_starttls":{"type":"boolean","default":true}},"required":["host","username","password","from_email"],"additionalProperties":false}},"required":["provider","display_name","credentials"],"additionalProperties":false}}}},"responses":{"201":{"description":"Create provider account","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"provider":{"type":"string","enum":["smtp","twilio","meta_whatsapp","telegram_bot","fcm"]},"display_name":{"type":"string"},"status":{"type":"string","enum":["active","inactive"]},"credentials_version":{"type":"integer"},"config_summary":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"nullable":true},{"nullable":true}]}},"channels":{"type":"array","items":{"type":"string","enum":["email","sms","whatsapp","telegram","push"]}},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true}},"required":["id","club_id","provider","display_name","status","credentials_version","config_summary","channels","created_at","updated_at"],"additionalProperties":false}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/messaging/provider-accounts/{accountId}":{"get":{"tags":["Messaging"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"accountId","in":"path"}],"responses":{"200":{"description":"Get provider account","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"provider":{"type":"string","enum":["smtp","twilio","meta_whatsapp","telegram_bot","fcm"]},"display_name":{"type":"string"},"status":{"type":"string","enum":["active","inactive"]},"credentials_version":{"type":"integer"},"config_summary":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"nullable":true},{"nullable":true}]}},"channels":{"type":"array","items":{"type":"string","enum":["email","sms","whatsapp","telegram","push"]}},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true}},"required":["id","club_id","provider","display_name","status","credentials_version","config_summary","channels","created_at","updated_at"],"additionalProperties":false}},"required":["success","data"]}}}}}},"patch":{"tags":["Messaging"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"accountId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"display_name":{"type":"string","minLength":2},"status":{"type":"string","enum":["active","inactive"]},"credentials":{"type":"object","properties":{"host":{"type":"string","minLength":1},"port":{"type":"integer","minimum":1,"maximum":65535},"username":{"type":"string","minLength":1},"password":{"type":"string","minLength":1},"from_email":{"type":"string","format":"email"},"from_name":{"type":"string"},"secure":{"type":"boolean"},"require_starttls":{"type":"boolean"}},"additionalProperties":false}},"additionalProperties":false}}}},"responses":{"200":{"description":"Update provider account","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"provider":{"type":"string","enum":["smtp","twilio","meta_whatsapp","telegram_bot","fcm"]},"display_name":{"type":"string"},"status":{"type":"string","enum":["active","inactive"]},"credentials_version":{"type":"integer"},"config_summary":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"nullable":true},{"nullable":true}]}},"channels":{"type":"array","items":{"type":"string","enum":["email","sms","whatsapp","telegram","push"]}},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true}},"required":["id","club_id","provider","display_name","status","credentials_version","config_summary","channels","created_at","updated_at"],"additionalProperties":false}},"required":["success","data"]}}}}}},"delete":{"tags":["Messaging"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"accountId","in":"path"}],"responses":{"200":{"description":"Delete provider account","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"deleted":{"type":"boolean"}},"required":["id","deleted"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/messaging/channels/{channel}/{slot}":{"put":{"tags":["Messaging"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string","enum":["email","sms","whatsapp","telegram","push"]},"required":true,"name":"channel","in":"path"},{"schema":{"type":"string","enum":["primary","backup"]},"required":true,"name":"slot","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"provider_account_id":{"type":"string","minLength":1},"status":{"type":"string","enum":["active","inactive"],"default":"active"}},"required":["provider_account_id"],"additionalProperties":false}}}},"responses":{"200":{"description":"Upsert channel route","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"channel":{"type":"string","enum":["email","sms","whatsapp","telegram","push"]},"slot":{"type":"string","enum":["primary","backup"]},"provider_account_id":{"type":"string"},"provider":{"type":"string","enum":["smtp","twilio","meta_whatsapp","telegram_bot","fcm"]},"provider_label":{"type":"string"},"account_display_name":{"type":"string"},"status":{"type":"string","enum":["active","inactive"]},"settings_summary":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"nullable":true},{"nullable":true}]}},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true}},"required":["id","club_id","channel","slot","provider_account_id","provider","provider_label","account_display_name","status","settings_summary","created_at","updated_at"],"additionalProperties":false}},"required":["success","data"]}}}}}},"delete":{"tags":["Messaging"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string","enum":["email","sms","whatsapp","telegram","push"]},"required":true,"name":"channel","in":"path"},{"schema":{"type":"string","enum":["primary","backup"]},"required":true,"name":"slot","in":"path"}],"responses":{"200":{"description":"Delete channel route","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"channel":{"type":"string","enum":["email","sms","whatsapp","telegram","push"]},"slot":{"type":"string","enum":["primary","backup"]},"deleted":{"type":"boolean"}},"required":["channel","slot","deleted"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/messaging/channels/{channel}/{slot}/test":{"post":{"tags":["Messaging"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string","enum":["email","sms","whatsapp","telegram","push"]},"required":true,"name":"channel","in":"path"},{"schema":{"type":"string","enum":["primary","backup"]},"required":true,"name":"slot","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"to_email":{"type":"string","format":"email"},"subject":{"type":"string","minLength":1,"default":"Teste de integração SMTP"},"body_html":{"type":"string","minLength":1,"default":"<p>Mensagem de teste do módulo de mensageria.</p>"},"body_text":{"type":"string","minLength":1,"default":"Mensagem de teste do módulo de mensageria."}},"required":["to_email"],"additionalProperties":false}}}},"responses":{"202":{"description":"Queue channel route test","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"queued":{"type":"boolean"}},"required":["queued"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/messaging/integrations":{"get":{"tags":["Messaging"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"default":1},"required":false,"name":"page","in":"query"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":100,"default":20},"required":false,"name":"per_page","in":"query"},{"schema":{"type":"string"},"required":false,"name":"search","in":"query"},{"schema":{"type":"string"},"required":false,"name":"sort","in":"query"},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"required":false,"name":"order","in":"query"},{"schema":{"type":"string"},"required":false,"name":"filters","in":"query"}],"responses":{"200":{"description":"List messaging integrations","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"channel":{"type":"string"},"provider":{"type":"string"},"config_version":{"type":"integer"},"status":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true},"config_summary":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"nullable":true},{"nullable":true}]}}},"required":["id","club_id","channel","provider","config_version","status","created_at","updated_at"]}},"pagination":{"type":"object","properties":{"page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"per_page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"total":{"type":"integer","minimum":0}},"required":["page","per_page","total"]}},"required":["success","data","pagination"]}}}}}}},"/api/v1/clubs/{clubId}/messaging/integrations/email/smtp":{"put":{"tags":["Messaging"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"host":{"type":"string","minLength":1},"port":{"type":"integer","minimum":1,"maximum":65535,"default":587},"username":{"type":"string","minLength":1},"password":{"type":"string","minLength":1},"from_email":{"type":"string","format":"email"},"from_name":{"type":"string"},"secure":{"type":"boolean","default":false},"require_starttls":{"type":"boolean","default":true},"status":{"type":"string","enum":["active","inactive"],"default":"active"}},"required":["host","username","password","from_email"],"additionalProperties":false}}}},"responses":{"200":{"description":"Upsert SMTP integration","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"channel":{"type":"string"},"provider":{"type":"string"},"config_version":{"type":"integer"},"status":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true},"config_summary":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"nullable":true},{"nullable":true}]}}},"required":["id","club_id","channel","provider","config_version","status","created_at","updated_at"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/messaging/integrations/{integrationId}/test":{"post":{"tags":["Messaging"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"integrationId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"to_email":{"type":"string","format":"email"},"subject":{"type":"string","minLength":1,"default":"Teste de integração SMTP"},"body_html":{"type":"string","minLength":1,"default":"<p>Mensagem de teste do módulo de mensageria.</p>"},"body_text":{"type":"string","minLength":1,"default":"Mensagem de teste do módulo de mensageria."}},"required":["to_email"],"additionalProperties":false}}}},"responses":{"202":{"description":"Queue integration test email","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"queued":{"type":"boolean"}},"required":["queued"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/messaging/segments":{"get":{"tags":["Messaging"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"default":1},"required":false,"name":"page","in":"query"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":100,"default":20},"required":false,"name":"per_page","in":"query"},{"schema":{"type":"string"},"required":false,"name":"search","in":"query"},{"schema":{"type":"string"},"required":false,"name":"sort","in":"query"},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"required":false,"name":"order","in":"query"},{"schema":{"type":"string"},"required":false,"name":"filters","in":"query"}],"responses":{"200":{"description":"List segments","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"filters_json":{"type":"string"},"status":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true}},"required":["id","club_id","name","filters_json","status","created_at","updated_at"]}},"pagination":{"type":"object","properties":{"page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"per_page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"total":{"type":"integer","minimum":0}},"required":["page","per_page","total"]}},"required":["success","data","pagination"]}}}}}},"post":{"tags":["Messaging"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":2},"description":{"type":"string"},"filters":{"type":"object","properties":{"member_status":{"type":"array","items":{"type":"string","enum":["active","inactive","overdue","suspended","pending"]}},"has_email":{"type":"boolean"},"joined_at":{"type":"object","properties":{"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"}},"additionalProperties":false},"subscription_status":{"type":"array","items":{"type":"string","enum":["active","paused","suspended","cancelled","pending"]}},"plan_ids":{"type":"array","items":{"type":"string"}},"payment_status":{"type":"array","items":{"type":"string","enum":["pending","paid","overdue","failed","disputed","cancelled"]}},"payment_due_at":{"type":"object","properties":{"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"}},"additionalProperties":false},"reservations":{"type":"object","properties":{"mode":{"type":"string","enum":["has","has_not"],"default":"has"},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"},"ids":{"type":"array","items":{"type":"string"}},"min_count":{"type":"integer","minimum":0},"max_count":{"type":"integer","minimum":0}},"additionalProperties":false},"events":{"type":"object","properties":{"mode":{"type":"string","enum":["has","has_not"],"default":"has"},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"},"ids":{"type":"array","items":{"type":"string"}},"min_count":{"type":"integer","minimum":0},"max_count":{"type":"integer","minimum":0}},"additionalProperties":false},"benefit_redemptions":{"type":"object","properties":{"mode":{"type":"string","enum":["has","has_not"],"default":"has"},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"},"ids":{"type":"array","items":{"type":"string"}},"min_count":{"type":"integer","minimum":0},"max_count":{"type":"integer","minimum":0}},"additionalProperties":false}},"default":{},"additionalProperties":false},"status":{"type":"string","enum":["active","inactive"],"default":"active"}},"required":["name"],"additionalProperties":false}}}},"responses":{"201":{"description":"Create segment","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"filters_json":{"type":"string"},"status":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true}},"required":["id","club_id","name","filters_json","status","created_at","updated_at"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/messaging/segments/{segmentId}":{"get":{"tags":["Messaging"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"segmentId","in":"path"}],"responses":{"200":{"description":"Get segment","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"filters_json":{"type":"string"},"status":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true}},"required":["id","club_id","name","filters_json","status","created_at","updated_at"]}},"required":["success","data"]}}}}}},"patch":{"tags":["Messaging"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"segmentId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":2},"description":{"type":"string"},"filters":{"type":"object","properties":{"member_status":{"type":"array","items":{"type":"string","enum":["active","inactive","overdue","suspended","pending"]}},"has_email":{"type":"boolean"},"joined_at":{"type":"object","properties":{"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"}},"additionalProperties":false},"subscription_status":{"type":"array","items":{"type":"string","enum":["active","paused","suspended","cancelled","pending"]}},"plan_ids":{"type":"array","items":{"type":"string"}},"payment_status":{"type":"array","items":{"type":"string","enum":["pending","paid","overdue","failed","disputed","cancelled"]}},"payment_due_at":{"type":"object","properties":{"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"}},"additionalProperties":false},"reservations":{"type":"object","properties":{"mode":{"type":"string","enum":["has","has_not"],"default":"has"},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"},"ids":{"type":"array","items":{"type":"string"}},"min_count":{"type":"integer","minimum":0},"max_count":{"type":"integer","minimum":0}},"additionalProperties":false},"events":{"type":"object","properties":{"mode":{"type":"string","enum":["has","has_not"],"default":"has"},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"},"ids":{"type":"array","items":{"type":"string"}},"min_count":{"type":"integer","minimum":0},"max_count":{"type":"integer","minimum":0}},"additionalProperties":false},"benefit_redemptions":{"type":"object","properties":{"mode":{"type":"string","enum":["has","has_not"],"default":"has"},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"},"ids":{"type":"array","items":{"type":"string"}},"min_count":{"type":"integer","minimum":0},"max_count":{"type":"integer","minimum":0}},"additionalProperties":false}},"additionalProperties":false},"status":{"type":"string","enum":["active","inactive"]}},"additionalProperties":false}}}},"responses":{"200":{"description":"Update segment","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"filters_json":{"type":"string"},"status":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true}},"required":["id","club_id","name","filters_json","status","created_at","updated_at"]}},"required":["success","data"]}}}}}},"delete":{"tags":["Messaging"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"segmentId","in":"path"}],"responses":{"200":{"description":"Delete segment","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"deleted":{"type":"boolean"}},"required":["id","deleted"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/messaging/segments/{segmentId}/preview":{"post":{"tags":["Messaging"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"segmentId","in":"path"}],"responses":{"200":{"description":"Preview segment size","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"recipients":{"type":"integer"}},"required":["recipients"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/messaging/segments/preview":{"post":{"tags":["Messaging"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"filters":{"type":"object","properties":{"member_status":{"type":"array","items":{"type":"string","enum":["active","inactive","overdue","suspended","pending"]}},"has_email":{"type":"boolean"},"joined_at":{"type":"object","properties":{"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"}},"additionalProperties":false},"subscription_status":{"type":"array","items":{"type":"string","enum":["active","paused","suspended","cancelled","pending"]}},"plan_ids":{"type":"array","items":{"type":"string"}},"payment_status":{"type":"array","items":{"type":"string","enum":["pending","paid","overdue","failed","disputed","cancelled"]}},"payment_due_at":{"type":"object","properties":{"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"}},"additionalProperties":false},"reservations":{"type":"object","properties":{"mode":{"type":"string","enum":["has","has_not"],"default":"has"},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"},"ids":{"type":"array","items":{"type":"string"}},"min_count":{"type":"integer","minimum":0},"max_count":{"type":"integer","minimum":0}},"additionalProperties":false},"events":{"type":"object","properties":{"mode":{"type":"string","enum":["has","has_not"],"default":"has"},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"},"ids":{"type":"array","items":{"type":"string"}},"min_count":{"type":"integer","minimum":0},"max_count":{"type":"integer","minimum":0}},"additionalProperties":false},"benefit_redemptions":{"type":"object","properties":{"mode":{"type":"string","enum":["has","has_not"],"default":"has"},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"},"ids":{"type":"array","items":{"type":"string"}},"min_count":{"type":"integer","minimum":0},"max_count":{"type":"integer","minimum":0}},"additionalProperties":false}},"additionalProperties":false}},"required":["filters"],"additionalProperties":false}}}},"responses":{"200":{"description":"Preview unsaved segment filters","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"recipients":{"type":"integer"}},"required":["recipients"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/messaging/campaigns":{"get":{"tags":["Messaging"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"default":1},"required":false,"name":"page","in":"query"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":100,"default":20},"required":false,"name":"per_page","in":"query"},{"schema":{"type":"string"},"required":false,"name":"search","in":"query"},{"schema":{"type":"string"},"required":false,"name":"sort","in":"query"},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"required":false,"name":"order","in":"query"},{"schema":{"type":"string"},"required":false,"name":"filters","in":"query"}],"responses":{"200":{"description":"List campaigns","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"segment_id":{"type":"string"},"integration_id":{"type":"string"},"channel":{"type":"string"},"subject":{"type":"string"},"body_html":{"type":"string"},"body_text":{"type":"string","nullable":true},"status":{"type":"string"},"scheduled_at":{"type":"string","nullable":true},"started_at":{"type":"string","nullable":true},"completed_at":{"type":"string","nullable":true},"last_error":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true},"display":{"type":"object","additionalProperties":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"resource":{"type":"string"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["id","label","resource","data"],"additionalProperties":false}}},"required":["id","club_id","segment_id","integration_id","channel","subject","body_html","status","created_at","updated_at"]}},"pagination":{"type":"object","properties":{"page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"per_page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"total":{"type":"integer","minimum":0}},"required":["page","per_page","total"]}},"required":["success","data","pagination"]}}}}}},"post":{"tags":["Messaging"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"segment_id":{"type":"string","minLength":1},"integration_id":{"type":"string","minLength":1},"subject":{"type":"string","minLength":1},"body_html":{"type":"string","minLength":1},"body_text":{"type":"string"},"scheduled_at":{"type":"string","format":"date-time"},"status":{"type":"string","enum":["draft","queued"],"default":"draft"}},"required":["segment_id","integration_id","subject","body_html"],"additionalProperties":false}}}},"responses":{"201":{"description":"Create campaign","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"segment_id":{"type":"string"},"integration_id":{"type":"string"},"channel":{"type":"string"},"subject":{"type":"string"},"body_html":{"type":"string"},"body_text":{"type":"string","nullable":true},"status":{"type":"string"},"scheduled_at":{"type":"string","nullable":true},"started_at":{"type":"string","nullable":true},"completed_at":{"type":"string","nullable":true},"last_error":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true},"display":{"type":"object","additionalProperties":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"resource":{"type":"string"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["id","label","resource","data"],"additionalProperties":false}}},"required":["id","club_id","segment_id","integration_id","channel","subject","body_html","status","created_at","updated_at"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/messaging/campaigns/{campaignId}":{"get":{"tags":["Messaging"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"campaignId","in":"path"}],"responses":{"200":{"description":"Get campaign","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"segment_id":{"type":"string"},"integration_id":{"type":"string"},"channel":{"type":"string"},"subject":{"type":"string"},"body_html":{"type":"string"},"body_text":{"type":"string","nullable":true},"status":{"type":"string"},"scheduled_at":{"type":"string","nullable":true},"started_at":{"type":"string","nullable":true},"completed_at":{"type":"string","nullable":true},"last_error":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true},"display":{"type":"object","additionalProperties":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"resource":{"type":"string"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["id","label","resource","data"],"additionalProperties":false}}},"required":["id","club_id","segment_id","integration_id","channel","subject","body_html","status","created_at","updated_at"]}},"required":["success","data"]}}}}}},"patch":{"tags":["Messaging"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"campaignId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"segment_id":{"type":"string","minLength":1},"integration_id":{"type":"string","minLength":1},"subject":{"type":"string","minLength":1},"body_html":{"type":"string","minLength":1},"body_text":{"type":"string"},"scheduled_at":{"type":"string","format":"date-time"},"status":{"type":"string","enum":["draft","queued","sending","sent","failed"]}},"additionalProperties":false}}}},"responses":{"200":{"description":"Update campaign","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"segment_id":{"type":"string"},"integration_id":{"type":"string"},"channel":{"type":"string"},"subject":{"type":"string"},"body_html":{"type":"string"},"body_text":{"type":"string","nullable":true},"status":{"type":"string"},"scheduled_at":{"type":"string","nullable":true},"started_at":{"type":"string","nullable":true},"completed_at":{"type":"string","nullable":true},"last_error":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true},"display":{"type":"object","additionalProperties":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"resource":{"type":"string"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["id","label","resource","data"],"additionalProperties":false}}},"required":["id","club_id","segment_id","integration_id","channel","subject","body_html","status","created_at","updated_at"]}},"required":["success","data"]}}}}}},"delete":{"tags":["Messaging"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"campaignId","in":"path"}],"responses":{"200":{"description":"Delete campaign","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"deleted":{"type":"boolean"}},"required":["id","deleted"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/messaging/campaigns/{campaignId}/send":{"post":{"tags":["Messaging"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"campaignId","in":"path"}],"responses":{"202":{"description":"Queue campaign delivery","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"queued":{"type":"boolean"}},"required":["queued"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/file-folders/{folderId}":{"patch":{"tags":["Files"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"folderId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"parent_id":{"type":"string","nullable":true,"minLength":1}},"required":["parent_id"],"additionalProperties":false}}}},"responses":{"200":{"description":"Move file folder","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"parent_id":{"type":"string","nullable":true},"name":{"type":"string"},"visibility":{"type":"string","enum":["private","shared"]},"owner_user_id":{"type":"string","nullable":true},"member_id":{"type":"string","nullable":true},"dependent_id":{"type":"string","nullable":true},"created_by_user_id":{"type":"string"},"subject_name":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true},"purge_at":{"type":"string","nullable":true}},"required":["id","club_id","name","visibility","created_by_user_id","created_at","updated_at"],"additionalProperties":false}},"required":["success","data"]}}}}}},"delete":{"tags":["Files"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"folderId","in":"path"}],"responses":{"200":{"description":"Move folder to trash","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"deleted":{"type":"boolean"},"purge_at":{"type":"string"}},"required":["deleted","purge_at"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/files":{"post":{"tags":["Files"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"}],"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["logo","document","contract","image","attachment","regulation"]},"file":{"nullable":true},"metadata":{"type":"string"},"member_id":{"type":"string","minLength":1},"dependent_id":{"type":"string","minLength":1},"folder_id":{"type":"string","minLength":1},"owner_user_id":{"type":"string","minLength":1},"visibility":{"type":"string","enum":["private","shared"]},"description":{"type":"string","maxLength":500},"tags":{"type":"string"},"is_profile_asset":{"type":"string","enum":["true","false"]},"replace":{"type":"string","enum":["true","false"]}},"additionalProperties":false}}}},"responses":{"201":{"description":"Upload file","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"type":{"type":"string","enum":["logo","document","contract","image","attachment","regulation"]},"file_name":{"type":"string"},"content_type":{"type":"string"},"size":{"type":"integer"},"r2_key":{"type":"string"},"metadata":{"type":"string","nullable":true},"folder_id":{"type":"string","nullable":true},"uploaded_by_user_id":{"type":"string","nullable":true},"owner_user_id":{"type":"string","nullable":true},"member_id":{"type":"string","nullable":true},"dependent_id":{"type":"string","nullable":true},"visibility":{"type":"string","enum":["private","shared"]},"description":{"type":"string","nullable":true},"tags_json":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"is_profile_asset":{"type":"boolean"},"uploaded_by_name":{"type":"string","nullable":true},"owner_name":{"type":"string","nullable":true},"subject_name":{"type":"string","nullable":true},"subject_type":{"type":"string","nullable":true,"enum":["member","dependent"]},"dependent_user_id":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true},"purge_at":{"type":"string","nullable":true}},"required":["id","club_id","type","file_name","content_type","size","r2_key","visibility","tags_json","tags","is_profile_asset","created_at","updated_at"],"additionalProperties":false}},"required":["success","data"]}}}}}},"get":{"tags":["Files"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"default":1},"required":false,"name":"page","in":"query"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":100,"default":20},"required":false,"name":"per_page","in":"query"},{"schema":{"type":"string"},"required":false,"name":"search","in":"query"},{"schema":{"type":"string"},"required":false,"name":"sort","in":"query"},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"required":false,"name":"order","in":"query"},{"schema":{"type":"string"},"required":false,"name":"filters","in":"query"},{"schema":{"type":"string","minLength":1},"required":false,"name":"member_id","in":"query"},{"schema":{"type":"string","minLength":1},"required":false,"name":"dependent_id","in":"query"},{"schema":{"type":"string","minLength":1},"required":false,"name":"folder_id","in":"query"},{"schema":{"type":"string","enum":["true","false"]},"required":false,"name":"include_trash","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":50},"required":false,"name":"tag","in":"query"}],"responses":{"200":{"description":"List files","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"type":{"type":"string","enum":["logo","document","contract","image","attachment","regulation"]},"file_name":{"type":"string"},"content_type":{"type":"string"},"size":{"type":"integer"},"r2_key":{"type":"string"},"metadata":{"type":"string","nullable":true},"folder_id":{"type":"string","nullable":true},"uploaded_by_user_id":{"type":"string","nullable":true},"owner_user_id":{"type":"string","nullable":true},"member_id":{"type":"string","nullable":true},"dependent_id":{"type":"string","nullable":true},"visibility":{"type":"string","enum":["private","shared"]},"description":{"type":"string","nullable":true},"tags_json":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"is_profile_asset":{"type":"boolean"},"uploaded_by_name":{"type":"string","nullable":true},"owner_name":{"type":"string","nullable":true},"subject_name":{"type":"string","nullable":true},"subject_type":{"type":"string","nullable":true,"enum":["member","dependent"]},"dependent_user_id":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true},"purge_at":{"type":"string","nullable":true}},"required":["id","club_id","type","file_name","content_type","size","r2_key","visibility","tags_json","tags","is_profile_asset","created_at","updated_at"],"additionalProperties":false}},"pagination":{"type":"object","properties":{"page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"per_page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"total":{"type":"integer","minimum":0}},"required":["page","per_page","total"]}},"required":["success","data","pagination"]}}}}}}},"/api/v1/clubs/{clubId}/file-folders":{"get":{"tags":["Files"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string","minLength":1},"required":false,"name":"member_id","in":"query"},{"schema":{"type":"string","minLength":1},"required":false,"name":"dependent_id","in":"query"},{"schema":{"type":"string","enum":["true","false"]},"required":false,"name":"include_trash","in":"query"}],"responses":{"200":{"description":"List file folders","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"parent_id":{"type":"string","nullable":true},"name":{"type":"string"},"visibility":{"type":"string","enum":["private","shared"]},"owner_user_id":{"type":"string","nullable":true},"member_id":{"type":"string","nullable":true},"dependent_id":{"type":"string","nullable":true},"created_by_user_id":{"type":"string"},"subject_name":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true},"purge_at":{"type":"string","nullable":true}},"required":["id","club_id","name","visibility","created_by_user_id","created_at","updated_at"],"additionalProperties":false}}},"required":["success","data"]}}}}}},"post":{"tags":["Files"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"parent_id":{"type":"string","nullable":true,"minLength":1},"member_id":{"type":"string","minLength":1},"dependent_id":{"type":"string","minLength":1},"owner_user_id":{"type":"string","minLength":1},"visibility":{"type":"string","enum":["private","shared"],"default":"private"}},"required":["name"],"additionalProperties":false}}}},"responses":{"201":{"description":"Create file folder","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"parent_id":{"type":"string","nullable":true},"name":{"type":"string"},"visibility":{"type":"string","enum":["private","shared"]},"owner_user_id":{"type":"string","nullable":true},"member_id":{"type":"string","nullable":true},"dependent_id":{"type":"string","nullable":true},"created_by_user_id":{"type":"string"},"subject_name":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true},"purge_at":{"type":"string","nullable":true}},"required":["id","club_id","name","visibility","created_by_user_id","created_at","updated_at"],"additionalProperties":false}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/files/{fileId}/content":{"get":{"tags":["Files"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"fileId","in":"path"}],"responses":{"200":{"description":"Inline file content"}}}},"/api/v1/clubs/{clubId}/files/{fileId}/download":{"get":{"tags":["Files"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"fileId","in":"path"}],"responses":{"200":{"description":"Download file"}}}},"/api/v1/clubs/{clubId}/files/{fileId}":{"get":{"tags":["Files"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"fileId","in":"path"}],"responses":{"200":{"description":"Get file metadata","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"type":{"type":"string","enum":["logo","document","contract","image","attachment","regulation"]},"file_name":{"type":"string"},"content_type":{"type":"string"},"size":{"type":"integer"},"r2_key":{"type":"string"},"metadata":{"type":"string","nullable":true},"folder_id":{"type":"string","nullable":true},"uploaded_by_user_id":{"type":"string","nullable":true},"owner_user_id":{"type":"string","nullable":true},"member_id":{"type":"string","nullable":true},"dependent_id":{"type":"string","nullable":true},"visibility":{"type":"string","enum":["private","shared"]},"description":{"type":"string","nullable":true},"tags_json":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"is_profile_asset":{"type":"boolean"},"uploaded_by_name":{"type":"string","nullable":true},"owner_name":{"type":"string","nullable":true},"subject_name":{"type":"string","nullable":true},"subject_type":{"type":"string","nullable":true,"enum":["member","dependent"]},"dependent_user_id":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true},"purge_at":{"type":"string","nullable":true}},"required":["id","club_id","type","file_name","content_type","size","r2_key","visibility","tags_json","tags","is_profile_asset","created_at","updated_at"],"additionalProperties":false}},"required":["success","data"]}}}}}},"patch":{"tags":["Files"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"fileId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"folder_id":{"type":"string","nullable":true,"minLength":1},"visibility":{"type":"string","enum":["private","shared"]},"description":{"type":"string","nullable":true,"maxLength":500},"tags":{"type":"array","items":{"type":"string","minLength":1,"maxLength":50},"maxItems":20},"is_profile_asset":{"type":"boolean"},"replace":{"type":"boolean","default":false}},"additionalProperties":false}}}},"responses":{"200":{"description":"Update file metadata","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"type":{"type":"string","enum":["logo","document","contract","image","attachment","regulation"]},"file_name":{"type":"string"},"content_type":{"type":"string"},"size":{"type":"integer"},"r2_key":{"type":"string"},"metadata":{"type":"string","nullable":true},"folder_id":{"type":"string","nullable":true},"uploaded_by_user_id":{"type":"string","nullable":true},"owner_user_id":{"type":"string","nullable":true},"member_id":{"type":"string","nullable":true},"dependent_id":{"type":"string","nullable":true},"visibility":{"type":"string","enum":["private","shared"]},"description":{"type":"string","nullable":true},"tags_json":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"is_profile_asset":{"type":"boolean"},"uploaded_by_name":{"type":"string","nullable":true},"owner_name":{"type":"string","nullable":true},"subject_name":{"type":"string","nullable":true},"subject_type":{"type":"string","nullable":true,"enum":["member","dependent"]},"dependent_user_id":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true},"purge_at":{"type":"string","nullable":true}},"required":["id","club_id","type","file_name","content_type","size","r2_key","visibility","tags_json","tags","is_profile_asset","created_at","updated_at"],"additionalProperties":false}},"required":["success","data"]}}}}}},"delete":{"tags":["Files"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"fileId","in":"path"}],"responses":{"200":{"description":"Move file to trash","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"deleted":{"type":"boolean"},"purge_at":{"type":"string"}},"required":["deleted","purge_at"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/files/{fileId}/restore":{"post":{"tags":["Files"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"fileId","in":"path"}],"responses":{"200":{"description":"Restore file","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"restored":{"type":"boolean"}},"required":["restored"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/webhooks":{"get":{"tags":["Webhooks"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"default":1},"required":false,"name":"page","in":"query"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":100,"default":20},"required":false,"name":"per_page","in":"query"},{"schema":{"type":"string"},"required":false,"name":"search","in":"query"},{"schema":{"type":"string"},"required":false,"name":"sort","in":"query"},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"required":false,"name":"order","in":"query"},{"schema":{"type":"string"},"required":false,"name":"filters","in":"query"}],"responses":{"200":{"description":"List webhooks","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"url":{"type":"string"},"secret":{"type":"string"},"events":{"type":"string"},"status":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true}},"required":["id","club_id","url","secret","events","status","created_at","updated_at"]}},"pagination":{"type":"object","properties":{"page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"per_page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"total":{"type":"integer","minimum":0}},"required":["page","per_page","total"]}},"required":["success","data","pagination"]}}}}}},"post":{"tags":["Webhooks"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"secret":{"type":"string","minLength":8},"events":{"type":"array","items":{"type":"string","enum":["member.created","member.updated","member.deleted","payment.created","payment.paid","payment.overdue","subscription.created","subscription.cancelled","reservation.created","reservation.cancelled","benefit.redeemed","card.validated","event.registration.created"]},"minItems":1},"status":{"type":"string","enum":["active","paused"],"default":"active"}},"required":["url","secret","events"],"additionalProperties":false}}}},"responses":{"201":{"description":"Create webhook","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"url":{"type":"string"},"secret":{"type":"string"},"events":{"type":"string"},"status":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true}},"required":["id","club_id","url","secret","events","status","created_at","updated_at"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/webhooks/{webhookId}":{"patch":{"tags":["Webhooks"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"webhookId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"secret":{"type":"string","minLength":8},"events":{"type":"array","items":{"type":"string","enum":["member.created","member.updated","member.deleted","payment.created","payment.paid","payment.overdue","subscription.created","subscription.cancelled","reservation.created","reservation.cancelled","benefit.redeemed","card.validated","event.registration.created"]},"minItems":1},"status":{"type":"string","enum":["active","paused"],"default":"active"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Update webhook","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"url":{"type":"string"},"secret":{"type":"string"},"events":{"type":"string"},"status":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"deleted_at":{"type":"string","nullable":true}},"required":["id","club_id","url","secret","events","status","created_at","updated_at"]}},"required":["success","data"]}}}}}},"delete":{"tags":["Webhooks"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"webhookId","in":"path"}],"responses":{"200":{"description":"Delete webhook","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"deleted":{"type":"boolean"}},"required":["deleted"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/webhooks/{webhookId}/test":{"post":{"tags":["Webhooks"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"webhookId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"payload":{"type":"object","additionalProperties":{"nullable":true}}},"additionalProperties":false}}}},"responses":{"202":{"description":"Test webhook queued","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"queued":{"type":"boolean"}},"required":["queued"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/audit-logs":{"get":{"tags":["Audit"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"default":1},"required":false,"name":"page","in":"query"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":100,"default":20},"required":false,"name":"per_page","in":"query"},{"schema":{"type":"string"},"required":false,"name":"search","in":"query"},{"schema":{"type":"string"},"required":false,"name":"sort","in":"query"},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"required":false,"name":"order","in":"query"},{"schema":{"type":"string"},"required":false,"name":"filters","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":120},"required":false,"name":"entity","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":120},"required":false,"name":"action_prefix","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":120},"required":false,"name":"entity_id","in":"query"}],"responses":{"200":{"description":"List audit logs","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string","nullable":true},"actor_user_id":{"type":"string","nullable":true},"entity":{"type":"string"},"entity_id":{"type":"string"},"action":{"type":"string"},"metadata":{"type":"string","nullable":true},"ip":{"type":"string","nullable":true},"user_agent":{"type":"string","nullable":true},"created_at":{"type":"string"},"created_at_epoch":{"type":"integer","nullable":true,"readOnly":true},"display":{"type":"object","additionalProperties":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"resource":{"type":"string"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["id","label","resource","data"],"additionalProperties":false}}},"required":["id","entity","entity_id","action","created_at"]}},"pagination":{"type":"object","properties":{"page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"per_page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"total":{"type":"integer","minimum":0}},"required":["page","per_page","total"]}},"required":["success","data","pagination"]}}}}}}},"/api/v1/clubs/{clubId}/audit-logs/{auditLogId}":{"get":{"tags":["Audit"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"auditLogId","in":"path"}],"responses":{"200":{"description":"Get audit log","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string","nullable":true},"actor_user_id":{"type":"string","nullable":true},"entity":{"type":"string"},"entity_id":{"type":"string"},"action":{"type":"string"},"metadata":{"type":"string","nullable":true},"ip":{"type":"string","nullable":true},"user_agent":{"type":"string","nullable":true},"created_at":{"type":"string"},"created_at_epoch":{"type":"integer","nullable":true,"readOnly":true},"display":{"type":"object","additionalProperties":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"resource":{"type":"string"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["id","label","resource","data"],"additionalProperties":false}}},"required":["id","entity","entity_id","action","created_at"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/admin/dashboard":{"get":{"tags":["Admin"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":365,"default":30},"required":false,"name":"period_days","in":"query"}],"responses":{"200":{"description":"Admin dashboard KPIs","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"members_total":{"type":"integer"},"members_active":{"type":"integer"},"dependents_total":{"type":"integer"},"subscriptions_total":{"type":"integer"},"subscriptions_active":{"type":"integer"},"payments_total":{"type":"integer"},"payments_paid":{"type":"integer"},"payments_pending":{"type":"integer"},"payments_amount_paid":{"type":"number"},"reservations_total":{"type":"integer"},"events_total":{"type":"integer"},"messaging_campaigns_total":{"type":"integer"},"messaging_campaigns_sent":{"type":"integer"},"period_days":{"type":"integer"}},"required":["members_total","members_active","dependents_total","subscriptions_total","subscriptions_active","payments_total","payments_paid","payments_pending","payments_amount_paid","reservations_total","events_total","messaging_campaigns_total","messaging_campaigns_sent","period_days"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/admin/filters/options":{"get":{"tags":["Admin"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"}],"responses":{"200":{"description":"Options for admin filters and form references","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"plans":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]}},"resources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]}},"partners":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]}},"integrations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"provider":{"type":"string"},"channel":{"type":"string"}},"required":["id","provider","channel"]}},"segments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]}}},"required":["plans","resources","partners","integrations","segments"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/messaging/campaigns/{campaignId}/stats":{"get":{"tags":["Admin"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"campaignId","in":"path"}],"responses":{"200":{"description":"Campaign delivery stats","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"campaign_id":{"type":"string"},"total_recipients":{"type":"integer"},"sent_recipients":{"type":"integer"},"failed_recipients":{"type":"integer"},"pending_recipients":{"type":"integer"},"delivery_attempts":{"type":"integer"},"sent_rate":{"type":"number"},"failed_rate":{"type":"number"}},"required":["campaign_id","total_recipients","sent_recipients","failed_recipients","pending_recipients","delivery_attempts","sent_rate","failed_rate"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/members/imports":{"post":{"tags":["Admin"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"}],"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"nullable":true}}}}}},"responses":{"201":{"description":"Import members from CSV/XLSX","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"file_name":{"type":"string"},"file_type":{"type":"string","enum":["csv","xlsx"]},"status":{"type":"string"},"total_rows":{"type":"integer"},"created_count":{"type":"integer"},"skipped_count":{"type":"integer"},"error_count":{"type":"integer"},"report_json":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","club_id","file_name","file_type","status","total_rows","created_count","skipped_count","error_count","created_at","updated_at"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/members/imports/{importId}":{"get":{"tags":["Admin"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"importId","in":"path"}],"responses":{"200":{"description":"Get import report","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"file_name":{"type":"string"},"file_type":{"type":"string","enum":["csv","xlsx"]},"status":{"type":"string"},"total_rows":{"type":"integer"},"created_count":{"type":"integer"},"skipped_count":{"type":"integer"},"error_count":{"type":"integer"},"report_json":{"type":"string","nullable":true},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","club_id","file_name","file_type","status","total_rows","created_count","skipped_count","error_count","created_at","updated_at"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/billing/providers":{"get":{"tags":["Billing"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"}],"responses":{"200":{"description":"Providers configured for payment operations in the club","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"string","enum":["manual","asaas","mercado_pago","stripe","pagarme"]}}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/billing/asaas":{"get":{"tags":["Billing"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"}],"responses":{"200":{"description":"Asaas connection","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","nullable":true,"properties":{"id":{"type":"string"},"club_id":{"type":"string"},"provider":{"type":"string","enum":["asaas"]},"environment":{"type":"string","enum":["sandbox","production"]},"display_name":{"type":"string"},"status":{"type":"string"},"account_number":{"type":"string","nullable":true},"webhook_id":{"type":"string","nullable":true},"webhook_configured":{"type":"boolean"},"notification_email":{"type":"string","nullable":true,"format":"email"},"webhook_url":{"type":"string","nullable":true,"format":"uri"},"last_validated_at":{"type":"string","nullable":true},"last_error":{"type":"string","nullable":true},"billing_enabled":{"type":"boolean"},"default_trial_days":{"type":"integer"},"default_grace_days":{"type":"integer"},"notifications_enabled":{"type":"boolean"},"reconciliation_enabled":{"type":"boolean"},"credentials_configured":{"type":"boolean"}},"required":["id","club_id","provider","environment","display_name","status","webhook_configured","billing_enabled","default_trial_days","default_grace_days","notifications_enabled","reconciliation_enabled","credentials_configured"]}},"required":["success","data"]}}}}}},"put":{"tags":["Billing"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"environment":{"type":"string","enum":["sandbox","production"]},"display_name":{"type":"string","minLength":2,"maxLength":120},"api_key":{"type":"string","minLength":20,"maxLength":500},"notification_email":{"type":"string","format":"email"},"webhook_url":{"type":"string","format":"uri"},"configure_webhook":{"type":"boolean","default":false},"billing_enabled":{"type":"boolean","default":true},"default_trial_days":{"type":"integer","minimum":0,"maximum":365,"default":0},"default_grace_days":{"type":"integer","minimum":0,"maximum":365,"default":0},"notifications_enabled":{"type":"boolean","default":true},"reconciliation_enabled":{"type":"boolean","default":false}},"required":["environment","display_name"],"additionalProperties":false}}}},"responses":{"200":{"description":"Asaas connection saved","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"club_id":{"type":"string"},"provider":{"type":"string","enum":["asaas"]},"environment":{"type":"string","enum":["sandbox","production"]},"display_name":{"type":"string"},"status":{"type":"string"},"account_number":{"type":"string","nullable":true},"webhook_id":{"type":"string","nullable":true},"webhook_configured":{"type":"boolean"},"notification_email":{"type":"string","nullable":true,"format":"email"},"webhook_url":{"type":"string","nullable":true,"format":"uri"},"last_validated_at":{"type":"string","nullable":true},"last_error":{"type":"string","nullable":true},"billing_enabled":{"type":"boolean"},"default_trial_days":{"type":"integer"},"default_grace_days":{"type":"integer"},"notifications_enabled":{"type":"boolean"},"reconciliation_enabled":{"type":"boolean"},"credentials_configured":{"type":"boolean"}},"required":["id","club_id","provider","environment","display_name","status","webhook_configured","billing_enabled","default_trial_days","default_grace_days","notifications_enabled","reconciliation_enabled","credentials_configured"]}},"required":["success","data"]}}}}}},"delete":{"tags":["Billing"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"confirm":{"type":"boolean","enum":[true]},"reason":{"type":"string","minLength":2,"maxLength":500}},"required":["confirm","reason"],"additionalProperties":false}}}},"responses":{"200":{"description":"Asaas connection deactivated","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"deactivated":{"type":"boolean"},"remote_webhook_deleted":{"type":"boolean"}},"required":["deactivated","remote_webhook_deleted"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/billing/asaas/adjustments/{adjustmentId}":{"delete":{"tags":["Billing"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"adjustmentId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"confirm":{"type":"boolean","enum":[true]},"reason":{"type":"string","minLength":2,"maxLength":500}},"required":["confirm","reason"],"additionalProperties":false}}}},"responses":{"200":{"description":"Billing adjustment cancelled","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"cancelled":{"type":"boolean"}},"required":["cancelled"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/billing/asaas/adjustments/{adjustmentId}/apply":{"post":{"tags":["Billing"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"adjustmentId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"payment_id":{"type":"string","minLength":1},"amount":{"type":"number","minimum":0,"exclusiveMinimum":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"Billing credit applied","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/billing/asaas/subscriptions/{subscriptionId}/change-plan/preview":{"get":{"tags":["Billing"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"subscriptionId","in":"path"},{"schema":{"type":"string","minLength":1},"required":true,"name":"to_plan_id","in":"query"},{"schema":{"type":"string","enum":["immediate","end_of_period"]},"required":true,"name":"mode","in":"query"},{"schema":{"type":"string","format":"date-time"},"required":false,"name":"effective_at","in":"query"},{"schema":{"type":"string","enum":["net_difference","credit_only","debit_only","waive"],"default":"net_difference"},"required":false,"name":"policy","in":"query"}],"responses":{"200":{"description":"Plan change preview","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/billing/asaas/subscriptions/{subscriptionId}/change-plans":{"get":{"tags":["Billing"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"subscriptionId","in":"path"}],"responses":{"200":{"description":"Subscription plan changes","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","additionalProperties":{"nullable":true}}}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/billing/asaas/plan-changes/{changeId}/cancel":{"post":{"tags":["Billing"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"changeId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"confirm":{"type":"boolean","enum":[true]},"reason":{"type":"string","minLength":2,"maxLength":500}},"required":["confirm","reason"],"additionalProperties":false}}}},"responses":{"200":{"description":"Scheduled plan change cancelled","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"cancelled":{"type":"boolean"}},"required":["cancelled"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/billing/asaas/test":{"post":{"tags":["Billing"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"}],"responses":{"200":{"description":"Asaas connection tested","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"ok":{"type":"boolean"},"account_number":{"type":"string"}},"required":["ok","account_number"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/billing/asaas/adjustments":{"get":{"tags":["Billing"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":false,"name":"member_id","in":"query"},{"schema":{"type":"string","enum":["available","pending","processing","applied","failed","cancelled"]},"required":false,"name":"status","in":"query"}],"responses":{"200":{"description":"Billing adjustments","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","additionalProperties":{"nullable":true}}}},"required":["success","data"]}}}}}},"post":{"tags":["Billing"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"member_id":{"type":"string","minLength":1},"direction":{"type":"string","enum":["credit","debit"]},"amount":{"type":"number","minimum":0,"exclusiveMinimum":true},"reason":{"type":"string","minLength":2,"maxLength":500},"due_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"billing_type":{"type":"string","enum":["UNDEFINED","BOLETO","PIX","CREDIT_CARD"],"default":"UNDEFINED"}},"required":["member_id","direction","amount","reason"],"additionalProperties":false}}}},"responses":{"201":{"description":"Billing adjustment created","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/billing/asaas/reconciliation":{"get":{"tags":["Billing"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"}],"responses":{"200":{"description":"Asaas reconciliation overview","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/billing/asaas/webhooks/dead-letter":{"get":{"tags":["Billing"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"}],"responses":{"200":{"description":"Billing dead-letter events","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","additionalProperties":{"nullable":true}}}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/billing/asaas/metrics":{"get":{"tags":["Billing"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"}],"responses":{"200":{"description":"Asaas operational metrics and alerts","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/billing/asaas/reconciliation/{itemId}/resolve":{"post":{"tags":["Billing"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"itemId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"confirm":{"type":"boolean","enum":[true]},"reason":{"type":"string","minLength":2,"maxLength":500}},"required":["confirm","reason"],"additionalProperties":false}}}},"responses":{"200":{"description":"Reconciliation issue resolved","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"resolved":{"type":"boolean"}},"required":["resolved"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/billing/asaas/webhooks/{eventId}/reprocess":{"post":{"tags":["Billing"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"eventId","in":"path"}],"responses":{"202":{"description":"Billing event requeued","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"queued":{"type":"boolean"}},"required":["queued"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/billing/asaas/payments/{paymentId}/settle":{"post":{"tags":["Billing"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"paymentId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"confirm":{"type":"boolean","enum":[true]},"reason":{"type":"string","minLength":2,"maxLength":500},"paid_at":{"type":"string","format":"date-time"}},"required":["confirm","reason"],"additionalProperties":false}}}},"responses":{"200":{"description":"Payment manually settled","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"settled":{"type":"boolean"}},"required":["settled"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/billing/asaas/payments/{paymentId}/cancel":{"post":{"tags":["Billing"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"paymentId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","minLength":2,"maxLength":500}},"required":["reason"],"additionalProperties":false}}}},"responses":{"200":{"description":"Asaas payment cancelled","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"cancelled":{"type":"boolean"}},"required":["cancelled"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/billing/asaas/subscriptions/{subscriptionId}":{"patch":{"tags":["Billing"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"subscriptionId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"next_due_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"amount":{"type":"number","minimum":0,"exclusiveMinimum":true},"billing_cycle":{"type":"string","enum":["monthly","quarterly","yearly","custom"]},"billing_type":{"type":"string","enum":["UNDEFINED","BOLETO","PIX","CREDIT_CARD"]},"description":{"type":"string","minLength":2,"maxLength":500},"update_pending_payments":{"type":"boolean","default":false},"discount_value":{"type":"number","minimum":0},"discount_due_date_limit_days":{"type":"integer","minimum":0,"maximum":365},"fine_value":{"type":"number","minimum":0},"fine_type":{"type":"string","enum":["FIXED","PERCENTAGE"]},"interest_value":{"type":"number","minimum":0},"interest_type":{"type":"string","enum":["FIXED","PERCENTAGE"]}},"additionalProperties":false}}}},"responses":{"200":{"description":"Asaas subscription updated","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/billing/asaas/reconcile":{"post":{"tags":["Billing"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"}],"responses":{"200":{"description":"Asaas records reconciled","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"checked":{"type":"integer"},"updated":{"type":"integer"},"failed":{"type":"integer"},"errors":{"type":"array","items":{"type":"string"}}},"required":["checked","updated","failed","errors"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/billing/asaas/payments":{"post":{"tags":["Billing"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"member_id":{"type":"string","minLength":1},"amount":{"type":"number","minimum":0,"exclusiveMinimum":true},"due_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"source_type":{"type":"string","enum":["service","reservation","event","product","fee","group","manual","one_off"],"default":"one_off"},"source_id":{"type":"string","minLength":1,"maxLength":120},"billing_type":{"type":"string","enum":["UNDEFINED","BOLETO","PIX","CREDIT_CARD"],"default":"UNDEFINED"},"description":{"type":"string","minLength":2,"maxLength":500},"notification_disabled":{"type":"boolean","default":false},"installment_count":{"type":"integer","minimum":2,"maximum":60},"installment_value":{"type":"number","minimum":0,"exclusiveMinimum":true},"discount_value":{"type":"number","minimum":0},"discount_due_date_limit_days":{"type":"integer","minimum":0,"maximum":365},"fine_value":{"type":"number","minimum":0},"fine_type":{"type":"string","enum":["FIXED","PERCENTAGE"]},"interest_value":{"type":"number","minimum":0},"interest_type":{"type":"string","enum":["FIXED","PERCENTAGE"]},"postal_service":{"type":"boolean"}},"required":["member_id","amount","due_date","description"],"additionalProperties":false}}}},"responses":{"201":{"description":"Asaas payment created","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/billing/asaas/subscriptions":{"post":{"tags":["Billing"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"member_id":{"type":"string","minLength":1},"plan_id":{"type":"string","minLength":1},"next_due_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"billing_type":{"type":"string","enum":["UNDEFINED","BOLETO","PIX","CREDIT_CARD"],"default":"UNDEFINED"},"description":{"type":"string","minLength":2,"maxLength":500},"discount_value":{"type":"number","minimum":0},"discount_due_date_limit_days":{"type":"integer","minimum":0,"maximum":365},"fine_value":{"type":"number","minimum":0},"fine_type":{"type":"string","enum":["FIXED","PERCENTAGE"]},"interest_value":{"type":"number","minimum":0},"interest_type":{"type":"string","enum":["FIXED","PERCENTAGE"]},"trial_days":{"type":"integer","minimum":0,"maximum":365},"grace_days":{"type":"integer","minimum":0,"maximum":365},"notification_disabled":{"type":"boolean"}},"required":["member_id","plan_id"],"additionalProperties":false}}}},"responses":{"201":{"description":"Asaas subscription created","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/billing/asaas/subscriptions/{subscriptionId}/lifecycle":{"post":{"tags":["Billing"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"subscriptionId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"action":{"type":"string","enum":["pause","suspend","reactivate"]},"next_due_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},"required":["action"],"additionalProperties":false}}}},"responses":{"200":{"description":"Asaas subscription lifecycle updated","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"status":{"type":"string"},"next_due_date":{"type":"string","nullable":true}},"required":["status","next_due_date"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/billing/asaas/subscriptions/{subscriptionId}/cancel":{"post":{"tags":["Billing"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"subscriptionId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"type":"string","enum":["immediate","end_of_period"]},"effective_at":{"type":"string","format":"date-time"},"reason":{"type":"string","minLength":2,"maxLength":500}},"required":["mode","reason"],"additionalProperties":false}}}},"responses":{"200":{"description":"Asaas subscription cancellation registered","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string"},"cancellation_id":{"type":"string"},"status":{"type":"string"},"effective_at":{"type":"string"}},"required":["id","cancellation_id","status","effective_at"]}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/billing/asaas/payments/{paymentId}/refund":{"post":{"tags":["Billing"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"paymentId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"amount":{"type":"number","minimum":0,"exclusiveMinimum":true},"reason":{"type":"string","minLength":2,"maxLength":500},"bank_slip":{"type":"boolean","default":false}},"required":["reason"],"additionalProperties":false}}}},"responses":{"200":{"description":"Asaas refund requested","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/billing/asaas/subscriptions/{subscriptionId}/change-plan":{"post":{"tags":["Billing"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"subscriptionId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"to_plan_id":{"type":"string","minLength":1},"mode":{"type":"string","enum":["immediate","end_of_period"]},"effective_at":{"type":"string","format":"date-time"},"policy":{"type":"string","enum":["net_difference","credit_only","debit_only","waive"],"default":"net_difference"},"pending_payment_policy":{"type":"string","enum":["update","leave"],"default":"update"},"reason":{"type":"string","minLength":2,"maxLength":500},"notify_member":{"type":"boolean","default":true}},"required":["to_plan_id","mode","reason"],"additionalProperties":false}}}},"responses":{"200":{"description":"Plan change registered","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/billing/asaas/subscriptions/{subscriptionId}/history":{"get":{"tags":["Billing"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"subscriptionId","in":"path"}],"responses":{"200":{"description":"Subscription financial history","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/billing/asaas/payments/{paymentId}/history":{"get":{"tags":["Billing"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"paymentId","in":"path"}],"responses":{"200":{"description":"Payment financial history","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/billing/asaas/export":{"get":{"tags":["Billing"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"required":false,"name":"from","in":"query"},{"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"required":false,"name":"to","in":"query"},{"schema":{"type":"string","enum":["pending","paid","overdue","failed","disputed","cancelled"]},"required":false,"name":"status","in":"query"},{"schema":{"type":"string","enum":["json","csv"],"default":"json"},"required":false,"name":"format","in":"query"}],"responses":{"200":{"description":"Financial report export","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","additionalProperties":{"nullable":true}}}},"required":["success","data"]}},"text/csv":{"schema":{"type":"string"}}}}}}},"/api/v1/clubs/{clubId}/billing/asaas/members/{memberId}/sync":{"post":{"tags":["Billing"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"memberId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Member synchronized with Asaas","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/billing/asaas/payments/group":{"post":{"tags":["Billing"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"member_ids":{"type":"array","items":{"type":"string","minLength":1},"minItems":1,"maxItems":25},"amount":{"type":"number","minimum":0,"exclusiveMinimum":true},"due_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"billing_type":{"type":"string","enum":["UNDEFINED","BOLETO","PIX","CREDIT_CARD"],"default":"UNDEFINED"},"description":{"type":"string","minLength":2,"maxLength":500},"notification_disabled":{"type":"boolean","default":false},"discount_value":{"type":"number","minimum":0},"discount_due_date_limit_days":{"type":"integer","minimum":0,"maximum":365},"fine_value":{"type":"number","minimum":0},"fine_type":{"type":"string","enum":["FIXED","PERCENTAGE"]},"interest_value":{"type":"number","minimum":0},"interest_type":{"type":"string","enum":["FIXED","PERCENTAGE"]},"group_reference":{"type":"string","minLength":1,"maxLength":120}},"required":["member_ids","amount","due_date","description"],"additionalProperties":false}}}},"responses":{"201":{"description":"Group payments created","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/billing/asaas/payments/{paymentId}/reissue":{"post":{"tags":["Billing"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"paymentId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"confirm":{"type":"boolean","enum":[true]},"reason":{"type":"string","minLength":2,"maxLength":500},"amount":{"type":"number","minimum":0,"exclusiveMinimum":true},"due_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"billing_type":{"type":"string","enum":["UNDEFINED","BOLETO","PIX","CREDIT_CARD"]},"description":{"type":"string","minLength":2,"maxLength":500},"notification_disabled":{"type":"boolean"},"discount_value":{"type":"number","minimum":0},"discount_due_date_limit_days":{"type":"integer","minimum":0,"maximum":365},"fine_value":{"type":"number","minimum":0},"fine_type":{"type":"string","enum":["FIXED","PERCENTAGE"]},"interest_value":{"type":"number","minimum":0},"interest_type":{"type":"string","enum":["FIXED","PERCENTAGE"]}},"required":["confirm","reason"],"additionalProperties":false}}}},"responses":{"200":{"description":"Payment reissued or updated","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/billing/asaas/payments/{paymentId}/repair-link":{"post":{"tags":["Billing"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"paymentId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"external_id":{"type":"string","minLength":1,"maxLength":120},"confirm":{"type":"boolean","enum":[true]},"reason":{"type":"string","minLength":2,"maxLength":500}},"required":["external_id","confirm","reason"],"additionalProperties":false}}}},"responses":{"200":{"description":"Payment link repaired","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/billing/asaas/reconciliation/{itemId}/import":{"post":{"tags":["Billing"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"itemId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"confirm":{"type":"boolean","enum":[true]},"reason":{"type":"string","minLength":2,"maxLength":500},"member_id":{"type":"string","minLength":1}},"required":["confirm","reason"],"additionalProperties":false}}}},"responses":{"200":{"description":"Remote payment imported","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/billing/asaas/sync":{"post":{"tags":["Billing"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"scope":{"type":"string","enum":["account","member","subscription","payment"]},"member_id":{"type":"string","minLength":1},"subscription_id":{"type":"string","minLength":1},"payment_id":{"type":"string","minLength":1}},"required":["scope"],"additionalProperties":false}}}},"responses":{"200":{"description":"Billing resources synchronized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["success","data"]}}}}}}},"/api/v1/clubs/{clubId}/billing/asaas/operations/{operationId}/reprocess":{"post":{"tags":["Billing"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"clubId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"operationId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"confirm":{"type":"boolean","enum":[true]},"reason":{"type":"string","minLength":2,"maxLength":500}},"required":["confirm","reason"],"additionalProperties":false}}}},"responses":{"202":{"description":"Billing operation queued for reprocessing","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["success","data"]}}}}}}},"/api/v1/platform/dashboard":{"get":{"tags":["Platform"],"parameters":[{"schema":{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])$"},"required":false,"name":"competence","in":"query"},{"schema":{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])$"},"required":false,"name":"from_competence","in":"query"},{"schema":{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])$"},"required":false,"name":"to_competence","in":"query"}],"responses":{"200":{"description":"Platform dashboard","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{}}},"required":["success","data"]}}}}}}},"/api/v1/platform/clubs":{"post":{"tags":["Platform"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":120},"slug":{"type":"string","minLength":2,"maxLength":63,"pattern":"^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$"},"legal_name":{"type":"string","minLength":2,"maxLength":160},"email":{"type":"string","format":"email"},"phone":{"type":"string","minLength":3,"maxLength":40},"city":{"type":"string","minLength":2,"maxLength":100},"state":{"type":"string","minLength":2,"maxLength":100},"country":{"type":"string","minLength":2,"maxLength":2,"default":"BR"},"host":{"type":"string","minLength":1,"maxLength":253,"pattern":"^[a-z0-9.-]+$"},"seed_demo_data":{"type":"boolean","default":false}},"required":["name"],"additionalProperties":false}}}},"responses":{"201":{"description":"Club provisioned","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{}}},"required":["success","data"]}}}}}},"get":{"tags":["Platform"],"parameters":[{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"default":1},"required":false,"name":"page","in":"query"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":100,"default":20},"required":false,"name":"per_page","in":"query"},{"schema":{"type":"string"},"required":false,"name":"search","in":"query"},{"schema":{"type":"string"},"required":false,"name":"sort","in":"query"},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"required":false,"name":"order","in":"query"},{"schema":{"type":"string"},"required":false,"name":"filters","in":"query"}],"responses":{"200":{"description":"Platform clubs","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{}}},"pagination":{"type":"object","properties":{"page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"per_page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"total":{"type":"integer","minimum":0}},"required":["page","per_page","total"]}},"required":["success","data","pagination"]}}}}}}},"/api/v1/platform/clubs/{clubId}/status":{"patch":{"tags":["Platform"],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"clubId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["active","inactive"]}},"required":["status"],"additionalProperties":false}}}},"responses":{"200":{"description":"Club status updated","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{}}},"required":["success","data"]}}}}}}},"/api/v1/platform/clubs/{clubId}/support-access":{"post":{"tags":["Platform"],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"clubId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"201":{"description":"One-time support access issued","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"token":{"type":"string"},"expires_in":{"type":"integer"},"club_id":{"type":"string"},"club_name":{"type":"string"}},"required":["token","expires_in","club_id","club_name"],"additionalProperties":false}},"required":["success","data"]}}}}}}},"/api/v1/platform/usage":{"get":{"tags":["Platform"],"parameters":[{"schema":{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])$"},"required":false,"name":"competence","in":"query"},{"schema":{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])$"},"required":false,"name":"from_competence","in":"query"},{"schema":{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])$"},"required":false,"name":"to_competence","in":"query"},{"schema":{"type":"string","minLength":1},"required":false,"name":"club_id","in":"query"},{"schema":{"type":"string","enum":["calculated","closed"]},"required":false,"name":"status","in":"query"}],"responses":{"200":{"description":"Platform usage snapshots","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{}}},"pagination":{"type":"object","properties":{"page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"per_page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"total":{"type":"integer","minimum":0}},"required":["page","per_page","total"]}},"required":["success","data","pagination"]}}}}}}},"/api/v1/platform/usage/timeseries":{"get":{"tags":["Platform"],"parameters":[{"schema":{"type":"string","minLength":1},"required":false,"name":"club_id","in":"query"},{"schema":{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])$"},"required":false,"name":"from_competence","in":"query"},{"schema":{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])$"},"required":false,"name":"to_competence","in":"query"}],"responses":{"200":{"description":"Platform usage timeseries","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{}}}},"required":["success","data"]}}}}}}},"/api/v1/platform/clubs/{clubId}/usage":{"get":{"tags":["Platform"],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"clubId","in":"path"}],"responses":{"200":{"description":"Club usage history","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{}}}},"required":["success","data"]}}}}}}},"/api/v1/platform/pricing":{"get":{"tags":["Platform"],"parameters":[{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"default":1},"required":false,"name":"page","in":"query"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":100,"default":20},"required":false,"name":"per_page","in":"query"},{"schema":{"type":"string"},"required":false,"name":"search","in":"query"},{"schema":{"type":"string"},"required":false,"name":"sort","in":"query"},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"required":false,"name":"order","in":"query"},{"schema":{"type":"string"},"required":false,"name":"filters","in":"query"}],"responses":{"200":{"description":"Pricing versions","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{}}},"pagination":{"type":"object","properties":{"page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"per_page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"total":{"type":"integer","minimum":0}},"required":["page","per_page","total"]}},"required":["success","data","pagination"]}}}}}},"post":{"tags":["Platform"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"club_id":{"type":"string","nullable":true,"minLength":1},"name":{"type":"string","minLength":2},"minimum_charge_cents":{"type":"integer","minimum":0},"effective_from":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"tiers":{"type":"array","items":{"type":"object","properties":{"min_associates":{"type":"integer","minimum":0},"max_associates":{"type":"integer","nullable":true,"minimum":0},"unit_price_cents":{"type":"integer","minimum":0}},"required":["min_associates","unit_price_cents"],"additionalProperties":false},"minItems":1}},"required":["name","minimum_charge_cents","effective_from","tiers"],"additionalProperties":false}}}},"responses":{"201":{"description":"Pricing version created","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{}}},"required":["success","data"]}}}}}}},"/api/v1/platform/pricing/versions":{"get":{"tags":["Platform"],"parameters":[{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"default":1},"required":false,"name":"page","in":"query"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":100,"default":20},"required":false,"name":"per_page","in":"query"},{"schema":{"type":"string"},"required":false,"name":"search","in":"query"},{"schema":{"type":"string"},"required":false,"name":"sort","in":"query"},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"required":false,"name":"order","in":"query"},{"schema":{"type":"string"},"required":false,"name":"filters","in":"query"}],"responses":{"200":{"description":"Pricing versions","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{}}},"pagination":{"type":"object","properties":{"page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"per_page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"total":{"type":"integer","minimum":0}},"required":["page","per_page","total"]}},"required":["success","data","pagination"]}}}}}}},"/api/v1/platform/pricing/{pricingId}":{"patch":{"tags":["Platform"],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"pricingId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"club_id":{"type":"string","nullable":true,"minLength":1},"name":{"type":"string","minLength":2},"minimum_charge_cents":{"type":"integer","minimum":0},"effective_from":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"effective_to":{"type":"string","nullable":true,"pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"tiers":{"type":"array","items":{"type":"object","properties":{"min_associates":{"type":"integer","minimum":0},"max_associates":{"type":"integer","nullable":true,"minimum":0},"unit_price_cents":{"type":"integer","minimum":0}},"required":["min_associates","unit_price_cents"],"additionalProperties":false},"minItems":1}},"additionalProperties":false}}}},"responses":{"200":{"description":"Pricing version updated","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{}}},"required":["success","data"]}}}}}}},"/api/v1/platform/pricing/{pricingId}/activate":{"post":{"tags":["Platform"],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"pricingId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Pricing version activated","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{}}},"required":["success","data"]}}}}}}},"/api/v1/platform/billing/account":{"get":{"tags":["Platform"],"responses":{"200":{"description":"Central billing account","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{}}},"required":["success","data"]}}}}}},"put":{"tags":["Platform"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"display_name":{"type":"string","minLength":2},"environment":{"type":"string","enum":["sandbox","production"]},"api_key":{"type":"string","minLength":8},"due_day":{"type":"integer","minimum":1,"maximum":28},"webhook_token":{"type":"string","minLength":8}},"required":["display_name","environment","api_key","due_day"],"additionalProperties":false}}}},"responses":{"200":{"description":"Central billing account saved","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{}}},"required":["success","data"]}}}}}}},"/api/v1/platform/billing/account/test":{"post":{"tags":["Platform"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Central billing account tested","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{}}},"required":["success","data"]}}}}}}},"/api/v1/platform/billing/competencies":{"get":{"tags":["Platform"],"responses":{"200":{"description":"Billing competences","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{}}},"pagination":{"type":"object","properties":{"page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"per_page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"total":{"type":"integer","minimum":0}},"required":["page","per_page","total"]}},"required":["success","data","pagination"]}}}}}}},"/api/v1/platform/billing/competencies/{competence}/calculate":{"post":{"tags":["Platform"],"parameters":[{"schema":{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])$"},"required":true,"name":"competence","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Competence calculated","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{}}},"required":["success","data"]}}}}}}},"/api/v1/platform/billing/competencies/{competence}/close":{"post":{"tags":["Platform"],"parameters":[{"schema":{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])$"},"required":true,"name":"competence","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Competence closed","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{}}},"required":["success","data"]}}}}}}},"/api/v1/platform/billing/competencies/{competence}/issue":{"post":{"tags":["Platform"],"parameters":[{"schema":{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])$"},"required":true,"name":"competence","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Competence issued","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{}}},"required":["success","data"]}}}}}}},"/api/v1/platform/billing/charges":{"get":{"tags":["Platform"],"parameters":[{"schema":{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])$"},"required":false,"name":"competence","in":"query"},{"schema":{"type":"string","enum":["pending","issued","paid","failed"]},"required":false,"name":"status","in":"query"}],"responses":{"200":{"description":"Platform charges","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{}}},"pagination":{"type":"object","properties":{"page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"per_page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"total":{"type":"integer","minimum":0}},"required":["page","per_page","total"]}},"required":["success","data","pagination"]}}}}}}},"/api/v1/platform/billing/charges/{chargeId}":{"get":{"tags":["Platform"],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"chargeId","in":"path"}],"responses":{"200":{"description":"Platform charge","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{}}},"required":["success","data"]}}}}}}},"/api/v1/platform/billing/charges/{chargeId}/retry":{"post":{"tags":["Platform"],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"chargeId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Charge retry scheduled","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{}}},"required":["success","data"]}}}}}}},"/api/v1/platform/audit":{"get":{"tags":["Platform"],"parameters":[{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"default":1},"required":false,"name":"page","in":"query"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":100,"default":20},"required":false,"name":"per_page","in":"query"},{"schema":{"type":"string"},"required":false,"name":"search","in":"query"},{"schema":{"type":"string"},"required":false,"name":"sort","in":"query"},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"required":false,"name":"order","in":"query"},{"schema":{"type":"string"},"required":false,"name":"filters","in":"query"}],"responses":{"200":{"description":"Global platform audit","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{}}},"pagination":{"type":"object","properties":{"page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"per_page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"total":{"type":"integer","minimum":0}},"required":["page","per_page","total"]}},"required":["success","data","pagination"]}}}}}}}}}