{"openapi":"3.1.0","info":{"title":"GET /api/v1/recurring","version":"1.0.0","description":"List recurring templates"},"servers":[{"url":"https://api.ondayzero.com","description":"Production"}],"paths":{"/api/v1/recurring":{"get":{"tags":["recurring"],"summary":"List recurring templates","description":"List all recurring templates for the business with optional filtering.","operationId":"list_recurring_templates_api_v1_recurring_get","parameters":[{"name":"recurrence_type","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/app__models__recurring_templates__RecurrenceTypeEnum"},{"type":"null"}],"description":"Filter by type (invoice or bill)","title":"Recurrence Type"},"description":"Filter by type (invoice or bill)"},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/RecurringStatusEnum"},{"type":"null"}],"description":"Filter by status","title":"Status"},"description":"Filter by status"},{"name":"customer_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by customer ID (for invoice templates)","title":"Customer Id"},"description":"Filter by customer ID (for invoice templates)"},{"name":"vendor_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by vendor ID (for bill templates)","title":"Vendor Id"},"description":"Filter by vendor ID (for bill templates)"},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Cursor for pagination","title":"Cursor"},"description":"Cursor for pagination"},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":1000,"minimum":1},{"type":"null"}],"description":"Pagination limit","title":"Limit"},"description":"Pagination limit"},{"name":"direction","in":"query","required":false,"schema":{"type":"string","description":"Pagination direction: 'next' or 'prev'","default":"next","title":"Direction"},"description":"Pagination direction: 'next' or 'prev'"},{"name":"include_total_count","in":"query","required":false,"schema":{"type":"boolean","description":"Whether to include total count (expensive - avoid if possible)","default":false,"title":"Include Total Count"},"description":"Whether to include total count (expensive - avoid if possible)"},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Column name to sort by (e.g. 'created_at', 'amount', 'name'). When changing sort, reset cursor to None.","title":"Sort By"},"description":"Column name to sort by (e.g. 'created_at', 'amount', 'name'). When changing sort, reset cursor to None."},{"name":"descending","in":"query","required":false,"schema":{"type":"boolean","description":"Sort direction: true for descending (newest/largest first), false for ascending","default":true,"title":"Descending"},"description":"Sort direction: true for descending (newest/largest first), false for ascending"},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-business-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Business-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecurringTemplateListResponse"}}}},"401":{"description":"Unauthorized - Authentication required","content":{"application/json":{"example":{"detail":"Not authenticated"}}}},"403":{"description":"Forbidden - Insufficient permissions","content":{"application/json":{"example":{"detail":"Not enough permissions"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"CustomerSummary":{"properties":{"id":{"type":"string","title":"Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"}},"type":"object","required":["id"],"title":"CustomerSummary","description":"Summary of customer for response."},"FrequencyEnum":{"type":"string","enum":["daily","weekly","biweekly","monthly","quarterly","annually"],"title":"FrequencyEnum","description":"Recurrence frequency options."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"RecurrenceTypeEnum-Output":{"type":"string","enum":["invoice","bill"],"title":"RecurrenceTypeEnum","description":"Type of recurring document."},"RecurringStatusEnum":{"type":"string","enum":["active","paused","completed","cancelled"],"title":"RecurringStatusEnum","description":"Status of the recurring template."},"RecurringTemplateListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/RecurringTemplateResponse"},"type":"array","title":"Items"},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"prev_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prev Cursor"},"has_next":{"type":"boolean","title":"Has Next","default":false},"has_prev":{"type":"boolean","title":"Has Prev","default":false}},"type":"object","required":["items"],"title":"RecurringTemplateListResponse","description":"Response for listing recurring templates."},"RecurringTemplateResponse":{"properties":{"id":{"type":"string","title":"Id"},"business_id":{"type":"string","title":"Business Id"},"name":{"type":"string","title":"Name"},"recurrence_type":{"$ref":"#/components/schemas/RecurrenceTypeEnum-Output"},"status":{"$ref":"#/components/schemas/RecurringStatusEnum"},"frequency":{"$ref":"#/components/schemas/FrequencyEnum"},"start_date":{"type":"string","format":"date","title":"Start Date"},"end_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"End Date"},"next_occurrence":{"type":"string","format":"date","title":"Next Occurrence"},"last_generated":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Generated"},"day_of_month":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Day Of Month"},"day_of_week":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Day Of Week"},"max_occurrences":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Occurrences"},"occurrences_generated":{"type":"integer","title":"Occurrences Generated"},"template_data":{"additionalProperties":true,"type":"object","title":"Template Data"},"days_until_due":{"type":"integer","title":"Days Until Due"},"auto_send":{"type":"boolean","title":"Auto Send"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"customer":{"anyOf":[{"$ref":"#/components/schemas/CustomerSummary"},{"type":"null"}]},"vendor":{"anyOf":[{"$ref":"#/components/schemas/VendorSummary"},{"type":"null"}]},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"amount_in_dollars":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Amount In Dollars"},"frequency_display":{"type":"string","title":"Frequency Display"},"days_until_next":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Days Until Next"},"is_due":{"type":"boolean","title":"Is Due"},"should_generate":{"type":"boolean","title":"Should Generate"}},"type":"object","required":["id","business_id","name","recurrence_type","status","frequency","start_date","next_occurrence","occurrences_generated","template_data","days_until_due","auto_send","created_at","updated_at","frequency_display","is_due","should_generate"],"title":"RecurringTemplateResponse","description":"Response schema for recurring template.","example":{"amount_in_dollars":3500.0,"auto_send":false,"business_id":"abcdef01-2345-6789-abcd-ef0123456789","created_at":"2026-01-07T12:00:00Z","day_of_month":1,"days_until_due":15,"days_until_next":25,"frequency":"monthly","frequency_display":"Monthly","id":"01234567-89ab-cdef-0123-456789abcdef","is_due":false,"name":"Monthly Rent","next_occurrence":"2026-02-01","occurrences_generated":0,"recurrence_type":"bill","should_generate":false,"start_date":"2026-02-01","status":"active","template_data":{"amount":350000,"description":"Office rent"},"updated_at":"2026-01-07T12:00:00Z","vendor":{"email":"billing@property.com","id":"vendor-uuid","name":"Property Management LLC"}}},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"VendorSummary":{"properties":{"id":{"type":"string","title":"Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"}},"type":"object","required":["id"],"title":"VendorSummary","description":"Summary of vendor for response."},"app__models__recurring_templates__RecurrenceTypeEnum":{"type":"string","enum":["invoice","bill"],"title":"RecurrenceTypeEnum","description":"Type of recurring document to generate."}},"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API Token","description":"API token authentication. Format: `Bearer dz_...`"}}},"security":[{"BearerAuth":[]}]}