{"components":{"responses":{"forbidden":{"content":{"application/json":{"example":{"errors":{"details":"Forbidden"}},"schema":{"type":"object"}}},"description":"Forbidden"},"no_content":{"description":"No Content"},"unauthorised":{"content":{"application/json":{"example":{"errors":{"details":"Unauthorised"}},"schema":{"type":"object"}}},"description":"Unauthorised"},"unprocessable_entity":{"content":{"application/json":{"example":{"errors":{"details":"Unprocessable Entity"}},"schema":{"type":"object"}}},"description":"Unprocessable Entity"}},"schemas":{"Advertiser":{"description":"An advertiser within an organization","example":{"company_name":"Acme Corp","id":1,"name":"John Doe","status":"active"},"properties":{"company_name":{"description":"Company name","type":"string"},"id":{"description":"Advertiser ID","type":"integer"},"name":{"description":"Advertiser name","type":"string"},"status":{"description":"Advertiser status","enum":["active","inactive"],"type":"string"}},"required":["id","name"],"title":"Advertiser","type":"object"},"ApproveRejectResponse":{"description":"Response for approve/reject action","properties":{"click_id":{"description":"Click ID","type":"string"},"status":{"description":"New status (approved or rejected)","type":"string"}},"required":["status","click_id"],"title":"ApproveRejectResponse","type":"object"},"AuthResponse":{"description":"Successful authentication response","example":{"token":"vW4sIvFvqkw6iogdhNyyFXa2nKg4LlsVobOTR721hbs","token_type":"bearer"},"properties":{"token":{"description":"Token","type":"string"},"token_type":{"description":"Token Type","type":"string"}},"required":["token","token_type"],"title":"AuthResponse","type":"object"},"Campaign":{"description":"A campaign","example":{"advertiser":{"company_name":"Acme Corp","id":1,"name":"John Doe","status":"active"},"allowed_countries":["FR","BE","CH"],"description":"Promotional campaign for summer products","ends_at":"2024-08-31T23:59:59Z","id":1,"inserted_at":"2024-05-15T10:30:00Z","landing_url":"https://example.com/summer-sale","name":"Summer Sale 2024","preview_url":"https://example.com/preview/summer-sale","starts_at":"2024-06-01T00:00:00Z","status":"active","updated_at":"2024-05-20T14:45:00Z"},"properties":{"advertiser":{"anyOf":[{"$ref":"#/components/schemas/Advertiser"},{"type":"null"}],"description":"Associated advertiser (if preloaded)"},"allowed_countries":{"description":"List of allowed country codes","items":{"type":"string"},"type":"array"},"description":{"description":"Campaign description","type":"string"},"ends_at":{"description":"Campaign end date","format":"date-time","nullable":true,"type":"string"},"id":{"description":"Campaign ID","type":"integer"},"inserted_at":{"description":"Creation timestamp","format":"date-time","type":"string"},"landing_url":{"description":"Landing URL","nullable":true,"type":"string"},"name":{"description":"Campaign name","type":"string"},"preview_url":{"description":"Preview URL","nullable":true,"type":"string"},"starts_at":{"description":"Campaign start date","format":"date-time","nullable":true,"type":"string"},"status":{"description":"Campaign status","enum":["draft","active","paused","completed","inactive"],"type":"string"},"updated_at":{"description":"Last update timestamp","format":"date-time","type":"string"}},"required":["id","name","status"],"title":"Campaign","type":"object"},"CampaignListResponse":{"description":"Response containing a list of campaigns with pagination","example":{"data":[{"allowed_countries":["FR","BE"],"description":"Promotional campaign for summer products","ends_at":"2024-08-31T23:59:59Z","id":1,"inserted_at":"2024-05-15T10:30:00Z","landing_url":"https://example.com/summer-sale","name":"Summer Sale 2024","preview_url":null,"starts_at":"2024-06-01T00:00:00Z","status":"active","updated_at":"2024-05-20T14:45:00Z"}],"meta":{"page":1,"page_size":25,"total":42}},"properties":{"data":{"description":"List of campaigns","items":{"$ref":"#/components/schemas/Campaign"},"type":"array"},"meta":{"$ref":"#/components/schemas/PaginationMeta"}},"required":["data","meta"],"title":"CampaignListResponse","type":"object"},"CampaignResponse":{"description":"Response containing a single campaign","example":{"data":{"advertiser":{"company_name":"Acme Corp","id":1,"name":"John Doe","status":"active"},"allowed_countries":["FR","BE","CH"],"description":"Promotional campaign for summer products","ends_at":"2024-08-31T23:59:59Z","id":1,"inserted_at":"2024-05-15T10:30:00Z","landing_url":"https://example.com/summer-sale","name":"Summer Sale 2024","preview_url":"https://example.com/preview/summer-sale","starts_at":"2024-06-01T00:00:00Z","status":"active","updated_at":"2024-05-20T14:45:00Z"}},"properties":{"data":{"$ref":"#/components/schemas/Campaign"}},"required":["data"],"title":"CampaignResponse","type":"object"},"CampaignStats":{"description":"Campaign statistics","example":{"clicks":500,"conversion_rate":5.0,"conversions":25,"impressions":10000,"payout":"1250.00","revenue":"2500.00"},"properties":{"clicks":{"description":"Number of clicks","type":"integer"},"conversion_rate":{"description":"Conversion rate (percentage)","format":"float","type":"number"},"conversions":{"description":"Number of conversions","type":"integer"},"impressions":{"description":"Number of impressions","type":"integer"},"payout":{"description":"Total payout (decimal string)","type":"string"},"revenue":{"description":"Total revenue (decimal string)","type":"string"}},"required":["impressions","clicks","conversions","conversion_rate","revenue","payout"],"title":"CampaignStats","type":"object"},"CampaignStatsResponse":{"description":"Response containing campaign statistics","example":{"data":{"clicks":500,"conversion_rate":5.0,"conversions":25,"impressions":10000,"payout":"1250.00","revenue":"2500.00"}},"properties":{"data":{"$ref":"#/components/schemas/CampaignStats"}},"required":["data"],"title":"CampaignStatsResponse","type":"object"},"ChangePassword":{"description":"Request body to change a user's password","example":{"current_password":"password","password":"awesome_password","password_confirmation":"awesome_password"},"properties":{"current_password":{"description":"Current password","format":"password","type":"string"},"password":{"description":"New password","format":"password","type":"string"},"password_confirmation":{"description":"Confirm new password","format":"password","type":"string"}},"title":"ChangePassword","type":"object"},"Click":{"description":"A click event from the tracking system","properties":{"affiliate_id":{"description":"Affiliate ID","type":"string"},"campaign_id":{"description":"Campaign ID","type":"string"},"click_id":{"description":"Unique click identifier","type":"string"},"ip_address":{"description":"IP address","type":"string"},"organization_id":{"description":"Organization ID","type":"string"},"payout":{"description":"Payout amount","nullable":true,"type":"number"},"referer":{"description":"HTTP referer","nullable":true,"type":"string"},"rejection_reason":{"description":"Reason for rejection","nullable":true,"type":"string"},"remuneration_id":{"description":"Remuneration ID","type":"string"},"revenue":{"description":"Revenue amount","nullable":true,"type":"number"},"status":{"description":"Click status (approved, pending, rejected)","type":"string"},"timestamp":{"description":"Click timestamp (ISO 8601)","format":"date-time","type":"string"},"tracked_link_id":{"description":"Tracked link ID","type":"string"},"user_agent":{"description":"User agent string","type":"string"}},"required":["click_id","organization_id","campaign_id","affiliate_id","timestamp","status"],"title":"Click","type":"object"},"ClickListResponse":{"description":"Response containing a list of clicks with pagination","properties":{"data":{"description":"Array of click events","items":{"$ref":"#/components/schemas/Click"},"type":"array"},"meta":{"$ref":"#/components/schemas/PaginationMeta"}},"required":["data","meta"],"title":"ClickListResponse","type":"object"},"Conversion":{"description":"A conversion event from the tracking system","properties":{"affiliate_id":{"description":"Affiliate ID","type":"string"},"campaign_id":{"description":"Campaign ID","type":"string"},"click_id":{"description":"Unique click identifier (acts as conversion ID)","type":"string"},"ip_address":{"description":"IP address","type":"string"},"organization_id":{"description":"Organization ID","type":"string"},"payout":{"description":"Payout amount","nullable":true,"type":"number"},"rejection_reason":{"description":"Reason for rejection","nullable":true,"type":"string"},"remuneration_id":{"description":"Remuneration ID","type":"string"},"revenue":{"description":"Revenue amount","nullable":true,"type":"number"},"status":{"description":"Conversion status (approved, pending, rejected)","type":"string"},"timestamp":{"description":"Conversion timestamp (ISO 8601)","format":"date-time","type":"string"},"tracked_link_id":{"description":"Tracked link ID","type":"string"},"user_agent":{"description":"User agent string","type":"string"}},"required":["click_id","organization_id","campaign_id","affiliate_id","timestamp","status"],"title":"Conversion","type":"object"},"ConversionListResponse":{"description":"Response containing a list of conversions with pagination","properties":{"data":{"description":"Array of conversion events","items":{"$ref":"#/components/schemas/Conversion"},"type":"array"},"meta":{"$ref":"#/components/schemas/PaginationMeta"}},"required":["data","meta"],"title":"ConversionListResponse","type":"object"},"ExistingEmail":{"description":"Request body for send instructions","example":{"email":"admin@example.com"},"properties":{"email":{"description":"Email address of existing user","format":"email","type":"string"}},"title":"ExistingEmail","type":"object"},"MessageResponse":{"description":"Response with message","example":{"message":"Example message!"},"properties":{"message":{"description":"Message","type":"string"}},"title":"MessageResponse","type":"object"},"NewEmail":{"description":"Body for request new email","example":{"requested_email":"changed@example.com"},"properties":{"requested_email":{"description":"Requested email address","format":"email","type":"string"}},"title":"NewEmail","type":"object"},"PaginationMeta":{"description":"Pagination metadata","example":{"page":1,"page_size":25,"total":42},"properties":{"page":{"description":"Current page number","type":"integer"},"page_size":{"description":"Items per page","type":"integer"},"total":{"description":"Total number of items","type":"integer"}},"required":["total","page","page_size"],"title":"PaginationMeta","type":"object"},"PostbackLog":{"description":"A postback log entry","example":{"attempt_number":1,"click_id":"d4e5f6a7-b8c9-0123-def1-234567890123","conversion_id":"c3d4e5f6-a7b8-9012-cdef-123456789012","error_message":null,"event_type":"conversion","http_status":200,"id":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","inserted_at":"2024-05-20T15:30:00Z","postback_id":"b2c3d4e5-f6a7-8901-bcde-f12345678901","response_body":"OK","success":true,"url_sent":"https://affiliate.com/postback?click_id=abc123&status=approved"},"properties":{"attempt_number":{"description":"Attempt number","type":"integer"},"click_id":{"description":"Click ID (UUID)","format":"uuid","nullable":true,"type":"string"},"conversion_id":{"description":"Conversion ID (UUID)","format":"uuid","nullable":true,"type":"string"},"error_message":{"description":"Error message if failed","nullable":true,"type":"string"},"event_type":{"description":"Event type","nullable":true,"type":"string"},"http_status":{"description":"HTTP status code","nullable":true,"type":"integer"},"id":{"description":"Log ID (UUID)","format":"uuid","type":"string"},"inserted_at":{"description":"Creation timestamp","format":"date-time","type":"string"},"postback_id":{"description":"Postback ID (UUID)","format":"uuid","type":"string"},"response_body":{"description":"HTTP response body","nullable":true,"type":"string"},"success":{"description":"Whether the postback was successful","type":"boolean"},"url_sent":{"description":"URL that was sent","type":"string"}},"required":["id","postback_id","url_sent","success","attempt_number","inserted_at"],"title":"PostbackLog","type":"object"},"PostbackLogListResponse":{"description":"Response containing a list of postback logs","example":{"data":[{"attempt_number":1,"click_id":"d4e5f6a7-b8c9-0123-def1-234567890123","conversion_id":"c3d4e5f6-a7b8-9012-cdef-123456789012","error_message":null,"event_type":"conversion","http_status":200,"id":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","inserted_at":"2024-05-20T15:30:00Z","postback_id":"b2c3d4e5-f6a7-8901-bcde-f12345678901","response_body":"OK","success":true,"url_sent":"https://affiliate.com/postback?click_id=abc123&status=approved"}]},"properties":{"data":{"description":"List of postback logs","items":{"$ref":"#/components/schemas/PostbackLog"},"type":"array"}},"required":["data"],"title":"PostbackLogListResponse","type":"object"},"RejectRequest":{"description":"Request body for rejecting a conversion","properties":{"reason":{"description":"Reason for rejection","type":"string"}},"title":"RejectRequest","type":"object"},"UpdateProfile":{"description":"Request body for user profile changes","example":{"avatar":"https://example.com/some/image.jpg","name":"John Smith"},"properties":{"avatar":{"description":"Avatar url","type":"string"},"name":{"description":"Name","type":"string"}},"title":"UpdateProfile","type":"object"},"User":{"description":"Response body for user","example":{"avatar":"","email":"admin@example.com","id":"1","is_admin":true,"is_confirmed":true,"is_deleted":false,"is_onboarded":true,"is_suspended":false,"name":"John Smith","role":"admin"},"properties":{"avatar":{"description":"Avatar url","type":"string"},"email":{"description":"Email address","format":"email","type":"string"},"id":{"description":"Id","type":"int"},"is_admin":{"description":"Is an admin user","type":"bool"},"is_confirmed":{"description":"Email address is confirmed","type":"bool"},"is_deleted":{"description":"Is deleted","type":"bool"},"is_onboarded":{"description":"Is onboarded","type":"bool"},"is_suspended":{"description":"User has been suspended","type":"bool"},"name":{"description":"Name","type":"string"},"role":{"description":"Role","type":"string"}},"required":["id","name","email"],"title":"User","type":"object"},"UserCredentials":{"description":"Request body for user credentials","example":{"email":"admin@example.com","password":"password"},"properties":{"email":{"description":"Email address","format":"email","type":"string"},"password":{"description":"Password","format":"password","type":"string"}},"required":["name","email"],"title":"UserCredentials","type":"object"},"UserRegistration":{"description":"Request body for user registration","example":{"avatar":"","email":"admin@example.com","name":"John Smith","password":"neat_password"},"properties":{"avatar":{"description":"Avatar url","type":"string"},"email":{"description":"Email address","format":"email","type":"string"},"name":{"description":"Name","type":"string"},"password":{"description":"Password","format":"password","type":"string"}},"required":["name","email","password"],"title":"UserRegistration","type":"object"}},"securitySchemes":{"authorization":{"scheme":"bearer","type":"http"}}},"info":{"title":"Botz SaaS Platform API","version":"1.0"},"openapi":"3.0.0","paths":{"/api/register":{"post":{"callbacks":{},"description":"Register user","operationId":"BotzSaasPlatformApi.RegistrationController.register","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserRegistration"}}},"description":"User registration attributes","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}},"description":"Registered user"},"422":{"$ref":"#/components/responses/unprocessable_entity"}},"summary":"Register user","tags":["registration"]}},"/api/send-instructions":{"post":{"callbacks":{},"description":"Send confirmation instructions via email","operationId":"BotzSaasPlatformApi.RegistrationController.send_instructions","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExistingEmail"}}},"description":"Existing email attributes","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}},"description":"Message"}},"summary":"Send instructions","tags":["registration"]}},"/api/sign-in":{"post":{"callbacks":{},"description":"Authenticate user and generate bearer token","operationId":"BotzSaasPlatformApi.SessionController.create","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCredentials"}}},"description":"User credentials","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthResponse"}}},"description":"Authenticated response"},"401":{"$ref":"#/components/responses/unauthorised"}},"summary":"Authenticate user","tags":["session"]}},"/api/user/{id}":{"get":{"callbacks":{},"description":"Show profile for user","operationId":"BotzSaasPlatformApi.ProfileController.show","parameters":[{"description":"","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}},"description":"User"},"401":{"$ref":"#/components/responses/unauthorised"},"403":{"$ref":"#/components/responses/forbidden"}},"security":[{"authorization":[]}],"summary":"Show profile","tags":["profile"]}},"/api/user/{id}/change-password":{"post":{"callbacks":{},"description":"Change current user's password","operationId":"BotzSaasPlatformApi.ProfileController.change_password","parameters":[{"description":"","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangePassword"}}},"description":"Change password attributes","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}},"description":"Success"},"401":{"$ref":"#/components/responses/unauthorised"},"403":{"$ref":"#/components/responses/forbidden"},"422":{"$ref":"#/components/responses/unprocessable_entity"}},"security":[{"authorization":[]}],"summary":"Change password","tags":["profile"]}},"/api/user/{id}/request-new-email":{"post":{"callbacks":{},"description":"Request new email address for user","operationId":"BotzSaasPlatformApi.ProfileController.request_new_email","parameters":[{"description":"","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewEmail"}}},"description":"New email attributes","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}},"description":"Success"},"401":{"$ref":"#/components/responses/unauthorised"},"403":{"$ref":"#/components/responses/forbidden"},"422":{"$ref":"#/components/responses/unprocessable_entity"}},"security":[{"authorization":[]}],"summary":"Request new email","tags":["profile"]}},"/api/user/{id}/update":{"patch":{"callbacks":{},"description":"Update profile for user","operationId":"BotzSaasPlatformApi.ProfileController.update_profile","parameters":[{"description":"","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProfile"}}},"description":"Update profile attributes","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}},"description":"Updated User"},"401":{"$ref":"#/components/responses/unauthorised"},"403":{"$ref":"#/components/responses/forbidden"},"422":{"$ref":"#/components/responses/unprocessable_entity"}},"security":[{"authorization":[]}],"summary":"Update profile","tags":["profile"]}},"/api/v1/org/{org_slug}/campaigns":{"get":{"callbacks":{},"description":"List campaigns for the organization with pagination and optional status filter","operationId":"BotzSaasPlatformApi.V1.CampaignController.index","parameters":[{"description":"Organization slug","in":"path","name":"org_slug","required":true,"schema":{"type":"string"}},{"description":"Page number (default: 1)","in":"query","name":"page","required":false,"schema":{"type":"integer"}},{"description":"Items per page (default: 25, max: 100)","in":"query","name":"page_size","required":false,"schema":{"type":"integer"}},{"description":"Filter by status (active, draft, paused, completed, inactive)","in":"query","name":"status","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignListResponse"}}},"description":"Campaign list"},"401":{"$ref":"#/components/responses/unauthorised"},"403":{"$ref":"#/components/responses/forbidden"}},"security":[{"authorization":[]}],"summary":"List campaigns","tags":["campaigns"]}},"/api/v1/org/{org_slug}/campaigns/{id}":{"get":{"callbacks":{},"description":"Get a single campaign by ID","operationId":"BotzSaasPlatformApi.V1.CampaignController.show","parameters":[{"description":"Organization slug","in":"path","name":"org_slug","required":true,"schema":{"type":"string"}},{"description":"Campaign ID","in":"path","name":"id","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignResponse"}}},"description":"Campaign"},"401":{"$ref":"#/components/responses/unauthorised"},"403":{"$ref":"#/components/responses/forbidden"},"404":{"$ref":"#/components/responses/not_found"}},"security":[{"authorization":[]}],"summary":"Get campaign","tags":["campaigns"]}},"/api/v1/org/{org_slug}/campaigns/{id}/stats":{"get":{"callbacks":{},"description":"Get aggregated statistics for a campaign within a date range","operationId":"BotzSaasPlatformApi.V1.CampaignStatsController.show","parameters":[{"description":"Organization slug","in":"path","name":"org_slug","required":true,"schema":{"type":"string"}},{"description":"Campaign ID","in":"path","name":"id","required":true,"schema":{"type":"string"}},{"description":"Start date (ISO 8601 format: YYYY-MM-DD)","in":"query","name":"start_date","required":false,"schema":{"type":"string"}},{"description":"End date (ISO 8601 format: YYYY-MM-DD)","in":"query","name":"end_date","required":false,"schema":{"type":"string"}},{"description":"Filter by affiliate ID (optional)","in":"query","name":"affiliate_id","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignStatsResponse"}}},"description":"Campaign stats"},"401":{"$ref":"#/components/responses/unauthorised"},"403":{"$ref":"#/components/responses/forbidden"},"404":{"$ref":"#/components/responses/not_found"}},"security":[{"authorization":[]}],"summary":"Get campaign statistics","tags":["campaign stats"]}},"/api/v1/org/{org_slug}/clicks":{"get":{"callbacks":{},"description":"List all clicks for the current organization with optional filters","operationId":"BotzSaasPlatformApi.V1.ClickController.index","parameters":[{"description":"Page number (default: 1)","in":"query","name":"page","required":false,"schema":{"type":"integer"}},{"description":"Page size (default: 25, max: 100)","in":"query","name":"page_size","required":false,"schema":{"type":"integer"}},{"description":"Filter by status (approved, pending, rejected)","in":"query","name":"status","required":false,"schema":{"type":"string"}},{"description":"Filter by campaign ID","in":"query","name":"campaign_id","required":false,"schema":{"type":"string"}},{"description":"Filter by affiliate ID","in":"query","name":"affiliate_id","required":false,"schema":{"type":"string"}},{"description":"Filter by start date (YYYY-MM-DD)","in":"query","name":"start_date","required":false,"schema":{"type":"string"}},{"description":"Filter by end date (YYYY-MM-DD)","in":"query","name":"end_date","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClickListResponse"}}},"description":"Click list"},"401":{"$ref":"#/components/responses/unauthorised"},"403":{"$ref":"#/components/responses/forbidden"}},"security":[{"authorization":[]}],"summary":"List clicks","tags":["clicks"]}},"/api/v1/org/{org_slug}/conversions":{"get":{"callbacks":{},"description":"List all conversions for the current organization with optional filters","operationId":"BotzSaasPlatformApi.V1.ConversionController.index","parameters":[{"description":"Page number (default: 1)","in":"query","name":"page","required":false,"schema":{"type":"integer"}},{"description":"Page size (default: 25, max: 100)","in":"query","name":"page_size","required":false,"schema":{"type":"integer"}},{"description":"Filter by status (approved, pending, rejected)","in":"query","name":"status","required":false,"schema":{"type":"string"}},{"description":"Filter by campaign ID","in":"query","name":"campaign_id","required":false,"schema":{"type":"string"}},{"description":"Filter by affiliate ID","in":"query","name":"affiliate_id","required":false,"schema":{"type":"string"}},{"description":"Filter by start date (YYYY-MM-DD)","in":"query","name":"start_date","required":false,"schema":{"type":"string"}},{"description":"Filter by end date (YYYY-MM-DD)","in":"query","name":"end_date","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversionListResponse"}}},"description":"Conversion list"},"401":{"$ref":"#/components/responses/unauthorised"},"403":{"$ref":"#/components/responses/forbidden"}},"security":[{"authorization":[]}],"summary":"List conversions","tags":["conversions"]}},"/api/v1/org/{org_slug}/conversions/{id}/approve":{"post":{"callbacks":{},"description":"Approve a conversion by click_id","operationId":"BotzSaasPlatformApi.V1.ConversionController.approve","parameters":[{"description":"Click ID","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApproveRejectResponse"}}},"description":"Approved"},"401":{"$ref":"#/components/responses/unauthorised"},"403":{"$ref":"#/components/responses/forbidden"},"404":{"$ref":"#/components/responses/not_found"}},"security":[{"authorization":[]}],"summary":"Approve conversion","tags":["conversions"]}},"/api/v1/org/{org_slug}/conversions/{id}/reject":{"post":{"callbacks":{},"description":"Reject a conversion by click_id with optional reason","operationId":"BotzSaasPlatformApi.V1.ConversionController.reject","parameters":[{"description":"Click ID","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RejectRequest"}}},"description":"Reject request","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApproveRejectResponse"}}},"description":"Rejected"},"401":{"$ref":"#/components/responses/unauthorised"},"403":{"$ref":"#/components/responses/forbidden"},"404":{"$ref":"#/components/responses/not_found"}},"security":[{"authorization":[]}],"summary":"Reject conversion","tags":["conversions"]}},"/api/v1/org/{org_slug}/postbacks/{id}/logs":{"get":{"callbacks":{},"description":"List all logs for a postback","operationId":"BotzSaasPlatformApi.V1.PostbackLogController.index","parameters":[{"description":"Organization slug","in":"path","name":"org_slug","required":true,"schema":{"type":"string"}},{"description":"Postback ID","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostbackLogListResponse"}}},"description":"Postback logs"},"401":{"$ref":"#/components/responses/unauthorised"},"403":{"$ref":"#/components/responses/forbidden"},"404":{"$ref":"#/components/responses/not_found"}},"security":[{"authorization":[]}],"summary":"List postback logs","tags":["postback logs"]}}},"security":[],"servers":[{"url":"https://botzly.io","variables":{}}],"tags":[]}